equal
deleted
inserted
replaced
180 val alist = pred_names ~~ induct_thms |
180 val alist = pred_names ~~ induct_thms |
181 val induct_thm = the (AList.lookup (op =) alist pred_name) |
181 val induct_thm = the (AList.lookup (op =) alist pred_name) |
182 val vars = rev (Term.add_vars (Thm.prop_of induct_thm) []) |
182 val vars = rev (Term.add_vars (Thm.prop_of induct_thm) []) |
183 val insts = vars |> map (fn (_, T) => try (Thm.cterm_of ctxt) |
183 val insts = vars |> map (fn (_, T) => try (Thm.cterm_of ctxt) |
184 (Const (@{const_name Countable.finite_item}, T))) |
184 (Const (@{const_name Countable.finite_item}, T))) |
185 val induct_thm' = Drule.instantiate' [] insts induct_thm |
185 val induct_thm' = Thm.instantiate' [] insts induct_thm |
186 val rules = @{thms finite_item.intros} |
186 val rules = @{thms finite_item.intros} |
187 in |
187 in |
188 SOLVED' (fn i => EVERY |
188 SOLVED' (fn i => EVERY |
189 [resolve_tac ctxt @{thms countable_datatype} i, |
189 [resolve_tac ctxt @{thms countable_datatype} i, |
190 resolve_tac ctxt [typedef_thm] i, |
190 resolve_tac ctxt [typedef_thm] i, |