src/HOL/Meson.thy
changeset 69593 3dda49e08b9d
parent 69144 f13b82281715
child 69605 a96320074298
equal deleted inserted replaced
69592:a80d8ec6c998 69593:3dda49e08b9d
    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>