cvc5.git
2 years agoMore documentation for idiomatic python API (#7798)
Alex Ozdemir [Fri, 17 Dec 2021 18:42:48 +0000 (10:42 -0800)]
More documentation for idiomatic python API (#7798)

Arithmetic, bit-vectors, arrays.

2 years agoGet getRealOrIntegerValueSign to the API (#7832)
Andrew Reynolds [Fri, 17 Dec 2021 18:22:13 +0000 (12:22 -0600)]
Get getRealOrIntegerValueSign to the API (#7832)

2 years agoImplement model construction for the array extension of sequences (#7815)
Andrew Reynolds [Fri, 17 Dec 2021 14:27:26 +0000 (08:27 -0600)]
Implement model construction for the array extension of sequences (#7815)

The array solver is still not usable, the only remaining changes from seqArray are to connect the array solver to the strings theory solver via the strategy + the regressions.

2 years agoapi: Rename DatatypeSelector::getRangeSort() to getCodomainSort(). (#7831)
Aina Niemetz [Fri, 17 Dec 2021 05:20:49 +0000 (21:20 -0800)]
api: Rename DatatypeSelector::getRangeSort() to getCodomainSort(). (#7831)

2 years agoapi: Add Solver::mkUnresolvedSort(). (#7817)
Aina Niemetz [Fri, 17 Dec 2021 04:24:23 +0000 (20:24 -0800)]
api: Add Solver::mkUnresolvedSort(). (#7817)

This adds a function to create unresolved sorts for mutually recursive
datatpes. This function creates an uninterpreted sort if the arity of
the unresolved sort is 0, and a sort constructor sort otherwise.

2 years agoEliminate more uses of CONST_RATIONAL (#7816)
Andrew Reynolds [Fri, 17 Dec 2021 03:47:43 +0000 (21:47 -0600)]
Eliminate more uses of CONST_RATIONAL (#7816)

2 years agoDisable unsat cores for quaternion_ds1_symm_0428.fof.smt2. (#7830)
Mathias Preiner [Fri, 17 Dec 2021 03:30:39 +0000 (19:30 -0800)]
Disable unsat cores for quaternion_ds1_symm_0428.fof.smt2. (#7830)

Avoids timeout for nightly ASAN builds.

2 years agoEliminate most static calls to rewrite in quantifiers (#7823)
Andrew Reynolds [Thu, 16 Dec 2021 22:16:03 +0000 (16:16 -0600)]
Eliminate most static calls to rewrite in quantifiers (#7823)

2 years agoFix get-model when sort constructors are present (#7828)
Andrew Reynolds [Thu, 16 Dec 2021 21:07:55 +0000 (15:07 -0600)]
Fix get-model when sort constructors are present (#7828)

Fixes a spurious error on kind benchmarks.

Note that we don't properly handle instantiated sort constructors currently, which I believe need to be handled as declared sorts when calling getModel.

2 years ago[proofs] Simplifying and adding new utils to SAT proof manager and Proof Cnf Stream...
Haniel Barbosa [Thu, 16 Dec 2021 20:04:31 +0000 (17:04 -0300)]
[proofs] Simplifying and adding new utils to SAT proof manager and Proof Cnf Stream (#7826)

These will be necessary for upcoming changes to the SAT proof manager and Proof Cnf Stream to handle incremental proofs when optimizing the level of SAT clauses.

2 years agoapi: Add Sort::hasSymbol() and Sort::getSymbol(). (#7825)
Aina Niemetz [Thu, 16 Dec 2021 18:50:01 +0000 (10:50 -0800)]
api: Add Sort::hasSymbol() and Sort::getSymbol(). (#7825)

2 years agoMinor fix for print benchmark. (#7821)
Andrew Reynolds [Thu, 16 Dec 2021 17:50:25 +0000 (11:50 -0600)]
Minor fix for print benchmark. (#7821)

Also adds benchmark that triggered this issue.

2 years agobv-to-int: use pow2 operator (#7812)
yoni206 [Thu, 16 Dec 2021 16:49:30 +0000 (18:49 +0200)]
bv-to-int: use pow2 operator (#7812)

Currently, the int-blaster translates shifts using an ite whose size is the bit-width.
This PR adds an option to use the internal pow2 operator instead.

2 years agoint-to-bv: fail if one of the arguments has type real (#7810)
yoni206 [Thu, 16 Dec 2021 15:52:09 +0000 (17:52 +0200)]
int-to-bv: fail if one of the arguments has type real (#7810)

This PR generates a failure in int-to-bv in case a real argument is detected as a child of an arithmetic operation.
fixes cvc5/cvc5-projects#348 .

Co-authored-by: Andrew Reynolds andrew.j.reynolds@gmail.com
2 years agoAdd regression bags-of-bags-subtypes.smt2 (#7814)
mudathirmahgoub [Thu, 16 Dec 2021 15:31:47 +0000 (09:31 -0600)]
Add regression bags-of-bags-subtypes.smt2 (#7814)

2 years agoExplicitly disallow `mkConst(Rational)` (#7818)
Andres Noetzli [Thu, 16 Dec 2021 14:29:10 +0000 (06:29 -0800)]
Explicitly disallow `mkConst(Rational)` (#7818)

The Rational payload can be associated with two kinds (CONST_INTEGER
and CONST_RATIONAL), so we should never call
NodeManager::mkConst(Rational), but instead use
NodeManager::mkConstInt() and NodeManager::mkConstReal(). Currently,
calling NodeManager::mkConst(Rational) silently creates an integer
constant, which is dangerous. This commit makes it a compile-time error
instead.

2 years agoEnsure match terms are exhaustive in its type rule (#7807)
Andrew Reynolds [Wed, 15 Dec 2021 23:49:19 +0000 (17:49 -0600)]
Ensure match terms are exhaustive in its type rule (#7807)

Fixes cvc5/cvc5-projects#382.

Makes it so that we always fully type check match terms before they are rewritten, which guards potential unsoundness.

2 years agoapi: Fix smt-lib code blocks and math in C++ docs. (#7795)
Aina Niemetz [Wed, 15 Dec 2021 23:09:51 +0000 (15:09 -0800)]
api: Fix smt-lib code blocks and math in C++ docs. (#7795)

2 years agoAdd trace to see inferences in final proof (#7813)
Andrew Reynolds [Wed, 15 Dec 2021 15:15:26 +0000 (09:15 -0600)]
Add trace to see inferences in final proof (#7813)

Adds -t im-pf to see which inferences occur in the final proof. Must be used with proofs and --proof-annotate.

2 years agoEliminate static calls to rewrite in strings (#7803)
Andrew Reynolds [Tue, 14 Dec 2021 23:26:46 +0000 (17:26 -0600)]
Eliminate static calls to rewrite in strings (#7803)

2 years agoFix cvc5-projects issue 358 (#7804)
mudathirmahgoub [Tue, 14 Dec 2021 23:09:25 +0000 (17:09 -0600)]
Fix cvc5-projects issue 358 (#7804)

This PR fixes issue cvc5/cvc5-projects#358 which is caused by unregistered terms in the equality engine of bags

2 years agoAdd a random Sygus enumerator. (#7782)
Abdalrhman Mohamed [Tue, 14 Dec 2021 22:03:36 +0000 (16:03 -0600)]
Add a random Sygus enumerator. (#7782)

This PR adds a Sygus enumerator that generates random terms from a grammar. The size of the terms generated by the enumerator approximates a geometric distribution and can be configured with an option.

2 years agoMake some undocumented options regular/expert (#7805)
Gereon Kremer [Tue, 14 Dec 2021 21:14:48 +0000 (13:14 -0800)]
Make some undocumented options regular/expert (#7805)

We have some options that are currently "undocumented" for no good reason.
This PR makes them regular or expert options.

2 years agoFix issues with tracing builds (#7809)
Gereon Kremer [Tue, 14 Dec 2021 20:40:06 +0000 (12:40 -0800)]
Fix issues with tracing builds (#7809)

This PR fixes two issues that were revealed when analyzing decreased performance on trace-enabled builds.
hasIntegerModel() turns out to be a rather expensive method and should thus not be called in a Trace output.
Furthermore, the implementation of Rational::isIntegral() was generally bad because it used getDenominator() (which returns a copy of the denominator as an Integer) instead of directly checking the underlying denominator with equality for zero.

2 years agoAdd switches to toggle eager and inclusion solvers (#7784)
Andres Noetzli [Tue, 14 Dec 2021 20:02:37 +0000 (12:02 -0800)]
Add switches to toggle eager and inclusion solvers (#7784)

2 years agoConnecting the core array solver in strings (#7800)
Andrew Reynolds [Tue, 14 Dec 2021 19:35:09 +0000 (13:35 -0600)]
Connecting the core array solver in strings (#7800)

This PR takes most of the remaining changes from the seqArray branch apart from the extension to model construction.

Notably it connects the core array solver to the array solver in strings.

2 years agoMinor fix for sygus unsat query generator (#7811)
Andrew Reynolds [Tue, 14 Dec 2021 19:10:05 +0000 (13:10 -0600)]
Minor fix for sygus unsat query generator (#7811)

2 years agoThrow exception for getting value of non-well-founded datatype (#7806)
Andrew Reynolds [Tue, 14 Dec 2021 17:50:56 +0000 (11:50 -0600)]
Throw exception for getting value of non-well-founded datatype (#7806)

Fixes cvc5/cvc5-projects#383

2 years agoEliminate use of rewrite, CONST_RATIONAL in ArithMSum (#7808)
Andrew Reynolds [Tue, 14 Dec 2021 17:14:04 +0000 (11:14 -0600)]
Eliminate use of rewrite, CONST_RATIONAL in ArithMSum (#7808)

2 years agoapi: Add note to Solver::mkDatatypeSorts. (#7799)
Aina Niemetz [Tue, 14 Dec 2021 02:44:01 +0000 (18:44 -0800)]
api: Add note to Solver::mkDatatypeSorts. (#7799)

2 years agoDistinguishing more uses of CONST_RATIONAL (#7802)
Andrew Reynolds [Mon, 13 Dec 2021 22:42:38 +0000 (16:42 -0600)]
Distinguishing more uses of CONST_RATIONAL (#7802)

Towards eliminating subtyping Int/Real.

2 years agoA more efficient implementation for bag.card operator (#7797)
mudathirmahgoub [Mon, 13 Dec 2021 22:16:30 +0000 (16:16 -0600)]
A more efficient implementation for bag.card operator (#7797)

This PR provides a fold like implementation for bag.card operator that does not depends on higher order logic, although it still requires finite model finding.

2 years agoInitial cut at distinguishing uses of CONST_RATIONAL (#7682)
Andrew Reynolds [Mon, 13 Dec 2021 19:48:49 +0000 (13:48 -0600)]
Initial cut at distinguishing uses of CONST_RATIONAL (#7682)

2 years agoFixes and additions for API for parametric datatypes (#7760)
Andrew Reynolds [Mon, 13 Dec 2021 18:24:07 +0000 (12:24 -0600)]
Fixes and additions for API for parametric datatypes (#7760)

2 years agoUpdate Relations.java (#7796)
mudathirmahgoub [Mon, 13 Dec 2021 17:47:40 +0000 (11:47 -0600)]
Update Relations.java (#7796)

2 years agoImprove nonlinear solver (#7787)
Gereon Kremer [Mon, 13 Dec 2021 17:09:21 +0000 (09:09 -0800)]
Improve nonlinear solver (#7787)

This PR does two things:

we remove splitting on shared values
we add variable elimination for the cad-based solver, exploiting equalities present in the input.

2 years agoIntegrate new int-blaster (#7781)
yoni206 [Mon, 13 Dec 2021 16:16:08 +0000 (18:16 +0200)]
Integrate new int-blaster (#7781)

This PR removes the code that translates from bit-vectors to integers from the bv_to_int preprocessing pass, and replaces it with a call to the IntBlaster module.

Tests are updated and added, as well as other minor changes.

Solves the following issues (and contains corresponding tests):
cvc5/cvc5-projects#345
cvc5/cvc5-projects#344
cvc5/cvc5-projects#343

@mpreiner FYI

2 years agoFix cvc5-projects issues #358 and #375 (#7743)
mudathirmahgoub [Mon, 13 Dec 2021 14:51:20 +0000 (08:51 -0600)]
Fix cvc5-projects issues  #358 and #375 (#7743)

2 years agoapi: Use 'note' constructs for API documentation. (#7794)
Aina Niemetz [Fri, 10 Dec 2021 23:36:27 +0000 (15:36 -0800)]
api: Use 'note' constructs for API documentation. (#7794)

This uses '@note' for notes in the C++ API documentation, '.. note::'
for Python, and '@apiNote' for Java.

2 years agoReorganize declareDatatype unit tests. (#7767)
Aina Niemetz [Fri, 10 Dec 2021 22:21:41 +0000 (14:21 -0800)]
Reorganize declareDatatype unit tests. (#7767)

2 years agoRefactor and fixes related to getSpecializedConstructorTerm (#7774)
Andrew Reynolds [Fri, 10 Dec 2021 21:47:18 +0000 (15:47 -0600)]
Refactor and fixes related to getSpecializedConstructorTerm (#7774)

Fixes cvc5/cvc5-projects#381.

2 years agoArray-inspired Sequence Solver - Adding the ArrayCoreSolver class and options (#7723)
Ying Sheng [Fri, 10 Dec 2021 20:59:47 +0000 (12:59 -0800)]
Array-inspired Sequence Solver - Adding the ArrayCoreSolver class and options (#7723)

This pull request adding the ArrayCoreSolver class and the options to turn on the array-inspired sequence solver.

2 years agoEliminate more static rewrites (#7786)
Gereon Kremer [Fri, 10 Dec 2021 20:31:01 +0000 (12:31 -0800)]
Eliminate more static rewrites (#7786)

This PR eliminates almost all remaining static rewrites from the arithmetic theory.

2 years agoSome cleanup around trace and debug (#7792)
Gereon Kremer [Fri, 10 Dec 2021 19:08:58 +0000 (11:08 -0800)]
Some cleanup around trace and debug (#7792)

Some minor cleanup in our output routines. While ScopedDebug and ScopedTrace are never used at all (and don't seem to make much sense considering how we use Debug and Trace), IndentedScope may be useful in some more places.

2 years agoMute `define-fun` command generated for named terms. (#7788)
Abdalrhman Mohamed [Fri, 10 Dec 2021 18:44:10 +0000 (12:44 -0600)]
Mute `define-fun` command generated for named terms. (#7788)

Kind 2 uses print-success option to track cvc5's status after each command. When I added implicit define-fun commands for each named term (needed for raw-benchmark), cvc5 started printing spurious ; success messages. This change ended up crashing Kind 2's driver for cvc5. This PR fixes this issue by muting the results of those implicit define-fun commands.

2 years agoAllow for wildcards in `-t` (#7791)
Gereon Kremer [Fri, 10 Dec 2021 17:48:48 +0000 (09:48 -0800)]
Allow for wildcards in `-t` (#7791)

This PR extends -t to allow for wildcards: -t nl-ext-*. Internally, these wildcards are replaced by .* and fed into std::regex.

2 years ago[proofs] Make LazyCDProofChain extend CDProof (#7726)
Haniel Barbosa [Fri, 10 Dec 2021 15:39:43 +0000 (12:39 -0300)]
[proofs] Make LazyCDProofChain extend CDProof (#7726)

This commit makes LazyCDProofChain behave more similarly to LazyCDProof, in that it is an object that not only builds a proof to a fact based on lazy steps but also on regular steps that may already have for it.

The motivation for this commit is the upcoming handling of context-dependent proofs in incremental mode, which benefits from a more uniform behavior between CDProof, LazyCDProof and LazyCDProofChain (with the latter two both extending CDProof).

2 years ago[proofs] Add option to prune inputs from final proof (#7789)
Haniel Barbosa [Fri, 10 Dec 2021 15:21:28 +0000 (12:21 -0300)]
[proofs] Add option to prune inputs from final proof (#7789)

This is useful for example to remove inputs corresponding to definition of symbols, which may be unexpected for some users, like when using named to wrap assertions and generate unsat cores.

2 years agoConsider polarity in relevance manager (#7768)
Andrew Reynolds [Thu, 9 Dec 2021 22:04:36 +0000 (16:04 -0600)]
Consider polarity in relevance manager (#7768)

This ensures we only consider things relevant if their polarity is compatible with current asserted value.

As a consequence, this makes our computation of get-difficulty more accurate, as well as making Valuation::isRelevant more precise (e.g. for non-linear).

Notice that this fixes a bug in PolarityTermContext as well.

2 years agoFix sine symmetry proof (#7783)
Gereon Kremer [Thu, 9 Dec 2021 20:37:19 +0000 (12:37 -0800)]
Fix sine symmetry proof (#7783)

This PR fixes an issue in proofs for sine symmetry arising from the proof checker no longer using the rewriter.

2 years agoRemove a few static access to options in proof code (#7780)
Andrew Reynolds [Thu, 9 Dec 2021 18:34:31 +0000 (12:34 -0600)]
Remove a few static access to options in proof code (#7780)

2 years agoDo not make SyGuS subsolver in unsat state after solving (#7759)
Andrew Reynolds [Thu, 9 Dec 2021 14:38:28 +0000 (08:38 -0600)]
Do not make SyGuS subsolver in unsat state after solving (#7759)

This makes subsolvers answer "unknown" instead of "unsat" when solving SyGuS inputs, by setting unknown when a SyGuS input is solved instead of asserting the negation of the input. Knowing whether the call was successful is simply obtained by calling getSynthSolutions.

This will allow for multiple solutions for the same conjecture.

2 years agoapi: Add note to Sort::getTesterCodomainSort(). (#7776)
Aina Niemetz [Thu, 9 Dec 2021 06:02:10 +0000 (22:02 -0800)]
api: Add note to Sort::getTesterCodomainSort(). (#7776)

2 years agotest: Remove CDList memory limit test. (#7777)
Mathias Preiner [Thu, 9 Dec 2021 03:20:28 +0000 (19:20 -0800)]
test: Remove CDList memory limit test. (#7777)

This test is of little usefulness and has issues with different platforms (mac) and architectures (arm64).

2 years agoReturn bool for lemmaTheoryInference (#7773)
Andrew Reynolds [Wed, 8 Dec 2021 23:48:30 +0000 (17:48 -0600)]
Return bool for lemmaTheoryInference (#7773)

2 years agoRemove rewrites from iand and pow2 solvers (#7775)
Gereon Kremer [Wed, 8 Dec 2021 23:25:19 +0000 (15:25 -0800)]
Remove rewrites from iand and pow2 solvers (#7775)

This PR removes some more static calls to the rewriter from the iand and pow2 solvers.

2 years agoEliminate rewriter from transcendental solver (#7772)
Gereon Kremer [Wed, 8 Dec 2021 22:48:36 +0000 (14:48 -0800)]
Eliminate rewriter from transcendental solver (#7772)

This PR eliminates all static calls to the rewriter from the transcendental solver. We now either use the rewriter from the Env object or the theory evaluator. For this to work, the evaluator is extended to support division. In some places, the rewriting was removed altogether.

2 years agoStatic options acceses again (#7771)
Gereon Kremer [Wed, 8 Dec 2021 22:15:18 +0000 (14:15 -0800)]
Static options acceses again (#7771)

This PR removes some more static accesses to options from strings and solver engine.

2 years agoMake several regressions faster (#7769)
Andrew Reynolds [Wed, 8 Dec 2021 19:25:37 +0000 (13:25 -0600)]
Make several regressions faster (#7769)

This makes several slow regressions faster, mostly by changing options. It changes a strings regression to be faster by making it smaller.

This should avoid timeouts on https://cvc5-buildbot.stanford.edu/.

2 years agoFix type rule for datatype updater for parametric sorts (#7762)
Andrew Reynolds [Wed, 8 Dec 2021 17:17:51 +0000 (11:17 -0600)]
Fix type rule for datatype updater for parametric sorts (#7762)

Fixes cvc5/cvc5-projects#379.
Fixes cvc5/cvc5-projects#378.

2 years agoTurn kinds in python API into a proper Enum (#7686)
Gereon Kremer [Wed, 8 Dec 2021 04:16:03 +0000 (20:16 -0800)]
Turn kinds in python API into a proper Enum (#7686)

This PR does multiple things:
- the kinds are changed from custom objects to a proper enum.Enum class
  (including according changes to the cython code and the kind generation scripts)
- all examples and tests are modified to account for the change how to use kinds
  (Kind instead of kinds)
- add docstrings to the kind enum values
- add a custom documenter that properly renders enums via autodoc
- extend doxygen setup so that we can write comments as rst (allowing us to copy
  the documentation for kinds from the cpp api to the other apis)

2 years agoapi: Improve documentation for getDatatypeParamSorts(). (#7763)
Aina Niemetz [Wed, 8 Dec 2021 03:51:47 +0000 (19:51 -0800)]
api: Improve documentation for getDatatypeParamSorts(). (#7763)

2 years agoapi: Fix Sort::getDatatypeArity() for non-parametric datatypes. (#7766)
Aina Niemetz [Wed, 8 Dec 2021 03:22:04 +0000 (19:22 -0800)]
api: Fix Sort::getDatatypeArity() for non-parametric datatypes. (#7766)

Fixes cvc5/cvc5-projects#380

2 years agoFP: Remove static call to Rewriter. (#7765)
Aina Niemetz [Wed, 8 Dec 2021 02:51:40 +0000 (18:51 -0800)]
FP: Remove static call to Rewriter. (#7765)

2 years agoImprove options tests (#7761)
Gereon Kremer [Wed, 8 Dec 2021 00:14:55 +0000 (16:14 -0800)]
Improve options tests (#7761)

This PR adds unit tests for a few more corners of the options code.

2 years agoRemove more static accesses to options (#7764)
Gereon Kremer [Tue, 7 Dec 2021 23:47:15 +0000 (15:47 -0800)]
Remove more static accesses to options (#7764)

This PR removes a bunch of the remaining places where options are accessed statically.

2 years agoSimpler versioning if release flag is set (#7758)
Gereon Kremer [Tue, 7 Dec 2021 23:26:52 +0000 (15:26 -0800)]
Simpler versioning if release flag is set (#7758)

Following some discussion, this PR introduces a simpler versioning scheme if the CVC5_IS_RELEASE flag is set.
In our regular versioning scheme, the first commit after release x.y.z has the version x.y.(z+1)-dev.1.abcdef0. Some users however may want to apply some patches, and still have cvc5 show the release version.
With this PR, the version printed (if any commits are present since the tag) is x.y.z-modified if the CVC5_IS_RELEASE flag is still true. We always set it to false immediately after the tagged commit, so it does not change the versions printed by mainline cvc5.

2 years agoAdd proof annotation option (#7750)
Andrew Reynolds [Tue, 7 Dec 2021 22:40:40 +0000 (16:40 -0600)]
Add proof annotation option (#7750)

Adds --proof-annotate which enables a useful stat in which we count the number of times a lemma with a given inference id appears in a final proof.

This can be used to determine which lemma schemas are the most useful for showing a problem unsat.

2 years agoFix some java documentation links (#7757)
mudathirmahgoub [Tue, 7 Dec 2021 22:16:33 +0000 (16:16 -0600)]
Fix some java documentation links (#7757)

2 years ago[proofs] Alethe: Add ARITH_TRICHOTOMY to updater (#7753)
Lachnitt [Tue, 7 Dec 2021 20:52:13 +0000 (12:52 -0800)]
[proofs] Alethe: Add ARITH_TRICHOTOMY to updater (#7753)

Translation of the ARITH_TRICHOTOMY rule into the Alethe calculus.

Co-authored-by: Haniel Barbosa <hanielbbarbosa@gmail.com>
2 years ago[proofs] Alethe: Fix Bug in Finalize (#7746)
Lachnitt [Tue, 7 Dec 2021 20:25:03 +0000 (12:25 -0800)]
[proofs] Alethe: Fix Bug in Finalize (#7746)

Assumptions in Alethe are printed as (or F1 ... Fn) but should be treated as if they are printed as (cl (or F1 ... Fn)). Thus, if in the post visit it is checked whether an additional or step is needed this has to be treated as a special case.

2 years agoAllow sygus in incremental mode (#7756)
Andrew Reynolds [Tue, 7 Dec 2021 19:01:11 +0000 (13:01 -0600)]
Allow sygus in incremental mode (#7756)

This allows the basic use of SyGuS in incremental mode, where constraints can be pushed/popped.

It does not yet support getting multiple solutions for the same set of constraints, which will require more significant changes.

2 years agoMake data structures in relevance manager SAT-context dependent (#7733)
Andrew Reynolds [Tue, 7 Dec 2021 17:28:39 +0000 (11:28 -0600)]
Make data structures in relevance manager SAT-context dependent (#7733)

This PR significantly improves the quality of values in get-difficulty. It fixes several bugs related to get-difficulty, including over-pruning values in ProofManager, and not tracking explanations for certain literals. It also improves performance by tracking justifications in relevance manager in a SAT-context dependent manner.

This is to support difficulty measurements based on lemmas sent at STANDARD effort.

It also adds 2 simple regressions.

A further PR will further improve the quality by being more careful about the relationships between literals and the assertions that entail that they are relevant.

2 years agoEliminate more static calls to Rewriter::rewrite (#7755)
Andrew Reynolds [Tue, 7 Dec 2021 17:01:05 +0000 (11:01 -0600)]
Eliminate more static calls to Rewriter::rewrite (#7755)

2 years agoTowards support for incremental sygus (#7736)
Andrew Reynolds [Tue, 7 Dec 2021 15:46:49 +0000 (09:46 -0600)]
Towards support for incremental sygus (#7736)

This makes several key changes to smt::SygusSolver in preparation for incremental mode.

The key idea is to use a subsolver that:

may take multiple check-sat commands for an encoded synthesis conjecture
does not push/pop
is reconstructed when the SyGuS conjecture becomes stale.
This is motivated by 2 use cases of incremental SyGuS:

Where constraints are push/pop, in which case we should start from scratch, since the SyGuS solver uses symmetry breaking techniques that become unsound when new constraints are added.
Where multiple solutions are needed for the same set of constraints, in which the state of the subsolver should be preserved.
This functionality is still guarded by an exception.

A follow up PR will make several further changes to allow for the above use cases.

2 years agoEliminate more static calls to Rewriter::rewrite (#7740)
Andrew Reynolds [Tue, 7 Dec 2021 14:56:12 +0000 (08:56 -0600)]
Eliminate more static calls to Rewriter::rewrite (#7740)

2 years agoAdd bitwise option to IntBlaster (#7721)
makaimann [Tue, 7 Dec 2021 02:16:09 +0000 (18:16 -0800)]
Add bitwise option to IntBlaster (#7721)

This is part of a series of PRs by @yoni206  to add full int-blasting support to the master branch of `cvc5`. This adds support for the bitwise encoding to `IntBlaster`. Future PRs would unify the `bv2int` and `IntBlaster` helper functions.

2 years agoFix 32bit issue in sep_log_api test (#7752)
Gereon Kremer [Tue, 7 Dec 2021 01:46:54 +0000 (17:46 -0800)]
Fix 32bit issue in sep_log_api test (#7752)

This uses the proper `t.getInt64Value()` getter instead of `std::stoll(t.toString())`, fixing an issue on 32bit platforms.

2 years agoAdd documentation for QuickStart.java (#7730)
mudathirmahgoub [Tue, 7 Dec 2021 01:31:47 +0000 (19:31 -0600)]
Add documentation for QuickStart.java (#7730)

Improve java documentation: add QuickStart and a java API overview.

2 years agoDisable option regression for competition build (#7751)
Gereon Kremer [Mon, 6 Dec 2021 20:30:53 +0000 (12:30 -0800)]
Disable option regression for competition build (#7751)

This disables a regression that checks the didyoumean output for an invalid output on competition builds. On competition builds, we simply print "unknown" instead of shown any exceptions.

2 years agoUse unique_ptr instead of raw pointers (#7749)
Gereon Kremer [Mon, 6 Dec 2021 18:42:29 +0000 (10:42 -0800)]
Use unique_ptr instead of raw pointers (#7749)

This PR fixes a memory leak when invalid values are supplied to the stream options err, in or out. Whenever opening the stream would fail, we throw an exception and the created (though not properly opened) stream is leaked.
We now properly wrap the streams in unqiue_ptrs directly on creation.

2 years agoAdd regressions for fixed projects issues (#7739)
Andrew Reynolds [Mon, 6 Dec 2021 18:27:11 +0000 (12:27 -0600)]
Add regressions for fixed projects issues (#7739)

Fixes cvc5/cvc5-projects#164.
Fixes cvc5/cvc5-projects#172.
Fixes cvc5/cvc5-projects#175.
Fixes cvc5/cvc5-projects#178.
Fixes cvc5/cvc5-projects#181.
Fixes cvc5/cvc5-projects#183.
Fixes cvc5/cvc5-projects#185.

2 years agoMore robust fix for 32bit issues. (#7735)
Gereon Kremer [Sat, 4 Dec 2021 01:40:40 +0000 (17:40 -0800)]
More robust fix for 32bit issues. (#7735)

This PR implements a more robust fix for the 32bit issues with GMP. Relying on mpz_sizeinbase proves to be very tricky for the corner cases. This PR instead does a simple comparison against the min and max values of the respective types.

2 years ago[proofs] Alethe: Implementation of Process Function (#7745)
Lachnitt [Fri, 3 Dec 2021 23:39:38 +0000 (15:39 -0800)]
[proofs] Alethe: Implementation of Process Function (#7745)

Add call to updater and finalizer to process function of the AlethePostProcessor.

Co-authored-by: Haniel Barbosa <hanielbbarbosa@gmail.com>
2 years agoapi: Fix docs for TUPLE_PROJECT. (#7741)
Aina Niemetz [Fri, 3 Dec 2021 22:12:14 +0000 (14:12 -0800)]
api: Fix docs for TUPLE_PROJECT. (#7741)

2 years agoFaster hasing for `cvc5::String` (#7742)
Andres Noetzli [Fri, 3 Dec 2021 21:36:16 +0000 (13:36 -0800)]
Faster hasing for `cvc5::String` (#7742)

Previously, our hashing algorithm for cvc5::String would create an
std::string representation of the string and then call
std::hash<std::string> on the result. Creating the temporary
std::string is quite expensive and can be avoided by computing the
hash directly on the elements of the vector of characters in
cvc5::String.

This change improves our solving time on an industrial benchmark from
about 59s to 55s.

2 years agoFix a few broken links (#7734)
Gereon Kremer [Fri, 3 Dec 2021 19:07:46 +0000 (11:07 -0800)]
Fix a few broken links (#7734)

This PR fixes a few broken links in our documentation.

2 years agoCheck constructor is used in APPLY_CONSTRUCTOR (#7737)
Andrew Reynolds [Fri, 3 Dec 2021 18:38:40 +0000 (12:38 -0600)]
Check constructor is used in APPLY_CONSTRUCTOR (#7737)

Fixes cvc5/cvc5-projects#373.

2 years agoProper error for using constructor in multiple datatypes (#7738)
Andrew Reynolds [Fri, 3 Dec 2021 17:57:11 +0000 (11:57 -0600)]
Proper error for using constructor in multiple datatypes (#7738)

Now gives error cannot use a constructor for multiple datatypes.

Fixes cvc5/cvc5-projects#372.

2 years agoAdd explicit 64bit getters for Integer class (#7728)
Gereon Kremer [Thu, 2 Dec 2021 22:33:04 +0000 (14:33 -0800)]
Add explicit 64bit getters for Integer class (#7728)

This PR addresses a few issues on our 32bit builds. Most importantly, it adds int64_t Integer::getSigned64() and uint64_t Integer::getUnsigned64().

2 years agoRemove void as possible option type (#7731)
Gereon Kremer [Thu, 2 Dec 2021 21:19:15 +0000 (13:19 -0800)]
Remove void as possible option type (#7731)

This PR removes the possibility to have void options. While there are (very) few options that may legitimately be considered void (they do not actually hold a value, but merely trigger a handler or predicate), the type being void introduces a number of special cases in the options setup. Their only real benefit was to avoid having data members that would never be used.
As it turns out, though, the same can be achieved by not specifying a name, which already supported as well.

2 years agoCheck docs for broken links before uploading (#7729)
Gereon Kremer [Thu, 2 Dec 2021 19:48:21 +0000 (11:48 -0800)]
Check docs for broken links before uploading (#7729)

We currently have a few broken links in our documentation. This PR make our CI check for broken links before uploading it. Note that it will not fail any job, so we still need to check the output occasionally for now.

2 years agoFixes for sygus-rr-synth-input (#7716)
Andrew Reynolds [Thu, 2 Dec 2021 17:12:10 +0000 (11:12 -0600)]
Fixes for sygus-rr-synth-input (#7716)

Includes aborting when no non-constant subterms exist, a spurious assertion failure, and bad variable names.

Fixes cvc5/cvc5-projects#351

Fixes cvc5/cvc5-projects#353

2 years ago[proofs] Fix a trace in SAT proof manager (#7732)
Haniel Barbosa [Thu, 2 Dec 2021 16:43:10 +0000 (13:43 -0300)]
[proofs] Fix a trace in SAT proof manager (#7732)

2 years agoadd bag.fold operator (#7718)
mudathirmahgoub [Thu, 2 Dec 2021 02:12:30 +0000 (20:12 -0600)]
add bag.fold operator (#7718)

2 years agoAdd unit tests for api::Solver::setOption() (#7708)
Gereon Kremer [Thu, 2 Dec 2021 00:30:09 +0000 (16:30 -0800)]
Add unit tests for api::Solver::setOption() (#7708)

This PR adds a generic unit test for api::Solver::setOption(). It iterates over all options and calls setOption() with somewhat cleverly chosen values according to getOptionInfo().
While building this, it occurred to me that calling std::exit() in an option handler is weird (for example for version) and we should do this in the driver instead. This PR also refactors this issue, moving all calls to std::exit() from the option handlers into the driver.

2 years agoapi: Add missing bit-width 0 check to mkBVFromStrHelper. (#7727)
Mathias Preiner [Wed, 1 Dec 2021 22:28:37 +0000 (14:28 -0800)]
api: Add missing bit-width 0 check to mkBVFromStrHelper. (#7727)

2 years ago[proofs] Add method to CDProof to obtain number of proof nodes (#7725)
Haniel Barbosa [Wed, 1 Dec 2021 19:41:11 +0000 (16:41 -0300)]
[proofs] Add method to CDProof to obtain number of proof nodes (#7725)

Useful for example to easily see by how much a proof grew after some reconstruction expansion.

2 years ago[proofs] Alethe: Add finalize function to insert missing OR steps (#7724)
Lachnitt [Wed, 1 Dec 2021 19:12:37 +0000 (11:12 -0800)]
[proofs] Alethe: Add finalize function to insert missing OR steps (#7724)

A post visit that adds an OR step is needed in case a premise is printed as a singleton (cl (or F1 ... Fn)) but used as a clause (cl F1 ... Fn).

Co-authored-by: Haniel Barbosa <hanielbbarbosa@gmail.com>
2 years agoImprovements for get-difficulty (#7720)
Andrew Reynolds [Wed, 1 Dec 2021 17:16:42 +0000 (11:16 -0600)]
Improvements for get-difficulty (#7720)

This makes 2 improvements for get-difficulty:
(1) Ensures that we recompute relevance info for lemmas sent at STANDARD effort.
(2) An open proof error was reported by Certora using --produce-difficulty.
This makes get-difficulty more robust by ensuring that lemmas are not marked as having a difficulty. It also minimizes the cases where we mark lemmas as having a difficulty internally.