* Simplify adding lemmas
* Remove misleading constructor from tmp_assign.
The idea is that tmp_assign is only created on the stack and
short-lived. Instead of having a convenience constructor that takes a
constraint_ref, it's clearer to have an explicit .get() at the call
site.
* Remove some log messages
* bugfix
* fix
* Add stub for conflict_core
* wip
* Add example by Clemens
* Refactor: remove sign and dep from constraint
* fix some bugs
* improve log messages
* Add missing premises to lemma
* Rename getter in an attempt to fix linux build
* update example to match slides
* Add normalized view of inequalities
* workaround
* Add a conflict explanation rule
* unit clauses should be asserted at the base level
* Add src constraint to interval
* support non-strict case in first rule
* print conflict constraints only once
* update second rule
* update third rule as well
* update include paths
* bdd fixes
* update/fix some tests
* work around assertion failure when constraint from clause becomes unit
* Remove old code
* use clause_builder
* Verify model when returning SAT
* log
* fix
* Extend search state by boolean literals
* Only resolve against positive equality
* mk_dep_ref
* Make clause non-owning
* scoped_clause
* Use scoped_clause
* minor
* scoped_ptr move assignment
* WIP: internal handling of disjunctive constraints
* leaf_value
* disjunctive constraints continued
* Fix bool_lit
* Actually add constraints to storage
* Some fixes
* more fixes
* constraint should have a bool_lit instead of a bool_var
* propagate(bool_lit)
* updates
* interface changes
* small fixes
* Make sat::dimacs_lit's constructor explicit
(otherwise, calling operator<< with sat::literal is ambiguous)
* Use sat::literal
* Print test name at the beginning
* Convention: constraint corresponds to the positive boolean literal
* Make constraint ownership more explicit
* clause stores literals
* make the two monotonicity tests into one using push/pop
* whitespace...
* proper division modelling for monotonicity test -- overflow checks still missing, though
* double bitwidth for overflow checking in monotonicity example
* Use scoped_ptr for condition
* Check solver result in unit tests
* Add test for unusual cjust
* Add solver::get_value
* Broken assertion
* Support forbidden interval for coefficient -1
* Rename to neg_cond
* Add some logging utilities
* Implement case of forbidden interval covering the whole domain
* Implement diseq_narrow
* Do not activate constraint if we are in a conflict state
* comments
* Assert that lemma isn't undefined
* Update revert_decision to work in the case where narrowing causes propagation
* Fix case of non-disjunctive lemma from forbidden intervals
* Conflict should not leak outside user scope
* Add guard to decide(), some notes
* Add test case
* Add constraints to watchlist of unassigned variable during propagation
* Move common propagation functionality into base class
* Combine eq/diseq narrow
* Compute forbidden interval for equality constraints by considering them as p <=u 0 (or p >u 0 for disequalities)