add todo file

This commit is contained in:
Simon Cruanes 2018-04-11 09:02:54 -05:00
commit 6418d3112c

73
TODO.md Normal file
View file

@ -0,0 +1,73 @@
# Goals
## TODO
- SAT:
* merge all clause vectors into one
* remove all simplifications at level 0
* addition of clauses: should be much simpler
- explicit lifecycle for SAT atoms (dead/assigned/in-heap)
- simplify addition of clauses:
* do not simplify at level 0
* steps on addition:
1. internalize all atoms (dead -> in-heap)
2. unit-propagate/do nothing/add clause
3. remove clause on backtracking if not at level 0
- merge Solver_types.ml with Internal.ml
- make CC work on QF_UF
* internalize terms on the fly (backtrackable)
* basic notion of activity (of subterms) for `ite` (and recfuns, later)?
- redo_down_to_level_0 should actually redo down to `base_level`
- add `CC.add_rw_step t u` work, where `t-->u`
(remove `t` from sig table, should have almost 0 overhead after that)
* use it for
- notion of `value` (V_true,V_false,V_custom, + maybe undefined some day)
- write theory of datatypes (without acyclicity) with local case splits + `value` + injectivity
- design evaluation system (guards + `eval:(term -> value) option` in custom TC)
- compilation of rec functions to defined constants
- theory of defined constants relying on congruence closure + evaluation
of guards of each case
- datatype acyclicity check
- Shostak theory of eq-
- abstract domain propagation in CC
- domain propagation (intervals) for arith
- full theory: shostak + domains + if-sat simplex
## Main goals
- Add a backend to send proofs to dedukti
* First, pure resolution proofs
* Then, require theories to output lemma proofs for dedukti (in some format yet to be decided)
- Allow to plug one's code into boolean propagation
* react upon propagation (possibly by propagating more, or side-effect)
* more advanced/specific propagation (2-clauses)?
* implement 'constraints' (see https://www.lri.fr/~conchon/TER/2013/3/minisat.pdf )
## Long term goals
- max-sat/max-smt
- coq proofs ?
## Done
- theory of boolean constructs (on the fly Tseitin using local clauses)
* test `Sat_solver.add_clause` and `new_atom` behavior upon backtracking
→ when we backtrack an atom, its Tseitin encoding should be removed
* NOTE: clauses should never be added twice
(or else: what if a clause is added, removed (but not filtered from watched lits) then re-added? duplicate?)
- backtrackable addition of clauses/atoms in Sat solver
- remove tseitin lib
- typing and translation Ast -> Term (from mc2?)
- main executable for SMT solver
- base types (Term, Lit, …)
- theory combination
- basic design of theories