Add API solve_for(vars).
It takes a list of variables and returns a triangular solved form for the variables.
Currently for arithmetic. The solved form is a list with elements of the form (var, term, guard).
Variables solved in the tail of the list do not occur before in the list.
For example it can return a solution [(x, z, True), (y, x + z, True)] because first x was solved to be z,
then y was solved to be x + z which is the same as 2z.
Add congruent_explain that retuns an explanation for congruent terms.
Terms congruent in the final state after calling SimpleSolver().check() can be queried for
an explanation, i.e., a list of literals that collectively entail the equality under congruence closure.
The literals are asserted in the final state of search.
Adjust smt_context cancellation for the smt.qi.max_instantiations parameter.
It gets checked when qi-queue elements are consumed.
Prior it was checked on insertion time, which didn't allow for processing as many
instantations as there were in the queue. Moreover, it would not cancel the solver.
So it would keep adding instantations to the queue when it was full / depleted the
configuration limit.
log theory propagations with annotation "smt".
It allows tracking theory propagations (when used in conflicts) in the clause logs similar to the new core.
So far the format is
(forall ((x Int)) body) (not (body[t/x]))
The alternative could be the clause
(not (forall ((x Int)) body)) body[t/x]
they just better be consistent between engines
* Rocco first commit
* Rocco: clean the log
* Rocco: version 0.1 beta of the causality graph
* Rocco: minimal fix to separate lines
* Rocco: fix the enodes
* Rocco: our trace has to reflect same behaviour of the native trace for what concern used_enodes
* Rocco: disable trace when dummy instantiations
* Rocco: fix to enodes
* Update README.md
* Rocco: remove causality details and add the pattern (trigger)
* Rocco: add ; at the end of the bindings
* Rocco: add triggers as separate trace
* Rocco README file
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Rocco: bug in tout flush
* Update README.md
* Update README.md
* Rocco: clean code
* Ready for pull request
* Remove commented line bindings
* Add space between // and first char
* Substitute or with || for compatibility; Add space around >