src/HOL/Codatatype/Tools/bnf_fp_sugar.ML
changeset 50236 6d8d5fe9f3a2
parent 50235 a6260b4fb410
child 50239 60a0394d98f7
     1.1 --- a/src/HOL/Codatatype/Tools/bnf_fp_sugar.ML	Sat Sep 08 21:04:27 2012 +0200
     1.2 +++ b/src/HOL/Codatatype/Tools/bnf_fp_sugar.ML	Sat Sep 08 21:21:27 2012 +0200
     1.3 @@ -222,6 +222,9 @@
     1.4          end
     1.5        else
     1.6          let
     1.7 +          (*avoid "'a itself" arguments in coiterators and corecursors*)
     1.8 +          val mss' =  map (fn [0] => [1] | ms => ms) mss;
     1.9 +
    1.10            val p_Tss =
    1.11              map2 (fn C => fn n => replicate (Int.max (0, n - 1)) (C --> HOLogic.boolT)) Cs ns;
    1.12  
    1.13 @@ -233,7 +236,7 @@
    1.14                val f_sum_prod_Ts = map range_type fun_Ts;
    1.15                val f_prod_Tss = map2 dest_sumTN ns f_sum_prod_Ts;
    1.16                val f_Tsss =
    1.17 -                map3 (fn C => map2 (map (curry (op -->) C) oo dest_tupleT)) Cs mss f_prod_Tss;
    1.18 +                map3 (fn C => map2 (map (curry (op -->) C) oo dest_tupleT)) Cs mss' f_prod_Tss;
    1.19                val pf_Tss = map2 popescu_zip p_Tss f_Tsss
    1.20              in (f_sum_prod_Ts, f_prod_Tss, f_Tsss, pf_Tss) end;
    1.21