[proof] ITE translation fix (#3484)
authorAlex Ozdemir <aozdemir@hmc.edu>
Tue, 31 Dec 2019 04:13:48 +0000 (20:13 -0800)
committerGitHub <noreply@github.com>
Tue, 31 Dec 2019 04:13:48 +0000 (20:13 -0800)
commitf10f495cbb3784cfed51779836f49f7a06b4f289
tree7be96f4fa2a07b6bd0dbcc6dad735d313da29f21
parentb3471b719f1cd031d35e9a431027088b0dec156b
[proof] ITE translation fix (#3484)

* Bugfix: convert ifte arms to formulas for printing

We have two kinds of ITEs in our LFSC proofs:
   * ite: for sort-typed expressions
   * ifte: for formulas
Say that we have a Bool-sorted ITE. We had machinery for emitting an
`ifte` for it, but this machinery didn't actually convert the arms of
the ITE into formulas... Facepalm.

Fixed now.

* Test the lifting of ITEs from arithmetic.

This test verifies that booleans ITEs are correctly lifted to formula
ITEs in LRA proofs.

It used to fail, but now passes.

* clang-format

* Typos.

* Add test to CMake

* Set --check-proofs in test

* Address Yoni

* Expand printsAsBool documentation
* Assert ITE typing soundness

* Assert a subtype relation for ITEs, not equality

* Update src/proof/arith_proof.h

Thanks Yoni!

Co-Authored-By: yoni206 <yoni206@users.noreply.github.com>
Co-authored-by: yoni206 <yoni206@users.noreply.github.com>
src/proof/arith_proof.cpp
src/proof/arith_proof.h
src/proof/theory_proof.cpp
src/proof/theory_proof.h
test/regress/CMakeLists.txt
test/regress/regress0/arith/ite-lift.smt2 [new file with mode: 0644]