summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2017-10-09Split term database (#1206)Andrew Reynolds
* Move equality query to own file, move equality inference to quantifiers engine. * Move quantifiers attributes out of TermDb and into QuantAttribute. * Move term database sygus to quantifiers engine, move some attributes to quantifiers attributes header. * Split term database into term util. * Partial fix for #1205 that eliminates need for dependency in node.cpp. * Add more references to github issues.
2017-10-09CBQI BV: Add inverse for more operators. (#1213)Aina Niemetz
This implements side conditions and the instantiation via word-level inversion for operators BITVECTOR_AND, BITVECTOR_OR, BITVECTOR_UREM (Index=1), BITVECTOR_LSHR (index=0).
2017-10-05Fix typo in comment.Clark Barrett
2017-10-05Split COPYING file, add missing licenses. (#1195)Mathias Preiner
The COPYING file now only contains the modified BSD license of CVC4 and specifies the software that is either incorporated into CVC4 or can be linked against CVC4. The copyright and license information for each software can now be found in the licenses/<software>-LICENSE. The COPYING file has now 3 sections: (1) modified BSD license of CVC4 (2) non-GPLv3 software that is incorporated in CVC4 or that can be linked against CVC4 (3) GPLv3 software that can be optionally linked against CVC4
2017-10-05Minor change to how SyGus commands are translated to SmtEngine commands. ↵Andrew Reynolds
This ensures a single success is printed for synth-fun and synth-inv. (#1193)
2017-10-05Ho model (#1120)Andrew Reynolds
* Update model construction for higher order. If HO_APPLY terms are present for a function, we use a curried (tree) model construction to avoid exponential size model representations for function definitions. * Update comments. * Change terminology in comment. * Improve comments.
2017-10-05Allow CDHashMaps for objects without default constructors (#1092)Martin
This is a patch, originally from mdeters/cdhashmap-default-constructibility that allows CDHashMaps to be declared for objects that don't have default constructors.
2017-10-04Add mkZero, mkOne and mkUmulo to bv utils. (#1200)Aina Niemetz
This adds several utility functions for the theory BV. Function mkUmulo encodes an unsigned multiplication overflow detection operation, which we need for CBQI BV. In the future, we will introduce a Umulo node kind (and a corresponding bit-blasting strategy based on the encoding implemented in mkUmulo).
2017-10-04Ho quant util (#1119)Andrew Reynolds
Quantifiers utilities for higher-order. This makes the term indexing mechanisms in Term Database take into account equalities between functions, in which case the term indices for the two functions merges. Also adds required options and a minor utility for implementing app completion.
2017-10-04Removing the throw specifier from ArrayStoreAll constructor. (#1182)Tim King
Addresses CIDS: 1457252 and 1379620. Miscellaneous cleanup to ArrayStoreAll.
2017-10-03Add regression from #50 regarding "as" parsing in smt2 (#1188)Andrew Reynolds
* Add regression from pull request #50, which was fixed separately in pull request #1162. * Improve comment in regression
2017-10-03Add Cryptominisat and LFSC to --show-config output. (#1194)Mathias Preiner
Also removed obsolete CUDD related code.
2017-10-03Move sygus grammar utilities to separate file. (#1184)Andrew Reynolds
* Move sygus grammar utilities to separate file. * Minor * Move includes
2017-10-03Op overload parser (#1162)Andrew Reynolds
* Update parser for operator overloading. * Improvements * Updates * Add assert
2017-10-03Add initial version of the SMTCOMP2018 run scripts (#1185)Andres Noetzli
This commit is a preparation step for removing the --thread-stack option (and, ultimately, the dependency on Boost). It just copies the 2017 version of the scripts and changes the --fs-inst flag to --fs-interleave, following the renaming in commit 7766f0ba088ad6d6c58ea9678477b255c9e52fee.
2017-10-02Unify hash functions for pairs (#1161)Andres Noetzli
CVC4 was implementing multiple, slightly different hash functions for pairs. With pull request #1157, we have a decent generic hash function for pairs. This commit replaces the existing hash function implementations with a typedef of the generic hash function.
2017-10-02Add 5 FP kinds for partial to total fn conversion (#1128)Martin
- Add new kinds for partially defined functions - Print the new kinds - Type rules for the new total kinds - Constant folding and rewrites for the new total kinds
2017-10-02Address comments from PR #1164. (#1174)Mathias Preiner
Make eliminateSkolemFunctions(...) iterative and some more minor fixes.
2017-10-02Removing throw specifiers from SymbolTable::Implementation. (#1183)Tim King
2017-10-01Removing throw specifiers from TypeEnumeratorBase's operator* and ↵Tim King
isFinished. (#1176) The throw specifier has been moved to a comment.f This allows for fixing several CIDs on FloatingPointEnumerator: 1457254, 1457258, 1457260, 1457269, 1457270, 1457274, and 1457275. This also has miscellaneous formatting, documentation and const labeling improvements.
2017-10-01CID 1457268: Initializing CegConjecture::d_syntax_guided to false. (#1181)Tim King
2017-10-01Refactor check function in last call effort of non-linear extension. (#1175)Andrew Reynolds
2017-09-30SyGuS streaming solution mode (#1131)Andrew Reynolds
* Refactor conjecture class in ce guided instantiation, move to own file. In preparation for sygus streaming mode. * Infrastructure for streaming guards, more cleanup. * Do explicit exclusion to move to next solution for sygus streaming option, now functional. More cleanup. * More cleanup, add comments. * Update comments * Optimizations for invariant synthesis. Fix corner case for single invocation inference, more encapsulation in single inv utility. Minor fix for variable elimination in quantifiers rewriter. * Fix makefile. * Cleanup. * Remove unused includes. * Minor
2017-09-29Move BvInverter class into separate file. (#1173)Mathias Preiner
2017-09-29A few updates to license files.Clark Barrett
2017-09-29Add license information for GMPAndres Noetzli
2017-09-29Simplify representation of inversion Skolems for bv cegqi (#1164)Andrew Reynolds
* Simplify intermediate representation of inversion skolems for cegqi bit-vectors. Cache bv inversion status globally in QuantifierEngine. Generalize virtual term policy for marking eligible instantiation terms. Enable regression. * Enable other regression
2017-09-29Initial working version of BV word-level instantiation (#1158)Andrew Reynolds
* Initial work on BV CEGQI, still working on avoid circular dependencies with inversion skolems. * Guard by option, minor notes. * Minor * Minor fixes. * Minor
2017-09-29Better hash function for pairs (#1157)Andres Noetzli
CVC4 was computing hashes for pairs of objects by simply XORing the hashes of the two objects. This commit implements a better way of combining hashes based on the FNV-1a hash algorithm. The algorithm is public domain.
2017-09-28Update symbol table to support operator overloading (#1154)Andrew Reynolds
2017-09-28Fix output of --show-config for readline. (#1159)Mathias Preiner
cvc4 --show-config reported the wrong configuration for readline since HAVE_LIBREADLINE is set to 0 or 1 but was checked with #ifdef.
2017-09-28Cegqi refactor prep bv (#1155)Andrew Reynolds
* Preparing for bv instantiation, initial working version. * Undoing bv changes to break up into smaller commit.
2017-09-28Improve finite model finding for recursive predicates (#1150)Andrew Reynolds
* Optimization for model finding for recursive functions involving branching positions. Update documentation, add regressions. * Simplifications, update comments.
2017-09-27Minor fixes for partial quantifier elimination. (#1147)Andrew Reynolds
This forces "counterexample lemmas" (the formula B => ~phi[e] on page 23 of http://homepage.divms.uiowa.edu/~ajreynol/fmsd17-instla.pdf) to be added during TheoryQuantifiers::preRegisterTerm instead of at full effort check. This is required to ensure that CVC4's partial quantifier elimination algorithm produces correct results. Some background: "get-qe" and "get-qe-disjunct" are commands in the SMT2 parser. Here is how they can be used: [declarations] [assertions A] (get-qe (exists X F)) returns a ground formula F' such that A ^ F' and A ^ (exists X F) are equivalent. The command "get-qe-disjunct" provides an interface for doing an incremental version of "get-qe". [declarations] [assertions A] (get-qe-disjunct (exists X F)) returns a ground formula F1' such that A ^ F' implies A ^ (exists X F). It moreover has the property that if you call: [declarations] [assertions A] (assert F1') (get-qe-disjunct (exists X F)) this will give you a formula F2' where eventually: [declarations] [assertions A] (assert (not (or F1' ... Fn'))) (get-qe-disjunct (exists X F)) will either return "true" or "false", for some finite n. Here is an example that failed before this commit: (set-logic LIA) (declare-fun a () Int) (declare-fun b () Int) (declare-fun c () Int) (declare-fun d () Int) (assert (or (not (>= (+ a (* (- 1) b)) 1)) (not (>= (+ c (* (- 1) d)) 0)))) (get-qe-disjunct (exists ((x Int)) (and (> a b) (> c x) (> d x)))) This should return: (not (or (not (>= (+ a (* (- 1) b)) 1)) (>= (+ c (* (- 1) d)) 1))) Previously it was returning: false This is because the cbqi algorithm needs to assume the negation of the quantified formula we are doing qe on before it makes any decision. The get-qe-partial feature is being requested by Cesare and Daniel Larraz for Kind2. This improves our performance on quantified LIA/LRA: https://www.starexec.org/starexec/secure/details/job.jsp?id=24480 see CVC4-092617-2-fixQePartial
2017-09-27CEGQI for BV: Add inverse for BITVECTOR_MULT. (#1153)Aina Niemetz
This implements side conditions and the instantiation via word-level inversion for operator BITVECTOR_MULT.
2017-09-27Add quantifiers API example, fixes #879 (#1146)Andrew Reynolds
2017-09-27Fix seeking for buffered input (#1145)Andres Noetzli
CVC4's implementation of seek was calculating the pointer difference between the current position in the input and the seek point to determine how many characters to consume. This was causing problems when ANTLR was seeking to a pointer on a line after the current line because it would result in a big number of characters to consume because each line is allocated separately. This resulted in issue #1113, where CVC4 was computing a large number of characters to consume and would block until it received all of them. This commit fixes and simplifies the code by simply consuming characters until the seek point is reached without computing a count beforehand.
2017-09-26Fix type checking of to_real (#1127)Martin Brain
to_real takes a single argument as given in kinds.
2017-09-26Improve FP rewriter: const folding, other (#1126)Martin Brain
2017-09-26Fixing CIDs 1172014 and 1172013: Initializing members of GetProofCommand and ↵Tim King
GetModelCommand to nullptr. (#1142)
2017-09-26Fixing Cid 1172009 (#1141)Tim King
2017-09-26Fixing CID 1172020: Initializing CDHashMap::iterator::d_it to nullptr. (#1139)Tim King
2017-09-26Fixing CID 1362903: Initializing d_bvp to nullptr. (#1136)Tim King
2017-09-26CID 1362904: Initializing GetInstantiationsCommand::d_smtEngine to nullptr. ↵Tim King
(#1135)
2017-09-26Fix build for old GMP version (#1114)Andres Noetzli
Older versions of GMP in combination with newer versions of GCC and C++11 cause errors [0]. This commit adds the necessary includes of <cstddef>. [0] https://gcc.gnu.org/gcc-4.9/porting_to.html
2017-09-25Fixing CIDs 1172012 and 1172011: Initiallzing d_exprManager to nullptr in ↵Tim King
const_iterator. (#1140)
2017-09-25Cegqi refactor substitutions (#1129)Andrew Reynolds
This refactors the apply substitution mechanism for counterexample-guided quantifier instantiation (CEGQI). Improvements to the code: (1) Methods have been added to the TermProperties class that summarize their theory-independent behavior (including "getModifiedTerm", "isBasic" etc.). For now, I have not made a "TermPropertiesArith" class yet since this will require more fundamental refactoring. (2) The terminology "has_coeff" is replaced "is_non_basic" throughout. (3) Added the applySubstitutionToLiteral method. (4) Both applySubstitution and applySubstitutionToLiteral are now private within CegInstantiator. This means that theory-specific instantiators do not need to implement custom ways of applying substitutions (previously the arithmetic instantiator was). (5) applySubstitutionToLiteral is automatically called on all literals (see line 297 of ceg_instantiator.cpp). This means that BvInstantiator::processAssertion is now called on substituted literals. So for instance if our context contains two literals: x = bv2, bvmul(x,y) = bv4 Say we are asked to solve for x first, and return the substitution {x -> bv2}, then if we are later asked to solve for y, we will call processAssertion for the literal bvmul(bv2,y)=bv4 (6) LIA-specific information "d_theta" in SolvedForm is encapsulated inside the class (with the understanding that this will be made virtual). This commit has no impact on quantified LIA / LRA: https://www.starexec.org/starexec/secure/details/job.jsp?id=24480 (see CVC4-092217-cegqiRefactorSubs)
2017-09-25Initializing BVMinisat Solver::notify to nullptr. (#1132)Tim King
2017-09-25Fix bug related to sort inference + subtypes. (#1125)Andrew Reynolds
2017-09-25Fixing CID 1362917: There was a branch where d_issup was not initialized. ↵Tim King
Switching members of InstantiationEngine to uniqur_ptr to simplify such cases. (#1133)
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback