--- /dev/null
+Typechecked:
+d.Num.t125 = dfun.Num.Integer
+d.Num.t133 = dfun.Num.Integer
+d.Eq.t130 = sdsel.Num.Eq tt105 d.Num.t125
+d.Eq.t138 = sdsel.Num.Eq tt121 d.Num.t133
+fromInt.t124 = fromInt tt105 d.Num.t125
+lit.t106 = fromInt.t124 (MkInt 2#)
+fromInt.t126 = fromInt.t124
+lit.t104 = fromInt.t126 (MkInt 1#)
+d.Eq.t131 = dfun.Eq.Bool
+d.Eq.t129 = dfun.Eq.Tuple2 [tt105, Bool] [d.Eq.t130, d.Eq.t131]
+(==.t128) = (==) (tt105, Bool) d.Eq.t129
+(==.t127) = eqList (tt105, Bool) ==.t128
+(==.t102) = eqList [(tt105, Bool)] ==.t127
+(==.t111) = eqString
+fromInt.t132 = fromInt tt121 d.Num.t133
+lit.t122 = fromInt.t132 (MkInt 3#)
+fromInt.t134 = fromInt.t132
+lit.t120 = fromInt.t134 (MkInt 2#)
+fromInt.t135 = fromInt.t134
+lit.t118 = fromInt.t135 (MkInt 1#)
+(==.t137) = (==) tt121 d.Eq.t138
+(==.t136) = eqList tt121 ==.t137
+(==.t116) = eqList [tt121] ==.t136
+AbsBinds [tt19] [d.Num.t24, d.Ord.t28] [(fib.t1, ShouldSucceed.fib)]
+ (fromInt.t23, fromInt tt19 d.Num.t24)
+ (lit.t20, fromInt.t23 (MkInt 2#))
+ (d.Num.t25, d.Num.t24)
+ (-.t18, (-) tt19 d.Num.t25)
+ (fromInt.t26, fromInt.t23)
+ (lit.t14, fromInt.t26 (MkInt 1#))
+ (-.t12, (-.t18))
+ (d.Num.t27, d.Num.t25)
+ (+.t9, (+) tt19 d.Num.t27)
+ (lit.t6, lit.t20)
+ (<=.t4, (<=) tt19 d.Ord.t28)
+ {- rec -}
+ fib.t1 :: tt19 -> tt19
+ fib.t1
+ n.r64 = if n.r64 <=.t4 lit.t6 then
+ n.r64
+ else
+ (fib.t1 (n.r64 -.t12 lit.t14))
+ +.t9 (fib.t1 (n.r64 -.t18 lit.t20))
+AbsBinds [] [] [(oR.t30, ShouldSucceed.oR)]
+ {- nonrec -}
+ oR.t30 :: Bool -> Bool -> Bool
+ oR.t30
+ a.r69 b.r70
+ = if a.r69 then True else b.r70
+AbsBinds [tt41] [d.Eq.t46] [(mem.t34, ShouldSucceed.mem)]
+ (==.t42, (==) tt41 d.Eq.t46)
+ {- rec -}
+ mem.t34 :: tt41 -> [tt41] -> Bool
+ mem.t34
+ x.r65 [] = False
+ mem.t34
+ x.r66 (y.r67 : ys.r68)
+ = (x.r66 ==.t42 y.r67) `ShouldSucceed.oR` (mem.t34 x.r66 ys.r68)
+AbsBinds [] [] [(oR1.t48, ShouldSucceed.oR1)]
+ {- nonrec -}
+ oR1.t48 :: Bool -> Bool -> Bool
+ oR1.t48
+ a.r75 b.r76
+ = if a.r75 then True else b.r76
+AbsBinds
+[tt61]
+[d.Eq.t77]
+[(mem1.t53, ShouldSucceed.mem1), (mem2.t54, ShouldSucceed.mem2)]
+ (==.t62, (==) tt61 d.Eq.t77)
+ (==.t73, (==.t62))
+ {- rec -}
+ mem1.t53 :: tt61 -> [tt61] -> Bool
+ mem1.t53
+ x.r71 [] = False
+ mem1.t53
+ x.r72 (y.r73 : ys.r74)
+ = (x.r72 ==.t62 y.r73)
+ `ShouldSucceed.oR1` (mem2.t54 x.r72 ys.r74)
+ mem2.t54 :: tt61 -> [tt61] -> Bool
+ mem2.t54
+ x.r77 [] = False
+ mem2.t54
+ x.r78 (y.r79 : ys.r80)
+ = (x.r78 ==.t73 y.r79)
+ `ShouldSucceed.oR` (mem1.t53 x.r78 ys.r80)
+AbsBinds
+[tt87]
+[d.Eq.t98]
+[(mem3.t80, ShouldSucceed.mem3), (mem4.t81, ShouldSucceed.mem4)]
+ (==.t97, (==) tt87 d.Eq.t98)
+ (==.t89, eqList tt87 ==.t97)
+ {- rec -}
+ mem3.t80 :: tt87 -> [tt87] -> Bool
+ mem3.t80
+ x.r81 [] = False
+ mem3.t80
+ x.r82 (y.r83 : ys.r84)
+ = if ([x.r82] (tt87)) ==.t89 ([y.r83] (tt87)) then
+ mem4.t81 x.r82 ys.r84
+ else
+ False
+ mem4.t81 :: tt87 -> [tt87] -> Bool
+ mem4.t81
+ y.r87 (x.r85 : xs.r86)
+ = mem3.t80 y.r87 xs.r86
+AbsBinds [] [] [(main1.t100, ShouldSucceed.main1)]
+ {- nonrec -}
+ main1.t100 :: Bool
+ main1.t100
+ = ([[(lit.t104, True)] ((tt105, Bool))] ([(tt105, Bool)]))
+ ==.t102 ([[(lit.t106, False)] ((tt105, Bool))] ([(tt105, Bool)]))
+AbsBinds [] [] [(main2.t109, ShouldSucceed.main2)]
+ {- nonrec -}
+ main2.t109 :: Bool
+ main2.t109 = "Hello" ==.t111 "Goodbye"
+AbsBinds [] [] [(main3.t114, ShouldSucceed.main3)]
+ {- nonrec -}
+ main3.t114 :: Bool
+ main3.t114
+ = ([[lit.t118] (tt121), [lit.t120] (tt121)] ([tt121]))
+ ==.t116 ([[lit.t122] (tt121)] ([tt121]))
+