Haniel Barbosa [Wed, 30 Mar 2022 13:53:57 +0000 (10:53 -0300)]
[proof] [doc] Document external proof rules (#8439)
Mathias Preiner [Wed, 30 Mar 2022 08:51:42 +0000 (01:51 -0700)]
Move cvc5::internal::main to cvc5::main. (#8454)
yoni206 [Wed, 30 Mar 2022 06:55:56 +0000 (09:55 +0300)]
Add information for cardinality constraint to the Python API (#8444)
This PR complements #8422 by adding a tester and a getter for cardinality constraints to the python API. The corresponding test from solver_black is translated and included.
yoni206 [Wed, 30 Mar 2022 06:05:49 +0000 (09:05 +0300)]
Adding some missing python API methods and tests (#8441)
This PR adds methods to the python API, as well as tests for the new methods and other tests for existing methods, translated from solver_black.cpp.
Andrew Reynolds [Wed, 30 Mar 2022 04:39:29 +0000 (23:39 -0500)]
Change tuple tokens and update datatypes theory ref (#8420)
Changes tuple_ to tuple. for consistency.
Also fixes the lexer list for smt2 and updates the datatypes theory reference with missing content.
Andrew Reynolds [Wed, 30 Mar 2022 03:57:41 +0000 (22:57 -0500)]
Add LFSC to internal proof checker (#8442)
Similar to ALETHE, this was forgotten. Was not causing issues since --proof-check=eager is not used by default.
mudathirmahgoub [Wed, 30 Mar 2022 03:15:58 +0000 (22:15 -0500)]
Fix some documentation warnings (#8453)
Mathias Preiner [Wed, 30 Mar 2022 02:55:15 +0000 (19:55 -0700)]
Rename master branch to main. (#8452)
Abdalrhman Mohamed [Wed, 30 Mar 2022 02:11:08 +0000 (21:11 -0500)]
Show the code for utilities in the docs. (#8387)
This PR adds the code for printing synthesis solutions to the docs. Various other changes are made to increase the consistency between the different bindings.
Signed-off-by: Abdalrhman M Mohamed <abdalrhman-mohamed@uiowa.edu>
Aina Niemetz [Wed, 30 Mar 2022 00:22:40 +0000 (17:22 -0700)]
TypeNode: Rename isSort() and getSortConstructorArity(). (#8446)
Names of these two functions were slightly confusing with respect to API
terminology. This renames isSort() to isUninterpretedSort() and
getSortConstructorArity() to getUninterpretedSortConstructorArity() for
more consistency and clarity.
Mathias Preiner [Tue, 29 Mar 2022 23:23:01 +0000 (16:23 -0700)]
Introduce internal namespace and remove api namespace. (#8443)
The public cvc5 API now lives in the cvc5 namespace. All internal parts were moved into the (new) internal namespace.
The final hierarchy will be as follows:
cvc5
~~ public API
::context
::internal
::parser
::main
After this PR it will be:
cvc5
~~ public API
::internal
::context
::main
::parser
Aina Niemetz [Tue, 29 Mar 2022 21:36:12 +0000 (14:36 -0700)]
api: Add Sort::getInstantiatedParameters(). (#8445)
This adds a function to retrieve the sort arguments an instantiated
sort has been instantiated with. It further deletes
Sort::getDatatypeParamSorts() and
Sort::getUninterpretedSortParamSorts().
yoni206 [Tue, 29 Mar 2022 20:00:32 +0000 (23:00 +0300)]
bv-to-int: fix translation of bvneg (#8437)
The translation of bvneg to integers did not match the comment documenting it, causing #8413 .
This PR fixes the issue and includes the test from #8413 as well as a simpler test.
Fixes #8413 .
Andrew Reynolds [Tue, 29 Mar 2022 19:37:22 +0000 (14:37 -0500)]
Make ensureTermSort private (#8436)
This method was used to correct a limitation in the old API regarding parsing decimals. It should not be a public API method.
Andrew Reynolds [Tue, 29 Mar 2022 18:57:07 +0000 (13:57 -0500)]
Add information for cardinality constraint to the API (#8422)
Python API is not implemented yet, as it requires new infrastructure for returning pairs.
Andrew Reynolds [Tue, 29 Mar 2022 18:17:29 +0000 (13:17 -0500)]
Make ProofNodeManager mkScope more robust (#8435)
This make mkScope more robust in two ways:
- Literals rewritten to true can be justified by MACRO_SR_PRED_INTRO.
- Literals that are rewritten to other non-rewritable free assumptions can also be linked.
This is enough to ensure that current issues with (= t false) vs (not f) are fixed for Boolean arrays.
mudathirmahgoub [Tue, 29 Mar 2022 17:32:37 +0000 (12:32 -0500)]
Add bags.rst (#8432)
Andrew Reynolds [Tue, 29 Mar 2022 16:46:14 +0000 (11:46 -0500)]
Fix issue related to use of Boolean term variable for set/bag choose (#8423)
Fixes cvc5/cvc5-projects#501.
I am considering making this detail internal to SkolemManager to avoid similar issues in the future. However, there are some subtle performance implications in doing so, so this will be addressed later.
Andres Noetzli [Tue, 29 Mar 2022 14:43:02 +0000 (07:43 -0700)]
[API] Add `{is,get}RoundingModeValue()` (#8429)
It also fixes a wrong entry in s_rmodes_internal.
Aina Niemetz [Tue, 29 Mar 2022 08:33:05 +0000 (01:33 -0700)]
TypeNode: Refactor get param types handling. (#8428)
This introduces TypeNode::getInstantiatedParamTypes() and deletes
TypeNode::getParamTypes(). This is in preparation for adding
api::Sort::getInstantiatedParameters().
Clark Barrett [Tue, 29 Mar 2022 06:50:55 +0000 (23:50 -0700)]
Fix for issue 5925: constant arrays should be nonlinear. (#8430)
Fixes #5925. The "nonlinear" optimization did not take constant arrays into account.
Aina Niemetz [Tue, 29 Mar 2022 01:37:13 +0000 (18:37 -0700)]
api: Add Sort::isInstantiated(). (#8425)
This further removes Sort::isUinterpretedSortParameterized().
Andres Noetzli [Tue, 29 Mar 2022 01:13:46 +0000 (18:13 -0700)]
Move `RoundingMode` to `cvc5_types.h` (#8427)
This moves RoundingMode to cvc5_types.h and switches to using the
auto-generated enum bindings. It also fixes the Java-bindings generator
for enums (certain parts were previously hardcoded for Kind) and
extends the unit tests for Solver::mkRoundingMode() to actually check
the value being created.
Andrew Reynolds [Mon, 28 Mar 2022 23:09:43 +0000 (18:09 -0500)]
Mark more methods as experimental (#8426)
Mathias Preiner [Mon, 28 Mar 2022 22:30:19 +0000 (15:30 -0700)]
Rename get-interpol to get-interpolant. (#8424)
Andres Noetzli [Mon, 28 Mar 2022 21:23:21 +0000 (14:23 -0700)]
[API] Mark methods as experimental (#8249)
Mathias Preiner [Mon, 28 Mar 2022 20:48:07 +0000 (13:48 -0700)]
ci: Enable all language bindings for debug build. (#8419)
Aina Niemetz [Mon, 28 Mar 2022 19:25:19 +0000 (12:25 -0700)]
api: Remove left-over Sort::getUninterpretedSortName from header. (#8421)
Lachnitt [Mon, 28 Mar 2022 19:05:26 +0000 (12:05 -0700)]
[proofs] Alethe: Call Printer (#8408)
The alethe printer was not called on Master.
Lachnitt [Mon, 28 Mar 2022 18:44:44 +0000 (11:44 -0700)]
[proofs] Alethe: Add ALETHE_RULE to builtin proof checker (#8409)
Proofs would fail because the internal proof checker would return null and the alethe check is not trusted.
Andrew Reynolds [Mon, 28 Mar 2022 17:31:34 +0000 (12:31 -0500)]
Fix synth result python unit test (#8418)
Mathias Preiner [Mon, 28 Mar 2022 16:49:32 +0000 (09:49 -0700)]
Mark solve-bv-as-int as expert. (#8417)
Option not yet stable.
yoni206 [Sat, 26 Mar 2022 17:10:06 +0000 (20:10 +0300)]
Separating produce-interpols from the mode of interpolant generation (#8326)
In current master, --produce-interpols takes a mode, where "none" is the default mode, in which interpolant generation is not enabled.
This PR makes --produce-interpols a Boolean, and adds a interpols-mode option to determine the mode, similarly to unsat cores.
Aina Niemetz [Sat, 26 Mar 2022 07:27:11 +0000 (00:27 -0700)]
builtin: Move type rules implementation to .cpp file. (#8407)
Aina Niemetz [Sat, 26 Mar 2022 05:40:42 +0000 (22:40 -0700)]
api: Rename *SortConstructor* to *UninterpretedSortConstructor*. (#8406)
Andrew Reynolds [Sat, 26 Mar 2022 03:46:31 +0000 (22:46 -0500)]
Fix spurious assertion failure (#8404)
This was wrong when doing sequences of reals and a seq.nth merges with a seq.len.
Fixes cvc5/cvc5-projects#502.
Andrew Reynolds [Sat, 26 Mar 2022 02:51:29 +0000 (21:51 -0500)]
Throw logic exception for set.map (#8403)
Support parsing/rewriting, but not solving currently.
Andrew Reynolds [Sat, 26 Mar 2022 01:53:51 +0000 (20:53 -0500)]
More minor cleaning of options (#8401)
Removes a few more unnecessary options and moves the location of one.
Andrew Reynolds [Sat, 26 Mar 2022 01:07:05 +0000 (20:07 -0500)]
Fixes for API kind documentation (#8397)
Also renames str.tolower -> str.to_lower, str.toupper -> str.to_upper.
Co-authored-by: Aina Niemetz <aina.niemetz@gmail.com>
Gereon Kremer [Sat, 26 Mar 2022 00:42:26 +0000 (01:42 +0100)]
Add API unit tests for options (#8339)
This PR adds some unit tests that cover some remaining cases of getOptionInfo() and getDriverOptions().
It also adds some fixes to the java bindings of these methods.
Mathias Preiner [Fri, 25 Mar 2022 23:57:10 +0000 (16:57 -0700)]
api: Unify mkOp variants. (#8369)
Co-authored-by: Gereon Kremer <nafur42@gmail.com>
Aina Niemetz [Fri, 25 Mar 2022 23:33:17 +0000 (16:33 -0700)]
api: More comprehensive documentation of INTERNAL_KIND. (#8400)
Andres Noetzli [Fri, 25 Mar 2022 23:09:13 +0000 (16:09 -0700)]
[Parser] Fix resolution of indexed symbols (#8383)
Fixes #8377. Commit
3a97480ffab492f8272ad9c7c192d04b43eeea60 changed how
we handle indexed symbols. In particular, it added the option to resolve
them later when the arguments are known. However, the condition for when
to do this resolution was incorrect: It was applied to _all_ known
indexed symbols and not only the ones that can't immediately be resolved
to a kind. This commit fixes the condition.
Aina Niemetz [Fri, 25 Mar 2022 22:43:35 +0000 (15:43 -0700)]
api: Remove Sort::isParametricDatatype(). (#8405)
Previously, Sort::isParametricDatatype() returned true for both
instantiated and non-instantiated parametric datatypes.
This deletes the method, instead one can check getDatatype().isParametric(). Parametric datatypes will be distinguished from instantiated parametric datatypes via a forthcoming method Sort::isInstantiated.
Co-authored-by: ajreynol <andrew.j.reynolds@gmail.com>
Haniel Barbosa [Fri, 25 Mar 2022 21:25:04 +0000 (18:25 -0300)]
[proofs] [sat] Have SAT solver communicate whether it has optimized the assertion level of a clause (#8399)
This way both the SAT proof manager and the Proof Cnf Stream can properly track
proofs for clauses added at assertion levels below their original user level.
This commit, besides some minor tweaks, adds the hooks in the places where
a clause can be created with an optimized level and we need to track:
when the explanation of a propagation is requested
when a clause/lemma is added
when a lemma is added (from the backlog of lemmas added when Minisat was busy)
For clauses derived via resolution, this information is computed directly in the SAT proof manager.
This commit also reverts a change from #7790 where whether to optimize clauses was computed only once for the SAT solver. This cannot be the case because between different check-sat calls the state can change.
Finally, this commit enables proofs for several regressions that were previously incompatible with proofs. Since now proofs are compatible with optimizing the level of clauses during incremental solving, this commit should lead to performance improvements.
Fixes cvc5/cvc5-projects#314
Aina Niemetz [Fri, 25 Mar 2022 20:50:34 +0000 (13:50 -0700)]
api: Rename kind NULL_EXPR to NULL_TERM. (#8402)
Andres Noetzli [Fri, 25 Mar 2022 20:28:12 +0000 (13:28 -0700)]
Generate `enum` bindings for Python and Java (#8393)
This commit generalizes the generation of bindings for enums to include
enums in cvc5_types.h. The commit only generates the bindings, but
does not use them yet (e.g., do add an argument to
Solver::blockModels()). The generated Java bindings already respect
the C++ namespace whereas the Python bindings require a minor
restructuring to make the namespaces work (i.e., instead of cvc5kinds,
we should have cvc5.api.kinds).
Andrew Reynolds [Fri, 25 Mar 2022 20:00:14 +0000 (15:00 -0500)]
Update checkSynth and checkSynthNext to return SynthResult (#8382)
Also extends to non-trivial unit test of SynthResult.
Note this also changes the expected output when using --sygus-out=status from unsat/sat/unknown to feasible/infeasible/fail (the option is used mostly just for our regressions). The output mode status-or-def is now equivalent to standard and is hence deleted.
Andrew Reynolds [Fri, 25 Mar 2022 19:19:35 +0000 (14:19 -0500)]
Change output of abduction/interpolation for failed inputs (#8396)
Changes from "none" to "fail" to be consistent with SyGuS standard. Note that this means that we don't know if an abduct/interpolant exists.
Lachnitt [Fri, 25 Mar 2022 18:59:26 +0000 (11:59 -0700)]
[proofs] Alethe: Bug Fix in Cong Rule (#8391)
cvc5 suffered a segfault in the CONG rule because the refl step, e.g. (= v0 v0), was added without the cl connector, e.g. (cl (= v0 v0))
Aina Niemetz [Fri, 25 Mar 2022 18:00:27 +0000 (11:00 -0700)]
api: Remove blocks in kinds header. (#8398)
Haniel Barbosa [Fri, 25 Mar 2022 17:41:56 +0000 (14:41 -0300)]
[proofs] [cnf] Utilities to notify and track proofs of optimized SAT clauses in the ProofCnfStream (#8388)
Adds functionality for the TheoryProxy and ProofCnfStream modules to be notified of clauses that were asserted in lower levels than the current one. These clauses have their proofs tracked in the ProofCnfStream via an OptimizedClausesManager object.
Since the SAT solver may optimize the assertion level of propagation
explanations and of added clauses, we need to be able to maintain proofs across
context-popping. Not doing this can lead to open proofs. To do this the Proof
cnf stream uses an OptClausesManager to re-add proofs of facts inserted at
optimized levels.
Future PRs will change the SAT solver to use these notifications.
Andrew Reynolds [Fri, 25 Mar 2022 17:02:23 +0000 (12:02 -0500)]
Fixes related to set defaults for sygus/proofs (#8395)
This ensures we always report that SyGuS is incompatible with proofs. As a result, we require disabling sygus in 2 contexts where it should have been disabled before.
Andres Noetzli [Fri, 25 Mar 2022 13:08:01 +0000 (06:08 -0700)]
Fix Python API tests (#8392)
Note that we are currently not running API tests on the CI due to the
changes in
23dd064.
Aina Niemetz [Fri, 25 Mar 2022 03:13:06 +0000 (20:13 -0700)]
api: Refactor kinds documentation. (#8384)
Andrew Reynolds [Fri, 25 Mar 2022 02:21:44 +0000 (21:21 -0500)]
Properly guard commands in the SyGuS API (#8390)
This commit ensures we don't segfault in the SyGuS API (for non-text inputs) if the option sygus is not set to true. It also renames mkSygusVar to declareSygusVar for consistency with the sygus input format.
For SyGuS API inputs, we now use the option sygus to true instead of setting the language to sygus2.
This furthermore changes a few details in set-defaults regarding the relationship between the language, the sygus option, and when to apply default options for sygus.
It also adds a unit test for checkSynth.
Andrew Reynolds [Fri, 25 Mar 2022 01:56:48 +0000 (20:56 -0500)]
Recategorize options (#8386)
Andrew Reynolds [Fri, 25 Mar 2022 01:11:25 +0000 (20:11 -0500)]
Fixes for theory reference for datatypes (#8380)
Gereon Kremer [Thu, 24 Mar 2022 23:28:07 +0000 (00:28 +0100)]
Document proof rules for coverings solver (#8376)
This PR converts the documentation for the proof rules for the coverings solver.
Andrew Reynolds [Thu, 24 Mar 2022 21:02:48 +0000 (16:02 -0500)]
Minor updates for quantifiers options (#8385)
Haniel Barbosa [Thu, 24 Mar 2022 20:14:12 +0000 (17:14 -0300)]
[proofs] [sat] Handle resolution proofs for optimized clauses in incremental (#8389)
The SAT solver may associate, to the result of a resolution, a lower assertion
level than the current one. To be able to produce proofs to such clauses, we
extend the SAT proof manager to track which resolution results were
optimized. Then, when the SAT solver pops, the manager is notified and stores
the proofs for these optimized clauses, so that they can be reinserted when the
user context is popped. The latter is handled by the SAT proof manager's
OptClauseManager attribute.
Gereon Kremer [Thu, 24 Mar 2022 19:14:40 +0000 (20:14 +0100)]
Document arithmetic proof rules (#8373)
This PR converts the documentation for the arithmetic proof rules, excluding those for transcendentals and coverings.
Andrew Reynolds [Thu, 24 Mar 2022 18:14:59 +0000 (13:14 -0500)]
Standardize more instances of skolems (#8351)
This is work towards limiting our usage of witness terms for skolems.
It standardizes witnessing of disequalities for sets, bags, and arrays in the appropriate way that uses mkSkolemFunction(...) instead of mkSkolem(...).
Haniel Barbosa [Thu, 24 Mar 2022 17:34:59 +0000 (14:34 -0300)]
[sat] Add option to disable Minisat simplifications (#7992)
Useful to better control behavior, specially in terms of how the solver performs
when these simplifications (mainly variable and clause elimination) are
disabled, e.g. with incremental and/or proofs.
Also renames the previously confusing "--minisat--elimination" option, which
only refers to variable elimination, a subset of the Minisat simplifications.
Moreover deletes an old comment which no longer applies.
Andrew Reynolds [Thu, 24 Mar 2022 16:57:53 +0000 (11:57 -0500)]
Fix a couple of parse error messages for sygus (#8381)
Haniel Barbosa [Thu, 24 Mar 2022 15:32:42 +0000 (12:32 -0300)]
[unsat-cores] [sat-proof] Fix open proofs due to theory lemmas (#8371)
Previously when producing sat proofs for unsat cores (no theory proofs) theory lemmas were becoming open leafs in the final proof, breaking the invariant that only inputs should be so. This commit guards against this by justifying these lemmas with a THEORY_LEMMA step.
Fixes cvc5/cvc5-projects#468
Andrew Reynolds [Wed, 23 Mar 2022 23:53:14 +0000 (18:53 -0500)]
Clean options (#8309)
Deletes many unnecessary options, cleans some documentation, consolidates several options.
Gereon Kremer [Wed, 23 Mar 2022 22:59:23 +0000 (23:59 +0100)]
Add API unit tests for statistics (#8341)
This PR adds some unit tests that cover getStatistics() and the api::Stat class.
Andrew Reynolds [Wed, 23 Mar 2022 21:56:33 +0000 (16:56 -0500)]
Add SynthResult to the API (#8370)
Does not modify the code to return a SynthResult yet, just adds the class.
Co-authored-by: Aina Niemetz <aina.niemetz@gmail.com>
Gereon Kremer [Wed, 23 Mar 2022 19:53:18 +0000 (20:53 +0100)]
Add `getOptionInfo()` and `getOptionNames()` to python API (#8342)
These extended options operations were still missing from the python API and are added with this PR. To simplify the integration (and also provide a reasonably pythonic interface) we return a dictionary from getOptionInfo() instead of exposing a std::variant-like interface.
The PR also includes the corresponding unit tests.
Gereon Kremer [Wed, 23 Mar 2022 19:17:29 +0000 (20:17 +0100)]
Document proof rules for transcendentals (#8375)
This PR converts the documentation for the proof rules for the transcendental reasoning in the arithmetic solver.
Andrew Reynolds [Wed, 23 Mar 2022 18:48:28 +0000 (13:48 -0500)]
Make IDOF_MAX rewrite only apply when all children are constant (#8363)
Fixes #8346.
Mathias Preiner [Wed, 23 Mar 2022 18:26:15 +0000 (11:26 -0700)]
Only update latest tag if commit changed. (#8379)
Previously the latest tag was always updated when a new binary was added to a release (i.e. 3 updates per commit). This commit ensures that we only update the tag if the commit sha changed.
Andrew Reynolds [Wed, 23 Mar 2022 14:13:47 +0000 (09:13 -0500)]
Add internal synth result class (#8352)
This is in preparation for refactoring the return values of several API methods.
Gereon Kremer [Wed, 23 Mar 2022 08:27:33 +0000 (09:27 +0100)]
Run gen-versioninfo unconditionally (#8368)
This fixes an issue where the output of `--show-config` would not be updated properly in certain cases (e.g., when files were modified but cmake is not run). We now run the `gen-versioninfo` target unconditionally, always updating the `versioninfo.cpp` where the version data for `--show-config` is stored.
Gereon Kremer [Wed, 23 Mar 2022 04:11:04 +0000 (05:11 +0100)]
Store latest builds in a special release (#8337)
This PR refactors our current github ci action that takes care of storing binaries for releases. It now stores binaries both in the current release (if we are in a release build) or attaches them to a special latest tag. For any regular build on the master branch, it moves the latest tag to the current commit, weeds out the current assets attached to that latest release and adds the current binary. This makes sure we always have the equivalent of our current nightly builds in one place.
Co-authored-by: Andres Noetzli <andres.noetzli@gmail.com>
Gereon Kremer [Wed, 23 Mar 2022 03:47:33 +0000 (04:47 +0100)]
Remove dependency on build (#8367)
We automatically update PRs that can be merged automatically in the CI on master. This PR makes it so that this update is done immediately, not only after the CI has run successfully for master.
As we only merge to master if CI works, CI failures on master should only be glitches or issues with the CI itself.
This allows to merge stuff to master twice as fast when using the auto-merge feature.
mudathirmahgoub [Wed, 23 Mar 2022 02:53:38 +0000 (21:53 -0500)]
update SET_COMPREHENSION documentation (#8372)
Andrew Reynolds [Wed, 23 Mar 2022 02:12:34 +0000 (21:12 -0500)]
Initial documentation on LFSC (#8365)
mudathirmahgoub [Wed, 23 Mar 2022 01:11:06 +0000 (20:11 -0500)]
Fix cvc5-projects issue 497 (#8331)
Fixes cvc5/cvc5-projects#497
Andrew Reynolds [Wed, 23 Mar 2022 00:05:38 +0000 (19:05 -0500)]
Fix non-termination issue in sygus enumerator (#8340)
This ensures that the sygus enumerator does not get stuck in rare cases.
In particular this is important when doing PBE and one of the enumerators (among return/condition enumeration) is out of values. This ensures we break when we fail to increment an enumerator for a type that is required to validate a child enumerator.
Andrew Reynolds [Tue, 22 Mar 2022 23:36:37 +0000 (18:36 -0500)]
Change null terminator for regular expression intersection (#8362)
Gereon Kremer [Tue, 22 Mar 2022 22:26:56 +0000 (23:26 +0100)]
Refactor proof rule documentation (#8303)
This PR starts to refactor the proof rule comments so that they generate proper sphinx documentation.
It sets up doxygen to include the proof_rule.h, includes some useful configuration for mathjax and provides proper documentation for all core rules and Boolean rules.
Andrew Reynolds [Tue, 22 Mar 2022 21:24:52 +0000 (16:24 -0500)]
Updates for the theory reference for separation logic (#8366)
Gereon Kremer [Tue, 22 Mar 2022 20:33:11 +0000 (21:33 +0100)]
Make uncovered-api-functions.py exit with 1 if something is not covered (#8360)
This simplifies the integration of this script in CI or buildbot jobs. The idea is to automatically check that the whole API is covered by unit tests, and that the language bindings do the same.
Haniel Barbosa [Tue, 22 Mar 2022 19:53:42 +0000 (16:53 -0300)]
[proofs] Alethe: fixing formatting and adding missing comment (#7779)
mudathirmahgoub [Tue, 22 Mar 2022 19:14:59 +0000 (14:14 -0500)]
update sets-and-relations.rst (#8364)
Abdalrhman Mohamed [Tue, 22 Mar 2022 17:01:13 +0000 (12:01 -0500)]
Add a timeout option for verification of synthesized terms. (#8359)
This PR adds an option to timeout on the verification check for the terms enumerated by the Sygus solver.
Andres Noetzli [Tue, 22 Mar 2022 08:36:54 +0000 (01:36 -0700)]
[FP] Remove `FLOATINGPOINT_TO_FP_GENERIC` kind (#8334)
This commit removes the `FLOATINGPOINT_TO_FP_GENERIC` kind, which was
only used in the parser and immediately rewritten by the floating-point
arithmetic solver. It extends the `ParseOp` class to handle indexed
operators of which we do not know the kind (`to_fp` in this case) by
storing the name and the indices. The name is then resolved later when
we have parsed the arguments.
Andrew Reynolds [Tue, 22 Mar 2022 07:43:30 +0000 (02:43 -0500)]
Fixes for witness terms appearing in CEGQI instantiations (#8350)
Fixes #8344.
We now have cases where witness terms e.g. `(witness x : String. len(x) = N)` appear in model values. These terms require special care in CEGQI.
There are 2 fixes in this PR:
(1) we update our policy on what a legal term is,
(2) we erase annotations from witness terms appearing in instantiations, which is required for ensuring that proofs are consistent. Otherwise, the skolemization lemma for a witness term does not introduce the same skolem.
Andrew Reynolds [Tue, 22 Mar 2022 01:27:20 +0000 (20:27 -0500)]
Refactor result class (#8313)
This significantly refactors the internal result class. Entailments and "which" field are deleted, "Sat" is renamed to "Status". Moreover "TYPE_NONE" is made into a status.
Simplifies the usage of this class throughout the code.
It also changes the API Result method isSatUnknown to isUnknown.
Mathias Preiner [Tue, 22 Mar 2022 00:22:41 +0000 (17:22 -0700)]
api: Unify mkTerm variants. (#8357)
Andres Noetzli [Tue, 22 Mar 2022 00:00:58 +0000 (17:00 -0700)]
[API] Support `Op::operator[]` in Java and Python (#8356)
This commit adds support for `Op::operator[]` in Java and Python and
updates all unit tests to be consistent.
Andres Noetzli [Mon, 21 Mar 2022 23:27:40 +0000 (16:27 -0700)]
Remove `Op::getIndices()` (#8355)
This commit removes `Op::getIndices()`. As discussed offline, the
semantics of that method were confusing and the use cases are covered by
`Op::getNumIndices()` and `Op::operator[]()` (which mirror
`Term::getNumChildren()` and `Term::operator[]()`).
Future changes are going to update the Python and Java bindings to
support `Op::operator[]()`.
Andrew Reynolds [Mon, 21 Mar 2022 22:35:12 +0000 (17:35 -0500)]
Fix return value for candidate rewrite database (#8354)
Currently causes sygus reconstruction to return spurious solutions, due to being justified by candidate rewrites.
Gereon Kremer [Mon, 21 Mar 2022 21:19:11 +0000 (22:19 +0100)]
Refactor documentation (#8288)
This PR moves some stuff around in our documentation. Most notably, it moves some sections out of the "Binary documentation" to become their own top-level sections. While doing so, it refactors a few things in options and statistics to be more agnostic to the way cvc5 is used. To allow for command-output being used in regular (not auto-generated) documentation, we add a new extension that takes care of injecting the build folder into a new wrapper run-command.
Andrew Reynolds [Mon, 21 Mar 2022 20:27:36 +0000 (15:27 -0500)]
Fix LFSC conversion for seq unit (#8353)
Gereon Kremer [Mon, 21 Mar 2022 18:49:16 +0000 (19:49 +0100)]
Fix names of unit tests (#8338)
We are generally converging to tests names that are identical to their file name relative to the test directory, making running a particular subset of tests via ctest -R reasonably easy. This PR makes sure that the tests in unit/api/cpp also adhere to this schema.
Andrew Reynolds [Mon, 21 Mar 2022 14:41:54 +0000 (09:41 -0500)]
Fix learned literals for top-level AND (#8336)
This is important for a deep restart strategy where substitutions may be consolidated by the preprocessor to a single AND.
Gereon Kremer [Sun, 20 Mar 2022 16:39:41 +0000 (17:39 +0100)]
Add `getStatistics()` to python API (#8343)
This PR adds Solver.getStatistics() to the python API. To make the usage a bit more pythonic, we do not expose the iterator interface of api::Statistics but instead offer .get() which returns the whole range as a dictionary. The ::get() method to obtain a single statistic value is instead implemented via __getitem__().
The PR also includes the corresponding unit tests.