Extensibella Example: unsat_proofs:clauses

Language Specification

File: syntax.sos

[Reduce File] [Raw File]
Module unsat_proofs:clauses

Builds on unsat_proofs:lrat

clause ::= ...
         | rangeClause(int, int)
         | noteClause(string, clause)


Low <= High
1 + Low = PlusOne
---------------------------------------------- [Proj-RangeClauseStep]
|{clause}- rangeClause(Low, High) ~~>
      or(pos(Low), rangeClause(PlusOne, High))


Low > High
------------------------------------------------- [Proj-RangeClauseEnd]
|{clause}- rangeClause(Low, High) ~~> emptyClause


---------------------------------------------- [Proj-NoteClause]
|{clause}- noteClause(Note, Clause) ~~> Clause

File: sat.sos

[Reduce File] [Raw File]
Module unsat_proofs:clauses


Low <= X
X <= High
mem pos(X) A
----------------------------------- [SC-RangeClause]
sat_clause A rangeClause(Low, High)


sat_clause A Clause
------------------------------------- [SC-NoteClause]
sat_clause A noteClause(Note, Clause)





range Low High R
negs R N
subset N A
------------------------------------- [USC-RangeClause]
unsat_clause A rangeClause(Low, High)


unsat_clause A Clause
--------------------------------------- [USC-NoteClause]
unsat_clause A noteClause(Note, Clause)



Fixed Judgment negs : [int] [lit]

========== [Negs-Nil]
negs [] []


negs Rest LRest
=========================== [Negs-Cons]
negs I::Rest neg(I)::LRest



Fixed Judgment posLits : [int] [lit]

============= [PL-Nil]
posLits [] []


posLits Rest LRest
============================= [PL-Cons]
posLits I::Rest pos(I)::LRest

File: check.sos

[Reduce File] [Raw File]
Module unsat_proofs:clauses


range Low High R
posLits R L
----------------------------------- [GL-RangeClause]
gatherLits rangeClause(Low, High) L


gatherLits Clause L
------------------------------------- [GL-NoteClause]
gatherLits noteClause(Note, Clause) L




range Low High Range
select I RangeRest Range
!mem pos(I) A
!mem neg(I) A
negs RangeRest N
subset N A
------------------------------------------- [UC-RangeClause]
unit_clause A rangeClause(Low, High) pos(I)


unit_clause A Clause L
---------------------------------------- [UC-NoteClause]
unit_clause A noteClause(Note, Clause) L

Reasoning

[Show All Proofs] [Hide All Proofs] [Raw File]

Click on a command or tactic to see a detailed view of its use.

Module unsat_proofs:clauses.


Prove_Constraint unsat_proofs:lrat:proj_lit_unique.
Prove_Constraint unsat_proofs:lrat:proj_lit_is.


Prove_Constraint unsat_proofs:lrat:proj_clause_unique. [Show Proof]



Prove_Constraint unsat_proofs:lrat:proj_clause_is. [Show Proof]



Prove_Constraint unsat_proofs:lrat:proj_formula_unique.
Prove_Constraint unsat_proofs:lrat:proj_formula_is.

Add_Proj_Rel unsat_proofs:lrat:is_clause.
Prove_Ext_Ind unsat_proofs:lrat:is_clause. [Show Proof]


Add_Proj_Rel unsat_proofs:lrat:is_formula.
Prove_Ext_Ind unsat_proofs:lrat:is_formula.


Prove unsat_proofs:lrat:is_lit_pos_or_neg.

Prove unsat_proofs:lrat:is_clause_empty_or_not. [Show Proof]

Prove unsat_proofs:lrat:is_clause_or_or_not. [Show Proof]

Extensible_Theorem
  is_clause_rangeClause_or_not : forall C,
    IsC : is_clause C ->
    (exists Low High, C = rangeClause Low High) \/
    ((exists Low High, C = rangeClause Low High) -> false)
  on IsC. [Show Proof]

Extensible_Theorem
  is_clause_noteClause_or_not : forall C,
    IsC : is_clause C ->
    (exists Note C', C = noteClause Note C') \/
    ((exists Note C', C = noteClause Note C') -> false)
  on IsC. [Show Proof]

Prove unsat_proofs:lrat:is_clause_eq_or_not. [Show Proof]


Prove unsat_proofs:lrat:is_formula_empty_or_not.
Prove unsat_proofs:lrat:is_formula_and_or_not.
Prove unsat_proofs:lrat:is_formula_eq_or_not.


Prove unsat_proofs:lrat:negate_lit_unique.
Prove unsat_proofs:lrat:negate_lit_reverse.
Prove unsat_proofs:lrat:negate_lit_not_same.
Prove unsat_proofs:lrat:negate_lit_is_lit.
Prove unsat_proofs:lrat:negate_lit_is_lit_back.
Prove unsat_proofs:lrat:negate_lit_exists.


Prove_Constraint unsat_proofs:lrat:sat_clause_ext_to_proj. [Show Proof]


Prove_Constraint unsat_proofs:lrat:sat_clause_proj_to_ext. [Show Proof]


Theorem negs_total : forall L,
  is_list is_integer L -> exists N, negs L N. [Show Proof]


Theorem negs_mem : forall L N X,
  mem X L -> negs L N -> mem (neg X) N. [Show Proof]


Theorem negs_subset : forall LA LB NA NB,
  subset LA LB -> negs LA NA -> negs LB NB -> subset NA NB. [Show Proof]


Prove_Constraint unsat_proofs:lrat:unsat_clause_ext_to_proj. [Show Proof]


Prove_Constraint unsat_proofs:lrat:unsat_clause_proj_to_ext. [Show Proof]



Prove_Constraint unsat_proofs:lrat:sat_formula_ext_to_proj.
Prove_Constraint unsat_proofs:lrat:sat_formula_proj_to_ext.


Theorem negs_form : forall L N X,
  negs L N -> mem X N -> exists I, X = neg I. [Show Proof]


Prove unsat_proofs:lrat:unsat_sat_clause. [Show Proof]



Prove unsat_proofs:lrat:sat_clause_orderless. [Show Proof]



Prove unsat_proofs:lrat:sat_formula_orderless.


Theorem mems_subset : forall Sub Sup,
  is_list is_lit Sub -> (forall X, mem X Sub -> mem X Sup) ->
  subset Sub Sup. [Show Proof]


Theorem mems_subset2 [A] : forall (Sub Sup1 Sup2 : list A),
  subset Sub Sup1 -> (forall X, mem X Sup1 -> mem X Sup2) ->
  subset Sub Sup2. [Show Proof]


Prove unsat_proofs:lrat:unsat_clause_orderless. [Show Proof]



Prove unsat_proofs:lrat:unit_clause_is. [Show Proof]



Prove unsat_proofs:lrat:unit_clause_unique. [Show Proof]



Prove unsat_proofs:lrat:unit_clause_not_assigned. [Show Proof]



Prove unsat_proofs:lrat:unit_clause_not_assigned_negate. [Show Proof]



Prove unsat_proofs:lrat:unit_clause_expand. [Show Proof]



Prove unsat_proofs:lrat:unit_clause_add. [Show Proof]



Theorem posLits_total : forall L,
  is_list is_integer L -> exists P, posLits L P. [Show Proof]


Theorem posLits_unique : forall L P1 P2,
  posLits L P1 -> posLits L P2 -> P1 = P2. [Show Proof]


Theorem posLits_is : forall L P,
  is_list is_integer L -> posLits L P -> is_list is_lit P. [Show Proof]


Theorem posLits_mem : forall L P X,
  mem X L -> posLits L P -> mem (pos X) P. [Show Proof]


Theorem posLits_form : forall L P X,
  posLits L P -> mem X P -> exists I, X = pos I. [Show Proof]


Theorem mem_after_posLits_before : forall L P I,
  posLits L P -> mem (pos I) P -> mem I L. [Show Proof]


Prove unsat_proofs:lrat:gatherLits_is. [Show Proof]


Prove unsat_proofs:lrat:gatherLits_exists. [Show Proof]


Theorem permutation_reflexive_lits : forall L,
  is_list is_lit L -> permutation L L. [Show Proof]


Prove unsat_proofs:lrat:gatherLits_permutation. [Show Proof]


Prove_Constraint unsat_proofs:lrat:proj_gatherLits. [Show Proof]


Prove_Constraint unsat_proofs:lrat:proj_gatherLits_permutation. [Show Proof]


Prove unsat_proofs:lrat:gatherLits_sat. [Show Proof]


Prove unsat_proofs:lrat:gatherLits_mem_sat. [Show Proof]


Prove unsat_proofs:lrat:gatherLits_unsat. [Show Proof]


Theorem posLits_negateLitList_negs : forall L P N,
  posLits L P -> negateLitList P N -> negs L N. [Show Proof]


Theorem negs_is : forall L N,
  is_list is_integer L -> negs L N -> is_list is_lit N. [Show Proof]


Prove unsat_proofs:lrat:negate_lits_unsat. [Show Proof]



Prove_Constraint unsat_proofs:lrat:proj_proof_is.
Prove_Constraint unsat_proofs:lrat:proj_proof_extend.
Prove unsat_proofs:lrat:check_proof_correct.
Prove unsat_proofs:lrat:checkProof_orderless.

Add_Ext_Size unsat_proofs:lrat:checkProof.
Add_Proj_Rel unsat_proofs:lrat:checkProof.
Prove_Ext_Ind unsat_proofs:lrat:checkProof.
Prove_Constraint unsat_proofs:lrat:proj_checkProof.


Prove unsat_proofs:lrat:formulaToKnown_unique.
Prove unsat_proofs:lrat:formulaToKnown_all_greater.
Prove unsat_proofs:lrat:formulaToKnown_all_unique.
Prove unsat_proofs:lrat:formulaToKnown_sat_formula.
Prove unsat_proofs:lrat:formulaToKnown_is.
Back to example home