1.1 --- a/src/HOL/Codatatype/Tools/bnf_fp_sugar.ML Tue Sep 11 09:40:05 2012 +0200
1.2 +++ b/src/HOL/Codatatype/Tools/bnf_fp_sugar.ML Tue Sep 11 09:40:05 2012 +0200
1.3 @@ -58,9 +58,10 @@
1.4 fun tick v f = Term.lambda v (HOLogic.mk_prod (v, f $ v));
1.5
1.6 fun tack z_name (c, v) f =
1.7 - let val z = Free (z_name, mk_sumT (fastype_of v, fastype_of c)) in
1.8 - Term.lambda z (mk_sum_case (Term.lambda v v, Term.lambda c (f $ c)) $ z)
1.9 - end;
1.10 + let
1.11 + val T = fastype_of v;
1.12 + val z = Free (z_name, mk_sumT (T, fastype_of c))
1.13 + in Term.lambda z (mk_sum_case (mk_id T, Term.lambda c (f $ c)) $ z) end;
1.14
1.15 fun cannot_merge_types () = error "Mutually recursive types must have the same type parameters";
1.16