-
Notifications
You must be signed in to change notification settings - Fork 36
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Reimplement conversion modulo AC #1211
base: master
Are you sure you want to change the base?
Conversation
@NotBad4U Could you please try this PR on some other examples for linear arithmetic ? |
Be careful that I changed the ordering: arguments are now compared from left to right. So, you need to permute the arguments of var. |
I experimented the new |
@fblanqui I tried the new AC on my benchmarks and it is swift. I can do a computation with 500 variables, and it is faster than my current solution that compute the normal form without AC and reduces a term with a context varmap for none-interpreted term. In my current solution, the normalisation is fast but the calculation is very slow on large expression. However, I have a strange behavior that I can even replicate in my gist. If I
However, if compose
Then I got the result I updated the gist and the calculation is L127 if you want to reproduce on your side. Maybe we can add this |
It also does not work with my proof by reflexivity on reordering the pivot.
|
This PR reimplements conversion modulo AC without enforcing terms to be in AC-canonical form.
This is much more efficient but may not work with any rewrite system (fix #1200).
It seems to work well with:
CHANGES:
TODO: