summaryrefslogtreecommitdiff
path: root/src/options
AgeCommit message (Collapse)Author
2021-03-31Rename namespace CVC4 to CVC5. (#6249)Aina Niemetz
2021-03-23Removing unused build options and deprecated proof compile flag (#6195)Haniel Barbosa
2021-03-16cmake: Generate cvc4_export.h and set visibility to hidden. (#6139)Mathias Preiner
The build system (cmake) will automatically generate an export header cvc4_export.h, which makes sure that the correct export features are defined depending on the compiler and target platform. The macro CVC4_EXPORT replaces CVC4_PUBLIC and its usage is reduced by 2/3. Co-authored-by: Gereon Kremer <nafur42@gmail.com>
2021-03-16[proof-new] Renaming proof option to be in sync with SMT-LIB (#6154)Haniel Barbosa
2021-03-14[proof-new] Adding a dot printer for proof nodes (#6144)Diego Della Rocca de Camargos
Adds a dot printer for proof nodes. Also adds an option to choose the proof format (as a mode). Signed-off-by: Diego Della Rocca de Camargos <diegodellarocc@gmail.com>
2021-03-11Improvements and refactoring for enumeratative strategy (#6030)MikolasJanota
Refactoring out the code from `inst_strategy_enumerative` into a separate class. Some additional tricks to avoid duplicate instantiations, most notably, before instantiation, a tuple is checked if it's not a super-tuple of some tuple that had earlier resulted in a useless instantiation. Signed-off-by: mikolas <mikolas.janota@gmail.com>
2021-03-09Update copyright headers to 2021. (#6081)Aina Niemetz
2021-03-06Remove SMT-LIB 2.5 and 2.0 support. (#6068)Mathias Preiner
This commit removes parser and printer support for old SMT-LIB standards and also converts all regression tests to 2.6.
2021-03-03More cleanup of includes to reduce compilation times (#6037)Gereon Kremer
Similar to #6031, this PR implements suggestions from iwyu to reduce the number of includes in header files by introducing forward declarations and moving includes to source files.
2021-02-22(proof-new) Change proof-new option to proof (#5955)Andrew Reynolds
Also moves several proof-specific options to proof_options.
2021-02-22Require length-in-conclusion form for strings inferences (#5953)Andrew Reynolds
Previously, it was optional whether to put length constraints in conclusion for deq string inferences. However, due to optimizations in skolem caching, it is now required to guard these length constraints. It furthermore changes the policy to not ignore the lengths for the registered skolem, since it may be shared elsewhere. Fixes #5940. Notice that proof-new already requires this option to be enabled when proofs are enabled. Hence, this will simplify proof-new when merged.
2021-02-22[proof-new] Optionally print conclusion in the AST proof (#5954)Haniel Barbosa
Adds an option to optionally print conclusion in the AST proof.
2021-02-09Remove track instantiations infrastructure (#5883)Andrew Reynolds
This was used in the old method for unsat core tracking for instantiation lemmas, which will soon be subsumed. This is also work towards eliminating the dependencies on quantifiers engine from Instantiate.
2021-02-09cmake: Make Python3 default and improve toml error messages. (#5884)Mathias Preiner
./configure.sh will now fail if Python3 is not installed on the system. Since Python2 is now deprecated the user has to explicitly enable it via --python2. This commit also removes the --python3 configure flag.
2021-02-09Make term database optionally SAT-context-dependent (#5877)Andrew Reynolds
This makes the terms registered to the term database (those considered by E-matching) optionally stored in a SAT-context-dependent manner. The motivation is to have a more flexible/fine-grained set of terms considered by E-matching, e.g. if preregistration becomes lazier in the future. This uncovered 2 issues: The induction techniques in "conjecture generator" were using private interfaces, this PR removes the friend relaionship and cleans the code The conflict-based instantiation module was accessing the signature tables for BOUND_VARIABLES when an operator of an APPLY_UF was a BOUND_VARIABLE. This is possible when options::ufHo is enabled. This makes conflict-based instantiation skip such terms.
2021-02-08Remove support for inst closure (#5874)Andrew Reynolds
This was a feature implemented for "Deciding Local Theory Extensions via E-matching" CAV 2015 that is not used anymore, and will be a burden to maintain further with potential changes to term database. It also simplifies the TermDatabase::addTerm method (which changed indentation).
2021-02-04Adding an option to optimize polite combination for datatypes (#5856)yoni206
This PR makes the optimization introduced in bbca987 optional.
2021-02-03Add BV solver bitblast. (#5851)Mathias Preiner
This PR adds a new bit-blasting BV solver, which can be enabled via --bv-solver=bitblast. The new bit-blast solver can be used instead of the lazy BV solver and currently supports CaDiCaL and CryptoMiniSat as SAT back end.
2021-01-29[proof-new] Connecting new unsat cores (#5834)Haniel Barbosa
Allows one to generate unsat cores from the new proof infrastructure. For new this is controlled by a new option, --check-unsat-cores-new.
2021-01-27(proof-new) Improvements to quantifiers engine and instantiate interfaces ↵Andrew Reynolds
(#5814) This makes printing instantiations done at the SmtEngine level instead of deeply embedded within the Instantiate module. This provides much better flexibility for future uses of instantiations (e.g. how they are minimized in the new proof infrastructure). Note this PR breaks the functionality that instantiations are minimized based on the old unsat cores infrastructure (see the disabled regression). This will be fixed once proof-new is fully merged.
2021-01-26Remove deprecated quantifiers modules (#5820)Andrew Reynolds
2021-01-24Initial cleaning of triggers (#5795)Andrew Reynolds
In preparation for splitting trigger.h/cpp into multiple files. This updates the code to conform to guidelines. No major changes, apart from a heuristic related to "pure theory triggers" is deleted and simplified.
2021-01-12Foreign theory rewrite option (#5763)yoni206
We are adding a preprocessing pass that simplifies arithmetic constraints related to strings. For example, len(s) >= 0 would be replaced by true. This will make use of CVC4::theory::strings::ArithEntail::check. This PR is the third and final step. It adds the user-facing option that turn this feature on, as well as regression tests.
2020-12-23Dumping unsat cores after check-sat-assuming/QUERY (#5724)Haniel Barbosa
Previously we were not printing unsat cores when passing the option to dump them if we used the check-sat-assuming command or the QUERY command. This commit fixes this. It also kills the redundant dump-synth option, as it simplifies a bit what is going on in the command executor.
2020-12-23Remove quant EPR option (#5716)Andrew Reynolds
This was an experimental option used in combination with separation logic.
2020-12-22Remove preregister instantiation heuristic (#5713)Andrew Reynolds
This was a hack to improve the QF arithmetic solver by ensuring that certain instantiation lemmas were preregistered. This is no longer needed and will be a hindrance to the currently line of refactoring.
2020-12-16Simplify preprocessing (#5647)Andrew Reynolds
This simplifies preprocessing so that the only call to theory-preprocess and ite-removal is at the very end. (One exception is early-theory-pp which is used by default in combination with ite-simp to maintain the performance on QF_LIA/nec). This is in preparation for making theory preprocessing happen lazily, post-CNF conversion. @HanielB has done SMT-LIB performance runs, see below.
2020-12-15Remove bv divide by zero option (#5672)Andrew Reynolds
This is required to avoid failures in the planned refactoring of check-models. This removes the SMT-LIB 2.5 semantics option for bvdiv/bvrem. It still remains to merge the BITVECTOR_UDIV / BITVECTOR_UDIV_TOTAL kinds, calling the total version "BITVECTOR_UDIV", and analogously for UREM. FYI @barrettcw
2020-12-14Properly implement datatype selector triggers (#5624)Andrew Reynolds
This ensures that datatype selectors are properly handled as triggers in E-matching. This is challenging since selectors in quantified formulas are of kind APPLY_SELECTOR but are theory-preprocessed to APPLY_SELECTOR_TOTAL/APPLY_UF. Hence, we must match on 2 possible operators, and ones that do not match the operator of the trigger. This adds a custom candidate generator for this case. It also removes a deprecated option that is no longer used (in part due to our use of shared selectors). This is in preparation for further work on optimizing cvc4 on benchmarks from Facebook. Note that there is not a convienient way to call expandDefinitions currently (which is required to get the proper operators to match). This PR calls smt::getCurrentSmtEngine() to do this, although we should find a better solution soon, e.g. adding expandDefinitions to the rewriter. FYI @barrettcw
2020-12-08update doc (#5619)yoni206
The current help message for --bv-div-zero-const only mentions bvudiv (in which the result is -1) and not bvurem (in which the result is the first argument). I think this is a bit misleading, because in practice, this option controls also the behavior of bvurem: CVC4/src/theory/bv/theory_bv.cpp Line 134 in 0309ef4 if (options::bitvectorDivByZeroConst()) This PR is an attempt to provide a more accurate help message.
2020-12-07Disable algebraic BV subtheory by default and make experimental. (#5596)Mathias Preiner
Fixes #5370, #5462.
2020-12-07Fix issue with free variables introduced by quantifier rewriter (#5602)Andrew Reynolds
This was caused by the quantifiers rewriting eliminating extended arithmetic operators, which was required due to the way counterexample-guided quantifier instantiation used to work with preprocessing. The technique is now more robust and this option can be deleted. This fixes a debug assertion failure from UFNIA SMT-LIB, a minimized benchmark is included as a regression.
2020-12-04Change generated options to be thread_local. (#5583)Everett Maus
Signed-off-by: Everett Maus <evmaus@google.com>
2020-12-03Models as (#5581)yoni206
This PR relates to #4987 . Our plan is to: delete the model keyword (done in #5415 ) avoid printing extra declarations by default (done in #5432 ) wrap UF values with as expressions. This PR does step 3, fixes a regression accordingly, and adds the formula from #4987 and a variant of it to the regressions.
2020-11-19Include stddef.h (needed for size_t) in cvc4_public.h (#5476)Aina Niemetz
This further removes obsolete explicit includes of stdint.h.
2020-11-16Improve accuracy of resource limitation (#4763)Gereon Kremer
The main goal of the resource limitation mechanism (via `--rlimit`) is to have a deterministic limitation on runtime. The ultimate goal would be that the actual runtime grows linearly with the spent resources. To achieve this, this PR does the following: - introduce new resources spent in places that are not yet covered - find resource weights that best approximate the runtime It provides a contrib script `learn_resource_weights.py` that uses statistics from a given benchmark run and uses linear regression to find good resource weights. The script also evaluates this estimate and identifies outliers, benchmarks for which this approximation is particularly bad. This probably indicates that on such a benchmark, some part of the code takes a significant amount of time but is not yet represented by a resource. Eventually, we should use the resulting resource weights as defaults for the options like `--rewrite-step`, `--theory-check-step`, etc.
2020-11-13Model declarations printing options (#5432)yoni206
This PR relates to #4987 . Our plan is to: delete the model keyword avoid printing extra declarations by default wrap UF values with as expressions. This PR is step 2. It allows the user to choose the model printing style in case of uninterpreted elements: either using datatypes, or using declare-sorts and declare-funs or just using declare-funs. The default option, which is closest to the standard, is just using declare-funs. In step 3, these will be replaced by abstract values using as.
2020-11-12(proof-new) Improve printing and debugging for pedantic checking (#5337)Andrew Reynolds
This improves trace/error messages for proof-new-pedantic, and also merges the proof-new-pedantic-eager with the proof-new-eager-checking option.
2020-11-05Simplify printing with respect to expression types (#5394)Andrew Reynolds
This removes infrastructure for stream property related to printing type annotations on all variables. This is towards refactoring the printers.
2020-10-27Disable --nl-cad option by default (#5350)Gereon Kremer
This PR disables the `--nl-cad` option by default. It was erroneously enabled with #5345 but leads to errors on, e.g., QF_NIA. Enabling for QF_NRA is done in set_defaults.
2020-10-27Enable --nl-cad by default (#5345)Gereon Kremer
This PR enables `--nl-cad` for QF_NRA (and QF_UFNRA) by default to improve nonlinear arithmetic solving. Furthermore, it takes care of disabling it when libpoly is not available. It also adds a fix to the CadSolver that avoids incorrect SATs in the presence of theory combination.
2020-10-12Remove uf-ss-totality option (#5251)Andrew Reynolds
This option has a number of subtle bugs, it should be reimplemented if/when finite-model-find is refactored. It is not high priority enough to maintain. This does some additional cleaning of the uf cardinality extension, some methods changed indentation. Fixes #5239, fixes #4872, fixes #4865.
2020-10-11SyGuS instantiation modes (#5228)Mathias Preiner
This PR adds three instantiation modes to the SyGuS instantiation module.
2020-10-05Make sygus more robust to unknown responses in solution verification (#5199)Andrew Reynolds
This makes it so that an "unknown" response in a CEGIS verification step causes the sygus solver to exclude the current solution and mark incomplete. Previously, the sygus solver was non-terminating in such cases, trying the same solution continously. This also removes the option "sygusVerifySubcall", as this option should always be used. It also makes --nl-ext-tplanes enabled by default when sygus is enabled.
2020-10-01Add additional ground terms to SyGuS instantiation grammar (#5167)Mathias Preiner
This PR adds options to add additional ground terms to the SyGuS instantiation grammars.
2020-10-01Allow to use the initial assignment for CAD (#5177)Gereon Kremer
While the CAD subsolver already provided for a way to use the linear model to seed the model search, it was not actually used yet. This PR now does use it, though it is disabled by a Boolean flag.
2020-09-23bv2int: new options for bvand translation (#5096)yoni206
Currently, (bvand x y) is translated into a sum of ITEs. This PR introduces two more options for the translation of (bvand x y): bv: cast the integer translations of x and y back to bit-vectors, do a bvand, and cast the result to integers. iand: use the builtin iand operator. These options are added to many of the tests, and some new tests are added. In addition, some tests are cleaned up (e.g., removing --no-check-unsat-cores for satisfiable benchmarks). Finally, some tests are moved from regress0 to regress2 because they take several seconds to complete (2 -- 10 seconds).
2020-09-22Add simple BV solver (#5065)Mathias Preiner
This PR adds a simple BV solver that sends bit-blasting lemmas to the internal MiniSat.
2020-09-22Update copyright header script to support CMake and Python files (#5067)Mathias Preiner
This PR updates the update-copyright.pl script to also update/add copyright headers to CMake specific files. It further fixes a small typo in the header.
2020-09-22ICP-based solver for nonlinear arithmetic (#5017)Gereon Kremer
This PR adds a new icp-based solver to be integrated into the nonlinear extension. It is not meant to be used as a stand-alone ICP solver. It does not implement splits (only propagations) and implements a rather aggressive budget mechanism that aims to quickly stop propagation to allow other solvers to take over. Additionally, it enforces a maximum bit size to avoid divergence.
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback