silver icon indicating copy to clipboard operation
silver copied to clipboard

Support for special Z3 relations

Open fpoli opened this issue 1 year ago • 1 comments

With Z3 it's possible to declare special relations such as partial order, linear order, etc. The documentation explains that the decision procedure is efficient and avoids the quadratic number of quantifier instantiations of a naive axiomatization. These special relations would be very convenient in our axiomatization of mathematical data types (subset relations, contains relations, probably even equality relations etc).

With Z3 there is even a way to declare a "transitive closure" relation, which is not first-order axiomatizable.

I'm not sure what the limitations of these special relations are, but the potential benefits sound great.

fpoli avatar Apr 07 '23 17:04 fpoli

Yes! 🕺 I saw these in PyZ3, but did not knew that they were usable via the SMT-LIB frontend. I'm curious to see how much they can improve performance.

mschwerhoff avatar Apr 11 '23 14:04 mschwerhoff