Refactor skolem construction (#7561)
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>
Wed, 3 Nov 2021 17:43:02 +0000 (12:43 -0500)
committerGitHub <noreply@github.com>
Wed, 3 Nov 2021 17:43:02 +0000 (12:43 -0500)
commit25b8d01a989a51763e2130384c800a5732d4e06a
tree08f9af2d01f961dc04eafbf00f3fe096d6ef6bb7
parentd527b3f2501410770a76977efa180009e06ea172
Refactor skolem construction (#7561)

This makes all methods for constructing skolems local to SkolemManager.

It removes infrastructure for node manager listeners being notified when skolems are constructed. This was used for 2 things:
(1) The old dumping infrastructure, where skolems could contribute in part to traces to print benchmarks. This code will be deleted soon.
(2) The miplib preprocessing pass, which used this functionality to listen to what skolems were constructed, and subsequently assumed these skolems coincided with what Boolean variables appeared in assertions. This is highly error prone, and has been replaced by a simple traversal to collect Boolean variables in assertions.

This is in preparation for a lazy lambda lifting technique, which will require more infrastructure in SkolemManager.
20 files changed:
src/expr/dtype.cpp
src/expr/dtype_cons.cpp
src/expr/node_manager.cpp
src/expr/node_manager.h
src/expr/skolem_manager.cpp
src/expr/skolem_manager.h
src/preprocessing/passes/miplib_trick.cpp
src/preprocessing/passes/miplib_trick.h
src/smt/listeners.cpp
src/smt/listeners.h
src/smt/term_formula_removal.cpp
src/theory/arith/nl/cad_solver.cpp
src/theory/arith/operator_elim.cpp
src/theory/fp/fp_expand_defs.cpp
src/theory/quantifiers/sygus/sygus_unif_rl.cpp
src/theory/sets/theory_sets_private.cpp
src/theory/strings/skolem_cache.cpp
test/unit/node/node_black.cpp
test/unit/node/node_manager_black.cpp
test/unit/theory/theory_arith_cad_white.cpp