Merges branches/arithmetic/atom-database r2979 through 3247 into trunk. Below is...
authorTim King <taking@cs.nyu.edu>
Tue, 17 Apr 2012 16:07:22 +0000 (16:07 +0000)
committerTim King <taking@cs.nyu.edu>
Tue, 17 Apr 2012 16:07:22 +0000 (16:07 +0000)
commitccd77233892ace44fd4852999e66534d1c2283ea
treea856cacd24508a5839fcdbe728583ff055b64e34
parent9644b6e12fbd3b649daafa43c5400d272e27bfb4
Merges branches/arithmetic/atom-database r2979 through 3247 into trunk.  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.
53 files changed:
src/context/cdlist.h
src/context/cdqueue.h
src/context/cdtrail_queue.h
src/prop/cryptominisat/MTRand/Makefile.in
src/prop/cryptominisat/Makefile.in
src/prop/cryptominisat/Solver/Makefile.in
src/prop/cryptominisat/man/Makefile.in
src/prop/cryptominisat/mtl/Makefile.in
src/smt/smt_engine.cpp
src/theory/arith/Makefile.am
src/theory/arith/arith_prop_manager.cpp [deleted file]
src/theory/arith/arith_prop_manager.h [deleted file]
src/theory/arith/arith_rewriter.cpp
src/theory/arith/arith_rewriter.h
src/theory/arith/arith_static_learner.cpp
src/theory/arith/arith_utilities.h
src/theory/arith/arithvar.h
src/theory/arith/arithvar_set.h
src/theory/arith/atom_database.cpp [deleted file]
src/theory/arith/atom_database.h [deleted file]
src/theory/arith/constraint.cpp [new file with mode: 0644]
src/theory/arith/constraint.h [new file with mode: 0644]
src/theory/arith/constraint_forward.h [new file with mode: 0644]
src/theory/arith/delta_rational.h
src/theory/arith/difference_manager.cpp
src/theory/arith/difference_manager.h
src/theory/arith/dio_solver.cpp
src/theory/arith/dio_solver.h
src/theory/arith/linear_equality.cpp
src/theory/arith/linear_equality.h
src/theory/arith/normal_form.cpp
src/theory/arith/normal_form.h
src/theory/arith/ordered_set.h [deleted file]
src/theory/arith/partial_model.cpp
src/theory/arith/partial_model.h
src/theory/arith/simplex.cpp
src/theory/arith/simplex.h
src/theory/arith/tableau.cpp
src/theory/arith/theory_arith.cpp
src/theory/arith/theory_arith.h
src/theory/theory.cpp
src/theory/theory.h
src/util/integer_cln_imp.h
src/util/integer_gmp_imp.h
src/util/options.cpp
src/util/options.h
src/util/rational_cln_imp.h
src/util/rational_gmp_imp.h
test/regress/regress0/arith/integers/Makefile.am
test/regress/regress0/uflia/Makefile.am
test/regress/regress0/uflia/error0.smt2 [new file with mode: 0644]
test/regress/regress0/uflia/xs-09-16-3-4-1-5.smt [new file with mode: 0644]
test/unit/theory/theory_arith_white.h