equal
deleted
inserted
replaced
79 (case Thm.term_of ct of |
79 (case Thm.term_of ct of |
80 \<^Const>\<open>HOL.conj for _ _\<close> => Thm.dest_arg1 ct :: conjuncts (Thm.dest_arg ct) |
80 \<^Const>\<open>HOL.conj for _ _\<close> => Thm.dest_arg1 ct :: conjuncts (Thm.dest_arg ct) |
81 | _ => [ct]); |
81 | _ => [ct]); |
82 |
82 |
83 val list_conj = |
83 val list_conj = |
84 foldr1 (fn (A, B) => \<^let>\<open>A = A and B = B in cterm \<open>A \<and> B\<close>\<close>); |
84 foldr1 (fn (A, B) => \<^instantiate>\<open>A and B in cterm \<open>A \<and> B\<close>\<close>); |
85 |
85 |
86 fun mk_conj_tab th = |
86 fun mk_conj_tab th = |
87 let |
87 let |
88 fun h acc th = |
88 fun h acc th = |
89 (case Thm.prop_of th of |
89 (case Thm.prop_of th of |
142 in |
142 in |
143 case ndx of |
143 case ndx of |
144 [] => NONE |
144 [] => NONE |
145 | _ => |
145 | _ => |
146 conj_aci_rule |
146 conj_aci_rule |
147 \<^let>\<open>A = p and B = \<open>list_conj (ndx @ dx)\<close> in cterm \<open>Trueprop A \<equiv> Trueprop B\<close>\<close> |
147 \<^instantiate>\<open>A = p and B = \<open>list_conj (ndx @ dx)\<close> in cterm \<open>Trueprop A \<equiv> Trueprop B\<close>\<close> |
148 |> Thm.abstract_rule xn x |
148 |> Thm.abstract_rule xn x |
149 |> Drule.arg_cong_rule e |
149 |> Drule.arg_cong_rule e |
150 |> Conv.fconv_rule |
150 |> Conv.fconv_rule |
151 (Conv.arg_conv |
151 (Conv.arg_conv |
152 (Simplifier.rewrite |
152 (Simplifier.rewrite |
153 (put_simpset HOL_basic_ss ctxt addsimps @{thms simp_thms ex_simps}))) |
153 (put_simpset HOL_basic_ss ctxt addsimps @{thms simp_thms ex_simps}))) |
154 |> SOME |
154 |> SOME |
155 end |
155 end |
156 | _ => |
156 | _ => |
157 conj_aci_rule |
157 conj_aci_rule |
158 \<^let>\<open>A = p and B = \<open>list_conj (eqs @ neqs)\<close> in cterm \<open>Trueprop A \<equiv> Trueprop B\<close>\<close> |
158 \<^instantiate>\<open>A = p and B = \<open>list_conj (eqs @ neqs)\<close> in cterm \<open>Trueprop A \<equiv> Trueprop B\<close>\<close> |
159 |> Thm.abstract_rule xn x |> Drule.arg_cong_rule e |
159 |> Thm.abstract_rule xn x |> Drule.arg_cong_rule e |
160 |> Conv.fconv_rule |
160 |> Conv.fconv_rule |
161 (Conv.arg_conv |
161 (Conv.arg_conv |
162 (Simplifier.rewrite |
162 (Simplifier.rewrite |
163 (put_simpset HOL_basic_ss ctxt addsimps @{thms simp_thms ex_simps}))) |
163 (put_simpset HOL_basic_ss ctxt addsimps @{thms simp_thms ex_simps}))) |