mirror of
https://github.com/c-cube/sidekick.git
synced 2025-12-06 03:05:31 -05:00
add todo file
This commit is contained in:
commit
6418d3112c
1 changed files with 73 additions and 0 deletions
73
TODO.md
Normal file
73
TODO.md
Normal 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
|
||||||
Loading…
Add table
Reference in a new issue