src/HOL/Library/Countable.thy
changeset 60801 7664e0916eec
parent 60752 b48830b670a1
child 61076 bdc1e2f0a86a
equal deleted inserted replaced
60799:57dd0b45fc21 60801:7664e0916eec
   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,