diff options
author | Andrew Reynolds <andrew.j.reynolds@gmail.com> | 2021-04-19 16:59:35 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-04-19 21:59:35 +0000 |
commit | 14ee76f0737bcd0ad6711c4ab4ff9bf53a29a705 (patch) | |
tree | 1ecb2ec9968443adfb37f7f9128a1c4107254907 /src/theory/theory_model.cpp | |
parent | a06ec9eb224c437523f3bff0ac6f6437d924f36a (diff) |
Fully incorporate quantifiers macros into ppAssert / non-clausal simplification (#6394)
This PR removes the quantifiers macro preprocessing pass, which had several shortcomings, both in terms of performance and features.
This makes it so that quantifier macros are the (optional) implementation of TheoryQuantifiers::ppAssert.
In other words, quantifiers can now be put into "solved form", forall x. P(x) ---> P = lambda x. true.
This is part of an effort to improve proofs for preprocessing, as well as centralizing our reason about substitutions for the sake of efficiency.
Diffstat (limited to 'src/theory/theory_model.cpp')
-rw-r--r-- | src/theory/theory_model.cpp | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/theory/theory_model.cpp b/src/theory/theory_model.cpp index 402cb9a3d..6793e5e02 100644 --- a/src/theory/theory_model.cpp +++ b/src/theory/theory_model.cpp @@ -715,6 +715,8 @@ std::vector< Node > TheoryModel::getFunctionsToAssign() { for( std::map< Node, std::vector< Node > >::iterator it = d_uf_terms.begin(); it != d_uf_terms.end(); ++it ){ Node n = it->first; Assert(!n.isNull()); + // should not have been solved for in a substitution + Assert(d_substitutions.apply(n) == n); if( !hasAssignedFunctionDefinition( n ) ){ Trace("model-builder-fun-debug") << "Look at function : " << n << std::endl; if( options::ufHo() ){ |