Desugared: Test.f :: for all d. d -> d Test.f = /\ o95 -> \ x.129 -> x.129 Test.g :: for all d, e, f. d -> e -> f -> f Test.g = /\ o98 o99 t101 -> \ x.130 y.131 z.132 -> (Test.f t101) z.132 Test.j :: for all d, e, f, g. d -> e -> f -> g -> g Test.j = /\ t108 t109 o106 t110 -> \ w.133 x.134 y.135 z.136 -> (((Test.g t108) t109) t110) w.133 x.134 z.136 Test.h :: for all d, e, f. d -> f -> e -> f Test.h = /\ o113 t119 t120 -> \ x.139 y.140 -> let f.145 = /\ o141 o142 -> \ a.143 b.144 -> a.143 in ((f.145 t119) t120) y.140 Test.b :: for all d. d -> d Test.b = /\ t123 -> Test.f t123 Test.a :: for all d. d -> d Test.a = /\ t126 -> Test.b t126 {- plain CoRec -} Test.c :: for all d. d Test.c = /\ t127 -> Test.c t127 {- end plain CoRec -}