Extensibella Example: unsat_proofs:drat

Language Specification

File: syntax.sos

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

Builds on unsat_proofs:lrat


dratProof ::= addDratEmpty
            | addDratClause(clause, dratProof)
            | deleteDrat(clause, dratProof)

Projection dratProof :

File: check.sos

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

Judgment checkDrat : [clause] dratProof*

drup Known emptyClause
---------------------------- [CD-Empty]
checkDrat Known addDratEmpty


drup Known C
checkDrat C::Known Rest
-------------------------------------- [CD-Add]
checkDrat Known addDratClause(C, Rest)


select C KRest Known
checkDrat KRest Rest
----------------------------------- [CD-Delete]
checkDrat Known deleteDrat(C, Rest)


              /*known clauses, clause*/
Fixed Judgment drup : [clause] clause
                   /*known clauses, assignment*/
Fixed Judgment drup_help : [clause] [lit]

gatherLits C L
negateLitList L NL
drup_help Known NL
================== [DRUP]
drup Known C



mem C Known
unsat_clause A C
==================== [DRUPH-End]
drup_help Known A


mem C Known
unit_clause A C L
drup_help Known L::A
==================== [DRUPH-Step]
drup_help Known A

File: toDrat.sos

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

Judgment toDrat : [(int, clause)] proof* dratProof

-------------------------------------------- [TD-EmptyLrat]
toDrat Known emptyLrat(ID, Prf) addDratEmpty


remove_all Known ID KRest
toDrat (ID, C)::KRest Rest DRest
-------------------------------------------- [TD-AddLrup]
{toDrat Known addLrupProof(ID, C, Prf, Rest)
              addDratClause(C, DRest)}


select (ID, C) KRest Known
toDrat KRest Rest DRest
------------------------------------------- [TD-DeleteLrat]
{toDrat Known deleteLratProof(ID, Rest)
                      deleteDrat(C, DRest)}


Known |{proof}- P ~~> PT
toDrat Known PT D
------------------------ [TD-Default]*
toDrat Known P D

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:drat.


Prove_Constraint unsat_proofs:lrat:proj_lit_unique.
Prove_Constraint unsat_proofs:lrat:proj_lit_is.
Prove_Constraint unsat_proofs:lrat:proj_clause_unique.
Prove_Constraint unsat_proofs:lrat:proj_clause_is.
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.

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.
Prove unsat_proofs:lrat:is_clause_or_or_not.
Prove unsat_proofs:lrat:is_clause_eq_or_not.

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.
Prove_Constraint unsat_proofs:lrat:sat_clause_proj_to_ext.
Prove_Constraint unsat_proofs:lrat:unsat_clause_ext_to_proj.
Prove_Constraint unsat_proofs:lrat:unsat_clause_proj_to_ext.
Prove_Constraint unsat_proofs:lrat:sat_formula_ext_to_proj.
Prove_Constraint unsat_proofs:lrat:sat_formula_proj_to_ext.


Prove unsat_proofs:lrat:unsat_sat_clause.


Prove unsat_proofs:lrat:sat_clause_orderless.
Prove unsat_proofs:lrat:sat_formula_orderless.
Prove unsat_proofs:lrat:unsat_clause_orderless.


Prove unsat_proofs:lrat:unit_clause_is.
Prove unsat_proofs:lrat:unit_clause_unique.
Prove unsat_proofs:lrat:unit_clause_not_assigned.
Prove unsat_proofs:lrat:unit_clause_not_assigned_negate.
Prove unsat_proofs:lrat:unit_clause_expand.
Prove unsat_proofs:lrat:unit_clause_add.


Prove unsat_proofs:lrat:gatherLits_is.
Prove unsat_proofs:lrat:gatherLits_exists.
Prove unsat_proofs:lrat:gatherLits_permutation.

Prove_Constraint unsat_proofs:lrat:proj_gatherLits.
Prove_Constraint unsat_proofs:lrat:proj_gatherLits_permutation.

Prove unsat_proofs:lrat:gatherLits_sat.
Prove unsat_proofs:lrat:gatherLits_mem_sat.
Prove unsat_proofs:lrat:gatherLits_unsat.
Prove unsat_proofs:lrat:negate_lits_unsat.


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.


Theorem rupProof_help__drup_help : forall KnownL KnownD A Prf,
  rupProof_help KnownL A Prf -> values KnownL KnownD ->
  drup_help KnownD A. [Show Proof]



Theorem rupProof__drup : forall KnownL KnownD C Prf,
  rupProof KnownL C Prf -> values KnownL KnownD -> drup KnownD C. [Show Proof]



Theorem remove_all_no_mem_same : forall K ID KRest,
  remove_all K ID KRest -> ((exists C, mem (ID, C) K) -> false) ->
  K = KRest. [Show Proof]



Theorem remove_all_good_clause_list_select : forall K ID KRA C KS,
  good_clause_list K -> remove_all K ID KRA -> select (ID, C) KS K ->
  KRA = KS. [Show Proof]



Theorem remove_all_subset : forall K ID KRest,
  remove_all K ID KRest -> subset KRest K. [Show Proof]



Theorem subset_values[A, B] : forall (A B : list (pair A B)) VA VB,
  subset A B -> values A VA -> values B VB -> subset VA VB. [Show Proof]



Theorem values_exist : forall K,
  is_list (is_pair is_integer is_clause) K -> exists V, values K V. [Show Proof]



Theorem remove_all_unique : forall K ID KA KB,
  remove_all K ID KA -> remove_all K ID KB -> KA = KB. [Show Proof]



Theorem drup_help_subset : forall KA C KB,
  drup_help KA C -> subset KA KB -> drup_help KB C. [Show Proof]



Theorem drup_subset : forall KA C KB,
  drup KA C -> subset KA KB -> drup KB C. [Show Proof]



Theorem good_clause_list_selects : forall K ID CA KA CB KB,
  good_clause_list K -> select (ID, CA) KA K ->
  select (ID, CB) KB K -> KA = KB. [Show Proof]



Theorem values_is : forall K V,
  is_list (is_pair is_integer is_clause) K -> values K V ->
  is_list is_clause V. [Show Proof]



Theorem select_is_clause : forall Known KRest IDC,
  is_list is_clause Known -> select IDC KRest Known ->
  is_list is_clause KRest. [Show Proof]



Theorem mem_is_clause : forall Known C,
  is_list is_clause Known -> mem C Known -> is_clause C. [Show Proof]



Theorem is_count_exists_clause : forall L C,
  is_list is_clause L -> is_clause C -> exists N, count C L N. [Show Proof]



Theorem counts_drop_head[A] : forall (H : A) T X N N',
  count X (H::T) N -> count X T N' -> N >= N'. [Show Proof]



Theorem counts_subset : forall A B,
  is_list is_clause A -> is_list is_clause B ->
  (forall C NA NB, count C A NA -> count C B NB -> NB >= NA) ->
  subset A B. [Show Proof]



Theorem remove_all_reduce_counts : forall K ID KRest V VR X N N',
  remove_all K ID KRest -> values K V -> values KRest VR ->
  count X V N -> count X VR N' ->
  N >= N'. [Show Proof]



Extensible_Theorem
  toDrat_maintains_proof : forall P D KnownL KnownD V,
    IsKnownL : is_list (is_pair is_integer is_clause) KnownL ->
    IsKnownD : is_list is_clause KnownD ->
    IsP : is_proof P ->
    CP : checkProof KnownL P ->
    GCL : good_clause_list KnownL ->
    TD : toDrat KnownL P D ->
    Vals : values KnownL V -> %same clauses are
    Counts : (forall C NA NB,
                count C V NA -> count C KnownD NB -> NB >= NA) ->
    checkDrat KnownD D
  on TD. [Show Proof]


Back to example home