When a formula in Z3 is unsat and (get-proof) is specified there is an output which I don’t find any information about what it is. Where can I find any documentation about that?
Seems to me quite unreadable, is there possibly any tool that takes this as an input?
Cheers,
Matt
The "proofs" produced by Z3 are not for human consumption.
An outdated version of the format is described in the paper: Proofs and Refutations, and Z3. The
z3_api.hfile has a long description of each one of the proof rules. The proof rule identifiers start withZ3_OP_PR. I am aware of two applications that use the Z3 proof objects. The following papers contain a lot of examples, and describe how the proof objects can be used.Isabelle Interactive Theorem Prover: Z3 proofs are reconstructed inside of Isabelle using a trusted core. You can find several papers describing this work and the Z3 proof format at Sascha Bohme’s homepage
Generation of interpolants
As pad said,
unsat-coresare much simpler to use.