src/HOL/Nominal/nominal_inductive2.ML
changeset 60642 48dd1cefb4ae
parent 60359 cb8828b859a1
child 60754 02924903a6fd
equal deleted inserted replaced
60641:f6e8293747fd 60642:48dd1cefb4ae
   144   in (Logic.list_all (params, t), (rev vs, subst_bounds (vs, t))) end;
   144   in (Logic.list_all (params, t), (rev vs, subst_bounds (vs, t))) end;
   145 
   145 
   146 fun inst_params thy (vs, p) th cts =
   146 fun inst_params thy (vs, p) th cts =
   147   let val env = Pattern.first_order_match thy (p, Thm.prop_of th)
   147   let val env = Pattern.first_order_match thy (p, Thm.prop_of th)
   148     (Vartab.empty, Vartab.empty)
   148     (Vartab.empty, Vartab.empty)
   149   in Thm.instantiate ([],
   149   in Thm.instantiate ([], map (dest_Var o Envir.subst_term env) vs ~~ cts) th end;
   150     map (Envir.subst_term env #> Thm.global_cterm_of thy) vs ~~ cts) th
       
   151   end;
       
   152 
   150 
   153 fun prove_strong_ind s alt_name avoids ctxt =
   151 fun prove_strong_ind s alt_name avoids ctxt =
   154   let
   152   let
   155     val thy = Proof_Context.theory_of ctxt;
   153     val thy = Proof_Context.theory_of ctxt;
   156     val ({names, ...}, {raw_induct, intrs, elims, ...}) =
   154     val ({names, ...}, {raw_induct, intrs, elims, ...}) =