[LRA Proof] Storage for LRA proofs (#2747)
authorAlex Ozdemir <aozdemir@hmc.edu>
Sat, 15 Dec 2018 01:44:39 +0000 (17:44 -0800)
committerGitHub <noreply@github.com>
Sat, 15 Dec 2018 01:44:39 +0000 (17:44 -0800)
commit4983fb0e4339d1c03c8eb5567aca566a378114ea
treefb4d4977d9a959f7dada906bfffa2c98fbebf94c
parent0a5e63b5c4c851275cf8928cf9224857b61aa650
 [LRA Proof] Storage for LRA proofs  (#2747)

* [LRA Proof] Storage for LRA proofs

During LRA solving the `ConstraintDatabase` contains the reasoning
behind different constraints. Combinations of constraints are
periodically used to justify lemmas (conflict clauses, propegations, ...
?). `ConstraintDatabase` is SAT context-dependent.

ArithProofRecorder will be used to store concise representations of the
proof for each lemma raised by the (LR)A theory. The (LR)A theory will
write to it, and the ArithProof class will read from it to produce LFSC
proofs.

Right now, it's pretty simplistic -- it allows for only Farkas proofs.

In future PRs I'll:
   1. add logic that stores proofs therein
   2. add logic that retrieves and prints proofs
   3. enable LRA proof production, checking, and testing

* Document ArithProofRecorder use-sites

* Update src/proof/arith_proof_recorder.cpp

Co-Authored-By: alex-ozdemir <aozdemir@hmc.edu>
* Yoni's review

* clang-format

* Response to Mathias' review.
src/CMakeLists.txt
src/proof/arith_proof.cpp
src/proof/arith_proof.h
src/proof/arith_proof_recorder.cpp [new file with mode: 0644]
src/proof/arith_proof_recorder.h [new file with mode: 0644]
src/theory/arith/theory_arith.cpp
src/theory/arith/theory_arith.h