[SMT-COMP] Proof Validation Track for SMT-COMP
Hans-Jorg Schurr
hans-jorg.schurr at inria.fr
Tue Jul 20 14:11:43 EDT 2021
Hi Jochen, Hello everyone,
> Yesterday, I mentioned the plans for the Proof Validation Track. I
> know that finding a good solver independent proof format is difficult.
Thanks for taking on this certainly not easy task.
I have some thoughts about all of this, mostly informed by our work
on using SMT proofs in Isabelle and and subsequent effort of using the
Alethe format in other contexts.
I get the impression that we have some similar ideas. The QF_UF fragment
of Alethe is very similar to what you described: Axioms and resolution.
There are some rules that have a different form that were introduced
for proofs of rewriting below quantifiers, but those are not necessary
for QF_UF (veriT uses them though)
Nevertheless, I think one should think about an upgrade path for existing
solvers. Even seemingly innocuous changes can be difficult to implement.
For example, I spent two weeks last year trying to change veriT such
that it doesn't always consider "a = b" and "b = a" as equal -- I had
to give up in the end.
The CASC theorem proving competition has a somewhat radical approach
to this: every solver has to provide a proof, but only the general
structure is prescribed and everyone can make up their own rules.
What I hear is that over time the proofs started to be very
reasonable.
I don't think this is what SMT should do, but maybe there is something
in between. For our implementations we thought about having variants of rules
such that a stricter solver can mark rules it uses in a stricter fashion. The
worst case of this a generic "hole" rule. Maybe a competition could show a
percentage of holes and highlight solvers with few/no holes.
> One question is how to explain the CNF encoding. When the proof
> format supports arbitrary SMT-LIB terms as atoms, this is simple: an
> assert is just introducing a unit clause with one atom. [..]
> A solver that doesn't use Tseitin-encoding can still explain the
> clauses in its CNF conversion using these axioms and resolution.
I think, it is also very useful to make a distinction between clauses
and disjunctions. Otherwise it's not clear if "(or a b)" is a unit or
binary clause. I'm not sure if this is part of your proposal.
> Finally, for a compact representation of the proof, you need to
> abbreviate common subterms. For this, I would suggest using the
> standard let syntax from SMT-LIB. A difficulty added by the let
> encoding is that terms need to be considered equal if one is the let
> expansion of the other term.
In Alethe we use the standard SMT-LIB :named annotation. This draws
a clear distinction between `let`, which is part of the logic, and
the sharing. It solves the problem you mentioned.
> Especially if you are concerned that certain features of your proofs
> cannot be represented without quadratic or even exponential overhead,
> then I would like to hear these concerns. [..]
> Some SMT-solvers use SAT solvers that create DRAT proofs. [..] they
> can be converted to extended resolution proofs with polynomial overhead.
Just a small nitpick: the extended resolution proof generated by the
translation by Kiesl et al.[1] is cubic in the number of literals.
I think the blowup is much more reasonable in practice though.
[1] https://www.cs.cmu.edu/~mheule/publications/ijcar18.pdf
Regards,
Hans-Jörg
More information about the SMT-COMP
mailing list