Basic proof support in inference manager (#4975)
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>
Mon, 31 Aug 2020 11:46:42 +0000 (06:46 -0500)
committerGitHub <noreply@github.com>
Mon, 31 Aug 2020 11:46:42 +0000 (06:46 -0500)
commitfc784f0273099b84581862b8587940c6db3459ed
treef8eb682b426b14f01d349983d0e40f2bcbfcb8b1
parent0675545dde7ed679b7045a37470148c7e1bdfd25
Basic proof support in inference manager (#4975)

This adds basic support for asserting internal facts with proofs in the inference manager class.

The purpose of this PR is twofold:
(1) From the point of view of proofs, this PR standardizes the management of proof equality engine within inference manager. Theories no longer have to manually construct proof equality engines, and instead are recommended to create inference managers.
(2) From the point of view of the new approach to theory combination, this PR ensures standard theory callbacks (preNotifyFact / notifyFact) are used for internal facts, regardless of whether proofs are enabled.

This will simplify several of the current (unmerged) changes for proof production in theory solvers on proof-new.

Notice this PR adds the utility method NodeManager::mkAnd, which is arguably long overdue.

Also notice this code is not yet active, but will be used on proof-new after this PR is merged.
src/expr/node_manager.h
src/theory/theory_inference_manager.cpp
src/theory/theory_inference_manager.h
src/theory/uf/proof_equality_engine.cpp
src/theory/uf/proof_equality_engine.h