Andrew Reynolds [Sat, 15 Feb 2020 22:38:23 +0000 (16:38 -0600)]
Move proxy variables to InferenceManager in strings (#3758)
Andrew Reynolds [Fri, 14 Feb 2020 23:09:59 +0000 (17:09 -0600)]
Remove quantifiers rewrite rules infrastructure (#3754)
Andrew Reynolds [Fri, 14 Feb 2020 05:31:13 +0000 (23:31 -0600)]
Update sygus v1 parser to use ParseOp utility (#3756)
Haniel Barbosa [Fri, 14 Feb 2020 03:50:00 +0000 (00:50 -0300)]
Forcing rewrite pass rather than asserting if formula has been rewritten (#3748)
This ensures that users or developers don't accidentally break the solver either via options or changing the SMT engine flow so that the formula is not rewritten up to a given point.
Andrew Reynolds [Thu, 13 Feb 2020 21:22:20 +0000 (15:22 -0600)]
Const input for sygus print callback (#3755)
Andres Noetzli [Thu, 13 Feb 2020 00:16:21 +0000 (16:16 -0800)]
[Python] Properly destroy CVC4 object (#3753)
Andres Noetzli [Wed, 12 Feb 2020 22:48:10 +0000 (14:48 -0800)]
Rename Java package to edu.stanford.CVC4 (#3752)
Andrew Reynolds [Wed, 12 Feb 2020 22:24:13 +0000 (16:24 -0600)]
Ensure ext rewrites for associative ops dont throw assertions for kind arities (#3681)
Mathias Preiner [Wed, 12 Feb 2020 07:33:21 +0000 (23:33 -0800)]
run_regression: Distinguish between timeout and failure. (#3750)
If --use-skip-return-code is enabled and a regression test times out it
will return EXIT_SKIP instead of EXIT_FAILURE.
Andrew Reynolds [Wed, 12 Feb 2020 00:20:25 +0000 (18:20 -0600)]
Fix non-linear equality solving that involves mixed real/integer arithmetic (#3739)
* Fix non-linear equality solving that involves mixed real/integer.
* Format
* Fix
* Revert
Co-authored-by: Ahmed Irfan <43099566+ahmed-irfan@users.noreply.github.com>
Mathias Preiner [Tue, 11 Feb 2020 21:26:38 +0000 (13:26 -0800)]
cmake: Remove unused ENABLE_OPTIMIZED option. (#3749)
Andrew Reynolds [Tue, 11 Feb 2020 17:59:58 +0000 (11:59 -0600)]
Fix term simplification based on entailment in quantifiers rewriter (#3746)
Mathias Preiner [Tue, 11 Feb 2020 17:36:01 +0000 (09:36 -0800)]
Update issue templates
Andres Noetzli [Tue, 11 Feb 2020 14:27:29 +0000 (06:27 -0800)]
Remove `--strings-binary-csp` option (#3743)
Andres Noetzli [Tue, 11 Feb 2020 07:51:34 +0000 (23:51 -0800)]
Refactor `CoreSolver::processSimpleNEq()` (#3736)
This commit refactors and documents `CoreSolver::processSimpleNEq()`.
This method processes equalities between normal forms.
Andrew Reynolds [Tue, 11 Feb 2020 04:41:18 +0000 (22:41 -0600)]
Use example evaluation cache instead of sygus PBE (#3733)
Alex Ozdemir [Tue, 11 Feb 2020 02:32:20 +0000 (18:32 -0800)]
Implement LFSCArithProof::equalityType. (#3740)
Also, missed an armType use.
Alex Ozdemir [Mon, 10 Feb 2020 21:53:54 +0000 (13:53 -0800)]
Add function for tightening literals (#3732)
* Add function for tightening literals
The function tightens a literal if it can be tightened, and prints a
proof of the result.
* Include a #include
Co-authored-by: Andrew Reynolds <andrew.j.reynolds@gmail.com>
Mathias Preiner [Mon, 10 Feb 2020 19:34:11 +0000 (11:34 -0800)]
cmake: Use ld.gold if available for faster link times. (#3738)
Alex Ozdemir [Mon, 10 Feb 2020 18:50:28 +0000 (10:50 -0800)]
Add more IntReal predicates (#3731)
Andrew Reynolds [Sat, 8 Feb 2020 23:08:13 +0000 (17:08 -0600)]
Fix rewrite rules sat regressions (#3734)
Quantifier rewrite rules are not robust to preprocessing within our check-model infrastructure. This disables check-model on 2 satisfiable rewrite rules regressions. Fixes nightlies.
Andres Noetzli [Sat, 8 Feb 2020 06:31:08 +0000 (22:31 -0800)]
Make "unknown" non-critical for unsat cores check (#3728)
Andrew Reynolds [Sat, 8 Feb 2020 05:16:12 +0000 (23:16 -0600)]
Split strings finite model finding strategy (#3727)
Andrew Reynolds [Sat, 8 Feb 2020 03:35:30 +0000 (21:35 -0600)]
Split core solver from the theory of strings (#3713)
This splits the main procedure from Liang et al CAV 2014 to its own file, the "core solver" of theory of strings.
I have intentionally not updated or clang-formatted the code in core_solver.cpp since I would prefer this PR to involve as little change to behavior as possible (it is copied verbatim from theory_strings.cpp). Future PRs will clean this code up.
Andrew Reynolds [Sat, 8 Feb 2020 02:54:05 +0000 (20:54 -0600)]
Interface for example evaluation cache utilities (#3726)
This adds interfaces in synth_conjecture for getting an ExampleEvalCache, per enumerator.
It also adds a specialization `checkRefinementEvalLemmas` of `getRefinementEvalLemmas` in the cegis module, which does evaluation on CEGIS refinement lemmas without structural generalization. This function will be used as an alternative to `getRefinementEvalLemmas` for fast enumerators.
The next PR will update all utilities to use ExampleEvalCache instead of SygusPbe for evaluating examples.
mudathirmahgoub [Fri, 7 Feb 2020 23:49:58 +0000 (17:49 -0600)]
Univeset Cardinality constraints for infinite types (#3712)
Andrew Reynolds [Fri, 7 Feb 2020 20:47:46 +0000 (14:47 -0600)]
Refactor check-model handling in SmtEngine (#3723)
Alex Ozdemir [Fri, 7 Feb 2020 18:37:33 +0000 (10:37 -0800)]
Propagate expected types through UF arguments (#3717)
Alex Ozdemir [Fri, 7 Feb 2020 17:08:09 +0000 (09:08 -0800)]
Add `ArithProof::{printInteger,getLfscFunction}` (#3716)
Andrew Reynolds [Fri, 7 Feb 2020 16:41:09 +0000 (10:41 -0600)]
Statistics for fast enumerator (#3699)
Andrew Reynolds [Fri, 7 Feb 2020 16:23:47 +0000 (10:23 -0600)]
Example evaluation cache utility (#3698)
Andrew Reynolds [Fri, 7 Feb 2020 01:12:29 +0000 (19:12 -0600)]
Fix exact sqrt (#3721)
Co-authored-by: Ahmed Irfan <43099566+ahmed-irfan@users.noreply.github.com>
Andrew Reynolds [Thu, 6 Feb 2020 23:30:53 +0000 (17:30 -0600)]
Generalize containsQuantifiers to hasClosure (#3722)
Andrew Reynolds [Wed, 5 Feb 2020 00:27:17 +0000 (18:27 -0600)]
Fix QF_NIA smt comp script (#3715)
mudathirmahgoub [Tue, 4 Feb 2020 18:52:33 +0000 (12:52 -0600)]
Update INSTALL.md (#3714)
Co-authored-by: Mathias Preiner <mathias.preiner@gmail.com>
Alex Ozdemir [Tue, 4 Feb 2020 18:31:03 +0000 (10:31 -0800)]
Articulate proof-related debug statements in arith (#3700)
Aina Niemetz [Tue, 4 Feb 2020 16:21:24 +0000 (08:21 -0800)]
--fp-exp: Better warning message. (#3709)
Mathias Preiner [Tue, 4 Feb 2020 15:49:31 +0000 (07:49 -0800)]
Fix header installation on MacOS. (#3660)
On MacOS sed -i requires a suffix to be set.
Andrew Reynolds [Tue, 4 Feb 2020 15:31:22 +0000 (09:31 -0600)]
Split base solver from the theory of strings (#3680)
Andres Noetzli [Tue, 4 Feb 2020 14:31:29 +0000 (06:31 -0800)]
Revert semantic change from refactoring (#3711)
Alex Ozdemir [Tue, 4 Feb 2020 06:42:27 +0000 (22:42 -0800)]
Regression tests for arithmetic proofs. (#3701)
* Add more arith proof regression tests
These tests are designed to test interesting cases of arithmetic proofs,
such as mixing integers and reals and tightening bounds.
Right now, they have the --no-check-proofs flag set, which prevents them
from testing the proof machinery. However, once we check that machinery
into master, we'll remove that flag, thus enabling the full effect of
the tests.
* A few comments explaining things.
* Add another tightening test
* Add new test to CMake
* No --no-check-models. There are no models anyway.
* Delete smt-lib-version, per Yoni
Aina Niemetz [Tue, 4 Feb 2020 00:42:31 +0000 (16:42 -0800)]
Increase regression test time limit to 1200s. (#3704)
Fixes #3565.
Clark Barrett [Mon, 3 Feb 2020 23:18:22 +0000 (15:18 -0800)]
Fix corner case - might need to REWRITE_AGAIN (#3706)
Andrew Reynolds [Mon, 3 Feb 2020 22:57:54 +0000 (16:57 -0600)]
Utility function for getting component types (#3703)
Andrew Reynolds [Mon, 3 Feb 2020 21:05:45 +0000 (15:05 -0600)]
Minor fixes to regressions (#3702)
Fixes two issues in regressions, fixes regress1.
mudathirmahgoub [Mon, 3 Feb 2020 18:44:34 +0000 (12:44 -0600)]
Fix cardinality of uninterpreted types when univset is not used (#3663)
* Fixed bug 3662
* format
* small change
* added bug3663.smt2 file
* throw Logic Exception
* throw Logic Exception
* ;EXIT: 1
Co-authored-by: Andrew Reynolds <andrew.j.reynolds@gmail.com>
Andrew Reynolds [Mon, 3 Feb 2020 18:23:27 +0000 (12:23 -0600)]
Split on model values when repaired model from non-linear is inconsisent (#3668)
Andrew Reynolds [Mon, 3 Feb 2020 16:19:44 +0000 (10:19 -0600)]
Fix invariant template inference for trivially infeasible conjecture (#3693)
Andrew Reynolds [Mon, 3 Feb 2020 15:31:36 +0000 (09:31 -0600)]
Fix corner case of empty domains in bounded fmf (#3690)
Andrew Reynolds [Mon, 3 Feb 2020 14:51:26 +0000 (08:51 -0600)]
Example inference utility (#3670)
Andrew V. Jones [Mon, 3 Feb 2020 07:16:20 +0000 (07:16 +0000)]
Renaming '--bsd' to '--no-gpl' (#3609)
Signed-off-by: Andrew V. Jones <andrew.jones@vector.com>
Alex Ozdemir [Sat, 1 Feb 2020 07:44:24 +0000 (23:44 -0800)]
Handle `expectedType` in TheoryProofEngine (#3691)
`TheoryProofEngine` now uses the `expectedType` optional argument.
* When printing terms, it sets this for theories that it dispatches too
* It occasionally asks theories for help determining the `expectedType` using `equalityType`, which has a sensible default implementation.
* It is mindful of `expectedType` when using the let map.
I also moved to hpp function implementations into the cpp.
Andrew Reynolds [Fri, 31 Jan 2020 19:42:36 +0000 (13:42 -0600)]
Allow PBE symmetry breaking with sygus stream (#3686)
Andrew Reynolds [Fri, 31 Jan 2020 17:06:41 +0000 (11:06 -0600)]
Refactor relevance vectors for asserted quantifiers (#3666)
Andrew Reynolds [Fri, 31 Jan 2020 16:43:36 +0000 (10:43 -0600)]
Update sygus grammar normalization to use node-level datatype. (#3567)
Andrew Reynolds [Fri, 31 Jan 2020 16:14:31 +0000 (10:14 -0600)]
Refactor sygus stats (#3684)
Andrew Reynolds [Fri, 31 Jan 2020 14:51:17 +0000 (08:51 -0600)]
Minor refactoring of constructor classes in fast enumerator (#3685)
Andres Noetzli [Fri, 31 Jan 2020 14:06:39 +0000 (06:06 -0800)]
Fix arithmetic rewriter for exponential (#3688)
Andrew Reynolds [Thu, 30 Jan 2020 22:30:47 +0000 (16:30 -0600)]
Fix rep set increment for empty domains (#3682)
Andrew Reynolds [Thu, 30 Jan 2020 22:02:38 +0000 (16:02 -0600)]
Make eq chain an aggressive rewrite in extended rewriter (#3679)
Andrew Reynolds [Thu, 30 Jan 2020 20:47:35 +0000 (14:47 -0600)]
Eliminate spurious postprocessing step for single invocation (#3674)
Andrew Reynolds [Thu, 30 Jan 2020 20:05:06 +0000 (14:05 -0600)]
Ensure literals in FMF decision strategies are in the CNF stream (#3669)
Andrew Reynolds [Thu, 30 Jan 2020 18:18:27 +0000 (12:18 -0600)]
Weaken assertion for models with approximations (#3667)
Andrew Reynolds [Thu, 30 Jan 2020 17:53:54 +0000 (11:53 -0600)]
Move disequality list to solver state in strings (#3678)
Andrew Reynolds [Thu, 30 Jan 2020 17:28:46 +0000 (11:28 -0600)]
Example minimize evaluation utility. (#3671)
Andrew Reynolds [Thu, 30 Jan 2020 15:41:12 +0000 (09:41 -0600)]
External cache argument for evaluator (#3672)
Andrew Reynolds [Thu, 30 Jan 2020 09:32:47 +0000 (03:32 -0600)]
Do not debug check model for models with approximations (#3673)
We don't run check-model for models with approximate values, however we were still running the internal debugCheckModel method, which leads to assertion failures. This disables this check.
Fixes #3652.
Andres Noetzli [Thu, 30 Jan 2020 02:29:15 +0000 (18:29 -0800)]
Better heuristics for marking congruent variables (#3677)
Andrew Reynolds [Thu, 30 Jan 2020 02:08:09 +0000 (20:08 -0600)]
Modularize more steps in the strings strategy (#3676)
Andrew Reynolds [Thu, 30 Jan 2020 01:42:50 +0000 (19:42 -0600)]
Minor updates to string utilities (#3675)
Alex Ozdemir [Thu, 30 Jan 2020 00:07:09 +0000 (16:07 -0800)]
expectedType in proof-printing code (#3665)
* expectedType in proof-printing code
To print lemma proofs in theories that use multiple sorts that have a
subtype relationship, we need to increase communication between the
TheoryProofEngine and the theory proofs themselves.
This commit add an (optional) argument `expectedType` to many
term-printing functions in TheoryProofEngine and TheoryProof.
Right now it is unused, so always takes on the default value of "null"
(meaning no type expectation), but in the future the TheoryProofEngine
will use it to signal TheoryProof about what type is expected to be
printed.
* TypeNode, Don't mix default args & virtual
* Use TypeNode instead of Type (The former are lighter)
* Don't add default arguments to virtual functions, because these cannot
be dynamically overriden during a dynamic dispatch.
* Since we don't want them to be overidable anyway, we use two
functions: one that is non-virtual and has a default, the other that
is virtual but has no default. The former just calls the latter.
* clang-format after signature changes
Andrew Reynolds [Wed, 29 Jan 2020 19:55:01 +0000 (13:55 -0600)]
Fix isLeq function in String utility (#3659)
Andrew Reynolds [Tue, 28 Jan 2020 21:19:41 +0000 (15:19 -0600)]
Do not insist on bound values being constant in arithmetic instantiation (#3643)
Andrew Reynolds [Tue, 28 Jan 2020 19:31:44 +0000 (13:31 -0600)]
Avoid PLUS with one child for bv2nat elimination (#3639)
Alex Ozdemir [Sun, 26 Jan 2020 02:59:50 +0000 (18:59 -0800)]
Axioms for affine function bounds. Tests. (#3632)
* Axioms for affine function bounds. Tests.
* Apply suggestions from code review
Co-Authored-By: yoni206 <yoni206@users.noreply.github.com>
* Clarify descriptions of th_lira tests
Thanks, Yoni!
Co-authored-by: yoni206 <yoni206@users.noreply.github.com>
Andrew Reynolds [Thu, 23 Jan 2020 21:53:48 +0000 (15:53 -0600)]
Fix trivial solve method for single invocation (#3650)
Andrew Reynolds [Wed, 22 Jan 2020 23:02:58 +0000 (17:02 -0600)]
Fix subtyping for instantiations where internal representatives are chosen (#3641)
Andrew Reynolds [Wed, 22 Jan 2020 22:09:47 +0000 (16:09 -0600)]
Fix substitution in nl solver (#3638)
* Fix for 3614
* Add regression
* Remove regression
Co-authored-by: Ahmed Irfan <43099566+ahmed-irfan@users.noreply.github.com>
Andrew Reynolds [Wed, 22 Jan 2020 21:27:46 +0000 (15:27 -0600)]
Fix single invocation partition for non-function non-atomic types (#3642)
Andrew Reynolds [Wed, 22 Jan 2020 20:53:37 +0000 (14:53 -0600)]
Fix check for subtypes in sygus PBE (#3640)
Andrew Reynolds [Wed, 22 Jan 2020 14:49:14 +0000 (08:49 -0600)]
Fix parameteric sorts involving Booleans in sygus default grammars (#3629)
Alex Ozdemir [Tue, 21 Jan 2020 23:05:52 +0000 (15:05 -0800)]
Types and side conditions for affine bounds (#3631)
* Types and side conditions for affine bounds
Bounds (being positive, non-negative) actually have an arithmetic.
This PR defines that.
Useful b/c Farkas proofs are basically just sums of bounded affine
functions.
* Address Yoni's comments. Thanks!
* Moved a positivity-test to th_real
* Describe what an affine bound is in better detail
Alex Ozdemir [Tue, 21 Jan 2020 21:33:04 +0000 (13:33 -0800)]
Affine Axioms (#3630)
Used for proving that real terms are affine functions of their
variables.
Alex Ozdemir [Tue, 21 Jan 2020 20:15:10 +0000 (12:15 -0800)]
Types & side-conditions for linear and affine fns (#3627)
This commit introduces types for linear combinations of arith variables
along with side conditions for their arithmetic.
It does the same for affine functions.
These primitives are ultimately used in our machinery for Farkas proofs.
Alex Ozdemir [Tue, 21 Jan 2020 15:45:10 +0000 (07:45 -0800)]
Axioms (and side conditions) for tightening bounds (#3613)
* Axioms (and side conditions) for tightening bounds
* Side conditions for verifying floor/ceiling-like functions
* Axioms for their correct execution
* Axioms for bound tightening.
* Apply suggestions from code review
Co-Authored-By: yoni206 <yoni206@users.noreply.github.com>
* Address Yoni's comments by addings documentation.
Thanks Yoni!
Co-authored-by: yoni206 <yoni206@users.noreply.github.com>
Alex Ozdemir [Sat, 18 Jan 2020 00:56:44 +0000 (16:56 -0800)]
LIRA proof: Arithmetic predicates & reification thereof (#3612)
* Merge branch 'master' into lira-pf-arith-pred
* Shorten reify_arith_pred, thanks Yoni!
Use recursion!
* typo
Alex Ozdemir [Fri, 17 Jan 2020 23:21:03 +0000 (15:21 -0800)]
LIRA sig: int, real terms, and conversions (#3610)
* LIRA sig: int, real terms, and conversions
* Address Yoni's comments.
* Better description of "reify" functions
* explicit (rather than implicit) `fail` when reifying integer division
Co-authored-by: Andrew Reynolds <andrew.j.reynolds@gmail.com>
Andrew Reynolds [Fri, 17 Jan 2020 20:24:03 +0000 (14:24 -0600)]
Use axioms when checking goal entailment for abduction algorithm (#3611)
Aina Niemetz [Wed, 15 Jan 2020 16:25:21 +0000 (08:25 -0800)]
New C++ API: Add nullary constructor for Result. (#3603)
Andrew Reynolds [Tue, 14 Jan 2020 20:42:44 +0000 (14:42 -0600)]
Generalize example-based sym breaking to conjectures with constant function apps (#3605)
Andres Noetzli [Tue, 14 Jan 2020 15:47:58 +0000 (07:47 -0800)]
Disable unsat cores for regression that times out (#3607)
Regression `regress2/strings/issue3203.smt2` is currently timing out
depending on the version of the libraries loaded (see #3606 for more
info). This commit temporarily disables the regression to get the
nightlies to pass again.
Andres Noetzli [Mon, 13 Jan 2020 20:26:52 +0000 (12:26 -0800)]
Support arbitrary unsigned integer attributes (#3591)
Fixes #3586. On macOS, `size_t` resolves to `unsigned long` whereas `uint64_t`
resolves to `unsigned long long`. Even though the types have the same bit-width
and signedness, they are not considered the same type. This caused issues with
`Attribute`s that store `size_t` values because we only specialized the
`getTable()` struct for `uint64_t`. This commit changes the specialization to
work for arbitrary unsigned integer types of at most 64-bit. It does that by
generalizing the specialization of `getTable()` and by implementing a
`KindValueToTableValueMapping` for unsigned integer attributes of up to 64-bit
that casts integers between the attributes bit-width and `uint64_t`.
Andrew Reynolds [Fri, 10 Jan 2020 21:31:01 +0000 (15:31 -0600)]
Fix side condition check in sygus core connective (#3600)
Mathias Preiner [Fri, 10 Jan 2020 20:25:54 +0000 (12:25 -0800)]
Fix enum names in AIG bitblaster. (#3599)
Andres Noetzli [Fri, 10 Jan 2020 18:49:53 +0000 (10:49 -0800)]
Fix printing of models of uninterpreted sorts (#3597)
Andrew Reynolds [Fri, 10 Jan 2020 18:08:16 +0000 (12:08 -0600)]
Track trivial cases in transition inference (#3598)
Andres Noetzli [Fri, 10 Jan 2020 00:45:38 +0000 (16:45 -0800)]
Optimize str.substr reduction (#3595)
This commit optimizes the `str.substr` reduction by replacing the
if-then-else term for the length of the suffix `len(sk2) = ite(len(s) >=
n+m, len(s) - (n + m), 0)` with `(len(sk2) = len(s) - (n + m) v
len(sk2) = 0) ^ len(skt) <= m`. Experiments have shown that the latter
encoding is more efficient.
Andrew Reynolds [Wed, 8 Jan 2020 21:31:26 +0000 (15:31 -0600)]
Fix backtracking issue in sygus fast enumerator (#3593)
mudathirmahgoub [Wed, 8 Jan 2020 00:13:07 +0000 (18:13 -0600)]
Universe set cardinality for finite types with finite cardinality (#3392)
* rewrote set cardinality for finite-types
* small changes and format
Andrew Reynolds [Tue, 7 Jan 2020 20:22:32 +0000 (14:22 -0600)]
Fix unary minus parse check (#3594)