cvc5.git
6 years agoUpdated copyright headers.
Aina Niemetz [Fri, 22 Jun 2018 20:04:40 +0000 (13:04 -0700)]
Updated copyright headers.

6 years agoDo not use git blame -C in get-authors (too many false positives).
Aina Niemetz [Fri, 22 Jun 2018 19:58:13 +0000 (12:58 -0700)]
Do not use git blame -C in get-authors (too many false positives).

6 years agoFix update-copyright script for files without a header.
Aina Niemetz [Fri, 22 Jun 2018 19:27:27 +0000 (12:27 -0700)]
Fix update-copyright script for files without a header.

6 years agoAdded Makai and Yoni to get-authors script.
Aina Niemetz [Fri, 22 Jun 2018 18:15:39 +0000 (11:15 -0700)]
Added Makai and Yoni to get-authors script.

6 years agoRemove parentheses for prefix ops without args (#2082)
Andres Noetzli [Mon, 25 Jun 2018 17:57:26 +0000 (10:57 -0700)]
Remove parentheses for prefix ops without args (#2082)

In the CVC printer, function definitions without arguments are printed
like constants but when actually using that function we were printing in
the form of `x()`.

For example:

```
(set-logic QF_BV)
(define-fun x1480 () Bool true)
(define-fun x2859 () Bool true)
(define-fun x2387 () Bool x2859)
(check-sat)
```

Was dumped as:

```
OPTION "incremental" false;
OPTION "logic" "QF_BV";
x1480 : BOOLEAN = TRUE;
x2859 : BOOLEAN = TRUE;
x2387 : BOOLEAN = x2859();
```

This commit removes these parentheses when prefix functions with zero arguments
are printed, so the example above becomes:

```
OPTION "incremental" false;
OPTION "logic" "QF_BV";
x1480 : BOOLEAN = TRUE;
x2859 : BOOLEAN = TRUE;
x2387 : BOOLEAN = x2859();
```

6 years agoFix warnings and enable -Wnon-virtual-dtor warning (#2079)
Andres Noetzli [Thu, 21 Jun 2018 03:28:50 +0000 (20:28 -0700)]
Fix warnings and enable -Wnon-virtual-dtor warning (#2079)

This commit fixes warnings for an unused variable, comparison of two
different types and add virtual destructors to classes that were
previously missing them. It also enables the -Wnon-virtual-dtor warning
which warns about any class definition with virtual methods that does
not have a virtual destructor (except if the destructor is protected).
This flag is supported by both clang and GCC and not enabled by default.

6 years agoCheck unsat cores in regressions also without LFSC (#1955)
Andres Noetzli [Thu, 21 Jun 2018 02:37:28 +0000 (19:37 -0700)]
Check unsat cores in regressions also without LFSC (#1955)

When moving the LFSC checker out of the CVC4 repository in commit
dfa69ff98a14fcc0f2387e59a0c9994ef440e7d0, we disabled checking unsat
cores when CVC4 was compiled without LFSC due to the complexity of the
regression script. This commit changes the new(-ish) Python regression
script to check unsat cores even when CVC4 was compiled without LFSC.
This is done by having two separate flags, --with-lfsc and
--enable-proof, for the regression script that mirror the configuration
flags. The regression script performs unsat cores and proofs checks
based on those flags.

Additionally, this commit changes the regression script to check proofs
and unsat cores in two independent runs. Testing them in a single run
masked issues #1953 and #1954.

6 years agoUpdated installation instructions to mention autogen.sh (#1477)
Aina Niemetz [Thu, 21 Jun 2018 02:01:28 +0000 (19:01 -0700)]
Updated installation instructions to mention autogen.sh (#1477)

6 years agoResolve CVC4_USE_SYMFPU in headers at config-time (#2077)
Andres Noetzli [Wed, 20 Jun 2018 20:32:18 +0000 (13:32 -0700)]
Resolve CVC4_USE_SYMFPU in headers at config-time (#2077)

As described in issue #2013, we had `#ifdef CVC4_USE_SYMFPU` conditions
in floatingpoint.h, which was problematic when installing the header
files because the definition of `CVC4_USE_SYMFPU` was a compile-flag and
simply including the header files in another project would be missing
that definition. This commit moves floatingpoint.h to a template file
floatingpoint.h.in and substitutes the value of `CVC4_USE_SYMFPU` at
configure-time when generating floatingpoint.h (this is the same
solution that integer.h and rational.h use). I have tested the fix with
the examples provided in #2013 and they work.

6 years agoDisable solving non-linear BV literals by default (#2070)
Andrew Reynolds [Fri, 15 Jun 2018 18:28:45 +0000 (13:28 -0500)]
Disable solving non-linear BV literals by default (#2070)

6 years agoWorkaround for incremental unsat cores (#1962)
Andres Noetzli [Wed, 13 Jun 2018 22:16:24 +0000 (15:16 -0700)]
Workaround for incremental unsat cores (#1962)

This commit implements a workaround for computing unsat cores while
doing incremental solving to address #1349. Currently, our resolution
proofs do not handle clauses with a lower-than-assertion-level correctly
because the resolution proofs for them get removed when popping the
context but the SAT solver keeps using them. The workaround changes the
behavior of the SAT solver to add clauses always at the current level if
incremental solving and unsat cores are enabled. This makes sure that
all learned clauses are removed when we pop below the level that they
were learned at. This may degrade performance because the SAT solver has
to relearn clauses.

6 years agoFix simple regexp consume (#2066)
Andrew Reynolds [Wed, 13 Jun 2018 18:36:22 +0000 (13:36 -0500)]
Fix simple regexp consume (#2066)

6 years agoDisable unconstrainedSimp pass when proofs enabled (#1976)
Andres Noetzli [Wed, 13 Jun 2018 17:04:34 +0000 (10:04 -0700)]
Disable unconstrainedSimp pass when proofs enabled (#1976)

Currently, we may end up enabling the unconstrainedSimp pass when proofs
are enabled because the check that this pass is disabled happens before
a check for automatically enabling it. This lead to issues when running
for example on regress0/aufbv/bug00.smt with --check-proofs. This commit
moves the code for automatically enabling the pass to only be run if
proofs and unsat cores are disabled. Note: This commit is mostly a
simple code move but formatting in setDefaults was a bit off, so there
are a lot of formatting changes.

6 years agoFix strip constant endpoint for ITOS in strings rewriter (#2067)
Andrew Reynolds [Tue, 12 Jun 2018 20:22:15 +0000 (15:22 -0500)]
Fix strip constant endpoint for ITOS in strings rewriter (#2067)

6 years agoFix equality conflicts reported by FP (#2064)
Andrew Reynolds [Mon, 11 Jun 2018 02:43:14 +0000 (21:43 -0500)]
Fix equality conflicts reported by FP (#2064)

6 years agoDisable test that fails in competition mode (#2063)
Andres Noetzli [Sun, 10 Jun 2018 02:13:28 +0000 (19:13 -0700)]
Disable test that fails in competition mode (#2063)

Commit 106e764a04e4099cc36d13de9cec47cbf717b6cc missed one test case.
This commit disables that test case for the competition build.

6 years agoAdd flag to skip regression if feature enabled (#2062)
Andres Noetzli [Sat, 9 Jun 2018 06:16:13 +0000 (23:16 -0700)]
Add flag to skip regression if feature enabled (#2062)

This commit adds the option of skipping regressions when a specified
feature is enabled. It also changes some of the regression tests to be
skipped when it is a competition build because regressions fail
otherwise. In the tests changed in this commit, we do not care about
reproducing error messages in a competition build, so we can skip them.

6 years agoReset decisions at SAT level after solving (#2059)
Andres Noetzli [Sat, 9 Jun 2018 04:05:01 +0000 (21:05 -0700)]
Reset decisions at SAT level after solving (#2059)

Some quick background: CVC4 has two primary contexts: the assertion
context (which corresponds to the push/pops issued by the user) and the
decision/SAT context (which corresponds to the push/pops done by the
user and each decision made by MiniSat.

Before 2cc0e2c6a691fb6d30ed8879832b49bc1f277d77, we had an additonal
push/pop when doing the actual solving. With these removed, it could
happen that we get a wrong result when doing incremental solving:

```
...
; check-sat call returns sat, the decision level in the SAT solver is
; non-zero at this point
(check-sat)
; Solver::addClause_() determines that we cannot add the clause to the
; SAT solver directly because the decision level is non-zero (i.e. the
; clause is treated like a theory lemma), thus it is added to the lemmas
; list.
(assert false)
; The solver stores some information about the current state, including
; the value of the "ok" flag in Solver, which indicates whether the
; current constraints are unsatisfiable. Note that "ok" is true at this
; point.
(push)
; Now, in Solver::updateLemmas(), we add clauses from the lemmas list.
; The problem is that empty clauses (which "false" is after removing "false"
; literals) and unit clauses are not added like normal clauses. Instead,
; the empty clause, essentially just results in the "ok" flag being set to
; false (unit clauses are added to the decision trail).
(check-sat)
; Here, the solver restores the information stored during
; (push), including the "ok" flag, which is now true again.
(pop)
; At this point, the solver has "forgotten" about (assert false) since
; the "ok" flag is back to true and it answers sat.
(check-sat)
```

There are multiple ways to look at the problem and to fix it:

- One could argue that an input assertion should always be added
directly to the clauses in the SAT solver, i.e. the solver should
always be at decision level 0 when we are adding input clauses. The
advantage of this is that it is relatively easy to implement,
corresponds to what the original MiniSat code does (it calls
Solver::cancelUntil(0) after solving), and is no worse than what we had
before commit 2cc0e2c6a691fb6d30ed8879832b49bc1f277d77 (push/pop do a
strict superset of what resetting the decision at the current assertion
level does). The disadvantage is that we might throw away some useful work.

- One could argue that is fine that (assert false) is treated like a
theory lemma. The advantage being that it might result in more efficient
solving and the disadvantage being that it is much trickier to
implement.

Unfortunately, it is not quite clear from the code what the original
intention was but we decided to implement the first solution. This
commit exposes a method in MiniSat to reset the decisions at the current
assertion level. We call this method from SmtEngine after solving.
Resetting the decisions directly after solving while we are still in
MiniSat does not work because it causes issues with datastructures in
the SMT solver that use the decision context (e.g.
TheoryEngine::d_incomplete seems to be reset too early, resulting in us
answering sat instead of unknown).

6 years agoDisable BV-abstraction in the competition script. (#2061)
Mathias Preiner [Fri, 8 Jun 2018 20:25:13 +0000 (13:25 -0700)]
Disable BV-abstraction in the competition script. (#2061)

6 years agoLook for cryptominisat5_simple, not cryptominisat5 (#2058)
Andres Noetzli [Thu, 7 Jun 2018 20:56:06 +0000 (13:56 -0700)]
Look for cryptominisat5_simple, not cryptominisat5 (#2058)

If the boost program_options library is missing, CryptoMiniSat5 only
builds a cryptominisat5_simple binary and omits the cryptominisat5,
which has more command-line options. We do not use the binary anyway, so
this commit changes the cryptominisat.m4 script to look for the
cryptominisat5_simple binary, which is always generated.

6 years agoRemove invalid assertion (#1993). (#2057)
Aina Niemetz [Thu, 7 Jun 2018 18:37:04 +0000 (11:37 -0700)]
Remove invalid assertion (#1993). (#2057)

6 years agoClear pending inferences during datatypes splitting (#2056)
Andrew Reynolds [Thu, 7 Jun 2018 02:46:56 +0000 (21:46 -0500)]
Clear pending inferences during datatypes splitting (#2056)

6 years agoOnly enable transcendentals if logic is N[I]RAT (#2052)
Andres Noetzli [Tue, 5 Jun 2018 02:28:44 +0000 (19:28 -0700)]
Only enable transcendentals if logic is N[I]RAT (#2052)

6 years agoMove assertion. (#2051)
Andrew Reynolds [Mon, 4 Jun 2018 19:55:10 +0000 (14:55 -0500)]
Move assertion. (#2051)

6 years ago[SMT-COMP] Add new logics to run-scripts (#2022)
Andres Noetzli [Mon, 4 Jun 2018 19:30:28 +0000 (12:30 -0700)]
[SMT-COMP] Add new logics to run-scripts (#2022)

6 years agoEnable cegqi (with model values) for floating point by default (#2023)
Andrew Reynolds [Mon, 4 Jun 2018 18:58:14 +0000 (13:58 -0500)]
Enable cegqi (with model values) for floating point by default (#2023)

6 years agoRegressions: Support for requiring CVC4 features (#2044)
Andres Noetzli [Mon, 4 Jun 2018 17:56:19 +0000 (10:56 -0700)]
Regressions: Support for requiring CVC4 features (#2044)

This commit adds supprt for the `REQUIRES` directive in our regression
benchmarks. This directive can be used to enable certain benchmarks only
if CVC4 has been configured with certain features enabled.

6 years ago Fix assertion involving unassigned Boolean eqc in model (#2050)
Andrew Reynolds [Sat, 2 Jun 2018 19:18:24 +0000 (14:18 -0500)]
 Fix assertion involving unassigned Boolean eqc in model (#2050)

6 years agoFix corner case of mixed int/real cegqi. (#2046)
Andrew Reynolds [Sat, 2 Jun 2018 18:39:20 +0000 (13:39 -0500)]
Fix corner case of mixed int/real cegqi. (#2046)

6 years agoFix BV-abstraction check to consider SKOLEM. (#2042)
Mathias Preiner [Sat, 2 Jun 2018 18:18:36 +0000 (11:18 -0700)]
Fix BV-abstraction check to consider SKOLEM. (#2042)

Further, fix a bug in the AIG bitblaster that was also uncovered with the
minimized file.

6 years agoFix preinitialization pass for finite model finding (#2047)
Andrew Reynolds [Sat, 2 Jun 2018 17:15:48 +0000 (12:15 -0500)]
Fix preinitialization pass for finite model finding (#2047)

6 years agoFix quantified bv variable elimination (#2039)
Andrew Reynolds [Fri, 1 Jun 2018 22:42:13 +0000 (17:42 -0500)]
Fix quantified bv variable elimination (#2039)

6 years agoFix quantifiers conflict lemma handling (#2043)
Andrew Reynolds [Fri, 1 Jun 2018 22:10:52 +0000 (17:10 -0500)]
Fix quantifiers conflict lemma handling (#2043)

6 years agoApply preprocessing to counterexample lemmas in CEGQI (#2027)
Andrew Reynolds [Fri, 1 Jun 2018 20:29:05 +0000 (15:29 -0500)]
Apply preprocessing to counterexample lemmas in CEGQI  (#2027)

6 years ago Use monomial sum utility to solve for quantifiers macros (#2038)
Andrew Reynolds [Fri, 1 Jun 2018 20:10:23 +0000 (15:10 -0500)]
 Use monomial sum utility to solve for quantifiers macros (#2038)

6 years agoReduce before preregister. (#2025)
Andrew Reynolds [Fri, 1 Jun 2018 00:06:55 +0000 (19:06 -0500)]
Reduce before preregister. (#2025)

6 years agoFix bv-abstraction check for AND with non bit-vector atoms. (#2024)
Mathias Preiner [Thu, 31 May 2018 02:12:28 +0000 (19:12 -0700)]
Fix bv-abstraction check for AND with non bit-vector atoms. (#2024)

6 years agoIgnore license key in set-info command. (#2021)
Aina Niemetz [Wed, 30 May 2018 23:28:58 +0000 (16:28 -0700)]
Ignore license key in set-info command. (#2021)

6 years agoFix for issue #2002 (#2012)
Andres Noetzli [Wed, 30 May 2018 22:02:29 +0000 (15:02 -0700)]
Fix for issue #2002 (#2012)

6 years agoFixes for quantifiers + incremental (#2009)
Andrew Reynolds [Wed, 30 May 2018 20:34:05 +0000 (15:34 -0500)]
Fixes for quantifiers + incremental (#2009)

6 years ago[SMT-COMP] Print non-(un)sat output to stderr (#2019)
Andres Noetzli [Wed, 30 May 2018 19:04:38 +0000 (12:04 -0700)]
[SMT-COMP] Print non-(un)sat output to stderr (#2019)

In the SMT-COMP runscript, we are currently discarding output on stdout
that is not "sat" or "unsat" when using `trywith` (this is not the case
with `finishwith`). Due to this, our tests might miss cases where CVC4
fails and prints an error on stdout when using `trywith`. This commit
changes the script to print output other than "sat" or "unsat" to
stderr.

6 years agoNormalize negated bit-vector terms over equalities. (#2017)
Mathias Preiner [Wed, 30 May 2018 18:42:40 +0000 (11:42 -0700)]
Normalize negated bit-vector terms over equalities. (#2017)

6 years agoUse CaDiCaL for eager bit-blasting in QF_NIA and QF_UFBV. (#2018)
Mathias Preiner [Wed, 30 May 2018 18:17:35 +0000 (11:17 -0700)]
Use CaDiCaL for eager bit-blasting in QF_NIA and QF_UFBV. (#2018)

6 years agoDraft run script for strings smt comp 2018. (#2016)
Andrew Reynolds [Wed, 30 May 2018 17:49:46 +0000 (12:49 -0500)]
Draft run script for strings smt comp 2018. (#2016)

6 years ago Make user's SMT2 version override file version (#2004)
Andres Noetzli [Tue, 29 May 2018 18:25:13 +0000 (11:25 -0700)]
 Make user's SMT2 version override file version (#2004)

6 years agoDisable minisat elimination when nonlinear is enabled (#2006)
Andrew Reynolds [Tue, 29 May 2018 17:46:35 +0000 (12:46 -0500)]
Disable minisat elimination when nonlinear is enabled (#2006)

6 years agoTrack input language in a single place (#2003)
Andres Noetzli [Tue, 29 May 2018 12:43:20 +0000 (05:43 -0700)]
Track input language in a single place (#2003)

6 years agoBuiltin evaluation functions for sygus (#1991)
Andrew Reynolds [Mon, 28 May 2018 15:35:17 +0000 (10:35 -0500)]
Builtin evaluation functions for sygus (#1991)

6 years agoFix cegqi assertions for quantified non-linear cases. (#1999)
Andrew Reynolds [Sun, 27 May 2018 20:10:08 +0000 (15:10 -0500)]
Fix cegqi assertions for quantified non-linear cases. (#1999)

6 years agoFix no-cbqi-innermost option name in run script (#1994)
Andres Noetzli [Sun, 27 May 2018 18:39:36 +0000 (11:39 -0700)]
Fix no-cbqi-innermost option name in run script (#1994)

6 years agoUpdate SymFPU. (#1992)
Mathias Preiner [Sat, 26 May 2018 22:56:16 +0000 (15:56 -0700)]
Update SymFPU. (#1992)

6 years agoReenable repair const (#1983)
Andrew Reynolds [Fri, 25 May 2018 21:19:58 +0000 (16:19 -0500)]
Reenable repair const (#1983)

6 years agoMiniSat: Be more careful about running proof code (#1982)
Andres Noetzli [Fri, 25 May 2018 20:26:16 +0000 (13:26 -0700)]
MiniSat: Be more careful about running proof code (#1982)

In `addClause_()`, we were checking the condition `ca[confl].size() ==
1` regardless if proofs were enabled or not, even though both branches
of the if statement only do something when proofs are enabled. This lead
to issue #1978 occurring even when not generating proofs. Note: This
commit is *not* a fix for #1978 but it makes sure that the issue does
not occur when not generating proofs/unsat cores.

6 years agoAdd QF_BV configuration for SMTCOMP'18. (#1981)
Mathias Preiner [Fri, 25 May 2018 18:02:32 +0000 (11:02 -0700)]
Add QF_BV configuration for SMTCOMP'18. (#1981)

6 years agoFix various nl assertions. (#1980)
Andrew Reynolds [Fri, 25 May 2018 16:46:56 +0000 (11:46 -0500)]
Fix various nl assertions. (#1980)

6 years agoFix (#1979)
Andrew Reynolds [Fri, 25 May 2018 00:55:47 +0000 (19:55 -0500)]
Fix (#1979)

6 years agoImprove simple constant symmetry breaking for sygus (#1977)
Andrew Reynolds [Thu, 24 May 2018 22:28:59 +0000 (17:28 -0500)]
Improve simple constant symmetry breaking for sygus (#1977)

6 years agoFix compiler warnings (#1959)
Andres Noetzli [Thu, 24 May 2018 20:01:33 +0000 (13:01 -0700)]
Fix compiler warnings (#1959)

6 years agoFix (#1975)
Andrew Reynolds [Thu, 24 May 2018 19:24:44 +0000 (14:24 -0500)]
Fix (#1975)

6 years agoFixes for non-linear check model (#1974)
Andrew Reynolds [Thu, 24 May 2018 19:01:44 +0000 (14:01 -0500)]
Fixes for non-linear check model (#1974)

6 years agoFix nl regression for unsat cores. (#1973)
Andrew Reynolds [Thu, 24 May 2018 15:03:23 +0000 (10:03 -0500)]
Fix nl regression for unsat cores. (#1973)

6 years agoRemove spurious assertion in nonlinear extension (#1972)
Andrew Reynolds [Thu, 24 May 2018 01:41:11 +0000 (20:41 -0500)]
Remove spurious assertion in nonlinear extension (#1972)

6 years agoTowards better symbolic enumeration in SyGuS (#1971)
Haniel Barbosa [Wed, 23 May 2018 23:18:51 +0000 (18:18 -0500)]
Towards better symbolic enumeration in SyGuS (#1971)

6 years agoAdd notions of evaluated kinds in TheoryModel (#1947)
Andrew Reynolds [Wed, 23 May 2018 20:44:50 +0000 (15:44 -0500)]
Add notions of evaluated kinds in TheoryModel (#1947)

6 years agoRemove ProofProxy (#1965)
Andres Noetzli [Wed, 23 May 2018 13:53:06 +0000 (06:53 -0700)]
Remove ProofProxy (#1965)

6 years agoGeneralize check-model in NonLinearExtension for quadratic equations (#1892)
Andrew Reynolds [Wed, 23 May 2018 12:00:40 +0000 (07:00 -0500)]
Generalize check-model in NonLinearExtension for quadratic equations (#1892)

6 years agoSet same options for proofs as for unsat cores (#1957)
Andres Noetzli [Wed, 23 May 2018 05:20:59 +0000 (22:20 -0700)]
Set same options for proofs as for unsat cores (#1957)

In SmtEngine::setDefaults() we were setting options such as
--simplifciation=none for unsat cores but not proofs. Producing unsat
cores relies on the same infrastructure as proofs and should be a subset
of the same work in most cases. Thus, this commit changes
SmtEngine::setDefaults() to set the same options for proofs as we
previously only did for unsat cores. Additionally, it changes the
function to only set the simplificationMode to SIMPLIFICATION_MODE_BATCH
if proofs and unsat cores are not enabled. Fixes issue #1953.

6 years agoRepair constants using symbolic constructors (#1960)
Andrew Reynolds [Wed, 23 May 2018 01:27:32 +0000 (20:27 -0500)]
Repair constants using symbolic constructors (#1960)

6 years agoParse error for sygus grammar term with multiple let bodies (#1961)
Andrew Reynolds [Tue, 22 May 2018 23:12:54 +0000 (18:12 -0500)]
Parse error for sygus grammar term with multiple let bodies (#1961)

6 years agoDisable symmetry breaker for unsat cores (#1958)
Andres Noetzli [Tue, 22 May 2018 18:43:15 +0000 (11:43 -0700)]
Disable symmetry breaker for unsat cores (#1958)

Currently, --check-unsat-cores fails for one of our regressions. It
turns out that the issue is due to preprocessing done by the symmetry
breaker.  The symmetry breaker does not add dependencies and thus the
generated unsat core is incomplete/wrong. This commit disables the
symmetry breaker when we are generating unsat cores (it was previously
only disabled when generating proofs). Fixes issue #1953.

6 years agoMake sygus infer find function definitions (#1951)
Andrew Reynolds [Tue, 22 May 2018 18:08:31 +0000 (13:08 -0500)]
Make sygus infer find function definitions (#1951)

6 years agoInfrastructure for strings strategies (#1883)
Andrew Reynolds [Tue, 22 May 2018 01:54:52 +0000 (20:54 -0500)]
Infrastructure for strings strategies (#1883)

6 years agoAdd SymFPU licensing information. (#1952)
Mathias Preiner [Tue, 22 May 2018 00:54:09 +0000 (17:54 -0700)]
Add SymFPU licensing information. (#1952)

6 years agoImprovements in parsing and printing related to mixed int/real (#1879)
Andrew Reynolds [Mon, 21 May 2018 22:52:26 +0000 (17:52 -0500)]
Improvements in parsing and printing related to mixed int/real (#1879)

This eliminates some hacks for dealing with Int/Real.
- Eliminates the use of "to_real" to cast decimals like "2.0" that happen to be Int. We now replace these by (/ 2 1) instead of (to_real 2), which has the advantage of being smt-lib compliant for all theories, including QF_LRA.
- Eliminates the use of a hack to use "type ascriptions" when returning values from a get-value command. Instead, we use division with 1 when necessary.  This affects the output of a few regressions, but we remain smt-lib compliant.
- Addresses a bug with printing arbitrary type ascriptions for smt2 terms. This partially addresses #1852.
- Updates our printing of negative rationals to be (/ (- n) m) instead of (- (/ n m)), which is consistent with the smt lib standard for real values (http://smtlib.cs.uiowa.edu/theories-Reals.shtml).

6 years agoInfrastructure to mark unused sygus strategies (#1950)
Andrew Reynolds [Mon, 21 May 2018 21:33:17 +0000 (16:33 -0500)]
Infrastructure to mark unused sygus strategies  (#1950)

6 years agoHandle IMPLIES in bool-to-bv and test it in regress0 (#1929)
makaimann [Mon, 21 May 2018 21:07:48 +0000 (14:07 -0700)]
Handle IMPLIES in bool-to-bv and test it in regress0 (#1929)

6 years agoRefactor sygus eval unfold (#1946)
Andrew Reynolds [Mon, 21 May 2018 19:09:12 +0000 (14:09 -0500)]
Refactor sygus eval unfold (#1946)

6 years agoRemove Eclipse project files (#1928)
Andres Noetzli [Mon, 21 May 2018 18:37:26 +0000 (21:37 +0300)]
Remove Eclipse project files (#1928)

No one of the core devs is currently using Eclipse, so the Eclipse
project files are essentially useless since they are not guaranteed to
be up-to-date.

6 years agoFix compiler warning in hashsmt example (#1927)
Andres Noetzli [Mon, 21 May 2018 18:00:44 +0000 (21:00 +0300)]
Fix compiler warning in hashsmt example (#1927)

Previously, we were using delete for an array allocated on the heap,
which caused a warning. @dddejan fixed this and other issues in PR #1909
but after @ajreynol fixed the other issues in a separate PR and to not
waste @dddejan's time, I am submitting this fix separately (note: the
fix is slightly different in that it changes the array to a vector,
making a delete[] unnecessary).

6 years agoAssign weight 1 for Boolean variables in SyGuS default grammars (#1948)
Haniel Barbosa [Mon, 21 May 2018 17:21:33 +0000 (12:21 -0500)]
Assign weight 1 for Boolean variables in SyGuS default grammars (#1948)

6 years agoFix file extension (#1919)
Caleb Donovick [Mon, 21 May 2018 15:29:14 +0000 (08:29 -0700)]
Fix file extension (#1919)

* Fix file extension

* Update Makefile

6 years agochanging default (#1944)
Haniel Barbosa [Sat, 19 May 2018 01:49:13 +0000 (20:49 -0500)]
changing default (#1944)

6 years agoCache isInterpretedFinite (#1943)
Andrew Reynolds [Fri, 18 May 2018 22:54:11 +0000 (17:54 -0500)]
Cache isInterpretedFinite (#1943)

6 years agoCegis unif defaults to cegis when no unif (#1942)
Andrew Reynolds [Fri, 18 May 2018 20:02:18 +0000 (15:02 -0500)]
Cegis unif defaults to cegis when no unif (#1942)

6 years agoUnified fairness scheme for cegis unif (#1941)
Andrew Reynolds [Fri, 18 May 2018 17:53:53 +0000 (12:53 -0500)]
Unified fairness scheme for cegis unif (#1941)

6 years agoCatch type errors in sygus grammars for lambda (define-fun) constructors (#1937)
Andrew Reynolds [Thu, 17 May 2018 21:31:30 +0000 (16:31 -0500)]
Catch type errors in sygus grammars for lambda (define-fun) constructors (#1937)

6 years agoFix debugPrint and add regress. (#1934)
Andrew Reynolds [Thu, 17 May 2018 21:03:39 +0000 (16:03 -0500)]
Fix debugPrint and add regress. (#1934)

6 years agoOption to force return values of Bool functions to be constant in CegisUnif (#1930)
Haniel Barbosa [Thu, 17 May 2018 19:47:30 +0000 (14:47 -0500)]
Option to force return values of Bool functions to be constant in CegisUnif (#1930)

6 years agoCegis-specific infrastructure (#1933)
Andrew Reynolds [Thu, 17 May 2018 19:09:46 +0000 (14:09 -0500)]
Cegis-specific infrastructure (#1933)

6 years agoInternal propagation for refinement lemmas (#1932)
Andrew Reynolds [Thu, 17 May 2018 14:23:14 +0000 (09:23 -0500)]
Internal propagation for refinement lemmas (#1932)

6 years agoImprove the separation resolution scheme in cegis unif (#1931)
Andrew Reynolds [Wed, 16 May 2018 23:22:35 +0000 (18:22 -0500)]
Improve the separation resolution scheme in cegis unif (#1931)

6 years agoRefactor static learning preprocessing pass (#1857)
yoni206 [Wed, 16 May 2018 01:17:01 +0000 (18:17 -0700)]
Refactor static learning preprocessing pass (#1857)

6 years agoRefactoring get enumerator values in construct candidate for cegis unif (#1926)
Andrew Reynolds [Tue, 15 May 2018 20:39:27 +0000 (15:39 -0500)]
Refactoring get enumerator values in construct candidate for cegis unif (#1926)

6 years agoadding regressions (#1925)
Haniel Barbosa [Tue, 15 May 2018 19:48:43 +0000 (14:48 -0500)]
adding regressions (#1925)

6 years agoBuilding and refining solutions with dynamic condition generation in CegisUnif (...
Haniel Barbosa [Tue, 15 May 2018 17:20:13 +0000 (12:20 -0500)]
Building and refining solutions with dynamic condition generation in CegisUnif (#1920)

6 years agoFix free variables in cbqi preregister inst. (#1921)
Andrew Reynolds [Tue, 15 May 2018 15:40:29 +0000 (10:40 -0500)]
Fix free variables in cbqi preregister inst. (#1921)

6 years agoFix annotations in regress2. (#1917)
Andrew Reynolds [Tue, 15 May 2018 03:25:40 +0000 (22:25 -0500)]
Fix annotations in regress2. (#1917)

6 years agoMinor improvements to --nl-ext-purify (#1896)
Andrew Reynolds [Tue, 15 May 2018 02:27:07 +0000 (21:27 -0500)]
Minor improvements to --nl-ext-purify (#1896)

6 years ago Incorporating dynamic condition enumeration into cegis unif (#1916)
Andrew Reynolds [Tue, 15 May 2018 00:27:58 +0000 (19:27 -0500)]
 Incorporating dynamic condition enumeration into cegis unif (#1916)

6 years agoFloating point theory solver based on SymFPU (#1895)
Martin [Mon, 14 May 2018 23:18:31 +0000 (00:18 +0100)]
Floating point theory solver based on SymFPU (#1895)

* Add some symfpu accessor functions to reduce the size of the literal 'back-end'.

* Enable the bit-vector theory when setting the logic, not in expandDefinition.

This is needed because it is possible to add variables of float or rounding mode
sort but not use any theory specific functions or predicates and thus not enable
the bit-vector theory.

* Use symfpu to implement the literal floating-point objects.

* Add kinds for bit-blasted components.

* Print the new kinds.

* Typing rules for the new kinds.

* Constant folding for the component kinds.

* Add support for components to the theory solver.

* Add explicit equivalences between classification functions and equalities.

* Use symfpu to do symbolic conversions of floating-point operations.

* Implement conversions via (over-)approximation and refinement.

* Correct a copy and paste error in the generation of uninterpretted functions for conversions.