src/HOL/Tools/function_package/mutual.ML
changeset 26653 60e0cf6bef89
parent 26529 03ad378ed5f0
child 28083 103d9282a946
equal deleted inserted replaced
26652:43310f3721a5 26653:60e0cf6bef89
   220       val xs = map_index (fn (i,T) => cterm_of thy (Free ("x" ^ string_of_int i, T))) caTs (* FIXME: Bind xs properly *)
   220       val xs = map_index (fn (i,T) => cterm_of thy (Free ("x" ^ string_of_int i, T))) caTs (* FIXME: Bind xs properly *)
   221     in
   221     in
   222       fold (fn x => fn thm => combination thm (reflexive x)) xs thm
   222       fold (fn x => fn thm => combination thm (reflexive x)) xs thm
   223            |> Conv.fconv_rule (Thm.beta_conversion true)
   223            |> Conv.fconv_rule (Thm.beta_conversion true)
   224            |> fold_rev forall_intr xs
   224            |> fold_rev forall_intr xs
   225            |> forall_elim_vars 0
   225            |> Thm.forall_elim_vars 0
   226     end
   226     end
   227 
   227 
   228 
   228 
   229 fun mutual_induct_rules lthy induct all_f_defs (Mutual {n, ST, RST, parts, ...}) =
   229 fun mutual_induct_rules lthy induct all_f_defs (Mutual {n, ST, RST, parts, ...}) =
   230     let
   230     let