summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2021-06-16Merge branch 'master' into archiveRunScriptsarchiveRunScriptsMathias Preiner
2021-06-16Properly consider aliases in option handlers (#6683)Gereon Kremer
This PR makes sure that option handlers have access to both the canonical option name and the option name that was actually used. It also updates the options README and gets rid of the base_handlers.h of which only a fraction was used.
2021-06-15[Optimization] Use Result in OptimizationResult (#6740)Ouyancheng
OptimizationResult now contains: - cvc5::Result - optimal value for objective - whether the objective is unbounded This gets benefit from cvc5::Result (e.g., we could get explanation for UNKNOWN) and it's slightly easier to integrate to the current API. Also refactors BV optimizer so that it uses switch statement (instead of if-then-else) to judge the checkSat results (I was planning to do this a long while ago)...
2021-06-15pow2: adding a kind, inference rules, and some implementations in the pow2 ↵yoni206
solver (#6736) This PR is the sequel of #6676 . It adds the `POW2` kind, inference rules that will be used in the `pow2` solver, an implementation of one function of the solver, as well as stubs for the others. The next PR will include more implementations.
2021-06-15Archive SMT-COMP 2021 run scriptsAndres Noetzli
2021-06-15Update to a more recent libpoly version. (#6730)Gereon Kremer
This PR updates to the latest version of libpoly, which has a memory leak fixed.
2021-06-15Add cocoalib (#6731)Gereon Kremer
This PR adds CoCoALib as an optional dependency. It will be used in the CAD-based nonlinear solver for computer algebra routines beyond the capabilities of libpoly like quotient rings and polynomial factorization.
2021-06-15Remove public option wrappers (#6716)Gereon Kremer
This PR gets rid of almost all remaining public option wrappers. It does so by - making base, main and parser options public such that they can directly be used from the driver and the parser - moving incremental and the resource limiting options to base - moving dumping options to main After this PR, the only option wrapper left is becoming obsolete as well after (the follow-up of) #6697.
2021-06-15docs: Fix reference in sep logic reference. (#6747)Aina Niemetz
2021-06-15CVC4 -> cvc5 in cpp API examples (#6746)Haniel Barbosa
2021-06-15docs: Add references instead of links in theory reference pages. (#6729)Aina Niemetz
2021-06-15An example for a quick start guide (#6686)yoni206
Co-authored-by: Aina Niemetz <aina.niemetz@gmail.com>
2021-06-14Final update to SMT-COMP 2021 options (#6739)Andres Noetzli
This commit: - Disables `--tear-down-incremental=X` for the competition since it currently does not work correctly on master and a fixed version did not show significant benefits. - Changes the occurrences of `--nl-ext` to `--nl-ext=full` because it is now a mode option. - Removes the use of `--bv-assert-input` because the option currently has some issues in incremental mode (#6738) - Removes the use of `--bitblast=eager` for the model validation track because it produces invalid models (#6741)
2021-06-12Minor simplifications to LogicInfo (#6737)test-tag2Andrew Reynolds
2021-06-11Better support for HOL parsing and set up (#6697)Haniel Barbosa
This commit adds a new parser option, --hol, which marks that HOL is being used. This option has the effect of prepending the problem's logic with "HO_", which teels the solver that the logic is higher order. The parser builder, base parser, and SMT2 and TPTP parsers are all updated to work with this new setting, as is the logic info class. For now this parser option is enabling the --uf-ho option for internal use, since for now higher-order solving relies it. In a future PR this dependency will be removed (since this information is already given to the SMT solver via the logic).
2021-06-11Add skeleton for new Lazard evaluation (#6732)Gereon Kremer
This PR add the interface and a dummy implementation for the new Lazard evaluation. The dummy implementation is used when CoCoALib is not available and simply falls back to poly::infeasible_regions. The proper implementation that actually does that the comment says will be added with subsequent PRs.
2021-06-11Remove support for lazy BV extended function reductions and inferences (#6728)Andrew Reynolds
solve-int-as-bv is now the preferred method for solving these benchmarks. Adds solve-int-as-bv to a regression that became slow in my previous commit.
2021-06-10Ensure bv2nat and int2bv are not rewritten when using solve-bv-as-int (#6725)Andrew Reynolds
This PR ensures we do not eagerly rewrite bv2nat and int2bv when using solve-bv-as-int. Instead they are rewritten during expandDefinitions (at the end of preprocessing). It also updates regressions that relied on lazy extended function reductions in the lazy solver to use solve-bv-as-int, and adds a missing case (INT_TO_BITVECTOR) in the solve-int-as-bv preprocessing pass. A followup PR will remove support for lazy extended function reductions for bv2nat / int2bv altogether.
2021-06-10smtcomp: Change some BV configs for SQ and INC track. (#6721)Mathias Preiner
2021-06-09docs: Migrate sets and relations theory reference. (#6698)Aina Niemetz
This migrates page https://cvc4.github.io/sets-and-relations. It further adds the SMT2 version of examples/api/cpp/sets.cpp and adds test/regress/regress0/rels/relations-ops.smt2 as smtlib example for relations.
2021-06-09Make `--solve-int-as-bv=X` robust to rewriting (#6722)Andres Noetzli
After commit 327a24508ed1d02a3fa233e680ffd0b30aa685a9, the int-to-bv preprocessing pass is getting rewritten terms. As a result, the terms can contain negative constants (instead of `(- c)`, i.e., `UMINUS` of a positive constant) and `NONLINEAR_MULT`. The commit adds support for those cases, does some minor cleanup, and adds regressions. The regressions should allow us to detect if/when the preprocessing pass breaks in the future.
2021-06-09Update CVC4 URLs/macros (#6666)Andres Noetzli
2021-06-09Reorder ITE rewrites (#6723)Andres Noetzli
Fixes #6717. Commit 11c1fba added some new rewrites for ITE. Due to the new rewrites taking precedence over existing rewrites, it could happen that some of the previous rewrites did not apply anymore even though they would have further simplified the ITE. In the example from the issue, (ite c c true) was rewritten to (or (not T) T) instead of (ite T true true) and then true. The commit fixes the issue by moving rewrites resulting in conjunctions/disjunctions to the end.
2021-06-09Make squasing more robust (#6713)Gereon Kremer
This PR makes squashing olds commits in the docs-cleanup CI job more robust: it makes sure that the squash commit has a proper commit date and that we gracefully handle if there is nothing to squash.
2021-06-09Integrate learned literal manager into preprocessing pass context (#6718)Andrew Reynolds
Towards "learned rewrite" preprocessing pass / improvements to Int <-> BV.
2021-06-09Fixes related to printing tuples, define-fun commands in smt2 (#6679)Andrew Reynolds
This PR fixes some initial issues with printing datatypes in smt2. It does not yet address further issues on printing define-fun as a result of dump=raw-benchmark, which requires deeper refactoring of the implementation of the API / SmtEngine.
2021-06-09Push complex check inside GetInstantiationsCommand (#6715)Gereon Kremer
This PR pushes a rather complex check from the CommandExecutor inside the GetInstantiationsCommand. The aim is to only use the instFormatMode option in the library (command.cpp) but not the main driver (command_executor.cpp).
2021-06-09Update options for SMT-COMP (#6704)Andres Noetzli
This commit removes obsolete options for BV and strings logics, and updates QF_NIA to spend more time on our best configuration. Co-authored-by: Gereon Kremer nafur42@gmail.com Co-authored-by: Mathias Preiner mathias.preiner@gmail.com
2021-06-09[Optimization] support for push/pop (#6706)Ouyancheng
Use CDList for optimization objectives so that optimization solver supports push and pop (just use SmtEngine's push/pop). SmtEngine::resetAssertions will also clears the optimization objectives, so no need to have the reset objectives function.
2021-06-09Removing spurious HO checks (#6707)Haniel Barbosa
2021-06-09Require statistics for regression (#6714)Gereon Kremer
This PR makes a new regression explicitly require statistics.
2021-06-09docs: Migrate separation logic theory reference. (#6702)Aina Niemetz
This migrates page https://cvc4.github.io/separation-logic.
2021-06-09docs: Fix `Kind` description (#6712)Andres Noetzli
This commit changes the Kind description not to include C/C++ preprocessor statements and updates the kind of bit-vector addtion. It also marks some of the information as internal to exclude it from the public documentation.
2021-06-08Fix for 2 dimensional dependent bounded quantifiers (#6710)Andrew Reynolds
This updates 2-dim dependent bounded quantifiers to not map constants to terms when computing ranges, when the type of the variable is closed enumerable. This is require to fix an incorrect model (possible solution unsoundness) issue in the reduction of str.indexof_re. Fixes the 1st, 4th and 5th benchmarks from #6653. Fixes #6635.
2021-06-08Add learned literal manager utility (#6709)Andrew Reynolds
This is a simple class to maintain a list of literals that we have learned that may be useful during preprocessing. This is work towards a "learned rewrite" preprocessing pass / better support for Int/BV translations during preprocessing.
2021-06-08Fix statistics option handler (#6703)Gereon Kremer
This PR fixes a typo in the option handler for the statistics options, which lead to options not properly propagating.
2021-06-08Make env hold a pointer to the original options to properly initialize ↵Gereon Kremer
subsolvers (#6705) This PR extends the Env class to hold a pointer to the original options that are owned by the api::Solver. These original options will be used to properly initialize subsolvers as using the current options leads to subtle issues as setDefaults is not (in general) idempotent.
2021-06-08Remove `binary_name` option (#6693)Gereon Kremer
The binary_name is solely used as a temporary storage to pass the data from the options parser back to the runCvc5 method where it is put in a static variable. This PR gets rid of the option and the public option getter in favor of directly storing the program name in the static variable using an additional argument to parseOptions().
2021-06-08Change output of getRealValue to a fraction. (#6692)Alex Ozdemir
Our documentation for `toPythonObj` says that real values are represented as Fractions. However, getRealValue yields a float approximation thereof. We should probably stick to Fractions, since they allow us to precisely capture values in LRA. Also, that's more aligned with the C++ API, which returns a string representation of the (unapproximated) Rational. Also, document some (potential) weirdness with calling mkReal on floating-point values.
2021-06-08Make TheoryUF compatible with central equality engine (#6695)Andrew Reynolds
Work towards central equality engine. This does some minor reorganization to TheoryUF, related to UF+cardinality constraints that makes it compatible with central equality engine. In particular, preNotifyFact is removed in favor of adding conflicts after cardinality constraints are added to the equality engine. This ensures that the central equality engine can explain conflicts that involve cardinality constraints (which will no longer be the responsibility of UF when --ee-mode=central).
2021-06-07Fix str.update reduction (#6696)Andrew Reynolds
Fixes the 2nd benchmark from #6653.
2021-06-07(proof-new) Fix missing connection in trust substitution proofs (#6685)Andrew Reynolds
This PR fixes a missing connection in trust substitution proofs, which was the cause of open proofs when solved equalities from ppAssert were not justified by proofs. Also distinguishes TRUST_SUBS_EQ from TRUST_SUBS_MAP for clarity.
2021-06-07Remove `Options::wasSetByUser()` (#6682)Gereon Kremer
This PR removes the next heavily specialized template function Options::wasSetByUser() in favor of direct access to the *WasSetByUser flags.
2021-06-07(proof-new) Lazy proof chain debug names (#6680)Andrew Reynolds
2021-06-06Support public option modules (#6691)Gereon Kremer
This PR adds the possibility to make option modules public. As shown on the example of the main driver options, this allows to get rid of the wrappers from options_public.h. We plan to make only very few option modules public (i.e. main and parser).
2021-06-05Remove unwanted side effects in `SPLIT_EQ_STRIP_L` (#6689)Andres Noetzli
Fixes #6681. When checking whether SPLIT_EQ_STRIP_L applies, we were using sripSymbolicLength, which changes its inputs depending on how many elements of the concatenation it could strip. However, one of the arguments, pfxv0, was reused across multiple checks if the strip did not result in a rewrite. Later invocations were wrong as a result. This commit changes the call to stripSymbolicLength() to use a new copy of the vector instead.
2021-06-04Miscellaneous changes from central ee branch (#6687)Andrew Reynolds
Minor reorganization to make calls to theory engine from combination engine / shared solver more organized.
2021-06-04pow2: header file for pow2 solver (#6676)yoni206
This PR adds a header file for the pow2 solver. It also includes an empty test file, to trigger compilation of the header file. The next PR will include implementations and tests.
2021-06-04bv: Enable bitblast solver by default. (#6660)Mathias Preiner
This commit enables the new bitblast solver by default. This commit also fixes model generation for Boolean variables when --bitblast=eager is enabled. Fixes #3958, #5396, #5736, #5743, #5947.
2021-06-04Add missing dereference (#6684)Gereon Kremer
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback