Gereon Kremer [Tue, 26 Oct 2021 11:58:53 +0000 (04:58 -0700)]
Fix Configuration::isStaticBuild (#7456)
This PR fixes a minor issue in Configuration::isStaticBuild() which would always return true. Note that CVC5_STATIC_BUILD is always defined via #cmakedefine01 in cvc5config.h.
Lachnitt [Tue, 26 Oct 2021 11:46:26 +0000 (04:46 -0700)]
[proofs] Alethe: Translate NOT_NOT_ELIM rule (#7402)
Implementation of the translation of NOT_NOT_ELIM rules into the Alethe calculus.
Co-authored-by: Haniel Barbosa <hanielbbarbosa@gmail.com>
Lachnitt [Mon, 25 Oct 2021 22:24:04 +0000 (15:24 -0700)]
[proofs] Alethe: Translate MODUS_PONENS rule (#7401)
Implementation of the translation of MODUS_PONENS rules into the Alethe calculus.
Co-authored-by: Haniel Barbosa <hanielbbarbosa@gmail.com>
Andrew Reynolds [Mon, 25 Oct 2021 21:39:02 +0000 (16:39 -0500)]
Add new method for enumerating unsat queries with SyGuS (#7459)
This adds a new option for --sygus-query-gen=unsat to generate unsat queries (previously, only satisfiable queries were supported).
The algorithm can be seen as a variant of abduction where we conjoin predicates that both (1) refine the current model and (2) avoid repeated unsat cores.
It does some minor refactoring of ExprMinerManager to support the new module.
Lachnitt [Mon, 25 Oct 2021 21:23:48 +0000 (14:23 -0700)]
[proofs] Alethe: Translate EQ_RESOLVE rule (#7400)
Implementation of the translation of EQ_RESOLVE rules into the Alethe calculus.
Co-authored-by: Haniel Barbosa <hanielbbarbosa@gmail.com>
Andrew Reynolds [Mon, 25 Oct 2021 20:38:28 +0000 (15:38 -0500)]
Fix spurious checks to closed proofs (#7484)
This leads to issues when (1) proofs are enabled, (2) unsat cores are enabled and full proofs are disabled in a subsolver.
This is the case for the abduction algorithm that uses unsat core learning, when proofs are explicitly enabled. This led to spurious assertion failures when testing proof new.
Andrew Reynolds [Mon, 25 Oct 2021 20:23:31 +0000 (15:23 -0500)]
Java and python unit tests for mkCardinalityConstraint (#7486)
Adds leftover missing unit tests for new API call for mkCardinalityConstraint from
eeb78c8.
Andrew Reynolds [Mon, 25 Oct 2021 20:08:28 +0000 (15:08 -0500)]
Fix more missing uses of CDProof::isSame (#7491)
Fixes cvc5/cvc5-projects#306.
Andrew Reynolds [Mon, 25 Oct 2021 18:23:39 +0000 (13:23 -0500)]
Fix support for global declarations (#7480)
Previously, we asserted global declarations as substitutions/formulas just before check-sat. This is not ideal since the current set of assertions can be preprocessed without having knowledge of definitions of defined functions. Moreover, this could lead to model unsoundness if it were the case that a defined symbol was solved during preprocessing.
Fixes #7479. In that example, y was solved for true and then we failed to overwrite y with its definition (> x 0), hence dropping the definition. Now, y is defined as (> x 0) before we preprocess.
Andrew Reynolds [Mon, 25 Oct 2021 17:15:43 +0000 (12:15 -0500)]
Remove HOL/fmf bound messages in set defaults (#7487)
This block is misleading after the last commit.
mudathirmahgoub [Mon, 25 Oct 2021 16:36:35 +0000 (11:36 -0500)]
Add inference for count map (#7264)
Andrew Reynolds [Mon, 25 Oct 2021 15:32:16 +0000 (10:32 -0500)]
Reenable proofs on some regressions (#7483)
Lachnitt [Mon, 25 Oct 2021 13:26:40 +0000 (06:26 -0700)]
[proofs] Alethe: Translate SPLIT rule (#7399)
Implementation of the translation of SPLIT rules into the Alethe calculus.
Co-authored-by: Haniel Barbosa <hanielbbarbosa@gmail.com>
Andres Noetzli [Mon, 25 Oct 2021 11:59:53 +0000 (04:59 -0700)]
[Regression Script] Support older Python versions (#7482)
This removes two uses of f-strings, which are not supported by Python
<3.6.
mudathirmahgoub [Sun, 24 Oct 2021 20:59:26 +0000 (15:59 -0500)]
Delete redundant file option_Info.cpp (#7477)
Andrew Reynolds [Sun, 24 Oct 2021 18:31:56 +0000 (13:31 -0500)]
Add new eager conflict detection in strings for integer equivalence classes (#7453)
Required to address Zelkova bottlenecks.
This generalizes the methods for eager prefix/suffix conflicts for strings to do eager lower/upper bound conflicts for integer equivalence classes based on string-specific reasoning about length terms. This avoids cases where Simplex fails to show a concise conflict due to not having access to string reasoning (e.g. strings::ArithEntail) for arithmetic bounds.
The approach can still be improved by inferring fixed length for regular expression memberships, analogous to what is done for prefix/suffix conflicts.
It also changes EqcInfo to store (str.len x) instead of x for length terms.
Andrew Reynolds [Sat, 23 Oct 2021 01:27:14 +0000 (20:27 -0500)]
Remove spurious assertoin (#7458)
Fixes #7439. That benchmark is now "unknown".
Andrew Reynolds [Fri, 22 Oct 2021 23:28:09 +0000 (18:28 -0500)]
Add requires libpoly to regression (#7467)
Required to avoid timeout in non-libpoly builds.
FYI @dddejan .
mudathirmahgoub [Fri, 22 Oct 2021 23:00:06 +0000 (18:00 -0500)]
Refactor java package name from cvc5 to io.github.cvc5.api (#7340)
This PR refactors java package name from cvc5 to io.github.cvc5.api.
It also refactor the names of cpp and java files.
Gereon Kremer [Fri, 22 Oct 2021 22:32:33 +0000 (15:32 -0700)]
Remove options::X__name (#7414)
This PR removes the static strings options::module::X__name that hold the primary long option name. We used them to figure out which option an handler function was called on for certain handler functions. This was always a weird way, and the past refactorings have eliminated all these cases.
This also removes the need to the two arguments option and flag to all option handlers.
Andrew Reynolds [Fri, 22 Oct 2021 22:21:02 +0000 (17:21 -0500)]
Remove stale pointer to proof node manager from skolemize utility (#7471)
Issue was introduced when cleaning this utility to the new style (to not take explicit pnm).
Haniel Barbosa [Fri, 22 Oct 2021 22:08:27 +0000 (19:08 -0300)]
[proof] Fixing CHAIN_RESOLUTION checker (#7465)
Previously the checker was doing things in a smart way that could lead to issues when a clause coincided with a singleton clause as a literal of another clause within the chain.
Fixes cvc5/cvc5-projects#310
Gereon Kremer [Fri, 22 Oct 2021 21:49:50 +0000 (14:49 -0700)]
Fix out-of-sync pruning in CDCAC proofs (#7470)
This PR resolves a subtle issue with CDCAC proofs.
The CDCAC proof is maintained as a tree where (mostly) every node corresponds to an (infeasible) interval generated within the CDCAC method. We prune these intervals regularly to get rid of redundant intervals, which also sorts intervals. The pruning however relied on a stable ordering of both intervals and child nodes within the proof tree, as there was no easy way to map nodes back to intervals.
This PR adds an objectId field to the proof tree nodes and assigns ids to the CDCAC intervals. This allows for a robust mapping between the two, even if the interval list is reordered.
Fixes cvc5/cvc5-projects#313.
Gereon Kremer [Fri, 22 Oct 2021 21:37:54 +0000 (14:37 -0700)]
Fix another double negation proof issue (#7468)
This PR fixes another subtle proof issue in the circuit propagator concerning negated ites.
Fixes cvc5/cvc5-projects#309.
Andrew Reynolds [Fri, 22 Oct 2021 21:25:37 +0000 (16:25 -0500)]
Remove `--uf-ho` option (#7463)
This option was previously a way of knowing whether higher-order was enabled, which now should be queried via LogicInfo::isHigherOrder.
It also adds an optimization to hasFreeVar required for QCF to be robust and not take a performance hit due to HO operators.
Andrew Reynolds [Fri, 22 Oct 2021 21:01:37 +0000 (16:01 -0500)]
Fix symmetry issue in theory engine conflicts (#7469)
Fixes --check-proofs on proof-new on regress0/strings/issue5384-double-conflict.smt2.
Andrew Reynolds [Fri, 22 Oct 2021 20:48:25 +0000 (15:48 -0500)]
Add more abduction regressions (#7461)
Fixes #5848.
This also fixes an issue leftover from #6605 where a spurious assertion failure was thrown.
Also introduces subfolder regress/regress1/abduction.
Lachnitt [Fri, 22 Oct 2021 19:00:52 +0000 (12:00 -0700)]
[proofs] Alethe: Translate FACTORING rule (#7398)
Implementation of the translation of FACTORING rules into the Alethe calculus.
Co-authored-by: Haniel Barbosa <hanielbbarbosa@gmail.com>
Lachnitt [Fri, 22 Oct 2021 18:38:47 +0000 (11:38 -0700)]
[proofs] Alethe: Translate CHAIN_RESOLUTION rule (#7397)
Implementation of the translation of RESOLUTION and CHAIN_RESOLUTION rules into the Alethe calculus.
Co-authored-by: Haniel Barbosa <hanielbbarbosa@gmail.com>
Gereon Kremer [Fri, 22 Oct 2021 18:08:33 +0000 (11:08 -0700)]
Make CAD proofs user context dependent (#7466)
Given that arithmetic lemmas can survive the current (sat) context by being buffered in the inference manager, their proofs need to do as well. This PR changes the CAD proofs to be user context dependent.
Fixes cvc5/cvc5-projects#315.
Andrew Reynolds [Fri, 22 Oct 2021 16:56:05 +0000 (11:56 -0500)]
Refactor theory inference manager constructor (#7457)
Eliminates a style where proof node manager was passed as an argument to indicate proofs enabled if non-null. All theory inference managers now check Env::isTheoryProofProducing instead.
Since BV did not pass a proof node manager to its inference manager, this PR also incidentally enables equality engine proofs for BV.
yoni206 [Fri, 22 Oct 2021 14:56:39 +0000 (17:56 +0300)]
Making `IntBlaster` inherit from `EnvObj` (#7431)
This PR makes the IntBlaster class inherit from EnvObj, along with derived modifications.
Andrew Reynolds [Fri, 22 Oct 2021 14:39:26 +0000 (09:39 -0500)]
Do not use global proxy variable attribute for strings (#7460)
Fixes #6180.
Andres Noetzli [Fri, 22 Oct 2021 00:43:54 +0000 (17:43 -0700)]
Fix memory management of `ErrorInformation` (#7388)
Fixes
https://scan6.coverity.com/reports.htm#v37053/p11644/fileInstanceId=
125548448&defectInstanceId=
32441274&mergedDefectId=
1453884.
mudathirmahgoub [Fri, 22 Oct 2021 00:22:00 +0000 (19:22 -0500)]
Add missing methods to Solver.java (#7299)
A life of solver object was simple before summer. Then it got complicated with getDifficulty, optional proofs getProof, more assumptions addSygusAssume, and finally different options to choose from OptionInfo.
This PR attempts to prepare solver objects for this new life.
Andrew Reynolds [Fri, 22 Oct 2021 00:04:21 +0000 (19:04 -0500)]
Make expression mining use configurable options and logic (#7426)
Required for doing options-specific internal fuzzing using SyGuS.
Aina Niemetz [Thu, 21 Oct 2021 21:37:05 +0000 (14:37 -0700)]
docs: Use light gray for background on the right. (#7438)
Gereon Kremer [Thu, 21 Oct 2021 21:07:08 +0000 (14:07 -0700)]
Also fix case of negated ite (#7454)
This PR follows #7452 and fixes the proofs generated for backward propagation of negated ite terms.
Gereon Kremer [Thu, 21 Oct 2021 19:10:26 +0000 (12:10 -0700)]
Fix symmetric proof issue for ITE in circuit propagator (#7452)
This PR goes back to #7446 and implements a proper fix that handles both symmetrical cases.
Andrew Reynolds [Thu, 21 Oct 2021 18:48:56 +0000 (13:48 -0500)]
Split utilites from CEGIS core connective module (#7441)
Towards a new module for enumerating unsat queries via SyGuS.
Andres Noetzli [Thu, 21 Oct 2021 18:13:52 +0000 (11:13 -0700)]
[Regression Script] Fix printing of error diff (#7451)
Haniel Barbosa [Thu, 21 Oct 2021 17:14:24 +0000 (14:14 -0300)]
[proofs] Fix open proof in SAT solver due to cycles (#7448)
Gereon Kremer [Thu, 21 Oct 2021 16:48:47 +0000 (09:48 -0700)]
Add regression (#7447)
This PR fixes a proof for an xor term that failed to eliminate a double negation.
Fixes cvc5/cvc5-projects#304
Gereon Kremer [Thu, 21 Oct 2021 16:33:23 +0000 (09:33 -0700)]
Fix incorrect proof from ITE in circuit propagator (#7446)
This PR fixes an incorrect proof in the circuit propagator related to back-propagation of an ite term.
Fixes cvc5/cvc5-projects#305.
Andres Noetzli [Thu, 21 Oct 2021 15:34:26 +0000 (08:34 -0700)]
Refactor regressions script (#7249)
This makes the regression script more modular by refactoring all the
different checks into separate classes, which makes it easier to add
additional tests and to run only a subset of the tests.
Andrew Reynolds [Thu, 21 Oct 2021 14:11:57 +0000 (09:11 -0500)]
Make cardinality constraint a nullary operator (#7333)
This makes cardinality constraints nullary operators. This eliminates hacks for supporting these previously.
It also removes an unimplemented kind CARDINALITY_VALUE.
Notice that the parser and printer now do not use a common syntax for cardinality constraints, this will be resolved on followup PRs.
Gereon Kremer [Thu, 21 Oct 2021 12:31:59 +0000 (05:31 -0700)]
Working on windows builds (#7381)
This makes a push to fix our windows nightly builds. It does a couple of things:
- remove `CVC5_WINDOWS_BUILD` and check `CMAKE_SYSTEM_NAME` instead
- use `CMAKE_SHARED_LIBRARY_SUFFIX` instead of `so`
- properly set `IMPORTED_IMPLIB` on imported shared libraries
- fix the GMP build, where the header is different for shared and static builds
- fix the find&sed patching for libpoly
- add `CVC5_EXPORT` to nested types in the API
- remove `CVC5_EXPORT` from enums
- add `-Dcvc5_obj_EXPORTS` to actually enable exports
- Fix how template function `safe_print` is exported.
Gereon Kremer [Thu, 21 Oct 2021 12:10:20 +0000 (05:10 -0700)]
Add setup to generate graphs for cmake target dependencies (#7383)
This adds the target `target-graphs` that generated graphs of cmake dependencies based on `cmake --graphviz`. It is a nice to tool to debug the cmake setup in some cases.
Andres Noetzli [Thu, 21 Oct 2021 01:31:52 +0000 (18:31 -0700)]
Enable and fix dump test (#7387)
Fixes #1649. The test was not enabled before and was still expecting
CVC-style output.
Gereon Kremer [Thu, 21 Oct 2021 01:22:55 +0000 (18:22 -0700)]
Fix (#7437)
This PR reintroduces support for the (deprecated) option interactive-mode. It was erroneously removed in #7295.
Fixes #7379.
Andrew Reynolds [Wed, 20 Oct 2021 23:56:25 +0000 (18:56 -0500)]
Enable some previously failing regressions (#7434)
Gereon Kremer [Wed, 20 Oct 2021 23:45:48 +0000 (16:45 -0700)]
Fix docs upload (again) (#7435)
This is a follow-up to #7420. This time, I tested the modified code with every combination of values...
Aina Niemetz [Wed, 20 Oct 2021 23:12:55 +0000 (16:12 -0700)]
api: Add Solver::mkSepEmp(). (#7432)
@alex-ozdemir
Aina Niemetz [Wed, 20 Oct 2021 22:56:40 +0000 (15:56 -0700)]
api: Improve documentation for special cases with nullary ops. (#7433)
Fixes #7430.
Andrew Reynolds [Wed, 20 Oct 2021 22:39:12 +0000 (17:39 -0500)]
Move variadic trie utility to its own file (#7410)
Work towards a new internal fuzzing technique.
The new fuzzing technique leverages elements of the IJCAR 2020 paper on abduction, this moves https://github.com/cvc5/cvc5/blob/master/src/theory/quantifiers/sygus/cegis_core_connective.h#L44 to its own file. A followup PR will break this and further utility methods out of this file.
Andrew Reynolds [Wed, 20 Oct 2021 22:28:52 +0000 (17:28 -0500)]
Add regressions for fixed issues (#7421)
Fixes #5288, fixes (the 3rd benchmark on) #5741, fixes #6184, fixes #5735, which do not trigger on master.
yoni206 [Wed, 20 Oct 2021 22:18:33 +0000 (01:18 +0300)]
Add `isNull` and `isUpdater` to `Sort` class of python API (#7423)
This adds two missing functions to the python API, along with tests for them. It also adds a missing test for the cpp API.
Andrew Reynolds [Wed, 20 Oct 2021 22:09:07 +0000 (17:09 -0500)]
Throw exception if checking model with separation logic heap (#7422)
Fixes #5515.
It is currently not possible to check-model with separation logic. Checking models requires either additional bookkeeping (heap per formula position) or otherwise is expensive to check.
This makes us give a recoverable exception.
Andrew Reynolds [Wed, 20 Oct 2021 22:01:01 +0000 (17:01 -0500)]
Check for higher-order variables in TheoryUF::ppRewrite (#7408)
Fixes #7000. That sequence of API calls now throws a logic exception.
Gereon Kremer [Wed, 20 Oct 2021 21:42:16 +0000 (14:42 -0700)]
Fix inadvertent failure of workflow step (#7420)
This fixes an issue introduced with #7352: jobs fail immediately if any command has a non-zero exit code. The way we obtained the exit code of the `diff` command was incompatible with this policy, which is why we currently never upload any docs to `docs-ci`.
Andrew Reynolds [Wed, 20 Oct 2021 21:07:09 +0000 (16:07 -0500)]
Eliminate last static calls to rewriter from smt layer (#7355)
Andrew Reynolds [Wed, 20 Oct 2021 20:47:06 +0000 (15:47 -0500)]
Make SyGuS solver robust to non-closed enumerable sorts (#7417)
This makes the SyGuS solver robust to variables that are not closed enumerable, e.g. arrays of uninterpreted sorts.
It corrects an issue in array's mkGroundTerm issue which would allow constants to enter into constraints for SyGuS problems with arrays. This method does not cause further issues currently since quantifiers is guarded in several places to ensure array constants are not constructed via this method.
It also makes it so that we don't add explicit CEGIS refinement lemmas unless evaluation unfolding is enabled and the counterexamples are from closed enumerable types; there is no reason to add these unless we are combining with evaluation unfolding.
This addresses several of the issues raised in #6605.
Andrew Reynolds [Wed, 20 Oct 2021 20:34:33 +0000 (15:34 -0500)]
Do not construct instantiation for checking propagating instantiations spurious (#7390)
This makes the check for when an instantiation is "propagating" faster by not constructing the substitution + rewriting of the entire formula, and instead threading the substitution through the entailment check utility's evaluateTerm utility.
On a handful of challenge Facebook benchmarks, we go 35 seconds -> 18 seconds with this change.
This also eliminates the argument exp to the evaluateTerm method, which is no longer used, and eliminates hasSubs from several methods, which is redundant.
Andrew Reynolds [Wed, 20 Oct 2021 19:48:11 +0000 (14:48 -0500)]
Check whether abduct option is enabled (#7418)
This addresses one of the issues related to #6605.
Aina Niemetz [Wed, 20 Oct 2021 19:14:59 +0000 (12:14 -0700)]
api: Rename get(BV|FP)*Size functions for consistency. (#7428)
Lachnitt [Wed, 20 Oct 2021 18:50:38 +0000 (11:50 -0700)]
[proofs] Alethe: Documentation on Translation (#7394)
Provides background on the translation into the Alethe calculus that is common to all rules.
Co-authored-by: Haniel Barbosa <hanielbbarbosa@gmail.com>
Andrew Reynolds [Wed, 20 Oct 2021 17:27:33 +0000 (12:27 -0500)]
Add LFSC signature for n-ary programs (#7360)
This is the last utility signature. Theory signatures will be added afterwards.
Andrew Reynolds [Wed, 20 Oct 2021 16:49:53 +0000 (11:49 -0500)]
Use codatatype bound variables for codatatype values (#7425)
Previously, we had conflated codatatype bound variables and uninterpreted constants (as they have the same functionality). However, we should separate these concepts so we can ensure that uninterpreted constants are only used for uninterpreted sorts.
Andrew Reynolds [Wed, 20 Oct 2021 16:14:50 +0000 (11:14 -0500)]
Reimplement support for relational triggers (#7063)
This makes relational triggers its own kind of instantiation match generator. Future PRs will delete the code interleaved in the core InstMatchGenerator class for handling relational triggers.
This PR also fixes two issues related to how trigger techniques are combined:
(1) instantiation match generators that are generated as part of multi-triggers now are properly specialized (using getInstMatchGenerator),
(2) there was a bug with auto-generated triggers: when the first auto-generated trigger was generated that was already a user trigger, then we would ignore all other auto-generated triggers.
This is work towards finding a solution for the choice.move.hard Facebook benchmark, where relational-triggers appear to be a possible solution.
Andrew Reynolds [Wed, 20 Oct 2021 14:34:10 +0000 (09:34 -0500)]
Do not make assumption about model for Boolean variables in FMF (#7407)
Fixes cases where models can be wrong for FMF with Boolean variables in the bodies of quantified formulas.
Fixes #6744, all benchmarks on that issue are fixed. This PR adds 2 of the regressions from that issue.
Andrew Reynolds [Wed, 20 Oct 2021 11:57:44 +0000 (06:57 -0500)]
Correctly parse uninterpreted constant values in get-value (#7393)
SMT-LIB indicates that abstract values can appear in terms as arguments to `get-value`. This is not currently the case, as pointed out by #6908.
This updates our parser so that bindings are added to the symbol table for all uninterpreted constants in the model whenever we parse a `get-value` term.
Fixes #6908.
Abdalrhman Mohamed [Wed, 20 Oct 2021 01:11:53 +0000 (20:11 -0500)]
Avoid escaping `double-quotes` twice. (#7409)
With -o raw-benchmark, The command:
(echo """")
was printed as
(echo """""""")
because we run the quote-escaping procedure twice on it. This PR fixes the issue by ensuring that we only run it once.
Andrew Reynolds [Wed, 20 Oct 2021 00:35:14 +0000 (19:35 -0500)]
Make proofs of rewrites robust to use in internal subsolvers (#7411)
We are currently using an attribute to mark "rewritten with proofs". This is incorrect as attributes are global, but proofs of rewrites are local to the solver instance.
This enables applications of proofs within internal subsolvers, and is required for a new internal fuzzing technique.
Andrew Reynolds [Wed, 20 Oct 2021 00:24:32 +0000 (19:24 -0500)]
Add basic regular expression type enumerator (#7416)
The lack of a type enumerator for regular expressions makes certain things impossible e.g. sygus-based sampling for RE queries.
It is trivial to support a basic RE enumerator that takes singleton languages of strings. This commit adds this utility as the type enumerator for RE.
Andrew Reynolds [Tue, 19 Oct 2021 23:53:56 +0000 (18:53 -0500)]
Fix expected conclusion for EQ_RESOLVE when expanding MACRO_SR_PRED_TRANSFORM (#7412)
Fixes a proof checking failure during post-processing.
Fixes a rare case where the RHS of equality resolve step requires a symmetry step.
Andrew Reynolds [Tue, 19 Oct 2021 23:01:11 +0000 (18:01 -0500)]
Support sequences of fixed finite cardinality (#7371)
The only open case is dynamic cardinality types (e.g. uninterpreted sorts when FMF is enabled).
Andrew Reynolds [Tue, 19 Oct 2021 20:35:13 +0000 (15:35 -0500)]
Fix issue related to sanity checking integer models (#7363)
We now insist that we sanity check integer models in linear logics. Previously, we could trigger an assertion failure in Minisat if a user asked for a model in a state where the linear solver had assigned a real value to an integer variable, as we would be sending a lemma during collectModelValues in a state where we had already terminated with "sat".
This also changes an assertion to warning, to allow the regression to pass.
Fixes #6774 (This PR fixes a followup issue after the original bad model reported there was fixed by sanity checks).
As the assertion failure is downgraded to a warning, fixes #6988, fixes #7252.
Gereon Kremer [Tue, 19 Oct 2021 19:33:25 +0000 (12:33 -0700)]
Remove setDefaults methods (#7413)
This PR removes some auto-generated utility methods to set an option if it has not been set by the user. It was once added as we thought it might be useful, but we do not actually use it.
Andrew Reynolds [Mon, 18 Oct 2021 22:59:38 +0000 (17:59 -0500)]
Add regression for fixed issue (#7395)
Fixes #6653.
The third benchmark on that issue is no longer an issue, this adds it as a regression, which is the last open benchmark on the referenced issue.
Abdalrhman Mohamed [Mon, 18 Oct 2021 22:50:04 +0000 (17:50 -0500)]
Move check for experimental arrays features to `theory_arrays.cpp`. (#7391)
Check for experimental array features was done at the parser module, which meant that users of the API could use them without calling Solver::setOption("arrays-exp"). This PR fixes that by moving the check to the internal theory module.
Andres Noetzli [Mon, 18 Oct 2021 14:50:50 +0000 (07:50 -0700)]
Update SMT-COMP script (#7389)
PR #6848 disabled relevancy order by default, but for QF_NIA, it helps
us solve significantly more benchmarks (17525 vs. 16889 with a 20 minute
timeout using the updated SMT-COMP script). This also updates the
options for `QF_AUFBV` and `QF_ALIA` to use `--decision=stoponly`,
following the name change of the option.
yoni206 [Fri, 15 Oct 2021 23:09:02 +0000 (02:09 +0300)]
Python api documentation: Op, Grammar, Result, Enums (#7095)
This PR adds documentation to the python class Op, Grammar, Result, and for API enums.
Additionally, documentation for isNull functions in the datatype classes is added for the python API, and a small change in the cpp API documentation is introduced.
Andrew Reynolds [Fri, 15 Oct 2021 22:57:00 +0000 (17:57 -0500)]
Add more regressions for fixed issues (#7382)
Fixes #6535, Fixes #6475, Fixes #5660, Fixes #6607, Fixes #6638, Fixes #6642, Fixes #6775.
Gereon Kremer [Fri, 15 Oct 2021 20:54:06 +0000 (13:54 -0700)]
Have docs_upload properly upload tags. (#7352)
This PR improves our docs-ci mechanism to properly upload documentation for tags.
Alex Ozdemir [Fri, 15 Oct 2021 20:45:03 +0000 (13:45 -0700)]
Fix bad cast in the python API (#7359)
Andrew Reynolds [Fri, 15 Oct 2021 12:24:28 +0000 (07:24 -0500)]
Fix issues related to proofs of lemmas with duplicate conclusions in strings (#7366)
This makes string proof construction more robust by maintaining two separate proof inference constructors, one for facts and one for lemmas/conflicts. This avoids issues where 2 lemmas with the same conclusion (but possibly different explanations) are added in the same call to check.
This fixes one of the two issues related to proofs for #6973.
Andrew Reynolds [Thu, 14 Oct 2021 23:54:28 +0000 (18:54 -0500)]
Add regressions for fixed issues (#7369)
Fixes #4393. Fixes #3966.
These issues do not occur on current master.
Gereon Kremer [Thu, 14 Oct 2021 23:38:21 +0000 (16:38 -0700)]
Fix (get-info :authors) (#7373)
This PR fixes calling (get-info :authors). It used to (try to) print the whole about() information, but failed to do so because the string needed to be turned into an s-expression. However, about() is not properly escaped.
We now simply print the cvc5 authors.
It also fixes isValidGetInfoFlag() which was missing filename.
Fixes #7362.
Gereon Kremer [Thu, 14 Oct 2021 22:16:58 +0000 (15:16 -0700)]
Improve ManagedStreams (#7367)
This PR addresses #7361, but also a more general issue about regular-output-channel being able to hold stderr and diagnostic-output-channel being able to hold stdout.
It therefore changes how non-owned streams are stored: beforehand, an explicit stream would always be owned by the ManagedStream (through a std::shared_ptr) and a nullptr implicitly stood for stdout, stderr or stdin. Now we explicitly hold a pointer to a non-owned stream for these special values.
Fixes #7361.
Andrew Reynolds [Thu, 14 Oct 2021 21:12:09 +0000 (16:12 -0500)]
Add regression for fixed issue (#7365)
Fixes #6845.
This issue does not occur in current master.
Andrew Reynolds [Thu, 14 Oct 2021 20:32:37 +0000 (15:32 -0500)]
Improve parser for tuple select (#7364)
Andrew Reynolds [Thu, 14 Oct 2021 19:15:29 +0000 (14:15 -0500)]
Split entailment check from term database (#7342)
Towards addressing some bottlenecks on Facebook benchmarks.
Gereon Kremer [Thu, 14 Oct 2021 18:50:13 +0000 (11:50 -0700)]
Also test older cmake versions (#7347)
This PR generally improves the new CI job to test different cmake versions. It extends the tested versions back to 3.8 and also sets the minimum required version (cmake_minimum_required) to the version that is tested. This allows to check compatibility with changing cmake policies.
It also modifies the run-tests action to get the regression options from explicit inputs instead of the build matrix. As the cmake job had no build matrix, it used to build regress3-4 as well.
Andrew Reynolds [Thu, 14 Oct 2021 16:14:02 +0000 (11:14 -0500)]
Fix quantifiers variable elimination for parametric datatypes (#7358)
Fixes #7353.
Gereon Kremer [Thu, 14 Oct 2021 15:50:36 +0000 (08:50 -0700)]
Fix GLPK linking (#7357)
While #7341 added cmake-3.9 compatible linking for GLPK, it did not actually remove the line that triggers the error on older cmake versions. This commit does.
Andrew Reynolds [Thu, 14 Oct 2021 13:33:04 +0000 (08:33 -0500)]
Add core LFSC signatures (#7289)
These files define how terms and sorts are represented. It also adds basic utilities used throughout.
Andrew Reynolds [Wed, 13 Oct 2021 15:22:03 +0000 (10:22 -0500)]
Eliminate uses of rewrite from datatypes theory (#7354)
Also simplifies slightly how rewritten forms of operators in sygus grammars are obtained.
Andrew Reynolds [Wed, 13 Oct 2021 04:38:46 +0000 (23:38 -0500)]
Make (proof) equality engine use Env (#7336)
Andrew Reynolds [Tue, 12 Oct 2021 22:50:53 +0000 (17:50 -0500)]
Simplify refinement in sygus solver (#7343)
This tightens the interface of the sygus solver, which was a product of not using subsolver calls in the original design.
Andrew Reynolds [Tue, 12 Oct 2021 21:09:12 +0000 (16:09 -0500)]
Eliminate calls to currentResourceManager (#7350)
The remaining calls to smt::currentResourceManager are in the bitblasters, which should probably update to Env. FYI @mpreiner .