summaryrefslogtreecommitdiff
path: root/src/theory/quantifiers/ematching
AgeCommit message (Collapse)Author
2021-11-01Replace more static options accesses (#7531)Gereon Kremer
This replaces a bunch of static accesses to options (`options::foo()`) by using the `EnvObj::options()` method.
2021-10-20Reimplement support for relational triggers (#7063)Andrew Reynolds
This makes relational triggers its own kind of instantiation match generator. Future PRs will delete the code interleaved in the core InstMatchGenerator class for handling relational triggers. This PR also fixes two issues related to how trigger techniques are combined: (1) instantiation match generators that are generated as part of multi-triggers now are properly specialized (using getInstMatchGenerator), (2) there was a bug with auto-generated triggers: when the first auto-generated trigger was generated that was already a user trigger, then we would ignore all other auto-generated triggers. This is work towards finding a solution for the choice.move.hard Facebook benchmark, where relational-triggers appear to be a possible solution.
2021-10-14Split entailment check from term database (#7342)Andrew Reynolds
Towards addressing some bottlenecks on Facebook benchmarks.
2021-10-11Rename SmtScope to SolverEngineScope. (#7284)Aina Niemetz
2021-10-09Remove static accesses to options where EnvObj is used (#7330)Gereon Kremer
This PR removes a bunch of static accesses in places where EnvObj is used now, and we can thus use options().
2021-10-04Refactor internally generated bounded quantified formulas (#7291)Andrew Reynolds
This changes the attribute on internally generated bounded quantified formulas from `isInternal` to `isQuantBounded`. This makes it clear that bounded integers is the module that should process them. It also moves the utility for constructing these quantified formulas from strings to BoundedIntegers itself. This is to accommodate other theories, e.g. bags, that may make use of reductions to bounded quantifiers.
2021-09-30Rename files smt_engine.(cpp|h) to solver_engine.(cpp|h). (#7279)Aina Niemetz
This is in preparation for renaming SmtEngine to SolverEngine.
2021-09-23Eliminate Output macro in favor of simple Env functions (#7223)Gereon Kremer
This PR eliminates the Output macro together with the associated output stream (stored in a static variable). It is replaces by a set of simple utility functions of the Env class, and we instead use the output stream from options.base.out. To achieve this, a couple of quantifier classes are now derived from EnvObj.
2021-09-22Towards standard usage of evaluator (#7189)Andrew Reynolds
This makes the evaluator accessible via EnvObj through the Rewriter. It furthermore removes Rewriter::rewrite from inside the evaluator itself. Construction of Evaluator utilities is now discouraged. The include dependencies were cleaned slightly in this PR, leading to more precise includes throughout. This is work towards having a configurable cardinality for strings, as well as eliminating SmtEngineScope.
2021-09-15Minor changes to E-matching utilities (#7062)Andrew Reynolds
2021-09-09Remove `TheoryState::getEnv()` (#7163)Andres Noetzli
2021-09-09Remove `TheoryState::options()` (#7148)Andres Noetzli
This commit removes TheoryState::options() by changing more classes to EnvObjs.
2021-08-26Make datatype selector expansion to its own accessible method (#7069)Andrew Reynolds
This eliminates another call to currentSmtEngine. After this, there are only two remaining calls (one for normalizing sygus grammars wrt user define-funs, and the other for Rewriter::rewrite).
2021-08-24Split higher-order term database (#7045)Andrew Reynolds
This splits higher-order term database as a derived class of term database, thus separating higher-order specific things out of our core term database. This eliminates many of the references to the deprecated option uf-ho. This is work towards eliminating that option.
2021-08-22Prenex quantified formulas with user annotations by default (#7048)Andrew Reynolds
Our policy is now accurate to the help message on prenexUserQuant: we only prenex quantified formulas if they do not have user-provided patterns. Previously we also did not prenex any quantified formulas with any annotations. This should avoid some more "unknown" responses on facebook benchmarks. Also fixes a minor issue with when we print warnings about quantified formulas with no triggers. FYI @barrettcw .
2021-08-18Minor fixes of policy for eliminating quantifiers (#7033)Andres Noetzli
PR #7017 fixed the policy for eliminating quantifiers but introduced some minor issues, which this commit fixes: the InstantiationEngine::checkOwnership() method was changed to look for patterns in the wrong node. the PR changed the modes of the --user-pat=MODE method but reused one of the names. This commit fixes the name and adds a check in the options script. fixing the policy caused cvc5 to answer unsat instead of the expected unknown for regress0/use_approx/bug812_approx.smt2. The commit updates the expected result.
2021-08-17Fix policy for eliminating quantified formulas (#7017)Andrew Reynolds
This also consolidates the option strictTriggers into userPatMode. Fixes #6996.
2021-08-04Add optional debug information for dumping instantiations (#6950)Andrew Reynolds
This complete the implementation of dump-instantiations-debug. With this option, we can print the source of instantiations. For example: $ cvc5 regress1/quantifiers/dump-inst-proof.smt2 --dump-instantiations-debug --produce-proofs unsat (instantiations (forall ((x Int)) (or (P x) (Q x))) (! ( 2 ) :source QUANTIFIERS_INST_E_MATCHING_SIMPLE ((not (= (P x) true)))) ) (instantiations (forall ((x Int)) (or (not (S x)) (not (Q x)))) (! ( 2 ) :source QUANTIFIERS_INST_E_MATCHING_SIMPLE ((not (= (S x) false)))) )
2021-08-04Add missing inference identifiers (#6962)Andrew Reynolds
The only remaining unknown inferences covered by our regressions are from the sygus solver, will address in later PR.
2021-07-27Track instantiation reasons in proofs (#6935)Andrew Reynolds
This adds optional arguments to INSTANTIATE steps in proofs to track fine-grained reasons for relevant instantiations. Also simplifies an old argument modEq which was unused. FYI @MikolasJanota
2021-07-07Standard output for trigger selection (#6841)Andrew Reynolds
Fixes #6259.
2021-05-26 More precise includes of `Node` constants (#6617)Andres Noetzli
We store constants, e.g., BitVector and Rational, in our node infrastructure. As a result, we were indirectly including some headers in almost all files, e.g., the GMP headers. This commit changes that by forward-declaring the classes for the constants. As a result, we have to include headers like util/rational.h explicitly when we use Rational but it saves about 3 minutes in compile time (CPU time). The commit changes RoundingMode from an enum to an enum class such that it can be forward declared.
2021-05-13Add std::hash overloads for Node, TNode and TypeNode. (#6534)Mathias Preiner
Eliminates NodeHashFunction, TNodeHashFunction and TypeNodeHashFunction.
2021-05-07Simplifications to expand definitions (#6487)Andrew Reynolds
This removes the expandOnly flag from expandDefinitions. The use of expandOnly = true is equivalent to applying top-level substitutions only, which should be done explicitly via Env::getTopLevelSubstitutions. It updates the trust substitutions utility to distinguish apply vs applyTrusted for convenience for this purpose. This also breaks several dependencies in e.g. expand definitions module.
2021-05-06Discard duplicate terms in patterns (#6501)Andrew Reynolds
Fixes #6495.
2021-04-15Rename occurrences of CVC4 to CVC5. (#6351)Aina Niemetz
This renames everything but GitHub links and build system related macros. Switching the build system to cvc5 will be the last step in the renaming process.
2021-04-14Rename public and private headers in src/include. (#6352)Aina Niemetz
2021-04-12Refactor and update copyright headers. (#6316)Aina Niemetz
2021-04-09Rename CVC4__ header guards to CVC5__. (#6326)Aina Niemetz
2021-04-01Rename namespace CVC5 to cvc5. (#6258)Aina Niemetz
2021-03-31Rename namespace CVC4 to CVC5. (#6249)Aina Niemetz
2021-03-31Eliminate dependencies on quantifiers engine in internal quantifiers code ↵Andrew Reynolds
(#6240) This completes eliminating dependencies on quantifiers engine from internal quantifiers code. It eliminates quantifiers_engine.h as an include from src/theory/quantifiers/ apart from theory_quantifiers.cpp where it is owned. Followup PRs will further eliminate circular dependencies that arose will refactoring quantifiers engine.
2021-03-31Add missing inference ids (#6242)Andrew Reynolds
Towards having complete stats on inference ids for each lemma, fact, and conflict.
2021-03-30Miscellaneous elimination of dependencies on quantifiers engine (#6238)Andrew Reynolds
This should be the last PR before quantifiers engine will not be passed to quantifiers modules.
2021-03-26Pass term registry to quantifiers modules (#6216)Andrew Reynolds
2021-03-25Refactor construction of triggers (#6209)Andrew Reynolds
This PR centralizes our utilities for generating triggers. It also splits the statistics class from quantifiers off from quantifiers engine.
2021-03-24Use inference manager to access intantiate utility instead of quantifiers ↵Andrew Reynolds
engine (#6198) Towards breaking dependencies on quantifers engine.
2021-03-23Passing term registry to ematching utilities (#6190)Andrew Reynolds
Model is now nested into term registry. This PR also resolves some complications due to namespaces within quantifiers.
2021-03-22Move equality query utility into quantifiers model (#6186)Andrew Reynolds
This simplifies the initialization of quantifiers engine. This PR also makes general improvements to EqualityQuery.
2021-03-15Split inst match generator class to own file (#6125)Andrew Reynolds
2021-03-15Reorganizing initialization of term registry in quantifiers (#6127)Andrew Reynolds
This is in preparation for moving several utilities into the quantifiers inference manager. This PR moves ownership of TermRegistry and QuantifiersRegistry to TheoryQuantifiers from QuantifiersEngine.
2021-03-11Simplify instantiation match generator interface (#6121)Andrew Reynolds
2021-03-11Introduce inference ids for quantifier instantiation (#6119)Andrew Reynolds
This makes quantifiers use standard inference ids. This eliminates the need to track ad-hoc statistics, per instantiation type. This makes minor modifications to a few interfaces in quantifiers to enable this.
2021-03-09Some more cleanup of includes (#6083)Gereon Kremer
This PR does some more cleanup of the includes.
2021-03-09Update copyright headers to 2021. (#6081)Aina Niemetz
2021-03-02Clean up includes to reduce compile times (#6031)Gereon Kremer
This PR cleans up a ton of includes, based on the suggestions of iwyu. Mostly, it removes includes from header files in favor of forward declarations and adds includes to source files.
2021-02-24Enable -Werror. (#5969)Mathias Preiner
2021-02-23Add state and inference manager to inst match generator (#5968)Andrew Reynolds
In preparation for refactoring E-matching to not pass QuantifiersEngine pointer to its utilities.
2021-02-22Eliminate raw use of output channel and valuation in quantifiers (#5933)Andrew Reynolds
This makes all lemmas in quantifiers sent through the inference manager. It begins adding InferenceId values for some of these calls. All uses of Valuation are replaced by calls to QuantifiersState.
2021-02-22Move quantifiers attributes to quantifiers registry (#5929)Andrew Reynolds
This moves the utility class beneath quantifiers registry.
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback