src/HOL/Codatatype/Tools/bnf_fp_sugar.ML
changeset 50283 9e9dd498fb23
parent 50282 c96a07255e10
child 50288 f839ce127a2e
     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