Age | Commit message (Collapse) | Author |
|
gestures both.
|
|
* notifications are now through the interface subclass instead of a template
* notifications include constants being merged
* changed contextNotifyObj::notify to contextNotifyObj::contextNotifyPop so it's more descriptive and doesn't clutter methods when subclassed
* sat solver now has explicit methods to make true and false constants
* 0-level literals are removed from explanations of propagations
|
|
(gets rid of warning)
|
|
Major changes from last merge
* ITEs supported
* Don't share theory lemmas to DE, only assertions
Should probably be noted that 'make regress' doesn't quite
pass with --decision=justification. Throws off search in couple
of arith benchmarks.
No serious performance changes expected. Keep an eye.
|
|
that disallowed me to debug my bugs by reporting that the debug tag doesn't exists, where in fact it was in the code.
1) The grep and sed for tags wasn't picking up on .isOn("tag")
2) The isDebugTag a) didn't take a parameter b) was using binary search using strcmp which is non-portable and didn't work for tags including special characters
Morgan should vet this, since there is some crazy sed stuff going on
|
|
This should also fix bug 325.
|
|
|
|
|
|
|
|
|
|
|
|
single check call.
- This increases the number of substitutions that ppAssert can solve on integer equations.
|
|
Changes include
* fixed term visitor from the bvprop branch
* removed all the warnings from builds -- warnings are there to be noted *NOT* to be used as scribbles
* moved the LogicInfo into the theory constructor
|
|
|
|
d_sharedTermsExist is now set based on logicInfo instead of dynamically when
shared terms are found.
|
|
src/theory/logic_info.{h,cpp} contains the CVC4::LogicInfo class, which keeps
track of which theories are active (which should remain constant throughout
the life of an SmtEngine) and other details (like integers, reals,
linear/nonlinear, etc.).
This class has a default constructor which is the most all-inclusive logic.
Alternatively, this class can be constructed from an SMT-LIB logic string
(the empty string gives the same as "QF_SAT"). Once constructed, theories
can be enabled or disabled, quantifiers flipped on and off, integers flipped
on and off, etc. At any point an SMT-LIB-like logic string can be extracted.
The SmtEngine keeps a LogicInfo for itself and shares with the TheoryEngine
(and, in turn, the theories) only a const reference to it. This ensures that
the logic info doesn't mutate over the course of the run.
As part of this commit, the TheoryEngine's old notion of "active theories"
has been completely removed. As a result, SMT benchmarks that are incorrectly
tagged with a logic will assert-fail or worse. (We should probably fail
more gracefully in this case.) One such example was bug303.smt2,
which used UF reasoning but was tagged QF_LIA. This has been fixed.
|
|
for portfolio)
|
|
|
|
manually; this will make the LogicInfo commit coming up much easier to integrate into trunk, and will anyway be cleaned up when quantifiers2 branch is merged into trunk.
|
|
support I haven't yet committed)
|
|
manually; this will make the LogicInfo commit coming up much easier to integrate into trunk, and will anyway be cleaned up when quantifiers2 branch is merged into trunk.
|
|
|
|
|
|
arrays, fixed bug with equalities between constants in shared terms database
|
|
- Splits the functionality of having a sparse matrix of Ts and a solved matrix of rationals in tableau.
- Splits ArithVarSet into DenseMap and CDDenseSet and simplifies the code.
- No performance loss!
|
|
|
|
for the first time make regress passes even if JH is enabled
|
|
Here are a summary of the changes:
- Adds CDMaybe and CDRaised in cdmaybe.h
- Add test for congruence over arithmetic terms and constants
- Renames DifferenceManager to CongruenceManager
- Changes a number of internal details for CongruenceManager
|
|
Overview of changes
* command line option --decision={internal,justification}
* justification heuristic handles all operators except ITEs
revelant stats: decision::jh::*
* if decisionEngine has solved the problem PropEngine returns
unknown and smtEngine queries DE to get the answer
relevant stat: smt::resultSource
* there are known bugs
Full list of commits being merged
r3330 use CD data structures in JH
r3329 add command-line option --decision=MODE
r3328 timer stat, other fixes
r3326 more trace
r3325 enable implies, iff, xor (no further regression losses)
r3324 feed decision engine lemmas, changes to quitting mechanism
r3322 In progress
r3321 more fixes...
r3318 bugfix1 (69 more to go)
r3317 Handle other boolean operators in JH (except ITE)
r3316 mechanism for DE to stopSearch
r3315 merge from trunk + JH translation continuation
r3275 change option to enable JH by default[A
|
|
Also disabled eager lemmas - slows down QF_AX but gets new examples in QF_AUFBV
|
|
assumed to be initialized to NULL. This is not true on all platforms. This is now done explicitly. Macs builds should now work again.
|
|
|
|
rest of the search go through, but still should be investigated
|
|
figure out what to do with it
|
|
|
|
Adds DecisionEngine and an abstract class DecisionStrategy
which other strategies will derive from eventually.
Full revision summary of merged commits:
r3241 merge from trunk
r3240 fix
r3239 WIP
r3238 JH, CVC3 code: 5% done -- 5% translated
r3237 JH groundwork
r3236 make make regrss pass
r3234 hueristic->heuristic
r3229 JustificationHeuristic: EOD-WIP
r3228 DecisionEngine: hookup assetions
r3227 move ITE outside simplifyAssertions
r3226 DecisionStrategy abstract class
r3222 DecisionEngine: begin
|
|
Below is a highlight of the changes:
- This introduces a new normal form to arithmetic.
-- Equalities and disequalities are in solved form.
Roughly speaking this means: (= x (+ y z)) is in normal form.
(See the comments in normal_form.h for what this formally requires.)
-- The normal form for inequality atoms always uses GEQ and GT instead of GEQ and LEQ.
Integer atoms always use GEQ.
- Constraint was added to TheoryArith.
-- A constraint is a triple of (k x v) where:
--- k is the type of the constraint (either LowerBound, UpperBound, Equality or Disequality),
--- x is an ArithVar, and
--- v is a DeltaRational value.
-- Constraints are always attached to a ConstraintDatabase.
-- A Constraint has its negation in the ConstraintDatabase [at least for now].
-- Every constraint belongs to a set of constraints for each ArithVar sorted by the delta rational values.
-- This set can be iterated over and provides efficient access to other constraints for this variable.
-- A literal may be attached to a constraint.
-- Constraints with attached literals may be marked as being asserted to the theory (sat context dependent).
-- Constraints can be propagated.
-- Every constraint has a proof (sat context dependent).
-- Proofs can be explained for either conflicts or propagations (if the node was propagated). (These proofs may be different.)
-- Equalities and disequalities can be marked as being split (user context dependent)
- This removes and replaces:
-- src/theory/arith/arith_prop_manager.*
-- src/theory/arith/atom_database.*
-- src/theory/arith/ordered_set.h
- Added isZero(), isOne() and isNegativeOne() to Rational and Integer.
- Added operator+ to CDList::const_iterator.
- Added const_iterator to CDQueue.
- Changes to regression tests.
|
|
|
|
headers.
|
|
|
|
builds, an Unhandled(SExpr::SexprTypes) could not compile on debian.
|
|
|
|
* Fix DefineFunctionCommand when a constant is defined
|
|
* Permit "BOOL = BOOL" in CVC language parser (auto-replaced with IFF
internally, except in strict mode).
* SExpr atoms now can be string-, integer-, or rational-valued.
* SmtEngine::setInfo(":status", ...) now properly dumps a
SetBenchmarkStatusCommand rather than a SetInfoCommand.
* Some dumping fixes (resolves bug 313)
|
|
Makefile.am files under src/prop/cryptominisat.
|
|
|
|
back in) by doing "make regress RUN_REGRESSION_ARGS=--dump"
|
|
|
|
cc_min=2 in solve
|
|
|