src/HOL/Tools/function_package/mutual.ML
changeset 19876 11d447d5d68c
parent 19782 48c4632e2c28
child 19922 984ae977f7aa
equal deleted inserted replaced
19875:7405ce9d4f25 19876:11d447d5d68c
   154 	val plain_eq = sum_psimp
   154 	val plain_eq = sum_psimp
   155                          |> fold (implies_elim_swp o assume) conds
   155                          |> fold (implies_elim_swp o assume) conds
   156 
   156 
   157 	val x = Free ("x", RST)
   157 	val x = Free ("x", RST)
   158 
   158 
   159 	val f_def_inst = instantiate' [] (map (SOME o cterm_of thy) args) (freezeT f_def) (* FIXME: freezeT *)
   159 	val f_def_inst = instantiate' [] (map (SOME o cterm_of thy) args) (Thm.freezeT f_def) (* FIXME: freezeT *)
   160     in
   160     in
   161 	reflexive (cterm_of thy (lambda x (SumTools.mk_proj streeR pthR x)))  (*  PR(x) == PR(x) *)
   161 	reflexive (cterm_of thy (lambda x (SumTools.mk_proj streeR pthR x)))  (*  PR(x) == PR(x) *)
   162 		  |> (fn it => combination it (plain_eq RS eq_reflection))
   162 		  |> (fn it => combination it (plain_eq RS eq_reflection))
   163 		  |> beta_norm_eq (*  PR(S(I(as))) == PR(IR(...)) *)
   163 		  |> beta_norm_eq (*  PR(S(I(as))) == PR(IR(...)) *)
   164 		  |> transitive f_def_inst (*  f ... == PR(IR(...)) *)
   164 		  |> transitive f_def_inst (*  f ... == PR(IR(...)) *)