(proof-new) Callbacks for term-context-sensitive terms (#4842)
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>
Tue, 18 Aug 2020 15:29:46 +0000 (10:29 -0500)
committerGitHub <noreply@github.com>
Tue, 18 Aug 2020 15:29:46 +0000 (10:29 -0500)
commitee00caa684da76ce494d57d30b22ad20c082b652
treef173c6921065258def2771bbaf05040475b642f3
parent835c79635e241366feec5fa34656dc98d1a77fef
(proof-new) Callbacks for term-context-sensitive terms (#4842)

Callbacks for term-context-sensitive terms.

It gives two examples of such callbacks, "remove term formula (rtf) context" to be used in the remove term formulas pass and "polarity context" which is a highly common pattern in preprocessing.

These utilities will be critical for maintain proofs for term-context-sensitive rewrites. An example user of these utilities is TermFormulaRemoval, which rewrites terms depending on whether they occur beneath quantifiers/terms. This utility currently has bugs in its proof generation since its proof cache does not consider the term context. This PR updates that class to use this utility. Its proof generator will be similarly extended in proof-new to synchronize its cache, relative to term context identifiers. Concretely, a TermContext callback will be passed to TConvProofGenerator, which will put together proof skeletons in a term-context-sensitive manner.
src/expr/CMakeLists.txt
src/expr/term_context.cpp [new file with mode: 0644]
src/expr/term_context.h [new file with mode: 0644]