Module unsat_proofs:drat
Builds on unsat_proofs:lrat
dratProof ::= addDratEmpty
| addDratClause(clause, dratProof)
| deleteDrat(clause, dratProof)
Projection dratProof :
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
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
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]