This PR implements the main loop of the new commutative ring procedure in `grind`. In the main loop, for each polynomial `p` in the todo queue, the procedure: - Simplifies it using the current basis. - Computes critical pairs with polynomials already in the basis and adds them to the queue. After the queue is empty, the disequalities are re-simplified using the new basis. `grind` can now solve examples such as: ```lean example [CommRing α] (x y : α) : x*y*x = 1 → x*y*y = y → y = 1 := by grind +ring example [CommRing α] (x y : α) : x^2*y = 1 → x*y^2 = y → y*x = 1 := by grind +ring example (x y : BitVec 16) : x^2*y = 1 → x*y^2 = y → y*x = 1 := by grind +ring ``` |
||
|---|---|---|
| .. | ||
| bench | ||
| compiler | ||
| elabissues | ||
| ir | ||
| lean | ||
| pkg | ||
| playground | ||
| plugin | ||
| simpperf | ||
| .gitignore | ||
| common.sh | ||
| lean-toolchain | ||