(proof-new) Update ppRewrite to use skolem lemmas (#6102)
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>
Wed, 10 Mar 2021 19:07:39 +0000 (13:07 -0600)
committerGitHub <noreply@github.com>
Wed, 10 Mar 2021 19:07:39 +0000 (13:07 -0600)
commit99acb6adc4858e9228a75283c0d4a640ce7cc812
tree4427782f5823505831ba11bd1915a17f10caeed1
parent132504c9f255fdb2c31b9a43bb3b9513db41afc1
(proof-new) Update ppRewrite to use skolem lemmas (#6102)

This is required for proofs. The internal calculus no longer uses witness forms for reasoning, and hence we cannot return witness terms in ppRewrite. This is required to fix a debug failure, as well as making life easier on external proof conversions.

As a result of this PR, for example, given (P a) as input to ppRewrite, previous we returned:

(P (witness ((x T)) (A x)))

now we return:

(P k), with skolem lemma ( (A k), k )

Followup PRs will remove the use of WITNESS in ppRewrite (e.g. in sets and strings); this PR modifies arithmetic to not return WITNESS in response to ppRewrite.
25 files changed:
src/expr/skolem_manager.cpp
src/expr/skolem_manager.h
src/theory/arith/operator_elim.cpp
src/theory/arith/theory_arith.cpp
src/theory/arith/theory_arith.h
src/theory/arrays/theory_arrays.cpp
src/theory/arrays/theory_arrays.h
src/theory/bv/theory_bv.cpp
src/theory/bv/theory_bv.h
src/theory/datatypes/theory_datatypes.cpp
src/theory/datatypes/theory_datatypes.h
src/theory/fp/theory_fp.cpp
src/theory/fp/theory_fp.h
src/theory/sets/theory_sets.cpp
src/theory/sets/theory_sets.h
src/theory/sets/theory_sets_private.cpp
src/theory/sets/theory_sets_private.h
src/theory/strings/theory_strings.cpp
src/theory/strings/theory_strings.h
src/theory/theory.h
src/theory/theory_engine.cpp
src/theory/theory_preprocessor.cpp
src/theory/theory_preprocessor.h
src/theory/uf/theory_uf.cpp
src/theory/uf/theory_uf.h