equal
deleted
inserted
replaced
176 (Simplifier.simp_tac (put_simpset curry_uncurry_ss ctxt) 3 (* discharge U (C f) = f *) |
176 (Simplifier.simp_tac (put_simpset curry_uncurry_ss ctxt) 3 (* discharge U (C f) = f *) |
177 THEN Simplifier.simp_tac (put_simpset curry_K_ss ctxt) 4 (* simplify bot case *) |
177 THEN Simplifier.simp_tac (put_simpset curry_K_ss ctxt) 4 (* simplify bot case *) |
178 THEN Simplifier.full_simp_tac (put_simpset curry_uncurry_ss ctxt) 5) (* simplify induction step *) |
178 THEN Simplifier.full_simp_tac (put_simpset curry_uncurry_ss ctxt) 5) (* simplify induction step *) |
179 |> (fn thm => thm OF [mono_thm, f_def]) |
179 |> (fn thm => thm OF [mono_thm, f_def]) |
180 |> Conv.fconv_rule (Conv.concl_conv ~1 (* simplify conclusion *) |
180 |> Conv.fconv_rule (Conv.concl_conv ~1 (* simplify conclusion *) |
181 (Raw_Simplifier.rewrite ctxt false [mk_meta_eq @{thm Product_Type.curry_case_prod}])) |
181 (Raw_Simplifier.rewrite_wrt ctxt false [mk_meta_eq @{thm Product_Type.curry_case_prod}])) |
182 |> singleton (Variable.export ctxt' ctxt) |
182 |> singleton (Variable.export ctxt' ctxt) |
183 end |
183 end |
184 |
184 |
185 fun mk_curried_induct args ctxt inst_rule = |
185 fun mk_curried_induct args ctxt inst_rule = |
186 let |
186 let |