Make term database optionally SAT-context-dependent (#5877)
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>
Tue, 9 Feb 2021 21:35:40 +0000 (15:35 -0600)
committerGitHub <noreply@github.com>
Tue, 9 Feb 2021 21:35:40 +0000 (15:35 -0600)
commit531f325f9f4757f68089e9600868133f7fe610f7
tree55cbac83898352c22b67659224eb1d20f3f38f70
parente302b6b1664d3a28c3f42de911f3c13e7b5d0605
Make term database optionally SAT-context-dependent (#5877)

This makes the terms registered to the term database (those considered by E-matching) optionally stored in a SAT-context-dependent manner. The motivation is to have a more flexible/fine-grained set of terms considered by E-matching, e.g. if preregistration becomes lazier in the future.

This uncovered 2 issues:

The induction techniques in "conjecture generator" were using private interfaces, this PR removes the friend relaionship and cleans the code
The conflict-based instantiation module was accessing the signature tables for BOUND_VARIABLES when an operator of an APPLY_UF was a BOUND_VARIABLE. This is possible when options::ufHo is enabled. This makes conflict-based instantiation skip such terms.
src/options/quantifiers_options.toml
src/theory/quantifiers/conjecture_generator.cpp
src/theory/quantifiers/quant_conflict_find.cpp
src/theory/quantifiers/term_database.cpp
src/theory/quantifiers/term_database.h
src/theory/quantifiers_engine.cpp