Commit 2023-11-07 17:41 a051ac5f

View on Github →

feat: improve polyrith by testing for membership in the radical (#7790) In @hrmacbeth 's tutorial on polyrith, there were examples of problems that it could almost solve, but failed. The goal was not expressible as a linear combination of the hypotheses but a power of the goal was.

example (x y z : ℚ) (h : x = y) (h2 : x * y = 0) : x + y*z = 0 :=
sorry

Mathematically, x+y*z is in the radical of the ideal generated by x-y, x*y. There's a "standard trick" for testing membership in the radical without a search for the proper exponent: see e.g. section 2.2 of arxiv.org/pdf/1007.3615.pdf or 4.2 Prop 8 of Cox, Little, O'Shea. This PR implements the trick in the Sage call made by polyrith. When the power returned is n > 1, we use linear_combination (exp := n) to check the certificate (#7789 ). The polyrith test infrastructure still needs to be ported from mathlib3. All tests in the test file succeed when they are uncommented. A future PR will restore the old test suite.

Estimated changes