summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2020-12-02Fix RoundingMode mapping in API. (#5578)Aina Niemetz
Fixes #5524.
2020-12-02Remove Record object and convert to Node-level API (#5575)Andrew Reynolds
Required for detangling NodeManager from the Expr layer.
2020-12-02Rename macro Message to CVC4Message. (#5576)Aina Niemetz
2020-12-02Remove dagification visitor (#5574)Andrew Reynolds
This has fully been replaced by the new let binding.
2020-12-02Add associative utilities to node manager (#5530)Andrew Reynolds
Required for updating the new API to use Node utilites as backend. These utilities are copied directly from ExprManager and converted Expr -> Node.
2020-12-02Use new let binding for cvc printer (#5561)Andrew Reynolds
Also changes names slightly to avoid accidental uses of toStream, which can lead to infinite loops if the wrong version is used.
2020-12-02(proof-new) Proofs for expand definitions (#5562)Andrew Reynolds
2020-12-01Remove use of this-> in FP literal. (#5565)Aina Niemetz
2020-12-01Remove assertion related to CEGQI dependency lemmas (#5559)Andrew Reynolds
This assertion does not hold when we mix --sygus-inst with normal CEGQI. Should fix the nightlies.
2020-12-01Fix issues related to model declarations (#5560)Andrew Reynolds
This corrects two issues related to model declarations: (1) model declaration terms were mistaken not cleared, (2) the model needs to be explicitly destructed before the node manager because it contains references to Node. Fixes #5540
2020-12-01Improve rewriting of str.<= (#4848)Andres Noetzli
This commit improves our rewriting of str.<= slightly. If we have constant prefixes that are different, we can always rewrite the term to a constant. Previously, we were only doing so when the result was false.
2020-12-01Refactor transcendental solver (#5539)Gereon Kremer
This PR does another round of refactoring on the transcendental solver. It cleans up some variable names, introduces an enum type for Convexity and passes both the intended taylor degree and the actual taylor degree (which will be needed for proofs).
2020-11-30More fixes for quantifier elimination (#5533)Andrew Reynolds
Fixes #5506, fixes #5507.
2020-11-30fp_converter: Properly separate out symbolic glue code. (#5501)Aina Niemetz
File fp_converter.h encapsulates the symbolic glue code for symFPU and implements the actual word-blaster (class FpConverter). This header should not be included in any other headers in order to no pull in symFPU headers where it's not needed. However, it was included in src/theory/fp/theory_fp.h. This properly separates it out and does some clean up in TheoryFP, which still needs more love to conform to code style guidelines, and also more documentation. More love and documentation is postponed to future PRs to make reviewing easier.
2020-11-30Use new let binding in AST printer (#5529)Andrew Reynolds
Required for removing the old DagificationVisitor
2020-11-30floatingpoint: Use unique_ptr for FloatingPointLiteral pointer. (#5503)Aina Niemetz
2020-11-30Eliminate uses of SExpr from the parser. (#5496)Abdalrhman Mohamed
This is a step towards migrating Commands to the API. SExpr is an internal module that's not used by the API but is used by the parser and some commands. This PR replaces SExpr with terms of kind SEXPR in the parser and strings in commands (which brings them more inline with the API).
2020-11-30Remove includes for old API from internal code (#5536)Andrew Reynolds
The only code including the old API now are in parser/ and main/ which will require further untangling.
2020-11-30(proof-new) Proofs for regular expression elimination (#5361)Andrew Reynolds
Adds support for proofs for regular expression elimination in TheoryStrings::ppRewrite via a coarse-grained rule RE_ELIM. This rule is updated by this PR to distinguish whether we apply aggressive elimination. Aggressive elimination is not currently supported, since it is non-deterministic due to generating fresh BOUND_VARIABLE.
2020-11-26Make CAD solver work for empty set of assertions (#5535)Gereon Kremer
When called with no assertions, the CAD solver would still go to work and then segfault when trying to access the first variable. This PR adds an explicit check for this case and adds a regression. Fixes #5534 .
2020-11-26Removing infrastructure related to SMT model (#5527)Andrew Reynolds
Now, SMT models do not store an internal list of commands, and are not dependent on a reference to SmtEngine. The next cleanup step will be to merge OutputManager, DumpManager, and SmtEngineNodeListener.
2020-11-26Move expand definitions to its own file (#5528)Andrew Reynolds
We are changing our policy on how expand definitions is handled during preprocessing. This will require some additions to expand definitions handling. This PR makes a standalone module for expanding definitions.
2020-11-25Fully decouple SmtEngine and the Expr layer (#5532)Andrew Reynolds
This removes the remaining dependencies of SmtEngine on the Expr layer. It now takes a NodeManager instead of a ExprManager.
2020-11-25Fix missed case of theory preprocessing (#5531)Andrew Reynolds
This fixes a rare case of theory preprocessing where rewriting a quantified formula would introduce a term that would not be preprocessed. This led to solution unsoundness on a branch where the relationship between expand definitions and preprocessing is modified. This is required for updating to the new policy for expand definitions.
2020-11-25Disable fact vs lemma optimization in datatypes for now (#5521)Andrew Reynolds
This optimization needs more work to determine its correctness. It is currently leading to incorrect candidate models on Facebook benchmarks.
2020-11-25Fix transcendental secant plane lemmas (#5525)Gereon Kremer
The refactoring of the transcendental solver introduced a subtle issue that lead to incorrect secant plane lemmas. This PR fixes this issue, so that we now produce the correct lemmas again.
2020-11-25Use symbol manager for printing responses get-model (#5516)Andrew Reynolds
This makes symbol manager be in charge of determining which sorts and terms to print in response to get-model. This eliminates the need for the parser to call ExprManager::mkVar (and similar methods) with custom flags. This requires significant simplifications to the printers for models, where instead of a NodeCommand, we take a Sort or Term to print in the model. This is one of the last remaining steps for migrating the parser to the new API. The next step will be to remove a lot of the internal infrastructure for managing expression names, commands to print in models, node commands, node listeners, etc.
2020-11-24Allow printing of null node in let binder (#5523)Andrew Reynolds
2020-11-24Refactor transcendental solver (#5514)Gereon Kremer
The transcendental solver has grown over time, and a refactoring was due. This PR splits the transcendental solver into five components: a utility to compute taylor approximations a common state for transcendental solvers a solver for exponential function a solver for sine function a solver that wraps everything to a transcendental solver.
2020-11-23Fix regular expression consume for nested star (#5518)Andrew Reynolds
The issue was caused by simple regular expression consume being too aggressive when a recursive call was made to the method. In particular, we were assuming that the body of the star must be unrolled to fully consume a string, when it can be skipped if we are not at top level. Fixes #5510.
2020-11-23Change UF ho to ppRewrite instead of expand definition (#5499)Andrew Reynolds
UF uses expandDefinitions to convert fully applied HO_APPLY to APPLY_UF. The more appropriate place to do this is in Theory::ppRewrite.
2020-11-23Fix for sygusToBuiltinEval for non-ground composite terms (#5466)Andrew Reynolds
There was a bug in the method for computing the evaluation of a sygus term applied to arguments. The case that was wrong was for (DT_SYGUS_EVAL t c1 ... cn) where t contained a subterm (op t1 ... tn) where: (1) (op t1 ... tn) is a non-ground sygus datatype term (2) op was an operator of the form (lambda ((z T)) (g z xi)) where xi is a variable from the formal argument list of the function to synthesize. In this case, xi was not getting replaced by ci. This bug appears when using sygus repair for grammars with composite term that involve variables from the formal argument list of the synth-fun.
2020-11-23(proof-new) Miscellaneous changes from proof-new (#5445)Andrew Reynolds
2020-11-23Add declare model symbol methods to SymbolManager and Model (#5480)Andrew Reynolds
This is in preparation for the symbol manager determining which symbols are printed in the model.
2020-11-23Add get-info :time. (#5485)Gereon Kremer
This PR adds the new info `:time` that can be queried with `(get-info :time)` and returns the spent CPU time (as returned by `std::clock()`. @pjljvandelaar Fixes CVC4/CVC4-projects#102
2020-11-22Fix quantifiers scope issue in strings preprocessor (#5491)Andrew Reynolds
Leads to free variables in assertions when using `str.<=` whose reduction uses EXISTS not FORALL. Fixes #5483.
2020-11-20Add posRewriteEqual to bags rewriter (#5498)mudathirmahgoub
This PR fixes #5460 by adding posRewriteEqual to bags rewriter
2020-11-20Rename symfpu_literal.(h.in|cpp) -> floatingpoint_literal_symfpu.(h.in|cpp). ↵Aina Niemetz
(#5502)
2020-11-20Rename floatingpoint.h.in -> floatingpoin.h. (#5500)Aina Niemetz
2020-11-20Fix remove term formula policy for terms beneath quantifiers (#5497)Andrew Reynolds
Now that extended arithmetic symbols are not eliminated during expandDefinitions, this allowed for a chain of events that would not apply theory preprocessing on certain terms. In particular, a term t would not have theory preprocessing applied to it if it was a strict subterm of ITE-term s that occurred in a term position in a quantified formula body, and s did not have free variables. In this case, term formula removal would add a lemma corresponding to the ITE skolem definition, whose subterms did not have theory preprocessing applied. This meant that a (div a d) term was not being preprocessed in #5482, leading to solution unsoundness. This changes the policy in term formula removal to be in sync with theory preprocessing: term formula removal and theory preprocessing only apply to terms that are not beneath quantifiers. In particular, this means that ground terms in quantifier bodies are left untouched until they are introduced e.g. by instantiation. This fixes the solution soundness issue (fixes #5482).
2020-11-20RoundingMode: Rename enum values to conform to code style guidelines. (#5494)Aina Niemetz
2020-11-20FloatingPoint: Separate out symFPU glue code. (#5492)Aina Niemetz
This works towards having the symFPU headers only included where it's absolutely needed (only in the .cpp files, not in any other headers). Note: src/util/floatingpoint.h.in will be converted to a regular .h file in the next step to simplify reviewing.
2020-11-20Fix #5493. (#5495)Aina Niemetz
2020-11-20Support nested quantifier elimination for get-qe command (#5490)Andrew Reynolds
Uses new nested-qe utility for eliminating nested quantification before doing quantifier elimination. Fixes CVC4/cvc4-wishues#26 Fixes #5484.
2020-11-20Updates to API in preparation for using symbol manager for model (#5481)Andrew Reynolds
printModel no longer makes sense if the list of declared symbols is managed outside the solver. Also, mkConst needs a variant to distinguish a provided name of "" vs. a name that is not provided.
2020-11-20Fix compiler warnings. (#5493)Aina Niemetz
2020-11-20Fix use of declaration sequence command in cvc parser (#5479)Andrew Reynolds
This is required to make the cvc parser work properly with the new version of getting models based on the symbol manager.
2020-11-20(proof-new) Replace LazyCDProofSet by generic CDProofSet (#5487)Gereon Kremer
This PR replaces the LazyCDProofSet, that was hardcoded to use LazyCDProof objects, by a templated CDProofSet.
2020-11-20Allow to pass ProofGenerator to arithmetic inference manager. (#5488)Gereon Kremer
This PR prepares the addition of proofs for the arithmetic theory by making addPendingArithLemma() accept a ProofGenerator*.
2020-11-19Enable new implementation of CEGQI based on nested quantifier elimination ↵Andrew Reynolds
(#5477) This replaces the old implementation of CEGQI based on nested quantifier elimination (--cegqi-nested-qe) with the new implementation. The previous implementation used some convoluted internal attributes to manage dependencies between quantified formulas, the new implementation is much simpler: it simply eliminates nested quantification eagerly. Fixes #5365, fixes #5279, fixes #4849, fixes #4433. This PR also required fixes related to how quantifier elimination is computed.
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback