vprover / vampire

The Vampire Theorem Prover
https://vprover.github.io/
Other
282 stars 49 forks source link

Ordering check with applied terms + optimised unidirectional comparison for LPO and KBO #547

Closed mezpusz closed 4 months ago

mezpusz commented 4 months ago

This PR refactors functionality of KBO and LPO such that two terms can be compared modulo some substitution without creating the result of the application. Some notes:

Additionally, a unidirectional check has been implemented for KBO and exposed for LPO. This is far from super optimal, but it's a bit more efficient than the bidirectional check when we don't need the latter.

I did some optimisations here and there in other parts too, see comments below.

quickbeam123 commented 4 months ago

Will look forward to doing some performance checks with this one!

MichaelRawson commented 4 months ago

Thanks for changes! Fine to merge for me, imagine @quickbeam123 would like to check some perf.

mezpusz commented 4 months ago

@joe-hauns Thanks for the review! I tried to address your comments, but let me know if there is something I misunderstood, or is still not satisfactory.

quickbeam123 commented 4 months ago

Is this stable/ready for one final quick round of my checks?