equal
deleted
inserted
replaced
26 |
26 |
27 lemma imp_to_disjD: "P\<longrightarrow>Q \<Longrightarrow> \<not>P \<or> Q" |
27 lemma imp_to_disjD: "P\<longrightarrow>Q \<Longrightarrow> \<not>P \<or> Q" |
28 and not_impD: "\<not>(P\<longrightarrow>Q) \<Longrightarrow> P \<and> \<not>Q" |
28 and not_impD: "\<not>(P\<longrightarrow>Q) \<Longrightarrow> P \<and> \<not>Q" |
29 and iff_to_disjD: "P=Q \<Longrightarrow> (\<not>P \<or> Q) \<and> (\<not>Q \<or> P)" |
29 and iff_to_disjD: "P=Q \<Longrightarrow> (\<not>P \<or> Q) \<and> (\<not>Q \<or> P)" |
30 and not_iffD: "\<not>(P=Q) \<Longrightarrow> (P \<or> Q) \<and> (\<not>P \<or> \<not>Q)" |
30 and not_iffD: "\<not>(P=Q) \<Longrightarrow> (P \<or> Q) \<and> (\<not>P \<or> \<not>Q)" |
31 \<comment> \<open>Much more efficient than @{prop "(P \<and> \<not>Q) \<or> (Q \<and> \<not>P)"} for computing CNF\<close> |
31 \<comment> \<open>Much more efficient than \<^prop>\<open>(P \<and> \<not>Q) \<or> (Q \<and> \<not>P)\<close> for computing CNF\<close> |
32 and not_refl_disj_D: "x \<noteq> x \<or> P \<Longrightarrow> P" |
32 and not_refl_disj_D: "x \<noteq> x \<or> P \<Longrightarrow> P" |
33 by fast+ |
33 by fast+ |
34 |
34 |
35 |
35 |
36 subsection \<open>Pulling out the existential quantifiers\<close> |
36 subsection \<open>Pulling out the existential quantifiers\<close> |
68 |
68 |
69 text\<open>Version for Plaisted's "Postive refinement" of the Meson procedure\<close> |
69 text\<open>Version for Plaisted's "Postive refinement" of the Meson procedure\<close> |
70 lemma make_refined_neg_rule: "\<not>P\<or>Q \<Longrightarrow> (P \<Longrightarrow> Q)" |
70 lemma make_refined_neg_rule: "\<not>P\<or>Q \<Longrightarrow> (P \<Longrightarrow> Q)" |
71 by blast |
71 by blast |
72 |
72 |
73 text\<open>@{term P} should be a literal\<close> |
73 text\<open>\<^term>\<open>P\<close> should be a literal\<close> |
74 lemma make_pos_rule: "P\<or>Q \<Longrightarrow> ((P\<Longrightarrow>\<not>P) \<Longrightarrow> Q)" |
74 lemma make_pos_rule: "P\<or>Q \<Longrightarrow> ((P\<Longrightarrow>\<not>P) \<Longrightarrow> Q)" |
75 by blast |
75 by blast |
76 |
76 |
77 text\<open>Versions of \<open>make_neg_rule\<close> and \<open>make_pos_rule\<close> that don't |
77 text\<open>Versions of \<open>make_neg_rule\<close> and \<open>make_pos_rule\<close> that don't |
78 insert new assumptions, for ordinary resolution.\<close> |
78 insert new assumptions, for ordinary resolution.\<close> |