Theory Resolution_Sound
theory Resolution_Sound
imports Resolution CNF_Formulas_Sema
begin
lemma Resolution_insert: "S β’ R βΉ cnf_semantics π S βΉ cnf_semantics π {R}"
by(induction rule: Resolution.induct;
clarsimp simp add: cnf_semantics_def clause_semantics_def lit_semantics_cases split: literal.splits;
blast)
lemma "S β’ R βΉ cnf_semantics π S β· cnf_semantics π (R βΉ S)"
using Resolution_insert cnf_semantics_def by (metis insert_iff)
corollary Resolution_cnf_sound: assumes "S β’ β‘" shows "Β¬ cnf_semantics π S"
proof(rule notI)
assume "cnf_semantics π S"
with Resolution_insert assms have "cnf_semantics π {β‘}" .
thus False by(simp add: cnf_semantics_def clause_semantics_def)
qed
corollary Resolution_sound:
assumes rp: "cnf (nnf F) β’ β‘"
shows "Β¬ π β¨ F"
proof -
from Resolution_cnf_sound rp have "Β¬ cnf_semantics π (cnf (nnf F))" .
hence "Β¬π β¨ nnf F" unfolding cnf_semantics[OF is_nnf_nnf] .
thus ?thesis unfolding nnf_semantics .
qed
end