sidekick/TODO.md
2018-04-11 09:02:54 -05:00

2.5 KiB
Raw Blame History

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

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