update baked in CoqPass.hs
authorgentzen <root@gentzen.megacz.com>
Mon, 6 Jun 2011 14:16:30 +0000 (07:16 -0700)
committerAdam Megacz <megacz@gentzen.megacz.com>
Mon, 6 Jun 2011 14:16:30 +0000 (07:16 -0700)
build/CoqPass.hs

index cc34454..5c0f49b 100644 (file)
@@ -3491,6 +3491,23 @@ factorContextLeftAndWeaken eqd_vv __U0393_0 __U0394_0 v ctx __U03be_0 =
                                                      in mapOptionTree0 (trace "X" (__U03be_0)) (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" (((:) (trace "X" (v)) (trace "X" (([])))))) (trace "X" (ctx)))))))))))) (trace "X" ((AWeak (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((trace "X" ((__U03be_0 (trace "X" (v)))))))))))))))))))));
                            Prelude.Right a -> (trace "X" (a))}))))
 
+factorContextLeftAndWeaken'' :: (EqDecidable a1) -> TypeEnv -> CoercionEnv -> (Tree (Prelude.Maybe a1)) -> (a1 -> LeveledHaskType) -> (Tree (Prelude.Maybe a1)) -> Arrange LeveledHaskType
+factorContextLeftAndWeaken'' eqd_vv __U0393_0 __U0394_0 v __U03be_0 ctx =
+  (trace "X" ((trace "X" (tree_rect (trace "X" ((\a ctx0 _ ->
+                            (trace "X" (case (trace "X" (a)) of {
+                                         Prelude.Just v0 -> (trace "X" ((trace "X" (factorContextLeftAndWeaken (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (v0)) (trace "X" (ctx0)) (trace "X" (__U03be_0))))));
+                                         Prelude.Nothing ->
+                                          (trace "X" ((trace "X" (eq_rect_r (trace "X" (ctx0)) (trace "X" ((AuCanL
+                                                                    (trace "X" ((trace "X" ((let {
+                                                                                              mapOptionTree0 f t =
+                                                                                                (trace "X" (case (trace "X" (t)) of {
+                                                                                                             T_Leaf o ->
+                                                                                                              (trace "X" (case (trace "X" (o)) of {
+                                                                                                                           Prelude.Just x -> (trace "X" (T_Leaf (trace "X" ((Prelude.Just (trace "X" ((trace "X" ((f (trace "X" (x))))))))))));
+                                                                                                                           Prelude.Nothing -> (trace "X" (T_Leaf (trace "X" (Prelude.Nothing))))}));
+                                                                                                             T_Branch l r -> (trace "X" (T_Branch (trace "X" ((trace "X" ((mapOptionTree0 (trace "X" (f)) (trace "X" (l))))))) (trace "X" ((trace "X" ((mapOptionTree0 (trace "X" (f)) (trace "X" (r)))))))))}))}
+                                                                                             in mapOptionTree0 (trace "X" (__U03be_0)) (trace "X" (ctx0)))))))))) (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" (([]))) (trace "X" (ctx0)))))))))))}))))) (trace "X" ((\v1 iHv1 v2 iHv2 ctx0 _ -> (trace "X" (let {iHv1' = (trace "X" ((trace "X" (iHv1 (trace "X" ((T_Branch (trace "X" (v2)) (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" ((trace "X" ((leaves (trace "X" (v2))))))) (trace "X" (ctx0))))))))))))))} in (trace "X" ((trace "X" (eq_rect (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" ((trace "X" ((leaves (trace "X" (v1))))))) (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" ((trace "X" ((leaves (trace "X" (v2))))))) (trace "X" (ctx0)))))))))))) (trace "X" ((let {iHv1'0 = (trace "X" ((trace "X" (eq_rect (trace "X" ((trace "X" ((mapOptionTree' (trace "X" ((trace "X" ((dropVar (trace "X" (eqd_vv)) (trace "X" ((trace "X" ((leaves (trace "X" (v1)))))))))))) (trace "X" (v2))))))) (trace "X" (iHv1')) (trace "X" (v2))))))} in (trace "X" (AComp (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" (ctx0))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" (v1))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" (v2))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" ((trace "X" ((leaves (trace "X" (v1))))))) (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" ((trace "X" ((leaves (trace "X" (v2))))))) (trace "X" (ctx0))))))))))))))))))))))) (trace "X" ((T_Branch (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" (v1))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" (v2)))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" ((trace "X" ((leaves (trace "X" (v1))))))) (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" ((trace "X" ((leaves (trace "X" (v2))))))) (trace "X" (ctx0)))))))))))))))))))) (trace "X" ((AComp (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" (ctx0))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" (v2))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" ((trace "X" ((leaves (trace "X" (v2))))))) (trace "X" (ctx0))))))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" (v1))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" (v2))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" ((trace "X" ((leaves (trace "X" (v1))))))) (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" ((trace "X" ((leaves (trace "X" (v2))))))) (trace "X" (ctx0))))))))))))))))))))))) (trace "X" ((trace "X" ((iHv2 (trace "X" (ctx0)) (trace "X" (__))))))) (trace "X" ((trace "X" ((iHv1'0 (trace "X" (__)))))))))) (trace "X" ((AAssoc (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" (v1))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" (v2))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" ((trace "X" ((leaves (trace "X" (v1))))))) (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" ((trace "X" ((leaves (trace "X" (v2))))))) (trace "X" (ctx0))))))))))))))))))))))))) (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" ((trace "X" ((app (trace "X" ((trace "X" ((leaves (trace "X" (v1))))))) (trace "X" ((trace "X" ((leaves (trace "X" (v2)))))))))))) (trace "X" (ctx0)))))))))))))))) (trace "X" (v)) (trace "X" (ctx)) (trace "X" (__))))))
+
 factorContextRightAndWeaken :: (EqDecidable a1) -> TypeEnv -> CoercionEnv -> a1 -> (Tree (Prelude.Maybe a1)) -> (a1 -> LeveledHaskType) -> Arrange LeveledHaskType
 factorContextRightAndWeaken eqd_vv __U0393_0 __U0394_0 v ctx __U03be_0 =
   (trace "X" (let {q = (trace "X" ((trace "X" (factorContextRight (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (v)) (trace "X" (ctx)) (trace "X" (__U03be_0))))))} in
@@ -3533,7 +3550,7 @@ letRecSubproofsToND eqd_vv __U0393_0 __U0394_0 __U03be_0 lev tree branches x =
 
 letRecSubproofsToND' :: (EqDecidable a1) -> TypeEnv -> CoercionEnv -> (a1 -> LeveledHaskType) -> HaskLevel -> HaskType -> (Tree (Prelude.Maybe ((,) a1 HaskType))) -> (ELetRecBindings a1) -> (Expr a1) -> (ND Judg Rule) -> (LetRecSubproofs a1) -> ND Judg Rule
 letRecSubproofsToND' eqd_vv __U0393_0 __U0394_0 __U03be_0 lev __U03c4_ tree branches body pf lrsp =
-  (trace "X" (let {__U03be_' = (trace "X" ((trace "X" (update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))} in (trace "X" (let {pctx = (trace "X" ((trace "X" (mapOptionTree (trace "X" (fst)) (trace "X" (tree))))))} in (trace "X" (let {z = (trace "X" (\a b x -> (trace "X" (RLetRec (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (a)) (trace "X" (b)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (snd)) (trace "X" (tree))))))) (trace "X" (x))))))} in (trace "X" (Nd_comp (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (__U03c4_)) (trace "X" (lev)) (trace "X" ((ELetRec (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" (__U03c4_)) (trace "X" (tree)) (trace "X" (branches)) (trace "X" (body))))))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (lev))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (snd)) (trace "X" (tree))))))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" (snd)) (trace "X" (tree))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (__U03c4_))))))))))) (trace "X" (lev))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (__U03c4_)) (trace "X" (lev)) (trace "X" ((ELetRec (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" (__U03c4_)) (trace "X" (tree)) (trace "X" (branches)) (trace "X" (body))))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (__U03c4_)))))))) (trace "X" (lev))))))))))) (trace "X" ((let {q' = (trace "X" (\_ -> (trace "X" ((trace "X" (factorContextRightAndWeaken'' (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (pctx)) (trace "X" (__U03be_')) (trace "X" ((T_Branch (trace "X" ((trace "X" ((eLetRecContext (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_')) (trace "X" (lev)) (trace "X" (tree)) (trace "X" (branches))))))) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_')) (trace "X" (__U03c4_)) (trace "X" (lev)) (trace "X" (body))))))))))))))))} in (trace "X" (let {q'' = (trace "X" ((trace "X" (q' (trace "X" (__))))))} in (trace "X" (let {q''0 = (trace "X" ((trace "X" (eq_rect (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" ((trace "X" ((leaves (trace "X" ((trace "X" ((mapOptionTree (trace "X" (fst)) (trace "X" (tree)))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((eLetRecContext (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" (lev)) (trace "X" (tree)) (trace "X" (branches))))))) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" (__U03c4_)) (trace "X" (lev)) (trace "X" (body)))))))))))))))))))) (trace "X" (q'')) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" ((trace "X" ((leaves (trace "X" ((trace "X" ((mapOptionTree (trace "X" (fst)) (trace "X" (tree)))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((eLetRecContext (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" (lev)) (trace "X" (tree)) (trace "X" (branches))))))) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" (__U03c4_)) (trace "X" (lev)) (trace "X" (body))))))))))))))))))))))))} in (trace "X" (let {q''1 = (trace "X" ((trace "X" (eq_rect_r (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (fst)) (trace "X" (tree)))))))))))) (trace "X" (q''0)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x -> (trace "X" ((trace "X" (update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree))))))) (trace "X" ((trace "X" ((fst (trace "X" (x)))))))))))))) (trace "X" (tree)))))))))))} in (trace "X" ((trace "X" (eq_rect (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x -> (trace "X" ((trace "X" (update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree))))))) (trace "X" ((trace "X" ((fst (trace "X" (x)))))))))))))) (trace "X" (tree))))))) (trace "X" ((Nd_comp (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((eLetRecContext (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" (lev)) (trace "X" (tree)) (trace "X" (branches))))))) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" (__U03c4_)) (trace "X" (lev)) (trace "X" (body))))))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" (snd)) (trace "X" (tree))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (__U03c4_))))))))))) (trace "X" (lev))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" ((trace "X" ((leaves (trace "X" ((trace "X" ((mapOptionTree (trace "X" (fst)) (trace "X" (tree)))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((eLetRecContext (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" (lev)) (trace "X" (tree)) (trace "X" (branches))))))) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" (__U03c4_)) (trace "X" (lev)) (trace "X" (body)))))))))))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x -> (trace "X" ((trace "X" (update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree))))))) (trace "X" ((trace "X" ((fst (trace "X" (x)))))))))))))) (trace "X" (tree)))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" (snd)) (trace "X" (tree))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (__U03c4_))))))))))) (trace "X" (lev))))))))))) (trace "X" ((let {q = (trace "X" ((trace "X" (letRecSubproofsToND (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" (lev)) (trace "X" (tree)) (trace "X" (branches)) (trace "X" (lrsp))))))} in (trace "X" (Nd_comp (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing))))) (trace "X" ((T_Branch (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" ((trace "X" ((eLetRecContext (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" (lev)) (trace "X" (tree)) (trace "X" (branches)))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (snd)) (trace "X" (tree))))))) (trace "X" (lev))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (lev))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (snd)) (trace "X" (tree)))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" (__U03c4_)) (trace "X" (lev)) (trace "X" (body))))))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" (snd)) (trace "X" (tree))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (__U03c4_))))))))))) (trace "X" (lev)))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" ((trace "X" ((eLetRecContext (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" (lev)) (trace "X" (tree)) (trace "X" (branches)))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" (__U03c4_)) (trace "X" (lev)) (trace "X" (body))))))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" (snd)) (trace "X" (tree))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (__U03c4_))))))))))) (trace "X" (lev))))))))))) (trace "X" ((Nd_comp (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing))))) (trace "X" ((T_Branch (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing))))) (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing)))))))) (trace "X" ((T_Branch (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" ((trace "X" ((eLetRecContext (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" (lev)) (trace "X" (tree)) (trace "X" (branches)))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (snd)) (trace "X" (tree))))))) (trace "X" (lev))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (lev))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (snd)) (trace "X" (tree)))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" (__U03c4_)) (trace "X" (lev)) (trace "X" (body))))))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" (snd)) (trace "X" (tree))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (__U03c4_))))))))))) (trace "X" (lev)))))))))))))) (trace "X" ((Nd_llecnac (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing)))))))) (trace "X" ((Nd_prod (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing))))) (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" ((trace "X" ((eLetRecContext (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" (lev)) (trace "X" (tree)) (trace "X" (branches)))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (snd)) (trace "X" (tree))))))) (trace "X" (lev))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (lev))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (snd)) (trace "X" (tree)))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" (__U03c4_)) (trace "X" (lev)) (trace "X" (body))))))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" (snd)) (trace "X" (tree))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (__U03c4_))))))))))) (trace "X" (lev))))))))))) (trace "X" (q)) (trace "X" ((Nd_comp (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" (__U03c4_)) (trace "X" (lev)) (trace "X" (body)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (__U03c4_)))))))) (trace "X" (lev))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (lev))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (snd)) (trace "X" (tree)))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" (__U03c4_)) (trace "X" (lev)) (trace "X" (body))))))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" (snd)) (trace "X" (tree))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (__U03c4_))))))))))) (trace "X" (lev))))))))))) (trace "X" (pf)) (trace "X" ((Nd_rule (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" (__U03c4_)) (trace "X" (lev)) (trace "X" (body)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (__U03c4_)))))))) (trace "X" (lev))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (lev))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (snd)) (trace "X" (tree)))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" (__U03c4_)) (trace "X" (lev)) (trace "X" (body))))))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" (snd)) (trace "X" (tree))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (__U03c4_))))))))))) (trace "X" (lev))))))))))) (trace "X" ((RLeft (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" (__U03c4_)) (trace "X" (lev)) (trace "X" (body)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (__U03c4_)))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (snd)) (trace "X" (tree))))))) (trace "X" (lev))))))))))))))))) (trace "X" ((trace "X" ((rCut' (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" ((trace "X" ((eLetRecContext (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" (lev)) (trace "X" (tree)) (trace "X" (branches)))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (snd)) (trace "X" (tree))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" (__U03c4_)) (trace "X" (lev)) (trace "X" (body)))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" (snd)) (trace "X" (tree))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (__U03c4_))))))))))) (trace "X" (lev)))))))))))) (trace "X" ((Nd_rule (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((eLetRecContext (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" (lev)) (trace "X" (tree)) (trace "X" (branches))))))) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" (__U03c4_)) (trace "X" (lev)) (trace "X" (body))))))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" (snd)) (trace "X" (tree))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (__U03c4_))))))))))) (trace "X" (lev))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" ((trace "X" ((leaves (trace "X" ((trace "X" ((mapOptionTree (trace "X" (fst)) (trace "X" (tree)))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((eLetRecContext (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" (lev)) (trace "X" (tree)) (trace "X" (branches))))))) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" (__U03c4_)) (trace "X" (lev)) (trace "X" (body)))))))))))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x -> (trace "X" ((trace "X" (update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree))))))) (trace "X" ((trace "X" ((fst (trace "X" (x)))))))))))))) (trace "X" (tree)))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" (snd)) (trace "X" (tree))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (__U03c4_))))))))))) (trace "X" (lev))))))))))) (trace "X" ((RArrange (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((eLetRecContext (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" (lev)) (trace "X" (tree)) (trace "X" (branches))))))) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" (__U03c4_)) (trace "X" (lev)) (trace "X" (body))))))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" ((trace "X" ((leaves (trace "X" ((trace "X" ((mapOptionTree (trace "X" (fst)) (trace "X" (tree)))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((eLetRecContext (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" (lev)) (trace "X" (tree)) (trace "X" (branches))))))) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" (__U03c4_)) (trace "X" (lev)) (trace "X" (body)))))))))))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x -> (trace "X" ((trace "X" (update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree))))))) (trace "X" ((trace "X" ((fst (trace "X" (x)))))))))))))) (trace "X" (tree)))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" (snd)) (trace "X" (tree))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (__U03c4_))))))))))) (trace "X" (lev)) (trace "X" (q''1))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t -> (trace "X" (MkLeveledHaskType (trace "X" (t)) (trace "X" (lev))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (snd)) (trace "X" (tree))))))))))))))))))))))))) (trace "X" ((Nd_rule (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (__U03c4_)) (trace "X" (lev)) (trace "X" ((ELetRec (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" (__U03c4_)) (trace "X" (tree)) (trace "X" (branches)) (trace "X" (body))))))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (lev))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (snd)) (trace "X" (tree))))))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" (snd)) (trace "X" (tree))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (__U03c4_))))))))))) (trace "X" (lev))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (__U03c4_)) (trace "X" (lev)) (trace "X" ((ELetRec (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" (__U03c4_)) (trace "X" (tree)) (trace "X" (branches)) (trace "X" (body))))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (__U03c4_)))))))) (trace "X" (lev))))))))))) (trace "X" ((trace "X" ((z (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (__U03c4_)) (trace "X" (lev)) (trace "X" ((ELetRec (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" (__U03c4_)) (trace "X" (tree)) (trace "X" (branches)) (trace "X" (body))))))))))))))) (trace "X" (__U03c4_)) (trace "X" (lev))))))))))))))))))
+  (trace "X" (let {__U03be_' = (trace "X" ((trace "X" (update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))} in (trace "X" (let {pctx = (trace "X" ((trace "X" (mapOptionTree (trace "X" (fst)) (trace "X" (tree))))))} in (trace "X" (let {z = (trace "X" (\a b x -> (trace "X" (RLetRec (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (a)) (trace "X" (b)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (snd)) (trace "X" (tree))))))) (trace "X" (x))))))} in (trace "X" (Nd_comp (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (lev))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (snd)) (trace "X" (tree)))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (__U03c4_)) (trace "X" (lev)) (trace "X" ((ELetRec (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" (__U03c4_)) (trace "X" (tree)) (trace "X" (branches)) (trace "X" (body)))))))))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" (snd)) (trace "X" (tree))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (__U03c4_))))))))))) (trace "X" (lev))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (__U03c4_)) (trace "X" (lev)) (trace "X" ((ELetRec (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" (__U03c4_)) (trace "X" (tree)) (trace "X" (branches)) (trace "X" (body))))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (__U03c4_)))))))) (trace "X" (lev))))))))))) (trace "X" ((let {q' = (trace "X" (\_ -> (trace "X" ((trace "X" (factorContextLeftAndWeaken'' (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (pctx)) (trace "X" (__U03be_')) (trace "X" ((T_Branch (trace "X" ((trace "X" ((eLetRecContext (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_')) (trace "X" (lev)) (trace "X" (tree)) (trace "X" (branches))))))) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_')) (trace "X" (__U03c4_)) (trace "X" (lev)) (trace "X" (body))))))))))))))))} in (trace "X" (let {q'' = (trace "X" ((trace "X" (q' (trace "X" (__))))))} in (trace "X" (let {q''0 = (trace "X" ((trace "X" (eq_rect (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" ((trace "X" ((leaves (trace "X" ((trace "X" ((mapOptionTree (trace "X" (fst)) (trace "X" (tree)))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((eLetRecContext (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" (lev)) (trace "X" (tree)) (trace "X" (branches))))))) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" (__U03c4_)) (trace "X" (lev)) (trace "X" (body)))))))))))))))))))) (trace "X" (q'')) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" ((trace "X" ((leaves (trace "X" ((trace "X" ((mapOptionTree (trace "X" (fst)) (trace "X" (tree)))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((eLetRecContext (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" (lev)) (trace "X" (tree)) (trace "X" (branches))))))) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" (__U03c4_)) (trace "X" (lev)) (trace "X" (body))))))))))))))))))))))))} in (trace "X" (let {q''1 = (trace "X" ((trace "X" (eq_rect_r (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (fst)) (trace "X" (tree)))))))))))) (trace "X" (q''0)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x -> (trace "X" ((trace "X" (update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree))))))) (trace "X" ((trace "X" ((fst (trace "X" (x)))))))))))))) (trace "X" (tree)))))))))))} in (trace "X" ((trace "X" (eq_rect (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x -> (trace "X" ((trace "X" (update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree))))))) (trace "X" ((trace "X" ((fst (trace "X" (x)))))))))))))) (trace "X" (tree))))))) (trace "X" ((Nd_comp (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((eLetRecContext (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" (lev)) (trace "X" (tree)) (trace "X" (branches))))))) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" (__U03c4_)) (trace "X" (lev)) (trace "X" (body))))))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" (snd)) (trace "X" (tree))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (__U03c4_))))))))))) (trace "X" (lev))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x -> (trace "X" ((trace "X" (update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree))))))) (trace "X" ((trace "X" ((fst (trace "X" (x)))))))))))))) (trace "X" (tree))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" ((trace "X" ((leaves (trace "X" ((trace "X" ((mapOptionTree (trace "X" (fst)) (trace "X" (tree)))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((eLetRecContext (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" (lev)) (trace "X" (tree)) (trace "X" (branches))))))) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" (__U03c4_)) (trace "X" (lev)) (trace "X" (body))))))))))))))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" (snd)) (trace "X" (tree))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (__U03c4_))))))))))) (trace "X" (lev))))))))))) (trace "X" ((let {q = (trace "X" ((trace "X" (letRecSubproofsToND (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" (lev)) (trace "X" (tree)) (trace "X" (branches)) (trace "X" (lrsp))))))} in (trace "X" (Nd_comp (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing))))) (trace "X" ((T_Branch (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" ((trace "X" ((eLetRecContext (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" (lev)) (trace "X" (tree)) (trace "X" (branches)))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (snd)) (trace "X" (tree))))))) (trace "X" (lev))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (lev))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (snd)) (trace "X" (tree)))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" (__U03c4_)) (trace "X" (lev)) (trace "X" (body))))))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" (snd)) (trace "X" (tree))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (__U03c4_))))))))))) (trace "X" (lev)))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" ((trace "X" ((eLetRecContext (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" (lev)) (trace "X" (tree)) (trace "X" (branches)))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" (__U03c4_)) (trace "X" (lev)) (trace "X" (body))))))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" (snd)) (trace "X" (tree))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (__U03c4_))))))))))) (trace "X" (lev))))))))))) (trace "X" ((Nd_comp (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing))))) (trace "X" ((T_Branch (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing))))) (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing)))))))) (trace "X" ((T_Branch (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" ((trace "X" ((eLetRecContext (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" (lev)) (trace "X" (tree)) (trace "X" (branches)))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (snd)) (trace "X" (tree))))))) (trace "X" (lev))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (lev))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (snd)) (trace "X" (tree)))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" (__U03c4_)) (trace "X" (lev)) (trace "X" (body))))))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" (snd)) (trace "X" (tree))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (__U03c4_))))))))))) (trace "X" (lev)))))))))))))) (trace "X" ((Nd_llecnac (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing)))))))) (trace "X" ((Nd_prod (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing))))) (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" ((trace "X" ((eLetRecContext (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" (lev)) (trace "X" (tree)) (trace "X" (branches)))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (snd)) (trace "X" (tree))))))) (trace "X" (lev))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (lev))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (snd)) (trace "X" (tree)))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" (__U03c4_)) (trace "X" (lev)) (trace "X" (body))))))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" (snd)) (trace "X" (tree))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (__U03c4_))))))))))) (trace "X" (lev))))))))))) (trace "X" (q)) (trace "X" ((Nd_comp (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" (__U03c4_)) (trace "X" (lev)) (trace "X" (body)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (__U03c4_)))))))) (trace "X" (lev))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (lev))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (snd)) (trace "X" (tree)))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" (__U03c4_)) (trace "X" (lev)) (trace "X" (body))))))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" (snd)) (trace "X" (tree))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (__U03c4_))))))))))) (trace "X" (lev))))))))))) (trace "X" (pf)) (trace "X" ((Nd_rule (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" (__U03c4_)) (trace "X" (lev)) (trace "X" (body)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (__U03c4_)))))))) (trace "X" (lev))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (lev))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (snd)) (trace "X" (tree)))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" (__U03c4_)) (trace "X" (lev)) (trace "X" (body))))))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" (snd)) (trace "X" (tree))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (__U03c4_))))))))))) (trace "X" (lev))))))))))) (trace "X" ((RLeft (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" (__U03c4_)) (trace "X" (lev)) (trace "X" (body)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (__U03c4_)))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (snd)) (trace "X" (tree))))))) (trace "X" (lev))))))))))))))))) (trace "X" ((trace "X" ((rCut' (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" ((trace "X" ((eLetRecContext (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" (lev)) (trace "X" (tree)) (trace "X" (branches)))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (snd)) (trace "X" (tree))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" (__U03c4_)) (trace "X" (lev)) (trace "X" (body)))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" (snd)) (trace "X" (tree))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (__U03c4_))))))))))) (trace "X" (lev)))))))))))) (trace "X" ((Nd_rule (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((eLetRecContext (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" (lev)) (trace "X" (tree)) (trace "X" (branches))))))) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" (__U03c4_)) (trace "X" (lev)) (trace "X" (body))))))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" (snd)) (trace "X" (tree))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (__U03c4_))))))))))) (trace "X" (lev))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x -> (trace "X" ((trace "X" (update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree))))))) (trace "X" ((trace "X" ((fst (trace "X" (x)))))))))))))) (trace "X" (tree))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" ((trace "X" ((leaves (trace "X" ((trace "X" ((mapOptionTree (trace "X" (fst)) (trace "X" (tree)))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((eLetRecContext (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" (lev)) (trace "X" (tree)) (trace "X" (branches))))))) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" (__U03c4_)) (trace "X" (lev)) (trace "X" (body))))))))))))))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" (snd)) (trace "X" (tree))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (__U03c4_))))))))))) (trace "X" (lev))))))))))) (trace "X" ((RArrange (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((eLetRecContext (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" (lev)) (trace "X" (tree)) (trace "X" (branches))))))) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" (__U03c4_)) (trace "X" (lev)) (trace "X" (body))))))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x -> (trace "X" ((trace "X" (update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree))))))) (trace "X" ((trace "X" ((fst (trace "X" (x)))))))))))))) (trace "X" (tree))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" ((trace "X" ((leaves (trace "X" ((trace "X" ((mapOptionTree (trace "X" (fst)) (trace "X" (tree)))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((eLetRecContext (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" (lev)) (trace "X" (tree)) (trace "X" (branches))))))) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" (tree)))))))))))) (trace "X" (__U03c4_)) (trace "X" (lev)) (trace "X" (body))))))))))))))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" (snd)) (trace "X" (tree))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (__U03c4_))))))))))) (trace "X" (lev)) (trace "X" (q''1))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t -> (trace "X" (MkLeveledHaskType (trace "X" (t)) (trace "X" (lev))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (snd)) (trace "X" (tree))))))))))))))))))))))))) (trace "X" ((Nd_rule (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (lev))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (snd)) (trace "X" (tree)))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (__U03c4_)) (trace "X" (lev)) (trace "X" ((ELetRec (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" (__U03c4_)) (trace "X" (tree)) (trace "X" (branches)) (trace "X" (body)))))))))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" (snd)) (trace "X" (tree))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (__U03c4_))))))))))) (trace "X" (lev))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (__U03c4_)) (trace "X" (lev)) (trace "X" ((ELetRec (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" (__U03c4_)) (trace "X" (tree)) (trace "X" (branches)) (trace "X" (body))))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (__U03c4_)))))))) (trace "X" (lev))))))))))) (trace "X" ((trace "X" ((z (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (__U03c4_)) (trace "X" (lev)) (trace "X" ((ELetRec (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" (__U03c4_)) (trace "X" (tree)) (trace "X" (branches)) (trace "X" (body))))))))))))))) (trace "X" (__U03c4_)) (trace "X" (lev))))))))))))))))))
 
 expr2proof :: (EqDecidable a1) -> TypeEnv -> CoercionEnv -> (a1 -> LeveledHaskType) -> HaskType -> HaskLevel -> (Expr a1) -> ND Judg Rule
 expr2proof eqd_vv __U0393_' __U0394_' __U03be_' __U03c4_' l' exp =
@@ -4488,11 +4505,11 @@ rule2expr eqdec_vv freshM h j r x_ =
                RAppCo __U0393_0 __U0394_0 __U03a3_ __U03ba_ __U03c3___U2081_ __U03c3___U2082_ __U03c3_ l -> (trace "X" (let {x_0 = (trace "X" ((trace "X" (ileaf (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03a3_)) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((\_ env -> (trace "X" (TCoerc (trace "X" (__U03ba_)) (trace "X" ((trace "X" ((__U03c3___U2081_ (trace "X" (__)) (trace "X" (env))))))) (trace "X" ((trace "X" ((__U03c3___U2082_ (trace "X" (__)) (trace "X" (env))))))) (trace "X" ((trace "X" ((__U03c3_ (trace "X" (__)) (trace "X" (env)))))))))))))))))) (trace "X" (l))))) (trace "X" (x_))))))} in (trace "X" (ILeaf (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03a3_)) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (__U03c3_)))))))) (trace "X" (l))))) (trace "X" ((unsafeCoerce (trace "X" ((\__U03be_0 vars _ -> (trace "X" ((trace "X" (bindM (trace "X" ((trace "X" ((freshMon (trace "X" (freshM))))))) (trace "X" ((trace "X" ((unsafeCoerce (trace "X" (x_0)) (trace "X" (__U03be_0)) (trace "X" (vars)) (trace "X" (__))))))) (trace "X" ((\x -> (trace "X" ((trace "X" (returnM (trace "X" ((trace "X" ((freshMon (trace "X" (freshM))))))) (trace "X" ((ILeaf (trace "X" (__U03c3_)) (trace "X" ((ECoApp (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03ba_)) (trace "X" (__U03c3___U2081_)) (trace "X" (__U03c3___U2082_)) (trace "X" (__U03c3_)) (trace "X" (__U03be_0)) (trace "X" (l)) (trace "X" ((trace "X" ((ileaf (trace "X" ((\_ env -> (trace "X" (TCoerc (trace "X" (__U03ba_)) (trace "X" ((trace "X" ((__U03c3___U2081_ (trace "X" (__)) (trace "X" (env))))))) (trace "X" ((trace "X" ((__U03c3___U2082_ (trace "X" (__)) (trace "X" (env))))))) (trace "X" ((trace "X" ((__U03c3_ (trace "X" (__)) (trace "X" (env)))))))))))) (trace "X" (x))))))))))))))))))))))))))))))))));
                RAbsCo __U0393_0 __U0394_0 __U03a3_ __U03ba_ __U03c3_ __U03c3___U2081_ __U03c3___U2082_ y -> (trace "X" (let {x_0 = (trace "X" ((trace "X" (ileaf (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" ((\_ -> (trace "X" ((trace "X" (mkHaskCoercionKind (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (__U03c3_)) (trace "X" (__U03c3___U2081_))))))))) (trace "X" (__U0394_0))))) (trace "X" (__U03a3_)) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (__U03c3___U2082_)))))))) (trace "X" (y))))) (trace "X" (x_))))))} in (trace "X" (ILeaf (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03a3_)) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((\_ env -> (trace "X" (TCoerc (trace "X" (__U03ba_)) (trace "X" ((trace "X" ((__U03c3_ (trace "X" (__)) (trace "X" (env))))))) (trace "X" ((trace "X" ((__U03c3___U2081_ (trace "X" (__)) (trace "X" (env))))))) (trace "X" ((trace "X" ((__U03c3___U2082_ (trace "X" (__)) (trace "X" (env)))))))))))))))))) (trace "X" (y))))) (trace "X" ((unsafeCoerce (trace "X" ((\__U03be_0 vars _ -> (trace "X" ((trace "X" (bindM (trace "X" ((trace "X" ((freshMon (trace "X" (freshM))))))) (trace "X" ((trace "X" ((unsafeCoerce (trace "X" (x_0)) (trace "X" (__U03be_0)) (trace "X" (vars)) (trace "X" (__))))))) (trace "X" ((\x -> (trace "X" ((trace "X" (returnM (trace "X" ((trace "X" ((freshMon (trace "X" (freshM))))))) (trace "X" ((ILeaf (trace "X" ((\_ env -> (trace "X" (TCoerc (trace "X" (__U03ba_)) (trace "X" ((trace "X" ((__U03c3_ (trace "X" (__)) (trace "X" (env))))))) (trace "X" ((trace "X" ((__U03c3___U2081_ (trace "X" (__)) (trace "X" (env))))))) (trace "X" ((trace "X" ((__U03c3___U2082_ (trace "X" (__)) (trace "X" (env)))))))))))) (trace "X" ((ECoLam (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03ba_)) (trace "X" (__U03c3___U2082_)) (trace "X" (__U03c3_)) (trace "X" (__U03c3___U2081_)) (trace "X" (__U03be_0)) (trace "X" (y)) (trace "X" ((trace "X" ((ileaf (trace "X" (__U03c3___U2082_)) (trace "X" (x))))))))))))))))))))))))))))))))));
                RLetRec __U0393_0 __U0394_0 lri x y t ->
-                (trace "X" (let {x_0 = (trace "X" ((trace "X" (ileaf (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Branch (trace "X" (lri)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (t))))))) (trace "X" (y)))))))))) (trace "X" ((T_Branch (trace "X" (y)) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (x))))))))))) (trace "X" (t))))) (trace "X" (x_))))))} in
+                (trace "X" (let {x_0 = (trace "X" ((trace "X" (ileaf (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (t))))))) (trace "X" (y))))))) (trace "X" (lri))))) (trace "X" ((T_Branch (trace "X" (y)) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (x))))))))))) (trace "X" (t))))) (trace "X" (x_))))))} in
                             (trace "X" (ILeaf (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (lri)) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (x)))))))) (trace "X" (t)))))
                             (trace "X" ((unsafeCoerce (trace "X" ((\__U03be_0 vars _ ->
                                           (trace "X" ((trace "X" (bindM (trace "X" ((trace "X" ((freshMon (trace "X" (freshM))))))) (trace "X" ((trace "X" ((fresh_lemma' (trace "X" (eqdec_vv)) (trace "X" (freshM)) (trace "X" (__U0393_0)) (trace "X" (y)) (trace "X" (vars)) (trace "X" (lri)) (trace "X" (__U03be_0)) (trace "X" (t))))))) (trace "X" ((\__U03be_vars ->
-                                                                    (trace "X" ((trace "X" (bindM (trace "X" ((trace "X" ((freshMon (trace "X" (freshM))))))) (trace "X" ((trace "X" ((unsafeCoerce (trace "X" (x_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqdec_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (t)) (trace "X" ((trace "X" ((leaves (trace "X" (__U03be_vars)))))))))))) (trace "X" ((T_Branch (trace "X" (vars)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (fst)) (trace "X" (__U03be_vars)))))))))) (trace "X" (__))))))) (trace "X" ((\x0 ->
+                                                                    (trace "X" ((trace "X" (bindM (trace "X" ((trace "X" ((freshMon (trace "X" (freshM))))))) (trace "X" ((trace "X" ((unsafeCoerce (trace "X" (x_0)) (trace "X" ((trace "X" ((update_xi (trace "X" (eqdec_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (t)) (trace "X" ((trace "X" ((leaves (trace "X" (__U03be_vars)))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" (fst)) (trace "X" (__U03be_vars))))))) (trace "X" (vars))))) (trace "X" (__))))))) (trace "X" ((\x0 ->
                                                                                               (trace "X" ((trace "X" (returnM (trace "X" ((trace "X" ((freshMon (trace "X" (freshM))))))) (trace "X" ((ILeaf (trace "X" (x))
                                                                                                                         (trace "X" ((case (trace "X" (x0)) of {
                                                                                                                                       INone -> (trace "X" (false_rect));
@@ -4741,8 +4758,17 @@ skolemize_proof h c x =
                                                        (:) h1 lev0 -> (trace "X" ((trace "X" (Prelude.error (trace "X" (((:) (trace "X" ('R')) (trace "X" (((:) (trace "X" ('A')) (trace "X" (((:) (trace "X" ('b')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('C')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('h')) (trace "X" (((:) (trace "X" ('>')) (trace "X" (((:) (trace "X" ('0')) (trace "X" ([])))))))))))))))))))))))))))))))))))))))))))))))))))))))))}));
                                          RLetRec __U0393_0 __U0394_0 lri x1 y t ->
                                           (trace "X" (case (trace "X" (t)) of {
-                                                       ([]) -> (trace "X" (Nd_rule (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Branch (trace "X" (lri)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (([])))))))) (trace "X" (y)))))))))) (trace "X" ((T_Branch (trace "X" (y)) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (x1))))))))))) (trace "X" (([])))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (lri)) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (x1)))))))) (trace "X" (([])))))))))))) (trace "X" ((SFlat (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Branch (trace "X" (lri)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (([])))))))) (trace "X" (y)))))))))) (trace "X" ((T_Branch (trace "X" (y)) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (x1))))))))))) (trace "X" (([])))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (lri)) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (x1)))))))) (trace "X" (([])))))))))))) (trace "X" ((RLetRec (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (lri)) (trace "X" (x1)) (trace "X" (y)) (trace "X" (([])))))))))));
-                                                       (:) h1 t0 -> (trace "X" ((trace "X" (Prelude.error (trace "X" (((:) (trace "X" ('R')) (trace "X" (((:) (trace "X" ('L')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('R')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('h')) (trace "X" (((:) (trace "X" ('>')) (trace "X" (((:) (trace "X" ('0')) (trace "X" ([]))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))}));
+                                                       ([]) -> (trace "X" (Nd_rule (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (([])))))))) (trace "X" (y))))))) (trace "X" (lri))))) (trace "X" ((T_Branch (trace "X" (y)) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (x1))))))))))) (trace "X" (([])))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (lri)) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (x1)))))))) (trace "X" (([])))))))))))) (trace "X" ((SFlat (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (([])))))))) (trace "X" (y))))))) (trace "X" (lri))))) (trace "X" ((T_Branch (trace "X" (y)) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (x1))))))))))) (trace "X" (([])))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (lri)) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (x1)))))))) (trace "X" (([])))))))))))) (trace "X" ((RLetRec (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (lri)) (trace "X" (x1)) (trace "X" (y)) (trace "X" (([])))))))))));
+                                                       (:) h1 t0 ->
+                                                        (trace "X" (let {s = (trace "X" ((trace "X" (decide_tree_empty (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))) (trace "X" ((trace "X" ((mapOptionTreeAndFlatten (trace "X" ((trace "X" ((take_arg_types_as_tree (trace "X" (__U0393_0))))))) (trace "X" (y))))))))))))))))} in
+                                                                    (trace "X" (case (trace "X" (s)) of {
+                                                                                 Prelude.Left s0 ->
+                                                                                  (trace "X" (let {s1 = (trace "X" ((trace "X" (eqd_dec (trace "X" ((trace "X" ((eqDecidableTree (trace "X" ((trace "X" ((eqDecidableOption (trace "X" ((trace "X" ((haskTypeEqDecidable (trace "X" (__U0393_0)) (trace "X" (KindStar))))))))))))))))) (trace "X" (y)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x2 _ -> (trace "X" ((trace "X" (drop_arg_types_as_tree (trace "X" (__U0393_0)) (trace "X" (x2))))))))) (trace "X" (y)))))))))))} in
+                                                                                              (trace "X" (case (trace "X" (s1)) of {
+                                                                                                           Prelude.True -> (trace "X" ((trace "X" (eq_rect (trace "X" (y)) (trace "X" ((Nd_comp (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Branch (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))) (trace "X" (y))))))) (trace "X" (lri))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))) (trace "X" ((trace "X" ((mapOptionTreeAndFlatten (trace "X" ((trace "X" ((take_arg_types_as_tree (trace "X" (__U0393_0))))))) (trace "X" (y)))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))) (trace "X" ((trace "X" ((take_arg_types_as_tree (trace "X" (__U0393_0)) (trace "X" (x1)))))))))))))))))) (trace "X" ((T_Branch (trace "X" (y)) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((\_ -> (trace "X" ((trace "X" (drop_arg_types_as_tree (trace "X" (__U0393_0)) (trace "X" (x1)))))))))))))))))) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Branch (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))) (trace "X" (y))))))) (trace "X" (lri))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))) (trace "X" ((trace "X" ((take_arg_types_as_tree (trace "X" (__U0393_0)) (trace "X" (x1))))))))))))))) (trace "X" ((T_Branch (trace "X" (y)) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((\_ -> (trace "X" ((trace "X" (drop_arg_types_as_tree (trace "X" (__U0393_0)) (trace "X" (x1)))))))))))))))))) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Branch (trace "X" (lri)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))) (trace "X" ((trace "X" ((take_arg_types_as_tree (trace "X" (__U0393_0)) (trace "X" (x1))))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((\_ -> (trace "X" ((trace "X" (drop_arg_types_as_tree (trace "X" (__U0393_0)) (trace "X" (x1))))))))))))))) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))))))) (trace "X" ((Nd_rule (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Branch (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))) (trace "X" (y))))))) (trace "X" (lri))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))) (trace "X" ((trace "X" ((mapOptionTreeAndFlatten (trace "X" ((trace "X" ((take_arg_types_as_tree (trace "X" (__U0393_0))))))) (trace "X" (y)))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))) (trace "X" ((trace "X" ((take_arg_types_as_tree (trace "X" (__U0393_0)) (trace "X" (x1)))))))))))))))))) (trace "X" ((T_Branch (trace "X" (y)) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((\_ -> (trace "X" ((trace "X" (drop_arg_types_as_tree (trace "X" (__U0393_0)) (trace "X" (x1)))))))))))))))))) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Branch (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))) (trace "X" (y))))))) (trace "X" (lri))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))) (trace "X" ((trace "X" ((take_arg_types_as_tree (trace "X" (__U0393_0)) (trace "X" (x1))))))))))))))) (trace "X" ((T_Branch (trace "X" (y)) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((\_ -> (trace "X" ((trace "X" (drop_arg_types_as_tree (trace "X" (__U0393_0)) (trace "X" (x1)))))))))))))))))) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))))))) (trace "X" ((SFlat (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Branch (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))) (trace "X" (y))))))) (trace "X" (lri))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))) (trace "X" ((trace "X" ((mapOptionTreeAndFlatten (trace "X" ((trace "X" ((take_arg_types_as_tree (trace "X" (__U0393_0))))))) (trace "X" (y)))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))) (trace "X" ((trace "X" ((take_arg_types_as_tree (trace "X" (__U0393_0)) (trace "X" (x1)))))))))))))))))) (trace "X" ((T_Branch (trace "X" (y)) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((\_ -> (trace "X" ((trace "X" (drop_arg_types_as_tree (trace "X" (__U0393_0)) (trace "X" (x1)))))))))))))))))) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Branch (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))) (trace "X" (y))))))) (trace "X" (lri))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))) (trace "X" ((trace "X" ((take_arg_types_as_tree (trace "X" (__U0393_0)) (trace "X" (x1))))))))))))))) (trace "X" ((T_Branch (trace "X" (y)) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((\_ -> (trace "X" ((trace "X" (drop_arg_types_as_tree (trace "X" (__U0393_0)) (trace "X" (x1)))))))))))))))))) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))))))) (trace "X" ((RArrange (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Branch (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))) (trace "X" (y))))))) (trace "X" (lri))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))) (trace "X" ((trace "X" ((mapOptionTreeAndFlatten (trace "X" ((trace "X" ((take_arg_types_as_tree (trace "X" (__U0393_0))))))) (trace "X" (y)))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))) (trace "X" ((trace "X" ((take_arg_types_as_tree (trace "X" (__U0393_0)) (trace "X" (x1)))))))))))))))))) (trace "X" ((T_Branch (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))) (trace "X" (y))))))) (trace "X" (lri))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))) (trace "X" ((trace "X" ((take_arg_types_as_tree (trace "X" (__U0393_0)) (trace "X" (x1))))))))))))))) (trace "X" ((T_Branch (trace "X" (y)) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((\_ -> (trace "X" ((trace "X" (drop_arg_types_as_tree (trace "X" (__U0393_0)) (trace "X" (x1)))))))))))))))))) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0))))) (trace "X" ((ALeft (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))) (trace "X" ((trace "X" ((mapOptionTreeAndFlatten (trace "X" ((trace "X" ((take_arg_types_as_tree (trace "X" (__U0393_0))))))) (trace "X" (y)))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))) (trace "X" ((trace "X" ((take_arg_types_as_tree (trace "X" (__U0393_0)) (trace "X" (x1))))))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))) (trace "X" ((trace "X" ((take_arg_types_as_tree (trace "X" (__U0393_0)) (trace "X" (x1)))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))) (trace "X" (y))))))) (trace "X" (lri))))) (trace "X" ((AComp (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))) (trace "X" ((trace "X" ((mapOptionTreeAndFlatten (trace "X" ((trace "X" ((take_arg_types_as_tree (trace "X" (__U0393_0))))))) (trace "X" (y)))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))) (trace "X" ((trace "X" ((take_arg_types_as_tree (trace "X" (__U0393_0)) (trace "X" (x1))))))))))))))) (trace "X" ((T_Branch (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))) (trace "X" ((trace "X" ((take_arg_types_as_tree (trace "X" (__U0393_0)) (trace "X" (x1))))))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))) (trace "X" ((trace "X" ((take_arg_types_as_tree (trace "X" (__U0393_0)) (trace "X" (x1)))))))))))) (trace "X" ((ARight (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))) (trace "X" ((trace "X" ((mapOptionTreeAndFlatten (trace "X" ((trace "X" ((take_arg_types_as_tree (trace "X" (__U0393_0))))))) (trace "X" (y)))))))))))) (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))) (trace "X" ((trace "X" ((take_arg_types_as_tree (trace "X" (__U0393_0)) (trace "X" (x1)))))))))))) (trace "X" ((case (trace "X" (s0)) of {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ExistT x2 _ -> (trace "X" ((trace "X" (arrangeCancelEmptyTree (trace "X" (x2)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))) (trace "X" ((trace "X" ((mapOptionTreeAndFlatten (trace "X" ((trace "X" ((take_arg_types_as_tree (trace "X" (__U0393_0))))))) (trace "X" (y))))))))))))))))})))))) (trace "X" ((ACanL (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))) (trace "X" ((trace "X" ((take_arg_types_as_tree (trace "X" (__U0393_0)) (trace "X" (x1)))))))))))))))))))))))))))))) (trace "X" ((Nd_comp (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Branch (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))) (trace "X" (y))))))) (trace "X" (lri))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))) (trace "X" ((trace "X" ((take_arg_types_as_tree (trace "X" (__U0393_0)) (trace "X" (x1))))))))))))))) (trace "X" ((T_Branch (trace "X" (y)) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((\_ -> (trace "X" ((trace "X" (drop_arg_types_as_tree (trace "X" (__U0393_0)) (trace "X" (x1)))))))))))))))))) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))) (trace "X" (y))))))) (trace "X" ((T_Branch (trace "X" (lri)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))) (trace "X" ((trace "X" ((take_arg_types_as_tree (trace "X" (__U0393_0)) (trace "X" (x1)))))))))))))))))) (trace "X" ((T_Branch (trace "X" (y)) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((\_ -> (trace "X" ((trace "X" (drop_arg_types_as_tree (trace "X" (__U0393_0)) (trace "X" (x1)))))))))))))))))) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Branch (trace "X" (lri)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))) (trace "X" ((trace "X" ((take_arg_types_as_tree (trace "X" (__U0393_0)) (trace "X" (x1))))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((\_ -> (trace "X" ((trace "X" (drop_arg_types_as_tree (trace "X" (__U0393_0)) (trace "X" (x1))))))))))))))) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))))))) (trace "X" ((Nd_rule (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Branch (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))) (trace "X" (y))))))) (trace "X" (lri))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))) (trace "X" ((trace "X" ((take_arg_types_as_tree (trace "X" (__U0393_0)) (trace "X" (x1))))))))))))))) (trace "X" ((T_Branch (trace "X" (y)) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((\_ -> (trace "X" ((trace "X" (drop_arg_types_as_tree (trace "X" (__U0393_0)) (trace "X" (x1)))))))))))))))))) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))) (trace "X" (y))))))) (trace "X" ((T_Branch (trace "X" (lri)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))) (trace "X" ((trace "X" ((take_arg_types_as_tree (trace "X" (__U0393_0)) (trace "X" (x1)))))))))))))))))) (trace "X" ((T_Branch (trace "X" (y)) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((\_ -> (trace "X" ((trace "X" (drop_arg_types_as_tree (trace "X" (__U0393_0)) (trace "X" (x1)))))))))))))))))) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))))))) (trace "X" ((SFlat (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Branch (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))) (trace "X" (y))))))) (trace "X" (lri))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))) (trace "X" ((trace "X" ((take_arg_types_as_tree (trace "X" (__U0393_0)) (trace "X" (x1))))))))))))))) (trace "X" ((T_Branch (trace "X" (y)) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((\_ -> (trace "X" ((trace "X" (drop_arg_types_as_tree (trace "X" (__U0393_0)) (trace "X" (x1)))))))))))))))))) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))) (trace "X" (y))))))) (trace "X" ((T_Branch (trace "X" (lri)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))) (trace "X" ((trace "X" ((take_arg_types_as_tree (trace "X" (__U0393_0)) (trace "X" (x1)))))))))))))))))) (trace "X" ((T_Branch (trace "X" (y)) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((\_ -> (trace "X" ((trace "X" (drop_arg_types_as_tree (trace "X" (__U0393_0)) (trace "X" (x1)))))))))))))))))) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))))))) (trace "X" ((RArrange (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Branch (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))) (trace "X" (y))))))) (trace "X" (lri))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))) (trace "X" ((trace "X" ((take_arg_types_as_tree (trace "X" (__U0393_0)) (trace "X" (x1))))))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))) (trace "X" (y))))))) (trace "X" ((T_Branch (trace "X" (lri)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))) (trace "X" ((trace "X" ((take_arg_types_as_tree (trace "X" (__U0393_0)) (trace "X" (x1)))))))))))))))))) (trace "X" ((T_Branch (trace "X" (y)) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((\_ -> (trace "X" ((trace "X" (drop_arg_types_as_tree (trace "X" (__U0393_0)) (trace "X" (x1)))))))))))))))))) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0))))) (trace "X" ((AuAssoc (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))) (trace "X" (y))))))) (trace "X" (lri)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))) (trace "X" ((trace "X" ((take_arg_types_as_tree (trace "X" (__U0393_0)) (trace "X" (x1)))))))))))))))))))))))) (trace "X" ((Nd_rule (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))) (trace "X" (y))))))) (trace "X" ((T_Branch (trace "X" (lri)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))) (trace "X" ((trace "X" ((take_arg_types_as_tree (trace "X" (__U0393_0)) (trace "X" (x1)))))))))))))))))) (trace "X" ((T_Branch (trace "X" (y)) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((\_ -> (trace "X" ((trace "X" (drop_arg_types_as_tree (trace "X" (__U0393_0)) (trace "X" (x1)))))))))))))))))) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Branch (trace "X" (lri)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))) (trace "X" ((trace "X" ((take_arg_types_as_tree (trace "X" (__U0393_0)) (trace "X" (x1))))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((\_ -> (trace "X" ((trace "X" (drop_arg_types_as_tree (trace "X" (__U0393_0)) (trace "X" (x1))))))))))))))) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))))))) (trace "X" ((SFlat (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))) (trace "X" (y))))))) (trace "X" ((T_Branch (trace "X" (lri)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))) (trace "X" ((trace "X" ((take_arg_types_as_tree (trace "X" (__U0393_0)) (trace "X" (x1)))))))))))))))))) (trace "X" ((T_Branch (trace "X" (y)) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((\_ -> (trace "X" ((trace "X" (drop_arg_types_as_tree (trace "X" (__U0393_0)) (trace "X" (x1)))))))))))))))))) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Branch (trace "X" (lri)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))) (trace "X" ((trace "X" ((take_arg_types_as_tree (trace "X" (__U0393_0)) (trace "X" (x1))))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((\_ -> (trace "X" ((trace "X" (drop_arg_types_as_tree (trace "X" (__U0393_0)) (trace "X" (x1))))))))))))))) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))))))) (trace "X" ((RLetRec (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Branch (trace "X" (lri)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))) (trace "X" ((trace "X" ((take_arg_types_as_tree (trace "X" (__U0393_0)) (trace "X" (x1))))))))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (drop_arg_types_as_tree (trace "X" (__U0393_0)) (trace "X" (x1))))))))) (trace "X" (y)) (trace "X" (((:) (trace "X" (h1)) (trace "X" (t0)))))))))))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x2 _ -> (trace "X" ((trace "X" (drop_arg_types_as_tree (trace "X" (__U0393_0)) (trace "X" (x2))))))))) (trace "X" (y)))))))))));
+                                                                                                           Prelude.False -> (trace "X" ((trace "X" (Prelude.error (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('L')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('R')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('f')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('b')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('g')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('v')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('v')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('g')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('f')) (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('y')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('e')) (trace "X" ([]))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))}))));
+                                                                                 Prelude.Right u -> (trace "X" ((trace "X" (Prelude.error (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('L')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('R')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('f')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('b')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('g')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('v')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('v')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('g')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('f')) (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('y')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('e')) (trace "X" ([]))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))}))))}));
                                          RCase __U0393_0 __U0394_0 lev tc __U03a3_ avars tbranches alts -> (trace "X" ((trace "X" (Prelude.error (trace "X" (((:) (trace "X" ('C')) (trace "X" (((:) (trace "X" ('A')) (trace "X" (((:) (trace "X" ('S')) (trace "X" (((:) (trace "X" ('E')) (trace "X" (((:) (trace "X" (':')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('B')) (trace "X" (((:) (trace "X" ('I')) (trace "X" (((:) (trace "X" ('G')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('F')) (trace "X" (((:) (trace "X" ('I')) (trace "X" (((:) (trace "X" ('X')) (trace "X" (((:) (trace "X" ('M')) (trace "X" (((:) (trace "X" ('E')) (trace "X" ([])))))))))))))))))))))))))))))))))))))))))))))))))))}))))) (trace "X" (h)) (trace "X" (c)) (trace "X" (x))))))
 
 v2t :: TypeEnv -> HaskTyVar -> (InstantiatedTypeEnv a1) -> RawHaskType a1
@@ -4829,82 +4855,87 @@ flatten_judgment unitTy prodTy gaTy j =
                              (:) ec lev' -> (trace "X" (MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((flatten_leveled_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((drop_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev'))))) (trace "X" (ant)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" ((\_ -> (trace "X" ((trace "X" (v2t (trace "X" (__U0393_0)) (trace "X" (ec))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" ((\_ -> (trace "X" ((trace "X" (unlev (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x)))))))))))))))) (trace "X" ((trace "X" ((take_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev'))))) (trace "X" (ant)))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x))))))))) (trace "X" (suc)))))))))))))))))))) (trace "X" (([])))))}))}))
 
 data Garrow =
-   Build_garrow (TypeEnv -> CoercionEnv -> HaskType -> HaskLevel -> (Tree (Prelude.Maybe HaskType)) -> ND Judg Rule) (TypeEnv -> CoercionEnv -> HaskType -> HaskLevel -> (Tree (Prelude.Maybe HaskType)) -> ND Judg Rule) (TypeEnv -> CoercionEnv -> HaskType -> HaskLevel -> (Tree (Prelude.Maybe HaskType)) -> ND Judg Rule) (TypeEnv -> CoercionEnv -> HaskType -> HaskLevel -> (Tree (Prelude.Maybe HaskType)) -> ND Judg Rule) (TypeEnv -> CoercionEnv -> HaskType -> HaskLevel -> (Tree (Prelude.Maybe HaskType)) -> ND Judg Rule) (TypeEnv -> CoercionEnv -> HaskType -> HaskLevel -> (Tree (Prelude.Maybe HaskType)) -> (Tree (Prelude.Maybe HaskType)) -> (Tree (Prelude.Maybe HaskType)) -> ND Judg Rule) (TypeEnv -> CoercionEnv -> HaskType -> HaskLevel -> (Tree (Prelude.Maybe HaskType)) -> (Tree (Prelude.Maybe HaskType)) -> (Tree (Prelude.Maybe HaskType)) -> ND Judg Rule) (TypeEnv -> CoercionEnv -> HaskType -> HaskLevel -> (Tree (Prelude.Maybe HaskType)) -> (Tree (Prelude.Maybe HaskType)) -> ND Judg Rule) (TypeEnv -> CoercionEnv -> HaskType -> HaskLevel -> (Tree (Prelude.Maybe HaskType)) -> ND Judg Rule) (TypeEnv -> CoercionEnv -> HaskType -> HaskLevel -> (Tree (Prelude.Maybe HaskType)) -> ND Judg Rule) (TypeEnv -> CoercionEnv -> HaskType -> HaskLevel -> (Tree (Prelude.Maybe HaskType)) -> (Tree (Prelude.Maybe HaskType)) -> (Tree (Prelude.Maybe HaskType)) -> ND Judg Rule) (TypeEnv -> CoercionEnv -> HaskType -> HaskLevel -> (Tree (Prelude.Maybe HaskType)) -> (Tree (Prelude.Maybe HaskType)) -> (Tree (Prelude.Maybe HaskType)) -> ND Judg Rule) (TypeEnv -> CoercionEnv -> HaskType -> HaskLevel -> Literal.Literal -> ND Judg Rule) (TypeEnv -> CoercionEnv -> HaskType -> HaskLevel -> (Tree (Prelude.Maybe HaskType)) -> HaskType -> HaskType -> ND Judg Rule) (TypeEnv -> CoercionEnv -> HaskType -> HaskLevel -> (Tree (Prelude.Maybe HaskType)) -> (Tree (Prelude.Maybe HaskType)) -> (Tree (Prelude.Maybe HaskType)) -> ND Judg Rule) (TypeEnv -> CoercionEnv -> HaskType -> HaskLevel -> (Tree (Prelude.Maybe HaskType)) -> (Tree (Prelude.Maybe HaskType)) -> (() -> (InstantiatedTypeEnv ()) -> RawHaskType ()) -> (() -> (InstantiatedTypeEnv ()) -> RawHaskType ()) -> ND Judg Rule) (TypeEnv -> CoercionEnv -> HaskType -> HaskLevel -> (Tree (Prelude.Maybe HaskType)) -> (Tree (Prelude.Maybe HaskType)) -> (Tree (Prelude.Maybe LeveledHaskType)) -> ND Judg Rule)
+   Build_garrow (TypeEnv -> CoercionEnv -> HaskType -> HaskLevel -> (Tree (Prelude.Maybe HaskType)) -> ND Judg Rule) (TypeEnv -> CoercionEnv -> HaskType -> HaskLevel -> (Tree (Prelude.Maybe HaskType)) -> ND Judg Rule) (TypeEnv -> CoercionEnv -> HaskType -> HaskLevel -> (Tree (Prelude.Maybe HaskType)) -> ND Judg Rule) (TypeEnv -> CoercionEnv -> HaskType -> HaskLevel -> (Tree (Prelude.Maybe HaskType)) -> ND Judg Rule) (TypeEnv -> CoercionEnv -> HaskType -> HaskLevel -> (Tree (Prelude.Maybe HaskType)) -> ND Judg Rule) (TypeEnv -> CoercionEnv -> HaskType -> HaskLevel -> (Tree (Prelude.Maybe HaskType)) -> (Tree (Prelude.Maybe HaskType)) -> (Tree (Prelude.Maybe HaskType)) -> ND Judg Rule) (TypeEnv -> CoercionEnv -> HaskType -> HaskLevel -> (Tree (Prelude.Maybe HaskType)) -> (Tree (Prelude.Maybe HaskType)) -> (Tree (Prelude.Maybe HaskType)) -> ND Judg Rule) (TypeEnv -> CoercionEnv -> HaskType -> HaskLevel -> (Tree (Prelude.Maybe HaskType)) -> (Tree (Prelude.Maybe HaskType)) -> ND Judg Rule) (TypeEnv -> CoercionEnv -> HaskType -> HaskLevel -> (Tree (Prelude.Maybe HaskType)) -> ND Judg Rule) (TypeEnv -> CoercionEnv -> HaskType -> HaskLevel -> (Tree (Prelude.Maybe HaskType)) -> ND Judg Rule) (TypeEnv -> CoercionEnv -> HaskType -> HaskLevel -> (Tree (Prelude.Maybe HaskType)) -> (Tree (Prelude.Maybe HaskType)) -> (Tree (Prelude.Maybe HaskType)) -> ND Judg Rule) (TypeEnv -> CoercionEnv -> HaskType -> HaskLevel -> (Tree (Prelude.Maybe HaskType)) -> (Tree (Prelude.Maybe HaskType)) -> (Tree (Prelude.Maybe HaskType)) -> ND Judg Rule) (TypeEnv -> CoercionEnv -> HaskType -> HaskLevel -> Literal.Literal -> ND Judg Rule) (TypeEnv -> CoercionEnv -> HaskType -> HaskLevel -> (Tree (Prelude.Maybe HaskType)) -> HaskType -> HaskType -> ND Judg Rule) (TypeEnv -> CoercionEnv -> HaskType -> HaskLevel -> (Tree (Prelude.Maybe HaskType)) -> (Tree (Prelude.Maybe HaskType)) -> (Tree (Prelude.Maybe HaskType)) -> ND Judg Rule) (TypeEnv -> CoercionEnv -> HaskType -> HaskLevel -> (Tree (Prelude.Maybe HaskType)) -> (Tree (Prelude.Maybe HaskType)) -> (Tree (Prelude.Maybe HaskType)) -> ND Judg Rule) (TypeEnv -> CoercionEnv -> HaskType -> HaskLevel -> (Tree (Prelude.Maybe HaskType)) -> (Tree (Prelude.Maybe HaskType)) -> (Tree (Prelude.Maybe HaskType)) -> ND Judg Rule) (TypeEnv -> CoercionEnv -> HaskType -> HaskLevel -> (Tree (Prelude.Maybe HaskType)) -> (Tree (Prelude.Maybe HaskType)) -> (() -> (InstantiatedTypeEnv ()) -> RawHaskType ()) -> (() -> (InstantiatedTypeEnv ()) -> RawHaskType ()) -> ND Judg Rule) (TypeEnv -> CoercionEnv -> HaskType -> HaskLevel -> (Tree (Prelude.Maybe HaskType)) -> (Tree (Prelude.Maybe HaskType)) -> (Tree (Prelude.Maybe LeveledHaskType)) -> ND Judg Rule)
 
 ga_id :: (() -> (RawHaskType ()) -> RawHaskType ()) -> (() -> (RawHaskType ()) -> (RawHaskType ()) -> (RawHaskType ()) -> RawHaskType ()) -> (() -> (RawHaskType ()) -> (RawHaskType ()) -> (RawHaskType ()) -> RawHaskType ()) -> Garrow -> TypeEnv -> CoercionEnv -> HaskType -> HaskLevel -> (Tree (Prelude.Maybe HaskType)) -> ND Judg Rule
 ga_id unitTy prodTy gaTy garrow =
   (trace "X" (case (trace "X" (garrow)) of {
-               Build_garrow ga_id0 ga_cancelr0 ga_cancell0 ga_uncancelr0 ga_uncancell0 ga_assoc0 ga_unassoc0 ga_swap0 ga_drop0 ga_copy0 ga_first0 ga_second0 ga_lit0 ga_curry0 ga_comp0 ga_apply ga_kappa -> (trace "X" (ga_id0))}))
+               Build_garrow ga_id0 ga_cancelr0 ga_cancell0 ga_uncancelr0 ga_uncancell0 ga_assoc0 ga_unassoc0 ga_swap0 ga_drop0 ga_copy0 ga_first0 ga_second0 ga_lit0 ga_curry0 ga_loopl0 ga_loopr ga_comp0 ga_apply ga_kappa -> (trace "X" (ga_id0))}))
 
 ga_cancelr :: (() -> (RawHaskType ()) -> RawHaskType ()) -> (() -> (RawHaskType ()) -> (RawHaskType ()) -> (RawHaskType ()) -> RawHaskType ()) -> (() -> (RawHaskType ()) -> (RawHaskType ()) -> (RawHaskType ()) -> RawHaskType ()) -> Garrow -> TypeEnv -> CoercionEnv -> HaskType -> HaskLevel -> (Tree (Prelude.Maybe HaskType)) -> ND Judg Rule
 ga_cancelr unitTy prodTy gaTy garrow =
   (trace "X" (case (trace "X" (garrow)) of {
-               Build_garrow ga_id0 ga_cancelr0 ga_cancell0 ga_uncancelr0 ga_uncancell0 ga_assoc0 ga_unassoc0 ga_swap0 ga_drop0 ga_copy0 ga_first0 ga_second0 ga_lit0 ga_curry0 ga_comp0 ga_apply ga_kappa -> (trace "X" (ga_cancelr0))}))
+               Build_garrow ga_id0 ga_cancelr0 ga_cancell0 ga_uncancelr0 ga_uncancell0 ga_assoc0 ga_unassoc0 ga_swap0 ga_drop0 ga_copy0 ga_first0 ga_second0 ga_lit0 ga_curry0 ga_loopl0 ga_loopr ga_comp0 ga_apply ga_kappa -> (trace "X" (ga_cancelr0))}))
 
 ga_cancell :: (() -> (RawHaskType ()) -> RawHaskType ()) -> (() -> (RawHaskType ()) -> (RawHaskType ()) -> (RawHaskType ()) -> RawHaskType ()) -> (() -> (RawHaskType ()) -> (RawHaskType ()) -> (RawHaskType ()) -> RawHaskType ()) -> Garrow -> TypeEnv -> CoercionEnv -> HaskType -> HaskLevel -> (Tree (Prelude.Maybe HaskType)) -> ND Judg Rule
 ga_cancell unitTy prodTy gaTy garrow =
   (trace "X" (case (trace "X" (garrow)) of {
-               Build_garrow ga_id0 ga_cancelr0 ga_cancell0 ga_uncancelr0 ga_uncancell0 ga_assoc0 ga_unassoc0 ga_swap0 ga_drop0 ga_copy0 ga_first0 ga_second0 ga_lit0 ga_curry0 ga_comp0 ga_apply ga_kappa -> (trace "X" (ga_cancell0))}))
+               Build_garrow ga_id0 ga_cancelr0 ga_cancell0 ga_uncancelr0 ga_uncancell0 ga_assoc0 ga_unassoc0 ga_swap0 ga_drop0 ga_copy0 ga_first0 ga_second0 ga_lit0 ga_curry0 ga_loopl0 ga_loopr ga_comp0 ga_apply ga_kappa -> (trace "X" (ga_cancell0))}))
 
 ga_uncancelr :: (() -> (RawHaskType ()) -> RawHaskType ()) -> (() -> (RawHaskType ()) -> (RawHaskType ()) -> (RawHaskType ()) -> RawHaskType ()) -> (() -> (RawHaskType ()) -> (RawHaskType ()) -> (RawHaskType ()) -> RawHaskType ()) -> Garrow -> TypeEnv -> CoercionEnv -> HaskType -> HaskLevel -> (Tree (Prelude.Maybe HaskType)) -> ND Judg Rule
 ga_uncancelr unitTy prodTy gaTy garrow =
   (trace "X" (case (trace "X" (garrow)) of {
-               Build_garrow ga_id0 ga_cancelr0 ga_cancell0 ga_uncancelr0 ga_uncancell0 ga_assoc0 ga_unassoc0 ga_swap0 ga_drop0 ga_copy0 ga_first0 ga_second0 ga_lit0 ga_curry0 ga_comp0 ga_apply ga_kappa -> (trace "X" (ga_uncancelr0))}))
+               Build_garrow ga_id0 ga_cancelr0 ga_cancell0 ga_uncancelr0 ga_uncancell0 ga_assoc0 ga_unassoc0 ga_swap0 ga_drop0 ga_copy0 ga_first0 ga_second0 ga_lit0 ga_curry0 ga_loopl0 ga_loopr ga_comp0 ga_apply ga_kappa -> (trace "X" (ga_uncancelr0))}))
 
 ga_uncancell :: (() -> (RawHaskType ()) -> RawHaskType ()) -> (() -> (RawHaskType ()) -> (RawHaskType ()) -> (RawHaskType ()) -> RawHaskType ()) -> (() -> (RawHaskType ()) -> (RawHaskType ()) -> (RawHaskType ()) -> RawHaskType ()) -> Garrow -> TypeEnv -> CoercionEnv -> HaskType -> HaskLevel -> (Tree (Prelude.Maybe HaskType)) -> ND Judg Rule
 ga_uncancell unitTy prodTy gaTy garrow =
   (trace "X" (case (trace "X" (garrow)) of {
-               Build_garrow ga_id0 ga_cancelr0 ga_cancell0 ga_uncancelr0 ga_uncancell0 ga_assoc0 ga_unassoc0 ga_swap0 ga_drop0 ga_copy0 ga_first0 ga_second0 ga_lit0 ga_curry0 ga_comp0 ga_apply ga_kappa -> (trace "X" (ga_uncancell0))}))
+               Build_garrow ga_id0 ga_cancelr0 ga_cancell0 ga_uncancelr0 ga_uncancell0 ga_assoc0 ga_unassoc0 ga_swap0 ga_drop0 ga_copy0 ga_first0 ga_second0 ga_lit0 ga_curry0 ga_loopl0 ga_loopr ga_comp0 ga_apply ga_kappa -> (trace "X" (ga_uncancell0))}))
 
 ga_assoc :: (() -> (RawHaskType ()) -> RawHaskType ()) -> (() -> (RawHaskType ()) -> (RawHaskType ()) -> (RawHaskType ()) -> RawHaskType ()) -> (() -> (RawHaskType ()) -> (RawHaskType ()) -> (RawHaskType ()) -> RawHaskType ()) -> Garrow -> TypeEnv -> CoercionEnv -> HaskType -> HaskLevel -> (Tree (Prelude.Maybe HaskType)) -> (Tree (Prelude.Maybe HaskType)) -> (Tree (Prelude.Maybe HaskType)) -> ND Judg Rule
 ga_assoc unitTy prodTy gaTy garrow =
   (trace "X" (case (trace "X" (garrow)) of {
-               Build_garrow ga_id0 ga_cancelr0 ga_cancell0 ga_uncancelr0 ga_uncancell0 ga_assoc0 ga_unassoc0 ga_swap0 ga_drop0 ga_copy0 ga_first0 ga_second0 ga_lit0 ga_curry0 ga_comp0 ga_apply ga_kappa -> (trace "X" (ga_assoc0))}))
+               Build_garrow ga_id0 ga_cancelr0 ga_cancell0 ga_uncancelr0 ga_uncancell0 ga_assoc0 ga_unassoc0 ga_swap0 ga_drop0 ga_copy0 ga_first0 ga_second0 ga_lit0 ga_curry0 ga_loopl0 ga_loopr ga_comp0 ga_apply ga_kappa -> (trace "X" (ga_assoc0))}))
 
 ga_unassoc :: (() -> (RawHaskType ()) -> RawHaskType ()) -> (() -> (RawHaskType ()) -> (RawHaskType ()) -> (RawHaskType ()) -> RawHaskType ()) -> (() -> (RawHaskType ()) -> (RawHaskType ()) -> (RawHaskType ()) -> RawHaskType ()) -> Garrow -> TypeEnv -> CoercionEnv -> HaskType -> HaskLevel -> (Tree (Prelude.Maybe HaskType)) -> (Tree (Prelude.Maybe HaskType)) -> (Tree (Prelude.Maybe HaskType)) -> ND Judg Rule
 ga_unassoc unitTy prodTy gaTy garrow =
   (trace "X" (case (trace "X" (garrow)) of {
-               Build_garrow ga_id0 ga_cancelr0 ga_cancell0 ga_uncancelr0 ga_uncancell0 ga_assoc0 ga_unassoc0 ga_swap0 ga_drop0 ga_copy0 ga_first0 ga_second0 ga_lit0 ga_curry0 ga_comp0 ga_apply ga_kappa -> (trace "X" (ga_unassoc0))}))
+               Build_garrow ga_id0 ga_cancelr0 ga_cancell0 ga_uncancelr0 ga_uncancell0 ga_assoc0 ga_unassoc0 ga_swap0 ga_drop0 ga_copy0 ga_first0 ga_second0 ga_lit0 ga_curry0 ga_loopl0 ga_loopr ga_comp0 ga_apply ga_kappa -> (trace "X" (ga_unassoc0))}))
 
 ga_swap :: (() -> (RawHaskType ()) -> RawHaskType ()) -> (() -> (RawHaskType ()) -> (RawHaskType ()) -> (RawHaskType ()) -> RawHaskType ()) -> (() -> (RawHaskType ()) -> (RawHaskType ()) -> (RawHaskType ()) -> RawHaskType ()) -> Garrow -> TypeEnv -> CoercionEnv -> HaskType -> HaskLevel -> (Tree (Prelude.Maybe HaskType)) -> (Tree (Prelude.Maybe HaskType)) -> ND Judg Rule
 ga_swap unitTy prodTy gaTy garrow =
   (trace "X" (case (trace "X" (garrow)) of {
-               Build_garrow ga_id0 ga_cancelr0 ga_cancell0 ga_uncancelr0 ga_uncancell0 ga_assoc0 ga_unassoc0 ga_swap0 ga_drop0 ga_copy0 ga_first0 ga_second0 ga_lit0 ga_curry0 ga_comp0 ga_apply ga_kappa -> (trace "X" (ga_swap0))}))
+               Build_garrow ga_id0 ga_cancelr0 ga_cancell0 ga_uncancelr0 ga_uncancell0 ga_assoc0 ga_unassoc0 ga_swap0 ga_drop0 ga_copy0 ga_first0 ga_second0 ga_lit0 ga_curry0 ga_loopl0 ga_loopr ga_comp0 ga_apply ga_kappa -> (trace "X" (ga_swap0))}))
 
 ga_drop :: (() -> (RawHaskType ()) -> RawHaskType ()) -> (() -> (RawHaskType ()) -> (RawHaskType ()) -> (RawHaskType ()) -> RawHaskType ()) -> (() -> (RawHaskType ()) -> (RawHaskType ()) -> (RawHaskType ()) -> RawHaskType ()) -> Garrow -> TypeEnv -> CoercionEnv -> HaskType -> HaskLevel -> (Tree (Prelude.Maybe HaskType)) -> ND Judg Rule
 ga_drop unitTy prodTy gaTy garrow =
   (trace "X" (case (trace "X" (garrow)) of {
-               Build_garrow ga_id0 ga_cancelr0 ga_cancell0 ga_uncancelr0 ga_uncancell0 ga_assoc0 ga_unassoc0 ga_swap0 ga_drop0 ga_copy0 ga_first0 ga_second0 ga_lit0 ga_curry0 ga_comp0 ga_apply ga_kappa -> (trace "X" (ga_drop0))}))
+               Build_garrow ga_id0 ga_cancelr0 ga_cancell0 ga_uncancelr0 ga_uncancell0 ga_assoc0 ga_unassoc0 ga_swap0 ga_drop0 ga_copy0 ga_first0 ga_second0 ga_lit0 ga_curry0 ga_loopl0 ga_loopr ga_comp0 ga_apply ga_kappa -> (trace "X" (ga_drop0))}))
 
 ga_copy :: (() -> (RawHaskType ()) -> RawHaskType ()) -> (() -> (RawHaskType ()) -> (RawHaskType ()) -> (RawHaskType ()) -> RawHaskType ()) -> (() -> (RawHaskType ()) -> (RawHaskType ()) -> (RawHaskType ()) -> RawHaskType ()) -> Garrow -> TypeEnv -> CoercionEnv -> HaskType -> HaskLevel -> (Tree (Prelude.Maybe HaskType)) -> ND Judg Rule
 ga_copy unitTy prodTy gaTy garrow =
   (trace "X" (case (trace "X" (garrow)) of {
-               Build_garrow ga_id0 ga_cancelr0 ga_cancell0 ga_uncancelr0 ga_uncancell0 ga_assoc0 ga_unassoc0 ga_swap0 ga_drop0 ga_copy0 ga_first0 ga_second0 ga_lit0 ga_curry0 ga_comp0 ga_apply ga_kappa -> (trace "X" (ga_copy0))}))
+               Build_garrow ga_id0 ga_cancelr0 ga_cancell0 ga_uncancelr0 ga_uncancell0 ga_assoc0 ga_unassoc0 ga_swap0 ga_drop0 ga_copy0 ga_first0 ga_second0 ga_lit0 ga_curry0 ga_loopl0 ga_loopr ga_comp0 ga_apply ga_kappa -> (trace "X" (ga_copy0))}))
 
 ga_first :: (() -> (RawHaskType ()) -> RawHaskType ()) -> (() -> (RawHaskType ()) -> (RawHaskType ()) -> (RawHaskType ()) -> RawHaskType ()) -> (() -> (RawHaskType ()) -> (RawHaskType ()) -> (RawHaskType ()) -> RawHaskType ()) -> Garrow -> TypeEnv -> CoercionEnv -> HaskType -> HaskLevel -> (Tree (Prelude.Maybe HaskType)) -> (Tree (Prelude.Maybe HaskType)) -> (Tree (Prelude.Maybe HaskType)) -> ND Judg Rule
 ga_first unitTy prodTy gaTy garrow =
   (trace "X" (case (trace "X" (garrow)) of {
-               Build_garrow ga_id0 ga_cancelr0 ga_cancell0 ga_uncancelr0 ga_uncancell0 ga_assoc0 ga_unassoc0 ga_swap0 ga_drop0 ga_copy0 ga_first0 ga_second0 ga_lit0 ga_curry0 ga_comp0 ga_apply ga_kappa -> (trace "X" (ga_first0))}))
+               Build_garrow ga_id0 ga_cancelr0 ga_cancell0 ga_uncancelr0 ga_uncancell0 ga_assoc0 ga_unassoc0 ga_swap0 ga_drop0 ga_copy0 ga_first0 ga_second0 ga_lit0 ga_curry0 ga_loopl0 ga_loopr ga_comp0 ga_apply ga_kappa -> (trace "X" (ga_first0))}))
 
 ga_second :: (() -> (RawHaskType ()) -> RawHaskType ()) -> (() -> (RawHaskType ()) -> (RawHaskType ()) -> (RawHaskType ()) -> RawHaskType ()) -> (() -> (RawHaskType ()) -> (RawHaskType ()) -> (RawHaskType ()) -> RawHaskType ()) -> Garrow -> TypeEnv -> CoercionEnv -> HaskType -> HaskLevel -> (Tree (Prelude.Maybe HaskType)) -> (Tree (Prelude.Maybe HaskType)) -> (Tree (Prelude.Maybe HaskType)) -> ND Judg Rule
 ga_second unitTy prodTy gaTy garrow =
   (trace "X" (case (trace "X" (garrow)) of {
-               Build_garrow ga_id0 ga_cancelr0 ga_cancell0 ga_uncancelr0 ga_uncancell0 ga_assoc0 ga_unassoc0 ga_swap0 ga_drop0 ga_copy0 ga_first0 ga_second0 ga_lit0 ga_curry0 ga_comp0 ga_apply ga_kappa -> (trace "X" (ga_second0))}))
+               Build_garrow ga_id0 ga_cancelr0 ga_cancell0 ga_uncancelr0 ga_uncancell0 ga_assoc0 ga_unassoc0 ga_swap0 ga_drop0 ga_copy0 ga_first0 ga_second0 ga_lit0 ga_curry0 ga_loopl0 ga_loopr ga_comp0 ga_apply ga_kappa -> (trace "X" (ga_second0))}))
 
 ga_lit :: (() -> (RawHaskType ()) -> RawHaskType ()) -> (() -> (RawHaskType ()) -> (RawHaskType ()) -> (RawHaskType ()) -> RawHaskType ()) -> (() -> (RawHaskType ()) -> (RawHaskType ()) -> (RawHaskType ()) -> RawHaskType ()) -> Garrow -> TypeEnv -> CoercionEnv -> HaskType -> HaskLevel -> Literal.Literal -> ND Judg Rule
 ga_lit unitTy prodTy gaTy garrow =
   (trace "X" (case (trace "X" (garrow)) of {
-               Build_garrow ga_id0 ga_cancelr0 ga_cancell0 ga_uncancelr0 ga_uncancell0 ga_assoc0 ga_unassoc0 ga_swap0 ga_drop0 ga_copy0 ga_first0 ga_second0 ga_lit0 ga_curry0 ga_comp0 ga_apply ga_kappa -> (trace "X" (ga_lit0))}))
+               Build_garrow ga_id0 ga_cancelr0 ga_cancell0 ga_uncancelr0 ga_uncancell0 ga_assoc0 ga_unassoc0 ga_swap0 ga_drop0 ga_copy0 ga_first0 ga_second0 ga_lit0 ga_curry0 ga_loopl0 ga_loopr ga_comp0 ga_apply ga_kappa -> (trace "X" (ga_lit0))}))
 
 ga_curry :: (() -> (RawHaskType ()) -> RawHaskType ()) -> (() -> (RawHaskType ()) -> (RawHaskType ()) -> (RawHaskType ()) -> RawHaskType ()) -> (() -> (RawHaskType ()) -> (RawHaskType ()) -> (RawHaskType ()) -> RawHaskType ()) -> Garrow -> TypeEnv -> CoercionEnv -> HaskType -> HaskLevel -> (Tree (Prelude.Maybe HaskType)) -> HaskType -> HaskType -> ND Judg Rule
 ga_curry unitTy prodTy gaTy garrow =
   (trace "X" (case (trace "X" (garrow)) of {
-               Build_garrow ga_id0 ga_cancelr0 ga_cancell0 ga_uncancelr0 ga_uncancell0 ga_assoc0 ga_unassoc0 ga_swap0 ga_drop0 ga_copy0 ga_first0 ga_second0 ga_lit0 ga_curry0 ga_comp0 ga_apply ga_kappa -> (trace "X" (ga_curry0))}))
+               Build_garrow ga_id0 ga_cancelr0 ga_cancell0 ga_uncancelr0 ga_uncancell0 ga_assoc0 ga_unassoc0 ga_swap0 ga_drop0 ga_copy0 ga_first0 ga_second0 ga_lit0 ga_curry0 ga_loopl0 ga_loopr ga_comp0 ga_apply ga_kappa -> (trace "X" (ga_curry0))}))
+
+ga_loopl :: (() -> (RawHaskType ()) -> RawHaskType ()) -> (() -> (RawHaskType ()) -> (RawHaskType ()) -> (RawHaskType ()) -> RawHaskType ()) -> (() -> (RawHaskType ()) -> (RawHaskType ()) -> (RawHaskType ()) -> RawHaskType ()) -> Garrow -> TypeEnv -> CoercionEnv -> HaskType -> HaskLevel -> (Tree (Prelude.Maybe HaskType)) -> (Tree (Prelude.Maybe HaskType)) -> (Tree (Prelude.Maybe HaskType)) -> ND Judg Rule
+ga_loopl unitTy prodTy gaTy garrow =
+  (trace "X" (case (trace "X" (garrow)) of {
+               Build_garrow ga_id0 ga_cancelr0 ga_cancell0 ga_uncancelr0 ga_uncancell0 ga_assoc0 ga_unassoc0 ga_swap0 ga_drop0 ga_copy0 ga_first0 ga_second0 ga_lit0 ga_curry0 ga_loopl0 ga_loopr ga_comp0 ga_apply ga_kappa -> (trace "X" (ga_loopl0))}))
 
 ga_comp :: (() -> (RawHaskType ()) -> RawHaskType ()) -> (() -> (RawHaskType ()) -> (RawHaskType ()) -> (RawHaskType ()) -> RawHaskType ()) -> (() -> (RawHaskType ()) -> (RawHaskType ()) -> (RawHaskType ()) -> RawHaskType ()) -> Garrow -> TypeEnv -> CoercionEnv -> HaskType -> HaskLevel -> (Tree (Prelude.Maybe HaskType)) -> (Tree (Prelude.Maybe HaskType)) -> (Tree (Prelude.Maybe HaskType)) -> ND Judg Rule
 ga_comp unitTy prodTy gaTy garrow =
   (trace "X" (case (trace "X" (garrow)) of {
-               Build_garrow ga_id0 ga_cancelr0 ga_cancell0 ga_uncancelr0 ga_uncancell0 ga_assoc0 ga_unassoc0 ga_swap0 ga_drop0 ga_copy0 ga_first0 ga_second0 ga_lit0 ga_curry0 ga_comp0 ga_apply ga_kappa -> (trace "X" (ga_comp0))}))
+               Build_garrow ga_id0 ga_cancelr0 ga_cancell0 ga_uncancelr0 ga_uncancell0 ga_assoc0 ga_unassoc0 ga_swap0 ga_drop0 ga_copy0 ga_first0 ga_second0 ga_lit0 ga_curry0 ga_loopl0 ga_loopr ga_comp0 ga_apply ga_kappa -> (trace "X" (ga_comp0))}))
 
 boost :: TypeEnv -> CoercionEnv -> (Tree (Prelude.Maybe LeveledHaskType)) -> HaskType -> HaskType -> HaskLevel -> (ND Judg Rule) -> ND Judg Rule
 boost __U0393_0 __U0394_0 ant x y lev x0 =
@@ -6326,13 +6357,10 @@ flatten_skolemized_proof hetmet_flatten hetmet_unflatten hetmet_id unitTy prodTy
                                                         (trace "X" (case (trace "X" (l)) of {
                                                                      ([]) -> (trace "X" ((trace "X" (eq_rect (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (([])))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x1 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1))))))))) (trace "X" (__U03a3_)))))))))))) (trace "X" ((Nd_rule (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((flatten_leveled_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0))))))) (trace "X" (__U03a3___U2081_))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x1 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1))))))))) (trace "X" (__U03a3___U2082_))))))) (trace "X" (([])))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((flatten_leveled_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0))))))) (trace "X" (__U03a3___U2081_))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (([])))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x1 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1))))))))) (trace "X" (__U03a3_))))))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x1 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1))))))))) (trace "X" (__U03a3___U2082_))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x1 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1))))))))) (trace "X" (__U03a3_)))))))))) (trace "X" (([])))))))))))) (trace "X" ((RRight (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((flatten_leveled_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0))))))) (trace "X" (__U03a3___U2081_))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x1 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1))))))))) (trace "X" (__U03a3___U2082_))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x1 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1))))))))) (trace "X" (__U03a3_))))))) (trace "X" (([]))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((flatten_leveled_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (([])))))))) (trace "X" (__U03a3_))))))))))))))));
                                                                      (:) ec lev -> (trace "X" ((trace "X" (eq_rect_r (trace "X" ((trace "X" ((mapTree (trace "X" ((\x1 -> (trace "X" (Prelude.Nothing))))) (trace "X" ((trace "X" ((mapTree (trace "X" ((\x1 -> (trace "X" (()))))) (trace "X" (__U03a3_)))))))))))) (trace "X" ((Nd_comp (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((flatten_leveled_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((drop_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev))))) (trace "X" (__U03a3___U2081_)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" ((\_ -> (trace "X" ((trace "X" (v2t (trace "X" (__U0393_0)) (trace "X" (ec))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x1 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" ((\_ -> (trace "X" ((trace "X" (unlev (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1)))))))))))))))) (trace "X" ((trace "X" ((take_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev))))) (trace "X" (__U03a3___U2081_)))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x1 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1))))))))) (trace "X" (__U03a3___U2082_)))))))))))))))))))) (trace "X" (([])))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((flatten_leveled_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((drop_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev))))) (trace "X" (__U03a3___U2081_)))))))))))) (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing)))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" ((\_ -> (trace "X" ((trace "X" (v2t (trace "X" (__U0393_0)) (trace "X" (ec))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x1 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" ((\_ -> (trace "X" ((trace "X" (unlev (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1)))))))))))))))) (trace "X" ((trace "X" ((take_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev))))) (trace "X" ((T_Branch (trace "X" (__U03a3___U2081_)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev)))))))))) (trace "X" (__U03a3_)))))))))))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x1 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1))))))))) (trace "X" (__U03a3___U2082_))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x1 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1))))))))) (trace "X" (__U03a3_))))))))))))))))))))))) (trace "X" (([])))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((flatten_leveled_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((drop_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev))))) (trace "X" (__U03a3___U2081_)))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((flatten_leveled_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((mapTree (trace "X" ((\x1 -> (trace "X" (Prelude.Nothing))))) (trace "X" ((trace "X" ((mapTree (trace "X" ((\x1 -> (trace "X" (()))))) (trace "X" (__U03a3_)))))))))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" ((\_ -> (trace "X" ((trace "X" (v2t (trace "X" (__U0393_0)) (trace "X" (ec))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x1 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" ((\_ -> (trace "X" ((trace "X" (unlev (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1)))))))))))))))) (trace "X" ((trace "X" ((take_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev))))) (trace "X" ((T_Branch (trace "X" (__U03a3___U2081_)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev)))))))))) (trace "X" (__U03a3_)))))))))))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x1 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1))))))))) (trace "X" (__U03a3___U2082_))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x1 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1))))))))) (trace "X" (__U03a3_))))))))))))))))))))))) (trace "X" (([])))))))))))) (trace "X" ((Nd_comp (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((flatten_leveled_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((drop_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev))))) (trace "X" (__U03a3___U2081_)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" ((\_ -> (trace "X" ((trace "X" (v2t (trace "X" (__U0393_0)) (trace "X" (ec))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x1 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" ((\_ -> (trace "X" ((trace "X" (unlev (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1)))))))))))))))) (trace "X" ((trace "X" ((take_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev))))) (trace "X" (__U03a3___U2081_)))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x1 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1))))))))) (trace "X" (__U03a3___U2082_)))))))))))))))))))) (trace "X" (([])))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((flatten_leveled_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((drop_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev))))) (trace "X" (__U03a3___U2081_)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" ((\_ -> (trace "X" ((trace "X" (v2t (trace "X" (__U0393_0)) (trace "X" (ec))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x1 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" ((\_ -> (trace "X" ((trace "X" (unlev (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1)))))))))))))))) (trace "X" ((trace "X" ((take_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev))))) (trace "X" ((T_Branch (trace "X" (__U03a3___U2081_)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev)))))))))) (trace "X" (__U03a3_)))))))))))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x1 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1))))))))) (trace "X" (__U03a3___U2082_))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x1 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1))))))))) (trace "X" (__U03a3_))))))))))))))))))))))) (trace "X" (([])))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((flatten_leveled_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((drop_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev))))) (trace "X" (__U03a3___U2081_)))))))))))) (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing)))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" ((\_ -> (trace "X" ((trace "X" (v2t (trace "X" (__U0393_0)) (trace "X" (ec))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x1 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" ((\_ -> (trace "X" ((trace "X" (unlev (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1)))))))))))))))) (trace "X" ((trace "X" ((take_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev))))) (trace "X" ((T_Branch (trace "X" (__U03a3___U2081_)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev)))))))))) (trace "X" (__U03a3_)))))))))))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x1 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1))))))))) (trace "X" (__U03a3___U2082_))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x1 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1))))))))) (trace "X" (__U03a3_))))))))))))))))))))))) (trace "X" (([])))))))))))) (trace "X" ((trace "X" ((boost (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((flatten_leveled_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((drop_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev))))) (trace "X" (__U03a3___U2081_)))))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" ((\_ -> (trace "X" ((trace "X" (v2t (trace "X" (__U0393_0)) (trace "X" (ec))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x1 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" ((\_ -> (trace "X" ((trace "X" (unlev (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1)))))))))))))))) (trace "X" ((trace "X" ((take_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev))))) (trace "X" (__U03a3___U2081_)))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x1 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1))))))))) (trace "X" (__U03a3___U2082_)))))))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" ((\_ -> (trace "X" ((trace "X" (v2t (trace "X" (__U0393_0)) (trace "X" (ec))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x1 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" ((\_ -> (trace "X" ((trace "X" (unlev (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1)))))))))))))))) (trace "X" ((trace "X" ((take_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev))))) (trace "X" ((T_Branch (trace "X" (__U03a3___U2081_)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev)))))))))) (trace "X" (__U03a3_)))))))))))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x1 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1))))))))) (trace "X" (__U03a3___U2082_))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x1 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1))))))))) (trace "X" (__U03a3_))))))))))))))))) (trace "X" (([]))) (trace "X" ((trace "X" ((eq_rect (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev)))))))))) (trace "X" (__U03a3_))))))) (trace "X" ((trace "X" ((eq_rect_r (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x1 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x1 _ -> (trace "X" ((trace "X" (unlev (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1))))))))) (trace "X" ((trace "X" ((take_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev))))) (trace "X" (__U03a3___U2081_))))))))))))))))) (trace "X" ((trace "X" ((eq_rect_r (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x1 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x1 _ -> (trace "X" ((trace "X" (unlev (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev)))))))))) (trace "X" (__U03a3_))))))))))))))))) (trace "X" ((trace "X" ((eq_rect_r (trace "X" (__U03a3_)) (trace "X" ((trace "X" ((ga_first (trace "X" ((Prelude.error "Proj Args"))) (trace "X" ((Prelude.error "Proj Args"))) (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (gar)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((\_ -> (trace "X" ((trace "X" (v2t (trace "X" (__U0393_0)) (trace "X" (ec))))))))) (trace "X" (([]))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x1 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x1 _ -> (trace "X" ((trace "X" (unlev (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1))))))))) (trace "X" ((trace "X" ((take_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev))))) (trace "X" (__U03a3___U2081_))))))))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x1 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1))))))))) (trace "X" (__U03a3___U2082_))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x1 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1))))))))) (trace "X" (__U03a3_)))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x1 _ -> (trace "X" ((trace "X" (unlev (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev)))))))))) (trace "X" (__U03a3_))))))))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x1 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" ((\_ -> (trace "X" ((trace "X" (unlev (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1)))))))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev)))))))))) (trace "X" (__U03a3_))))))))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x1 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" ((\_ -> (trace "X" ((trace "X" (unlev (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1)))))))))))))))) (trace "X" ((trace "X" ((take_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev))))) (trace "X" (__U03a3___U2081_))))))))))))))))) (trace "X" ((trace "X" ((take_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev)))))))))) (trace "X" (__U03a3_)))))))))))))))))))))) (trace "X" ((Nd_rule (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((flatten_leveled_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((drop_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev))))) (trace "X" (__U03a3___U2081_)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" ((\_ -> (trace "X" ((trace "X" (v2t (trace "X" (__U0393_0)) (trace "X" (ec))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x1 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" ((\_ -> (trace "X" ((trace "X" (unlev (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1)))))))))))))))) (trace "X" ((trace "X" ((take_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev))))) (trace "X" ((T_Branch (trace "X" (__U03a3___U2081_)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev)))))))))) (trace "X" (__U03a3_)))))))))))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x1 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1))))))))) (trace "X" (__U03a3___U2082_))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x1 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1))))))))) (trace "X" (__U03a3_))))))))))))))))))))))) (trace "X" (([])))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((flatten_leveled_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((drop_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev))))) (trace "X" (__U03a3___U2081_)))))))))))) (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing)))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" ((\_ -> (trace "X" ((trace "X" (v2t (trace "X" (__U0393_0)) (trace "X" (ec))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x1 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" ((\_ -> (trace "X" ((trace "X" (unlev (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1)))))))))))))))) (trace "X" ((trace "X" ((take_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev))))) (trace "X" ((T_Branch (trace "X" (__U03a3___U2081_)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev)))))))))) (trace "X" (__U03a3_)))))))))))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x1 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1))))))))) (trace "X" (__U03a3___U2082_))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x1 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1))))))))) (trace "X" (__U03a3_))))))))))))))))))))))) (trace "X" (([])))))))))))) (trace "X" ((RArrange (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((flatten_leveled_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((drop_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev))))) (trace "X" (__U03a3___U2081_)))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((flatten_leveled_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((drop_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev))))) (trace "X" (__U03a3___U2081_)))))))))))) (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing)))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" ((\_ -> (trace "X" ((trace "X" (v2t (trace "X" (__U0393_0)) (trace "X" (ec))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x1 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" ((\_ -> (trace "X" ((trace "X" (unlev (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1)))))))))))))))) (trace "X" ((trace "X" ((take_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev))))) (trace "X" ((T_Branch (trace "X" (__U03a3___U2081_)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev)))))))))) (trace "X" (__U03a3_)))))))))))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x1 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1))))))))) (trace "X" (__U03a3___U2082_))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x1 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1))))))))) (trace "X" (__U03a3_))))))))))))))))))))))) (trace "X" (([]))) (trace "X" ((AuCanR (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((flatten_leveled_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((drop_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev))))) (trace "X" (__U03a3___U2081_)))))))))))))))))))))))) (trace "X" ((Nd_rule (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((flatten_leveled_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((drop_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev))))) (trace "X" (__U03a3___U2081_)))))))))))) (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing)))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" ((\_ -> (trace "X" ((trace "X" (v2t (trace "X" (__U0393_0)) (trace "X" (ec))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x1 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" ((\_ -> (trace "X" ((trace "X" (unlev (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1)))))))))))))))) (trace "X" ((trace "X" ((take_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev))))) (trace "X" ((T_Branch (trace "X" (__U03a3___U2081_)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev)))))))))) (trace "X" (__U03a3_)))))))))))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x1 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1))))))))) (trace "X" (__U03a3___U2082_))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x1 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1))))))))) (trace "X" (__U03a3_))))))))))))))))))))))) (trace "X" (([])))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((flatten_leveled_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((drop_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev))))) (trace "X" (__U03a3___U2081_)))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((flatten_leveled_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((mapTree (trace "X" ((\x1 -> (trace "X" (Prelude.Nothing))))) (trace "X" ((trace "X" ((mapTree (trace "X" ((\x1 -> (trace "X" (()))))) (trace "X" (__U03a3_)))))))))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" ((\_ -> (trace "X" ((trace "X" (v2t (trace "X" (__U0393_0)) (trace "X" (ec))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x1 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" ((\_ -> (trace "X" ((trace "X" (unlev (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1)))))))))))))))) (trace "X" ((trace "X" ((take_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev))))) (trace "X" ((T_Branch (trace "X" (__U03a3___U2081_)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev)))))))))) (trace "X" (__U03a3_)))))))))))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x1 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1))))))))) (trace "X" (__U03a3___U2082_))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x1 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1))))))))) (trace "X" (__U03a3_))))))))))))))))))))))) (trace "X" (([])))))))))))) (trace "X" ((RArrange (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((flatten_leveled_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((drop_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev))))) (trace "X" (__U03a3___U2081_)))))))))))) (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing)))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((flatten_leveled_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((drop_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev))))) (trace "X" (__U03a3___U2081_)))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((flatten_leveled_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((mapTree (trace "X" ((\x1 -> (trace "X" (Prelude.Nothing))))) (trace "X" ((trace "X" ((mapTree (trace "X" ((\x1 -> (trace "X" (()))))) (trace "X" (__U03a3_)))))))))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" ((\_ -> (trace "X" ((trace "X" (v2t (trace "X" (__U0393_0)) (trace "X" (ec))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x1 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" ((\_ -> (trace "X" ((trace "X" (unlev (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1)))))))))))))))) (trace "X" ((trace "X" ((take_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev))))) (trace "X" ((T_Branch (trace "X" (__U03a3___U2081_)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev)))))))))) (trace "X" (__U03a3_)))))))))))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x1 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1))))))))) (trace "X" (__U03a3___U2082_))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x1 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1))))))))) (trace "X" (__U03a3_))))))))))))))))))))))) (trace "X" (([]))) (trace "X" ((ALeft (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((flatten_leveled_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((mapTree (trace "X" ((\x1 -> (trace "X" (Prelude.Nothing))))) (trace "X" ((trace "X" ((mapTree (trace "X" ((\x1 -> (trace "X" (()))))) (trace "X" (__U03a3_))))))))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((flatten_leveled_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((drop_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev))))) (trace "X" (__U03a3___U2081_)))))))))))) (trace "X" ((trace "X" ((arrangeUnCancelEmptyTree (trace "X" ((trace "X" ((mapTree (trace "X" ((\x1 -> (trace "X" (()))))) (trace "X" (__U03a3_))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((flatten_leveled_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((mapTree (trace "X" ((\x1 -> (trace "X" (Prelude.Nothing))))) (trace "X" ((trace "X" ((mapTree (trace "X" ((\x1 -> (trace "X" (()))))) (trace "X" (__U03a3_)))))))))))))))))))))))))))))))))) (trace "X" ((trace "X" ((drop_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev)))))))))) (trace "X" (__U03a3_))))))))))))))))}));
-                                                       RVoid __U0393_0 __U0394_0 l -> (trace "X" (Nd_rule (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just
-                                                        (trace "X" ((case (trace "X" (l)) of {
-                                                                      ([]) -> (trace "X" (MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing))))) (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing))))) (trace "X" (([])))));
-                                                                      (:) ec lev' -> (trace "X" (MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((flatten_leveled_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((drop_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev'))))) (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing))))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" ((\_ -> (trace "X" ((trace "X" (v2t (trace "X" (__U0393_0)) (trace "X" (ec))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x1 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" ((\_ -> (trace "X" ((trace "X" (unlev (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1)))))))))))))))) (trace "X" ((trace "X" ((take_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev'))))) (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing))))))))))))))) (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing)))))))))))))))))) (trace "X" (([])))))})))))))))
-                                                        (trace "X" ((case (trace "X" (l)) of {
-                                                                      ([]) -> (trace "X" (RVoid (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (([])))));
-                                                                      (:) h2 l0 -> (trace "X" ((trace "X" (Prelude.error (trace "X" (((:) (trace "X" ('R')) (trace "X" (((:) (trace "X" ('V')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('v')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('>')) (trace "X" (((:) (trace "X" ('0')) (trace "X" ([])))))))))))))))))))))))))))))))))))))))))))))))))))))))))})))));
+                                                       RVoid __U0393_0 __U0394_0 l ->
+                                                        (trace "X" (case (trace "X" (l)) of {
+                                                                     ([]) -> (trace "X" (Nd_rule (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing))))) (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing))))) (trace "X" (([])))))))))))) (trace "X" ((RVoid (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (([]))))))));
+                                                                     (:) h2 l0 -> (trace "X" ((trace "X" (ga_id (trace "X" ((Prelude.error "Proj Args"))) (trace "X" ((Prelude.error "Proj Args"))) (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (gar)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((\_ -> (trace "X" ((trace "X" (v2t (trace "X" (__U0393_0)) (trace "X" (h2))))))))) (trace "X" (([]))) (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing)))))))))}));
                                                        RAppT __U0393_0 __U0394_0 __U03a3_ __U03ba_ __U03c3_ __U03c4_ lev ->
                                                         (trace "X" (case (trace "X" (lev)) of {
                                                                      ([]) -> (trace "X" ((trace "X" (eq_rect_r (trace "X" ((\_ -> (trace "X" ((trace "X" (haskTAll (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" ((\_ ite v -> (trace "X" ((trace "X" (flatten_rawtype (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (KindStar)) (trace "X" ((trace "X" ((__U03c3_ (trace "X" (__)) (trace "X" (ite)) (trace "X" (v))))))))))))))))))))) (trace "X" ((trace "X" ((eq_rect_r (trace "X" ((\_ -> (trace "X" ((trace "X" (substT (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (KindStar)) (trace "X" ((\_ ite v -> (trace "X" ((trace "X" (flatten_rawtype (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (KindStar)) (trace "X" ((trace "X" ((__U03c3_ (trace "X" (__)) (trace "X" (ite)) (trace "X" (v)))))))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (__U03c4_)))))))))))))))) (trace "X" ((Nd_rule (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\ht -> (trace "X" (MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (levels_to_tcode (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" ((\_ -> (trace "X" ((trace "X" (unlev (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (ht))))))))) (trace "X" ((trace "X" ((getlev (trace "X" (__U0393_0)) (trace "X" (ht)))))))))))))) (trace "X" (([])))))))) (trace "X" (__U03a3_))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((\_ -> (trace "X" ((trace "X" (haskTAll (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" ((\_ ite v -> (trace "X" ((trace "X" (flatten_rawtype (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (KindStar)) (trace "X" ((trace "X" ((__U03c3_ (trace "X" (__)) (trace "X" (ite)) (trace "X" (v))))))))))))))))))))))))))) (trace "X" (([])))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\ht -> (trace "X" (MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (levels_to_tcode (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" ((\_ -> (trace "X" ((trace "X" (unlev (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (ht))))))))) (trace "X" ((trace "X" ((getlev (trace "X" (__U0393_0)) (trace "X" (ht)))))))))))))) (trace "X" (([])))))))) (trace "X" (__U03a3_))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((\_ -> (trace "X" ((trace "X" (substT (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (KindStar)) (trace "X" ((\_ ite v -> (trace "X" ((trace "X" (flatten_rawtype (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (KindStar)) (trace "X" ((trace "X" ((__U03c3_ (trace "X" (__)) (trace "X" (ite)) (trace "X" (v)))))))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (__U03c4_)))))))))))))))))))))) (trace "X" (([])))))))))))) (trace "X" ((RAppT (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\ht -> (trace "X" (MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (levels_to_tcode (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" ((\_ -> (trace "X" ((trace "X" (unlev (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (ht))))))))) (trace "X" ((trace "X" ((getlev (trace "X" (__U0393_0)) (trace "X" (ht)))))))))))))) (trace "X" (([])))))))) (trace "X" (__U03a3_))))))) (trace "X" (__U03ba_)) (trace "X" ((\_ ite v -> (trace "X" ((trace "X" (flatten_rawtype (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (KindStar)) (trace "X" ((trace "X" ((__U03c3_ (trace "X" (__)) (trace "X" (ite)) (trace "X" (v)))))))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (__U03c4_))))))))) (trace "X" (([]))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" ((\_ -> (trace "X" ((trace "X" (substT (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (KindStar)) (trace "X" (__U03c3_)) (trace "X" (__U03c4_))))))))))))))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" ((\_ -> (trace "X" ((trace "X" (haskTAll (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (__U03c3_))))))))))))))))))));
@@ -6351,8 +6379,8 @@ flatten_skolemized_proof hetmet_flatten hetmet_unflatten hetmet_id unitTy prodTy
                                                                      (:) h2 lev0 -> (trace "X" ((trace "X" (Prelude.error (trace "X" (((:) (trace "X" ('f')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('b')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('v')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('>')) (trace "X" (((:) (trace "X" ('0')) (trace "X" (((:) (trace "X" (';')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('h')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('d')) (trace "X" ([])))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))}));
                                                        RLetRec __U0393_0 __U0394_0 lri x1 y t ->
                                                         (trace "X" (case (trace "X" (t)) of {
-                                                                     ([]) -> (trace "X" (Nd_rule (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((flatten_leveled_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0))))))) (trace "X" (lri))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((flatten_leveled_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (([])))))))) (trace "X" (y))))))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x2 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x2))))))))) (trace "X" (y))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((\_ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1)))))))))))))))))) (trace "X" (([])))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((flatten_leveled_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0))))))) (trace "X" (lri))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((\_ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1))))))))))))))) (trace "X" (([])))))))))))) (trace "X" ((let {q = (trace "X" (RLetRec (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((flatten_leveled_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0))))))) (trace "X" (lri))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x2 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x2))))))))) (trace "X" (y))))))) (trace "X" (([])))))} in (trace "X" ((trace "X" (eq_rect (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (([])))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x2 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x2))))))))) (trace "X" (y)))))))))))) (trace "X" (q)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((flatten_leveled_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (([])))))))) (trace "X" (y)))))))))))))))))))));
-                                                                     (:) h2 lev -> (trace "X" ((trace "X" (Prelude.error (trace "X" (((:) (trace "X" ('L')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('R')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('b')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('k')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('y')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('(')) (trace "X" (((:) (trace "X" ('F')) (trace "X" (((:) (trace "X" ('I')) (trace "X" (((:) (trace "X" ('X')) (trace "X" (((:) (trace "X" ('M')) (trace "X" (((:) (trace "X" ('E')) (trace "X" (((:) (trace "X" (')')) (trace "X" ([]))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))}));
+                                                                     ([]) -> (trace "X" (Nd_rule (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((flatten_leveled_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (([])))))))) (trace "X" (y)))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((flatten_leveled_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0))))))) (trace "X" (lri)))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x2 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x2))))))))) (trace "X" (y))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((\_ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1)))))))))))))))))) (trace "X" (([])))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((flatten_leveled_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0))))))) (trace "X" (lri))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((\_ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1))))))))))))))) (trace "X" (([])))))))))))) (trace "X" ((let {q = (trace "X" (RLetRec (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((flatten_leveled_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0))))))) (trace "X" (lri))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x2 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x2))))))))) (trace "X" (y))))))) (trace "X" (([])))))} in (trace "X" ((trace "X" (eq_rect (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (([])))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x2 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x2))))))))) (trace "X" (y)))))))))))) (trace "X" (q)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((flatten_leveled_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (([])))))))) (trace "X" (y)))))))))))))))))))));
+                                                                     (:) h2 lev -> (trace "X" ((trace "X" (eq_rect_r (trace "X" ((trace "X" ((mapTree (trace "X" ((\x2 -> (trace "X" (Prelude.Nothing))))) (trace "X" ((trace "X" ((mapTree (trace "X" ((\x2 -> (trace "X" (()))))) (trace "X" (y)))))))))))) (trace "X" ((Nd_comp (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((flatten_leveled_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((mapTree (trace "X" ((\x2 -> (trace "X" (Prelude.Nothing))))) (trace "X" ((trace "X" ((mapTree (trace "X" ((\x2 -> (trace "X" (()))))) (trace "X" (y))))))))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((flatten_leveled_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((drop_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (h2)) (trace "X" (lev))))) (trace "X" (lri))))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" ((\_ -> (trace "X" ((trace "X" (v2t (trace "X" (__U0393_0)) (trace "X" (h2))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x2 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" ((\_ -> (trace "X" ((trace "X" (unlev (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x2)))))))))))))))) (trace "X" ((trace "X" ((take_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (h2)) (trace "X" (lev))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h2)) (trace "X" (lev)))))))))) (trace "X" (y))))))))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x2 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" ((\_ -> (trace "X" ((trace "X" (unlev (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x2)))))))))))))))) (trace "X" ((trace "X" ((take_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (h2)) (trace "X" (lev))))) (trace "X" (lri))))))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x2 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x2))))))))) (trace "X" (y))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((\_ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1))))))))))))))))))))))))))))))) (trace "X" (([])))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((flatten_leveled_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((drop_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (h2)) (trace "X" (lev))))) (trace "X" (lri)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" ((\_ -> (trace "X" ((trace "X" (v2t (trace "X" (__U0393_0)) (trace "X" (h2))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x2 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" ((\_ -> (trace "X" ((trace "X" (unlev (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x2)))))))))))))))) (trace "X" ((trace "X" ((take_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (h2)) (trace "X" (lev))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h2)) (trace "X" (lev)))))))))) (trace "X" (y))))))))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x2 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" ((\_ -> (trace "X" ((trace "X" (unlev (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x2)))))))))))))))) (trace "X" ((trace "X" ((take_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (h2)) (trace "X" (lev))))) (trace "X" (lri))))))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x2 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x2))))))))) (trace "X" (y))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((\_ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1))))))))))))))))))))))))))))))) (trace "X" (([])))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((flatten_leveled_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((drop_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (h2)) (trace "X" (lev))))) (trace "X" (lri)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" ((\_ -> (trace "X" ((trace "X" (v2t (trace "X" (__U0393_0)) (trace "X" (h2))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x2 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" ((\_ -> (trace "X" ((trace "X" (unlev (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x2)))))))))))))))) (trace "X" ((trace "X" ((take_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (h2)) (trace "X" (lev))))) (trace "X" (lri)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((\_ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1)))))))))))))))))))))))))))) (trace "X" (([])))))))))))) (trace "X" ((Nd_rule (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((flatten_leveled_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((mapTree (trace "X" ((\x2 -> (trace "X" (Prelude.Nothing))))) (trace "X" ((trace "X" ((mapTree (trace "X" ((\x2 -> (trace "X" (()))))) (trace "X" (y))))))))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((flatten_leveled_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((drop_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (h2)) (trace "X" (lev))))) (trace "X" (lri))))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" ((\_ -> (trace "X" ((trace "X" (v2t (trace "X" (__U0393_0)) (trace "X" (h2))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x2 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" ((\_ -> (trace "X" ((trace "X" (unlev (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x2)))))))))))))))) (trace "X" ((trace "X" ((take_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (h2)) (trace "X" (lev))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h2)) (trace "X" (lev)))))))))) (trace "X" (y))))))))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x2 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" ((\_ -> (trace "X" ((trace "X" (unlev (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x2)))))))))))))))) (trace "X" ((trace "X" ((take_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (h2)) (trace "X" (lev))))) (trace "X" (lri))))))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x2 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x2))))))))) (trace "X" (y))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((\_ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1))))))))))))))))))))))))))))))) (trace "X" (([])))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((flatten_leveled_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((drop_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (h2)) (trace "X" (lev))))) (trace "X" (lri)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" ((\_ -> (trace "X" ((trace "X" (v2t (trace "X" (__U0393_0)) (trace "X" (h2))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x2 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" ((\_ -> (trace "X" ((trace "X" (unlev (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x2)))))))))))))))) (trace "X" ((trace "X" ((take_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (h2)) (trace "X" (lev))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h2)) (trace "X" (lev)))))))))) (trace "X" (y))))))))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x2 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" ((\_ -> (trace "X" ((trace "X" (unlev (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x2)))))))))))))))) (trace "X" ((trace "X" ((take_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (h2)) (trace "X" (lev))))) (trace "X" (lri))))))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x2 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x2))))))))) (trace "X" (y))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((\_ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1))))))))))))))))))))))))))))))) (trace "X" (([])))))))))))) (trace "X" ((RArrange (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((flatten_leveled_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((mapTree (trace "X" ((\x2 -> (trace "X" (Prelude.Nothing))))) (trace "X" ((trace "X" ((mapTree (trace "X" ((\x2 -> (trace "X" (()))))) (trace "X" (y))))))))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((flatten_leveled_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((drop_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (h2)) (trace "X" (lev))))) (trace "X" (lri))))))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((flatten_leveled_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((drop_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (h2)) (trace "X" (lev))))) (trace "X" (lri)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" ((\_ -> (trace "X" ((trace "X" (v2t (trace "X" (__U0393_0)) (trace "X" (h2))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x2 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" ((\_ -> (trace "X" ((trace "X" (unlev (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x2)))))))))))))))) (trace "X" ((trace "X" ((take_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (h2)) (trace "X" (lev))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h2)) (trace "X" (lev)))))))))) (trace "X" (y))))))))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x2 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" ((\_ -> (trace "X" ((trace "X" (unlev (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x2)))))))))))))))) (trace "X" ((trace "X" ((take_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (h2)) (trace "X" (lev))))) (trace "X" (lri))))))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x2 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x2))))))))) (trace "X" (y))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((\_ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1))))))))))))))))))))))))))))))) (trace "X" (([]))) (trace "X" ((AComp (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((flatten_leveled_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((mapTree (trace "X" ((\x2 -> (trace "X" (Prelude.Nothing))))) (trace "X" ((trace "X" ((mapTree (trace "X" ((\x2 -> (trace "X" (()))))) (trace "X" (y))))))))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((flatten_leveled_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((drop_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (h2)) (trace "X" (lev))))) (trace "X" (lri))))))))))))))) (trace "X" ((T_Branch (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((flatten_leveled_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((drop_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (h2)) (trace "X" (lev))))) (trace "X" (lri))))))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((flatten_leveled_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((drop_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (h2)) (trace "X" (lev))))) (trace "X" (lri)))))))))))) (trace "X" ((ARight (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((flatten_leveled_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((mapTree (trace "X" ((\x2 -> (trace "X" (Prelude.Nothing))))) (trace "X" ((trace "X" ((mapTree (trace "X" ((\x2 -> (trace "X" (()))))) (trace "X" (y))))))))))))))))) (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((flatten_leveled_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((drop_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (h2)) (trace "X" (lev))))) (trace "X" (lri)))))))))))) (trace "X" ((trace "X" ((arrangeCancelEmptyTree (trace "X" (y)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((flatten_leveled_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((mapTree (trace "X" ((\x2 -> (trace "X" (Prelude.Nothing))))) (trace "X" ((trace "X" ((mapTree (trace "X" ((\x2 -> (trace "X" (()))))) (trace "X" (y))))))))))))))))))))))))) (trace "X" ((ACanL (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((flatten_leveled_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((drop_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (h2)) (trace "X" (lev))))) (trace "X" (lri)))))))))))))))))))))))) (trace "X" ((trace "X" ((eq_rect_r (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h2)) (trace "X" (lev)))))))))) (trace "X" (y))))))) (trace "X" ((let {lri' = (trace "X" ((trace "X" (mapOptionTree (trace "X" ((\x2 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" ((\_ -> (trace "X" ((trace "X" (unlev (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x2)))))))))))))))) (trace "X" ((trace "X" ((take_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (h2)) (trace "X" (lev))))) (trace "X" (lri)))))))))))} in (trace "X" (let {lri'' = (trace "X" ((trace "X" (mapOptionTree (trace "X" ((trace "X" ((flatten_leveled_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((drop_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (h2)) (trace "X" (lev))))) (trace "X" (lri)))))))))))} in (trace "X" ((trace "X" (eq_rect (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x2 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x2))))))))) (trace "X" (y))))))) (trace "X" ((trace "X" ((boost (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (lri'')) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" ((\_ -> (trace "X" ((trace "X" (v2t (trace "X" (__U0393_0)) (trace "X" (h2))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x2 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x2))))))))) (trace "X" (y))))))) (trace "X" (lri'))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x2 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x2))))))))) (trace "X" (y))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((\_ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1))))))))))))))))))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" ((\_ -> (trace "X" ((trace "X" (v2t (trace "X" (__U0393_0)) (trace "X" (h2))))))))) (trace "X" (lri')) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((\_ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1)))))))))))))))))))))) (trace "X" (([]))) (trace "X" ((trace "X" ((ga_loopl (trace "X" ((Prelude.error "Proj Args"))) (trace "X" ((Prelude.error "Proj Args"))) (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (gar)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((\_ -> (trace "X" ((trace "X" (v2t (trace "X" (__U0393_0)) (trace "X" (h2))))))))) (trace "X" (([]))) (trace "X" (lri')) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((\_ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x1))))))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x2 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x2))))))))) (trace "X" (y))))))))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x2 _ -> (trace "X" ((trace "X" (flatten_type (trace "X" (unitTy)) (trace "X" (prodTy)) (trace "X" (gaTy)) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" ((\_ -> (trace "X" ((trace "X" (unlev (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x2)))))))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h2)) (trace "X" (lev)))))))))) (trace "X" (y))))))))))))))))))))) (trace "X" ((trace "X" ((take_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (h2)) (trace "X" (lev))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h2)) (trace "X" (lev)))))))))) (trace "X" (y)))))))))))))))))))) (trace "X" ((trace "X" ((drop_lev (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" (h2)) (trace "X" (lev))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (((:) (trace "X" (h2)) (trace "X" (lev)))))))))) (trace "X" (y))))))))))))))))}));
                                                        RCase __U0393_0 __U0394_0 lev tc __U03a3_ avars tbranches alts -> (trace "X" ((trace "X" (Prelude.error (trace "X" (((:) (trace "X" ('C')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('(')) (trace "X" (((:) (trace "X" ('B')) (trace "X" (((:) (trace "X" ('I')) (trace "X" (((:) (trace "X" ('G')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('F')) (trace "X" (((:) (trace "X" ('I')) (trace "X" (((:) (trace "X" ('X')) (trace "X" (((:) (trace "X" ('M')) (trace "X" (((:) (trace "X" ('E')) (trace "X" (((:) (trace "X" (')')) (trace "X" ([]))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))}));
                                          SBrak __U0393_0 __U0394_0 t ec succ lev ->
                                           (trace "X" (case (trace "X" (lev)) of {
@@ -6574,9 +6602,9 @@ gat :: TyCon.TyCon -> TyCon.TyCon -> TypeEnv -> HaskType -> (Tree (Prelude.Maybe
 gat hetmet_PGArrow_unit_TyCon hetmet_PGArrow_tensor_TyCon __U0393_0 ec x x0 =
   (trace "X" ((trace "X" (ga_mk_tree (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (x)) (trace "X" (x0))))))
 
-my_ga :: TyCon.TyCon -> TyCon.TyCon -> TyCon.TyCon -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Garrow
-my_ga hetmet_PGArrowTyCon hetmet_PGArrow_unit_TyCon hetmet_PGArrow_tensor_TyCon hetmet_pga_id hetmet_pga_comp hetmet_pga_first hetmet_pga_second hetmet_pga_cancell hetmet_pga_cancelr hetmet_pga_uncancell hetmet_pga_uncancelr hetmet_pga_assoc hetmet_pga_unassoc hetmet_pga_copy hetmet_pga_drop hetmet_pga_swap =
-  (trace "X" (Build_garrow (trace "X" ((\__U0393_0 __U0394_0 ec l a -> (trace "X" ((trace "X" (mkGlob2 (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (l)) (trace "X" (eCKind)) (trace "X" (KindStar)) (trace "X" (hetmet_pga_id)) (trace "X" ((\ec0 a0 _ -> (trace "X" ((trace "X" (ga_type' (trace "X" (hetmet_PGArrowTyCon)) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" (a0)) (trace "X" (a0))))))))) (trace "X" (ec)) (trace "X" ((\_ -> (trace "X" ((trace "X" (gat (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (a)))))))))))))))) (trace "X" ((\__U0393_0 __U0394_0 ec l a -> (trace "X" ((trace "X" (mkGlob2 (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (l)) (trace "X" (eCKind)) (trace "X" (KindStar)) (trace "X" (hetmet_pga_cancelr)) (trace "X" ((\ec0 a0 _ -> (trace "X" ((trace "X" (ga_type' (trace "X" (hetmet_PGArrowTyCon)) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk_tree (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" ((T_Branch (trace "X" (a)) (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing))))))))))))))) (trace "X" (a0))))))))) (trace "X" (ec)) (trace "X" ((\_ -> (trace "X" ((trace "X" (gat (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (a)))))))))))))))) (trace "X" ((\__U0393_0 __U0394_0 ec l a -> (trace "X" ((trace "X" (mkGlob2 (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (l)) (trace "X" (eCKind)) (trace "X" (KindStar)) (trace "X" (hetmet_pga_cancell)) (trace "X" ((\ec0 a0 _ -> (trace "X" ((trace "X" (ga_type' (trace "X" (hetmet_PGArrowTyCon)) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk_tree (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" ((T_Branch (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing))))) (trace "X" (a)))))))))))) (trace "X" (a0))))))))) (trace "X" (ec)) (trace "X" ((\_ -> (trace "X" ((trace "X" (gat (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (a)))))))))))))))) (trace "X" ((\__U0393_0 __U0394_0 ec l a -> (trace "X" ((trace "X" (mkGlob2 (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (l)) (trace "X" (eCKind)) (trace "X" (KindStar)) (trace "X" (hetmet_pga_uncancelr)) (trace "X" ((\ec0 a0 _ -> (trace "X" ((trace "X" (ga_type' (trace "X" (hetmet_PGArrowTyCon)) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" (a0)) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk_tree (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" ((T_Branch (trace "X" (a)) (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing)))))))))))))))))))))) (trace "X" (ec)) (trace "X" ((\_ -> (trace "X" ((trace "X" (gat (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (a)))))))))))))))) (trace "X" ((\__U0393_0 __U0394_0 ec l a -> (trace "X" ((trace "X" (mkGlob2 (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (l)) (trace "X" (eCKind)) (trace "X" (KindStar)) (trace "X" (hetmet_pga_uncancell)) (trace "X" ((\ec0 a0 _ -> (trace "X" ((trace "X" (ga_type' (trace "X" (hetmet_PGArrowTyCon)) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" (a0)) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk_tree (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" ((T_Branch (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing))))) (trace "X" (a))))))))))))))))))) (trace "X" (ec)) (trace "X" ((\_ -> (trace "X" ((trace "X" (gat (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (a)))))))))))))))) (trace "X" ((\__U0393_0 __U0394_0 ec l a b c -> (trace "X" ((trace "X" (mkGlob4 (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (l)) (trace "X" (eCKind)) (trace "X" (KindStar)) (trace "X" (KindStar)) (trace "X" (KindStar)) (trace "X" (hetmet_pga_assoc)) (trace "X" ((\ec0 a0 b0 c0 _ -> (trace "X" ((trace "X" (ga_type' (trace "X" (hetmet_PGArrowTyCon)) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk_tree (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" ((T_Branch (trace "X" ((T_Branch (trace "X" (a)) (trace "X" (b))))) (trace "X" (c)))))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk_tree (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" ((T_Branch (trace "X" (a)) (trace "X" ((T_Branch (trace "X" (b)) (trace "X" (c)))))))))))))))))))))) (trace "X" (ec)) (trace "X" ((\_ -> (trace "X" ((trace "X" (gat (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (a))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (gat (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (b))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (gat (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (c)))))))))))))))) (trace "X" ((\__U0393_0 __U0394_0 ec l a b c -> (trace "X" ((trace "X" (mkGlob4 (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (l)) (trace "X" (eCKind)) (trace "X" (KindStar)) (trace "X" (KindStar)) (trace "X" (KindStar)) (trace "X" (hetmet_pga_unassoc)) (trace "X" ((\ec0 a0 b0 c0 _ -> (trace "X" ((trace "X" (ga_type' (trace "X" (hetmet_PGArrowTyCon)) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk_tree (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" ((T_Branch (trace "X" (a)) (trace "X" ((T_Branch (trace "X" (b)) (trace "X" (c))))))))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk_tree (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" ((T_Branch (trace "X" ((T_Branch (trace "X" (a)) (trace "X" (b))))) (trace "X" (c))))))))))))))))))) (trace "X" (ec)) (trace "X" ((\_ -> (trace "X" ((trace "X" (gat (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (a))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (gat (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (b))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (gat (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (c)))))))))))))))) (trace "X" ((\__U0393_0 __U0394_0 ec l a b -> (trace "X" ((trace "X" (mkGlob3 (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (l)) (trace "X" (eCKind)) (trace "X" (KindStar)) (trace "X" (KindStar)) (trace "X" (hetmet_pga_swap)) (trace "X" ((\ec0 a0 b0 _ -> (trace "X" ((trace "X" (ga_type' (trace "X" (hetmet_PGArrowTyCon)) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk_tree (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" ((T_Branch (trace "X" (a)) (trace "X" (b)))))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk_tree (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" ((T_Branch (trace "X" (b)) (trace "X" (a))))))))))))))))))) (trace "X" (ec)) (trace "X" ((\_ -> (trace "X" ((trace "X" (gat (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (a))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (gat (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (b)))))))))))))))) (trace "X" ((\__U0393_0 __U0394_0 ec l a -> (trace "X" ((trace "X" (mkGlob2 (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (l)) (trace "X" (eCKind)) (trace "X" (KindStar)) (trace "X" (hetmet_pga_drop)) (trace "X" ((\ec0 a0 _ -> (trace "X" ((trace "X" (ga_type' (trace "X" (hetmet_PGArrowTyCon)) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk_tree (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" (a))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk_tree (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing))))))))))))))))))) (trace "X" (ec)) (trace "X" ((\_ -> (trace "X" ((trace "X" (gat (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (a)))))))))))))))) (trace "X" ((\__U0393_0 __U0394_0 ec l a -> (trace "X" ((trace "X" (mkGlob2 (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (l)) (trace "X" (eCKind)) (trace "X" (KindStar)) (trace "X" (hetmet_pga_copy)) (trace "X" ((\ec0 a0 _ -> (trace "X" ((trace "X" (ga_type' (trace "X" (hetmet_PGArrowTyCon)) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk_tree (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" (a))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk_tree (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" ((T_Branch (trace "X" (a)) (trace "X" (a))))))))))))))))))) (trace "X" (ec)) (trace "X" ((\_ -> (trace "X" ((trace "X" (gat (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (a)))))))))))))))) (trace "X" ((\__U0393_0 __U0394_0 ec l a b x -> (trace "X" ((trace "X" (fToC1 (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_type (trace "X" (hetmet_PGArrowTyCon))))))))) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (a)) (trace "X" (b))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_type (trace "X" (hetmet_PGArrowTyCon))))))))) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" ((T_Branch (trace "X" (a)) (trace "X" (x))))) (trace "X" ((T_Branch (trace "X" (b)) (trace "X" (x)))))))))))) (trace "X" (l)) (trace "X" ((trace "X" ((mkGlob4 (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (l)) (trace "X" (eCKind)) (trace "X" (KindStar)) (trace "X" (KindStar)) (trace "X" (KindStar)) (trace "X" (hetmet_pga_first)) (trace "X" ((\ec0 a0 b0 c _ env -> (trace "X" (TApp (trace "X" (KindStar)) (trace "X" (KindStar)) (trace "X" ((TApp (trace "X" ((KindArrow (trace "X" (KindStar)) (trace "X" (KindStar))))) (trace "X" (KindStar)) (trace "X" (TArrow)) (trace "X" ((trace "X" ((ga_mk (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_type (trace "X" (hetmet_PGArrowTyCon))))))))) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" (a)) (trace "X" (b)) (trace "X" (env)))))))))) (trace "X" ((trace "X" ((ga_mk (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_type (trace "X" (hetmet_PGArrowTyCon))))))))) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" ((T_Branch (trace "X" (a)) (trace "X" (x))))) (trace "X" ((T_Branch (trace "X" (b)) (trace "X" (x))))) (trace "X" (env)))))))))))) (trace "X" (ec)) (trace "X" ((\_ -> (trace "X" ((trace "X" (gat (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (a))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (gat (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (b))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (gat (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (x))))))))))))))))))))) (trace "X" ((\__U0393_0 __U0394_0 ec l a b x -> (trace "X" ((trace "X" (fToC1 (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_type (trace "X" (hetmet_PGArrowTyCon))))))))) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (a)) (trace "X" (b))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_type (trace "X" (hetmet_PGArrowTyCon))))))))) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" ((T_Branch (trace "X" (x)) (trace "X" (a))))) (trace "X" ((T_Branch (trace "X" (x)) (trace "X" (b)))))))))))) (trace "X" (l)) (trace "X" ((trace "X" ((mkGlob4 (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (l)) (trace "X" (eCKind)) (trace "X" (KindStar)) (trace "X" (KindStar)) (trace "X" (KindStar)) (trace "X" (hetmet_pga_second)) (trace "X" ((\ec0 a0 b0 c _ env -> (trace "X" (TApp (trace "X" (KindStar)) (trace "X" (KindStar)) (trace "X" ((TApp (trace "X" ((KindArrow (trace "X" (KindStar)) (trace "X" (KindStar))))) (trace "X" (KindStar)) (trace "X" (TArrow)) (trace "X" ((trace "X" ((ga_mk (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_type (trace "X" (hetmet_PGArrowTyCon))))))))) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" (a)) (trace "X" (b)) (trace "X" (env)))))))))) (trace "X" ((trace "X" ((ga_mk (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_type (trace "X" (hetmet_PGArrowTyCon))))))))) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" ((T_Branch (trace "X" (x)) (trace "X" (a))))) (trace "X" ((T_Branch (trace "X" (x)) (trace "X" (b))))) (trace "X" (env)))))))))))) (trace "X" (ec)) (trace "X" ((\_ -> (trace "X" ((trace "X" (gat (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (a))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (gat (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (b))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (gat (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (x))))))))))))))))))))) (trace "X" ((\__U0393_0 __U0394_0 ec l a -> (trace "X" ((trace "X" (Prelude.error (trace "X" (((:) (trace "X" ('g')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('_')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('t')) (trace "X" ([]))))))))))))))))))))))))))) (trace "X" ((\__U0393_0 __U0394_0 ec l a b c -> (trace "X" ((trace "X" (Prelude.error (trace "X" (((:) (trace "X" ('g')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('_')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('y')) (trace "X" ([]))))))))))))))))))))))))))))))))) (trace "X" ((\__U0393_0 __U0394_0 ec l a b c -> (trace "X" ((trace "X" (fToC2 (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_type (trace "X" (hetmet_PGArrowTyCon))))))))) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (a)) (trace "X" (b))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_type (trace "X" (hetmet_PGArrowTyCon))))))))) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (b)) (trace "X" (c))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_type (trace "X" (hetmet_PGArrowTyCon))))))))) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (a)) (trace "X" (c))))))))) (trace "X" (l)) (trace "X" ((trace "X" ((mkGlob4 (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (l)) (trace "X" (eCKind)) (trace "X" (KindStar)) (trace "X" (KindStar)) (trace "X" (KindStar)) (trace "X" (hetmet_pga_comp)) (trace "X" ((\ec0 a0 b0 c0 _ env -> (trace "X" (TApp (trace "X" (KindStar)) (trace "X" (KindStar)) (trace "X" ((TApp (trace "X" ((KindArrow (trace "X" (KindStar)) (trace "X" (KindStar))))) (trace "X" (KindStar)) (trace "X" (TArrow)) (trace "X" ((trace "X" ((ga_mk (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_type (trace "X" (hetmet_PGArrowTyCon))))))))) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" (a)) (trace "X" (b)) (trace "X" (env)))))))))) (trace "X" ((TApp (trace "X" (KindStar)) (trace "X" (KindStar)) (trace "X" ((TApp (trace "X" ((KindArrow (trace "X" (KindStar)) (trace "X" (KindStar))))) (trace "X" (KindStar)) (trace "X" (TArrow)) (trace "X" ((trace "X" ((ga_mk (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_type (trace "X" (hetmet_PGArrowTyCon))))))))) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" (b)) (trace "X" (c)) (trace "X" (env)))))))))) (trace "X" ((trace "X" ((ga_mk (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_type (trace "X" (hetmet_PGArrowTyCon))))))))) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" (a)) (trace "X" (c)) (trace "X" (env))))))))))))))) (trace "X" (ec)) (trace "X" ((\_ -> (trace "X" ((trace "X" (gat (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (a))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (gat (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (b))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (gat (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (c))))))))))))))))))))) (trace "X" ((\__U0393_0 __U0394_0 ec l a b c -> (trace "X" ((trace "X" (Prelude.error (trace "X" (((:) (trace "X" ('g')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('_')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('y')) (trace "X" ([]))))))))))))))))))))))))))))))))) (trace "X" ((\__U0393_0 __U0394_0 ec l a -> (trace "X" ((trace "X" (Prelude.error (trace "X" (((:) (trace "X" ('g')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('_')) (trace "X" (((:) (trace "X" ('k')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('a')) (trace "X" ([])))))))))))))))))))))))))))))))))))
+my_ga :: TyCon.TyCon -> TyCon.TyCon -> TyCon.TyCon -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Garrow
+my_ga hetmet_PGArrowTyCon hetmet_PGArrow_unit_TyCon hetmet_PGArrow_tensor_TyCon hetmet_pga_id hetmet_pga_comp hetmet_pga_first hetmet_pga_second hetmet_pga_cancell hetmet_pga_cancelr hetmet_pga_uncancell hetmet_pga_uncancelr hetmet_pga_assoc hetmet_pga_unassoc hetmet_pga_copy hetmet_pga_drop hetmet_pga_swap hetmet_pga_loopl hetmet_pga_loopr =
+  (trace "X" (Build_garrow (trace "X" ((\__U0393_0 __U0394_0 ec l a -> (trace "X" ((trace "X" (mkGlob2 (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (l)) (trace "X" (eCKind)) (trace "X" (KindStar)) (trace "X" (hetmet_pga_id)) (trace "X" ((\ec0 a0 _ -> (trace "X" ((trace "X" (ga_type' (trace "X" (hetmet_PGArrowTyCon)) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" (a0)) (trace "X" (a0))))))))) (trace "X" (ec)) (trace "X" ((\_ -> (trace "X" ((trace "X" (gat (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (a)))))))))))))))) (trace "X" ((\__U0393_0 __U0394_0 ec l a -> (trace "X" ((trace "X" (mkGlob2 (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (l)) (trace "X" (eCKind)) (trace "X" (KindStar)) (trace "X" (hetmet_pga_cancelr)) (trace "X" ((\ec0 a0 _ -> (trace "X" ((trace "X" (ga_type' (trace "X" (hetmet_PGArrowTyCon)) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk_tree (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" ((T_Branch (trace "X" (a)) (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing))))))))))))))) (trace "X" (a0))))))))) (trace "X" (ec)) (trace "X" ((\_ -> (trace "X" ((trace "X" (gat (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (a)))))))))))))))) (trace "X" ((\__U0393_0 __U0394_0 ec l a -> (trace "X" ((trace "X" (mkGlob2 (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (l)) (trace "X" (eCKind)) (trace "X" (KindStar)) (trace "X" (hetmet_pga_cancell)) (trace "X" ((\ec0 a0 _ -> (trace "X" ((trace "X" (ga_type' (trace "X" (hetmet_PGArrowTyCon)) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk_tree (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" ((T_Branch (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing))))) (trace "X" (a)))))))))))) (trace "X" (a0))))))))) (trace "X" (ec)) (trace "X" ((\_ -> (trace "X" ((trace "X" (gat (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (a)))))))))))))))) (trace "X" ((\__U0393_0 __U0394_0 ec l a -> (trace "X" ((trace "X" (mkGlob2 (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (l)) (trace "X" (eCKind)) (trace "X" (KindStar)) (trace "X" (hetmet_pga_uncancelr)) (trace "X" ((\ec0 a0 _ -> (trace "X" ((trace "X" (ga_type' (trace "X" (hetmet_PGArrowTyCon)) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" (a0)) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk_tree (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" ((T_Branch (trace "X" (a)) (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing)))))))))))))))))))))) (trace "X" (ec)) (trace "X" ((\_ -> (trace "X" ((trace "X" (gat (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (a)))))))))))))))) (trace "X" ((\__U0393_0 __U0394_0 ec l a -> (trace "X" ((trace "X" (mkGlob2 (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (l)) (trace "X" (eCKind)) (trace "X" (KindStar)) (trace "X" (hetmet_pga_uncancell)) (trace "X" ((\ec0 a0 _ -> (trace "X" ((trace "X" (ga_type' (trace "X" (hetmet_PGArrowTyCon)) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" (a0)) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk_tree (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" ((T_Branch (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing))))) (trace "X" (a))))))))))))))))))) (trace "X" (ec)) (trace "X" ((\_ -> (trace "X" ((trace "X" (gat (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (a)))))))))))))))) (trace "X" ((\__U0393_0 __U0394_0 ec l a b c -> (trace "X" ((trace "X" (mkGlob4 (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (l)) (trace "X" (eCKind)) (trace "X" (KindStar)) (trace "X" (KindStar)) (trace "X" (KindStar)) (trace "X" (hetmet_pga_assoc)) (trace "X" ((\ec0 a0 b0 c0 _ -> (trace "X" ((trace "X" (ga_type' (trace "X" (hetmet_PGArrowTyCon)) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk_tree (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" ((T_Branch (trace "X" ((T_Branch (trace "X" (a)) (trace "X" (b))))) (trace "X" (c)))))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk_tree (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" ((T_Branch (trace "X" (a)) (trace "X" ((T_Branch (trace "X" (b)) (trace "X" (c)))))))))))))))))))))) (trace "X" (ec)) (trace "X" ((\_ -> (trace "X" ((trace "X" (gat (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (a))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (gat (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (b))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (gat (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (c)))))))))))))))) (trace "X" ((\__U0393_0 __U0394_0 ec l a b c -> (trace "X" ((trace "X" (mkGlob4 (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (l)) (trace "X" (eCKind)) (trace "X" (KindStar)) (trace "X" (KindStar)) (trace "X" (KindStar)) (trace "X" (hetmet_pga_unassoc)) (trace "X" ((\ec0 a0 b0 c0 _ -> (trace "X" ((trace "X" (ga_type' (trace "X" (hetmet_PGArrowTyCon)) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk_tree (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" ((T_Branch (trace "X" (a)) (trace "X" ((T_Branch (trace "X" (b)) (trace "X" (c))))))))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk_tree (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" ((T_Branch (trace "X" ((T_Branch (trace "X" (a)) (trace "X" (b))))) (trace "X" (c))))))))))))))))))) (trace "X" (ec)) (trace "X" ((\_ -> (trace "X" ((trace "X" (gat (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (a))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (gat (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (b))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (gat (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (c)))))))))))))))) (trace "X" ((\__U0393_0 __U0394_0 ec l a b -> (trace "X" ((trace "X" (mkGlob3 (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (l)) (trace "X" (eCKind)) (trace "X" (KindStar)) (trace "X" (KindStar)) (trace "X" (hetmet_pga_swap)) (trace "X" ((\ec0 a0 b0 _ -> (trace "X" ((trace "X" (ga_type' (trace "X" (hetmet_PGArrowTyCon)) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk_tree (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" ((T_Branch (trace "X" (a)) (trace "X" (b)))))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk_tree (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" ((T_Branch (trace "X" (b)) (trace "X" (a))))))))))))))))))) (trace "X" (ec)) (trace "X" ((\_ -> (trace "X" ((trace "X" (gat (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (a))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (gat (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (b)))))))))))))))) (trace "X" ((\__U0393_0 __U0394_0 ec l a -> (trace "X" ((trace "X" (mkGlob2 (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (l)) (trace "X" (eCKind)) (trace "X" (KindStar)) (trace "X" (hetmet_pga_drop)) (trace "X" ((\ec0 a0 _ -> (trace "X" ((trace "X" (ga_type' (trace "X" (hetmet_PGArrowTyCon)) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk_tree (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" (a))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk_tree (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing))))))))))))))))))) (trace "X" (ec)) (trace "X" ((\_ -> (trace "X" ((trace "X" (gat (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (a)))))))))))))))) (trace "X" ((\__U0393_0 __U0394_0 ec l a -> (trace "X" ((trace "X" (mkGlob2 (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (l)) (trace "X" (eCKind)) (trace "X" (KindStar)) (trace "X" (hetmet_pga_copy)) (trace "X" ((\ec0 a0 _ -> (trace "X" ((trace "X" (ga_type' (trace "X" (hetmet_PGArrowTyCon)) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk_tree (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" (a))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk_tree (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" ((T_Branch (trace "X" (a)) (trace "X" (a))))))))))))))))))) (trace "X" (ec)) (trace "X" ((\_ -> (trace "X" ((trace "X" (gat (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (a)))))))))))))))) (trace "X" ((\__U0393_0 __U0394_0 ec l a b x -> (trace "X" ((trace "X" (fToC1 (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_type (trace "X" (hetmet_PGArrowTyCon))))))))) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (a)) (trace "X" (b))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_type (trace "X" (hetmet_PGArrowTyCon))))))))) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" ((T_Branch (trace "X" (a)) (trace "X" (x))))) (trace "X" ((T_Branch (trace "X" (b)) (trace "X" (x)))))))))))) (trace "X" (l)) (trace "X" ((trace "X" ((mkGlob4 (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (l)) (trace "X" (eCKind)) (trace "X" (KindStar)) (trace "X" (KindStar)) (trace "X" (KindStar)) (trace "X" (hetmet_pga_first)) (trace "X" ((\ec0 a0 b0 c _ env -> (trace "X" (TApp (trace "X" (KindStar)) (trace "X" (KindStar)) (trace "X" ((TApp (trace "X" ((KindArrow (trace "X" (KindStar)) (trace "X" (KindStar))))) (trace "X" (KindStar)) (trace "X" (TArrow)) (trace "X" ((trace "X" ((ga_mk (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_type (trace "X" (hetmet_PGArrowTyCon))))))))) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" (a)) (trace "X" (b)) (trace "X" (env)))))))))) (trace "X" ((trace "X" ((ga_mk (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_type (trace "X" (hetmet_PGArrowTyCon))))))))) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" ((T_Branch (trace "X" (a)) (trace "X" (x))))) (trace "X" ((T_Branch (trace "X" (b)) (trace "X" (x))))) (trace "X" (env)))))))))))) (trace "X" (ec)) (trace "X" ((\_ -> (trace "X" ((trace "X" (gat (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (a))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (gat (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (b))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (gat (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (x))))))))))))))))))))) (trace "X" ((\__U0393_0 __U0394_0 ec l a b x -> (trace "X" ((trace "X" (fToC1 (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_type (trace "X" (hetmet_PGArrowTyCon))))))))) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (a)) (trace "X" (b))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_type (trace "X" (hetmet_PGArrowTyCon))))))))) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" ((T_Branch (trace "X" (x)) (trace "X" (a))))) (trace "X" ((T_Branch (trace "X" (x)) (trace "X" (b)))))))))))) (trace "X" (l)) (trace "X" ((trace "X" ((mkGlob4 (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (l)) (trace "X" (eCKind)) (trace "X" (KindStar)) (trace "X" (KindStar)) (trace "X" (KindStar)) (trace "X" (hetmet_pga_second)) (trace "X" ((\ec0 a0 b0 c _ env -> (trace "X" (TApp (trace "X" (KindStar)) (trace "X" (KindStar)) (trace "X" ((TApp (trace "X" ((KindArrow (trace "X" (KindStar)) (trace "X" (KindStar))))) (trace "X" (KindStar)) (trace "X" (TArrow)) (trace "X" ((trace "X" ((ga_mk (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_type (trace "X" (hetmet_PGArrowTyCon))))))))) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" (a)) (trace "X" (b)) (trace "X" (env)))))))))) (trace "X" ((trace "X" ((ga_mk (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_type (trace "X" (hetmet_PGArrowTyCon))))))))) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" ((T_Branch (trace "X" (x)) (trace "X" (a))))) (trace "X" ((T_Branch (trace "X" (x)) (trace "X" (b))))) (trace "X" (env)))))))))))) (trace "X" (ec)) (trace "X" ((\_ -> (trace "X" ((trace "X" (gat (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (a))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (gat (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (b))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (gat (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (x))))))))))))))))))))) (trace "X" ((\__U0393_0 __U0394_0 ec l a -> (trace "X" ((trace "X" (Prelude.error (trace "X" (((:) (trace "X" ('g')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('_')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('t')) (trace "X" ([]))))))))))))))))))))))))))) (trace "X" ((\__U0393_0 __U0394_0 ec l a b c -> (trace "X" ((trace "X" (Prelude.error (trace "X" (((:) (trace "X" ('g')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('_')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('y')) (trace "X" ([]))))))))))))))))))))))))))))))))) (trace "X" ((\__U0393_0 __U0394_0 ec l a b x -> (trace "X" ((trace "X" (fToC1 (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_type (trace "X" (hetmet_PGArrowTyCon))))))))) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" ((T_Branch (trace "X" (x)) (trace "X" (a))))) (trace "X" ((T_Branch (trace "X" (x)) (trace "X" (b)))))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_type (trace "X" (hetmet_PGArrowTyCon))))))))) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (a)) (trace "X" (b))))))))) (trace "X" (l)) (trace "X" ((trace "X" ((mkGlob4 (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (l)) (trace "X" (eCKind)) (trace "X" (KindStar)) (trace "X" (KindStar)) (trace "X" (KindStar)) (trace "X" (hetmet_pga_loopl)) (trace "X" ((\ec0 a0 b0 c _ env -> (trace "X" (TApp (trace "X" (KindStar)) (trace "X" (KindStar)) (trace "X" ((TApp (trace "X" ((KindArrow (trace "X" (KindStar)) (trace "X" (KindStar))))) (trace "X" (KindStar)) (trace "X" (TArrow)) (trace "X" ((trace "X" ((ga_mk (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_type (trace "X" (hetmet_PGArrowTyCon))))))))) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" ((T_Branch (trace "X" (x)) (trace "X" (a))))) (trace "X" ((T_Branch (trace "X" (x)) (trace "X" (b))))) (trace "X" (env)))))))))) (trace "X" ((trace "X" ((ga_mk (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_type (trace "X" (hetmet_PGArrowTyCon))))))))) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" (a)) (trace "X" (b)) (trace "X" (env)))))))))))) (trace "X" (ec)) (trace "X" ((\_ -> (trace "X" ((trace "X" (gat (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (a))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (gat (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (b))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (gat (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (x))))))))))))))))))))) (trace "X" ((\__U0393_0 __U0394_0 ec l a b x -> (trace "X" ((trace "X" (fToC1 (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_type (trace "X" (hetmet_PGArrowTyCon))))))))) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" ((T_Branch (trace "X" (a)) (trace "X" (x))))) (trace "X" ((T_Branch (trace "X" (b)) (trace "X" (x)))))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_type (trace "X" (hetmet_PGArrowTyCon))))))))) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (a)) (trace "X" (b))))))))) (trace "X" (l)) (trace "X" ((trace "X" ((mkGlob4 (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (l)) (trace "X" (eCKind)) (trace "X" (KindStar)) (trace "X" (KindStar)) (trace "X" (KindStar)) (trace "X" (hetmet_pga_loopr)) (trace "X" ((\ec0 a0 b0 c _ env -> (trace "X" (TApp (trace "X" (KindStar)) (trace "X" (KindStar)) (trace "X" ((TApp (trace "X" ((KindArrow (trace "X" (KindStar)) (trace "X" (KindStar))))) (trace "X" (KindStar)) (trace "X" (TArrow)) (trace "X" ((trace "X" ((ga_mk (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_type (trace "X" (hetmet_PGArrowTyCon))))))))) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" ((T_Branch (trace "X" (a)) (trace "X" (x))))) (trace "X" ((T_Branch (trace "X" (b)) (trace "X" (x))))) (trace "X" (env)))))))))) (trace "X" ((trace "X" ((ga_mk (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_type (trace "X" (hetmet_PGArrowTyCon))))))))) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" (a)) (trace "X" (b)) (trace "X" (env)))))))))))) (trace "X" (ec)) (trace "X" ((\_ -> (trace "X" ((trace "X" (gat (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (a))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (gat (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (b))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (gat (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (x))))))))))))))))))))) (trace "X" ((\__U0393_0 __U0394_0 ec l a b c -> (trace "X" ((trace "X" (fToC2 (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_type (trace "X" (hetmet_PGArrowTyCon))))))))) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (a)) (trace "X" (b))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_type (trace "X" (hetmet_PGArrowTyCon))))))))) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (b)) (trace "X" (c))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_mk (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_type (trace "X" (hetmet_PGArrowTyCon))))))))) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (a)) (trace "X" (c))))))))) (trace "X" (l)) (trace "X" ((trace "X" ((mkGlob4 (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (l)) (trace "X" (eCKind)) (trace "X" (KindStar)) (trace "X" (KindStar)) (trace "X" (KindStar)) (trace "X" (hetmet_pga_comp)) (trace "X" ((\ec0 a0 b0 c0 _ env -> (trace "X" (TApp (trace "X" (KindStar)) (trace "X" (KindStar)) (trace "X" ((TApp (trace "X" ((KindArrow (trace "X" (KindStar)) (trace "X" (KindStar))))) (trace "X" (KindStar)) (trace "X" (TArrow)) (trace "X" ((trace "X" ((ga_mk (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_type (trace "X" (hetmet_PGArrowTyCon))))))))) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" (a)) (trace "X" (b)) (trace "X" (env)))))))))) (trace "X" ((TApp (trace "X" (KindStar)) (trace "X" (KindStar)) (trace "X" ((TApp (trace "X" ((KindArrow (trace "X" (KindStar)) (trace "X" (KindStar))))) (trace "X" (KindStar)) (trace "X" (TArrow)) (trace "X" ((trace "X" ((ga_mk (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_type (trace "X" (hetmet_PGArrowTyCon))))))))) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" (b)) (trace "X" (c)) (trace "X" (env)))))))))) (trace "X" ((trace "X" ((ga_mk (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_type (trace "X" (hetmet_PGArrowTyCon))))))))) (trace "X" (__U0393_0)) (trace "X" (ec0)) (trace "X" (a)) (trace "X" (c)) (trace "X" (env))))))))))))))) (trace "X" (ec)) (trace "X" ((\_ -> (trace "X" ((trace "X" (gat (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (a))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (gat (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (b))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (gat (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (c))))))))))))))))))))) (trace "X" ((\__U0393_0 __U0394_0 ec l a b c -> (trace "X" ((trace "X" (Prelude.error (trace "X" (((:) (trace "X" ('g')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('_')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('y')) (trace "X" ([]))))))))))))))))))))))))))))))))) (trace "X" ((\__U0393_0 __U0394_0 ec l a -> (trace "X" ((trace "X" (Prelude.error (trace "X" (((:) (trace "X" ('g')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('_')) (trace "X" (((:) (trace "X" ('k')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('a')) (trace "X" ([])))))))))))))))))))))))))))))))))))
 
 hetmet_brak' :: Var.Var -> WeakExprVar0
 hetmet_brak' hetmet_brak =
@@ -6598,8 +6626,8 @@ hetmet_flattened_id' :: Var.Var -> WeakExprVar0
 hetmet_flattened_id' hetmet_flattened_id =
   (trace "X" ((trace "X" (coreVarToWeakExprVarOrError (trace "X" (hetmet_flattened_id))))))
 
-coreToCoreExpr' :: Prelude.Bool -> Prelude.Bool -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> UniqSupply.UniqSupply -> TyCon.TyCon -> TyCon.TyCon -> TyCon.TyCon -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> (CoreSyn.Expr Var.Var) -> OrError (CoreSyn.Expr Var.Var)
-coreToCoreExpr' do_flatten do_skolemize hetmet_brak hetmet_esc hetmet_flatten hetmet_unflatten hetmet_flattened_id uniqueSupply hetmet_PGArrowTyCon hetmet_PGArrow_unit_TyCon hetmet_PGArrow_tensor_TyCon hetmet_pga_id hetmet_pga_comp hetmet_pga_first hetmet_pga_second hetmet_pga_cancell hetmet_pga_cancelr hetmet_pga_uncancell hetmet_pga_uncancelr hetmet_pga_assoc hetmet_pga_unassoc hetmet_pga_copy hetmet_pga_drop hetmet_pga_swap cex =
+coreToCoreExpr' :: Prelude.Bool -> Prelude.Bool -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> UniqSupply.UniqSupply -> TyCon.TyCon -> TyCon.TyCon -> TyCon.TyCon -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> (CoreSyn.Expr Var.Var) -> OrError (CoreSyn.Expr Var.Var)
+coreToCoreExpr' do_flatten do_skolemize hetmet_brak hetmet_esc hetmet_flatten hetmet_unflatten hetmet_flattened_id uniqueSupply hetmet_PGArrowTyCon hetmet_PGArrow_unit_TyCon hetmet_PGArrow_tensor_TyCon hetmet_pga_id hetmet_pga_comp hetmet_pga_first hetmet_pga_second hetmet_pga_cancell hetmet_pga_cancelr hetmet_pga_uncancell hetmet_pga_uncancelr hetmet_pga_assoc hetmet_pga_unassoc hetmet_pga_copy hetmet_pga_drop hetmet_pga_swap hetmet_pga_loopl hetmet_pga_loopr cex =
   (trace "X" ((trace "X" (addErrorMessage (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('C')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('S')) (trace "X" (((:) (trace "X" ('y')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" (':')) (trace "X" (((:) (trace "X" (' ')) (trace "X" ([]))))))))))))))))))))))))))))))))))))))))))))))) (trace "X" ((trace "X" ((toString (trace "X" (coreExprToString)) (trace "X" (cex))))))))))))
                             (trace "X" ((trace "X" ((addErrorMessage (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('C')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('T')) (trace "X" (((:) (trace "X" ('y')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" (':')) (trace "X" (((:) (trace "X" (' ')) (trace "X" ([])))))))))))))))))))))))))))))))))))))))))))))))))) (trace "X" ((trace "X" ((toString (trace "X" (coreTypeToString)) (trace "X" ((trace "X" ((CoreUtils.exprType (trace "X" (cex)))))))))))))))))
                                                       (trace "X" ((trace "X" ((orErrorBind (trace "X" ((trace "X" ((coreExprToWeakExpr (trace "X" (cex))))))) (trace "X" ((\we ->
@@ -6611,30 +6639,30 @@ coreToCoreExpr' do_flatten do_skolemize hetmet_brak hetmet_esc hetmet_flatten he
                                                                                                                                                                                                                   (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((weakExprToStrongExpr (trace "X" (__U0393_)) (trace "X" (__U0394_)) (trace "X" (__U03c6_)) (trace "X" (__U03c8_)) (trace "X" (__U03be_)) (trace "X" ((\x -> (trace "X" (Prelude.True))))) (trace "X" (__U03c4_)) (trace "X" (([]))) (trace "X" (we))))))) (trace "X" ((\e ->
                                                                                                                                                                                                                                             (trace "X" ((trace "X" (addErrorMessage (trace "X" (((:) (trace "X" ('H')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('k')) (trace "X" (((:) (trace "X" ('S')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('g')) (trace "X" (((:) (trace "X" ('.')) (trace "X" (((:) (trace "X" ('.')) (trace "X" (((:) (trace "X" ('.')) (trace "X" ([])))))))))))))))))))))))))))))))))))))))))
                                                                                                                                                                                                                                                                       (trace "X" ((case (trace "X" (do_skolemize)) of {
-                                                                                                                                                                                                                                                                                    Prelude.True -> (trace "X" (let {haskProof = (trace "X" ((trace "X" (skolemize_and_flatten_proof (trace "X" ((trace "X" ((hetmet_flatten' (trace "X" (hetmet_flatten))))))) (trace "X" ((trace "X" ((hetmet_unflatten' (trace "X" (hetmet_unflatten))))))) (trace "X" ((trace "X" ((hetmet_flattened_id' (trace "X" (hetmet_flattened_id))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_type (trace "X" (hetmet_PGArrowTyCon))))))))) (trace "X" ((trace "X" ((my_ga (trace "X" (hetmet_PGArrowTyCon)) (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (hetmet_pga_id)) (trace "X" (hetmet_pga_comp)) (trace "X" (hetmet_pga_first)) (trace "X" (hetmet_pga_second)) (trace "X" (hetmet_pga_cancell)) (trace "X" (hetmet_pga_cancelr)) (trace "X" (hetmet_pga_uncancell)) (trace "X" (hetmet_pga_uncancelr)) (trace "X" (hetmet_pga_assoc)) (trace "X" (hetmet_pga_unassoc)) (trace "X" (hetmet_pga_copy)) (trace "X" (hetmet_pga_drop)) (trace "X" (hetmet_pga_swap))))))) (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_)) (trace "X" (__U0394_)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_)) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (coreVarEqDecidable)) (trace "X" (__U0393_)) (trace "X" (__U0394_)) (trace "X" (__U03be_)) (trace "X" (__U03c4_)) (trace "X" (([]))) (trace "X" (e)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (__U03c4_)))))))) (trace "X" (([])))))))))))) (trace "X" ((trace "X" ((expr2proof (trace "X" (coreVarEqDecidable)) (trace "X" (__U0393_)) (trace "X" (__U0394_)) (trace "X" (__U03be_)) (trace "X" (__U03c4_)) (trace "X" (([]))) (trace "X" (e)))))))))))} in (trace "X" ((trace "X" (orErrorBind (trace "X" ((OK (trace "X" ((trace "X" ((unsafeCoerce (trace "X" (proof2expr)) (trace "X" (eqDecidableNat)) (trace "X" (freshNat)) (trace "X" (__U0393_)) (trace "X" (__U0394_)) (trace "X" ((\_ -> (trace "X" ((trace "X" (flatten_type (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_type (trace "X" (hetmet_PGArrowTyCon))))))))) (trace "X" (__U0393_)) (trace "X" (KindStar)) (trace "X" (__U03c4_))))))))) (trace "X" (([]))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((flatten_leveled_type (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_type (trace "X" (hetmet_PGArrowTyCon))))))))) (trace "X" (__U0393_))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_)) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (coreVarEqDecidable)) (trace "X" (__U0393_)) (trace "X" (__U0394_)) (trace "X" (__U03be_)) (trace "X" (__U03c4_)) (trace "X" (([]))) (trace "X" (e))))))))))))))))) (trace "X" ((\x -> (trace "X" ((trace "X" (Prelude.error (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('b')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('q')) (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('e')) (trace "X" ([]))))))))))))))))))))))))))))))))))))))))))))))))))) (trace "X" (natToStringInstance)) (trace "X" (haskProof)) (trace "X" (O)))))))))) (trace "X" ((\e' -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((snd (trace "X" (e'))))))) (trace "X" ((\e'' -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((strongExprToWeakExpr (trace "X" ((trace "X" ((hetmet_brak' (trace "X" (hetmet_brak))))))) (trace "X" ((trace "X" ((hetmet_esc' (trace "X" (hetmet_esc))))))) (trace "X" (mkWeakTypeVar0)) (trace "X" (mkWeakCoerVar0)) (trace "X" (mkWeakExprVar0)) (trace "X" (eqDecidableNat)) (trace "X" (natToStringInstance)) (trace "X" (uniqueSupply)) (trace "X" (__U0393_)) (trace "X" (__U0394_)) (trace "X" ((trace "X" ((projT1 (trace "X" (e''))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (flatten_type (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_type (trace "X" (hetmet_PGArrowTyCon))))))))) (trace "X" (__U0393_)) (trace "X" (KindStar)) (trace "X" (__U03c4_))))))))) (trace "X" (([]))) (trace "X" ((trace "X" ((projT2 (trace "X" (e''))))))) (trace "X" (INil))))))) (trace "X" ((\q -> (trace "X" (OK (trace "X" ((trace "X" ((weakExprToCoreExpr (trace "X" (q))))))))))))))))))))))))))))))));
+                                                                                                                                                                                                                                                                                    Prelude.True -> (trace "X" (let {haskProof = (trace "X" ((trace "X" (skolemize_and_flatten_proof (trace "X" ((trace "X" ((hetmet_flatten' (trace "X" (hetmet_flatten))))))) (trace "X" ((trace "X" ((hetmet_unflatten' (trace "X" (hetmet_unflatten))))))) (trace "X" ((trace "X" ((hetmet_flattened_id' (trace "X" (hetmet_flattened_id))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_type (trace "X" (hetmet_PGArrowTyCon))))))))) (trace "X" ((trace "X" ((my_ga (trace "X" (hetmet_PGArrowTyCon)) (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (hetmet_pga_id)) (trace "X" (hetmet_pga_comp)) (trace "X" (hetmet_pga_first)) (trace "X" (hetmet_pga_second)) (trace "X" (hetmet_pga_cancell)) (trace "X" (hetmet_pga_cancelr)) (trace "X" (hetmet_pga_uncancell)) (trace "X" (hetmet_pga_uncancelr)) (trace "X" (hetmet_pga_assoc)) (trace "X" (hetmet_pga_unassoc)) (trace "X" (hetmet_pga_copy)) (trace "X" (hetmet_pga_drop)) (trace "X" (hetmet_pga_swap)) (trace "X" (hetmet_pga_loopl)) (trace "X" (hetmet_pga_loopr))))))) (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_)) (trace "X" (__U0394_)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_)) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (coreVarEqDecidable)) (trace "X" (__U0393_)) (trace "X" (__U0394_)) (trace "X" (__U03be_)) (trace "X" (__U03c4_)) (trace "X" (([]))) (trace "X" (e)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (__U03c4_)))))))) (trace "X" (([])))))))))))) (trace "X" ((trace "X" ((expr2proof (trace "X" (coreVarEqDecidable)) (trace "X" (__U0393_)) (trace "X" (__U0394_)) (trace "X" (__U03be_)) (trace "X" (__U03c4_)) (trace "X" (([]))) (trace "X" (e)))))))))))} in (trace "X" ((trace "X" (orErrorBind (trace "X" ((OK (trace "X" ((trace "X" ((unsafeCoerce (trace "X" (proof2expr)) (trace "X" (eqDecidableNat)) (trace "X" (freshNat)) (trace "X" (__U0393_)) (trace "X" (__U0394_)) (trace "X" ((\_ -> (trace "X" ((trace "X" (flatten_type (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_type (trace "X" (hetmet_PGArrowTyCon))))))))) (trace "X" (__U0393_)) (trace "X" (KindStar)) (trace "X" (__U03c4_))))))))) (trace "X" (([]))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((flatten_leveled_type (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_type (trace "X" (hetmet_PGArrowTyCon))))))))) (trace "X" (__U0393_))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_)) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (coreVarEqDecidable)) (trace "X" (__U0393_)) (trace "X" (__U0394_)) (trace "X" (__U03be_)) (trace "X" (__U03c4_)) (trace "X" (([]))) (trace "X" (e))))))))))))))))) (trace "X" ((\x -> (trace "X" ((trace "X" (Prelude.error (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('b')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('q')) (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('e')) (trace "X" ([]))))))))))))))))))))))))))))))))))))))))))))))))))) (trace "X" (natToStringInstance)) (trace "X" (haskProof)) (trace "X" (O)))))))))) (trace "X" ((\e' -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((snd (trace "X" (e'))))))) (trace "X" ((\e'' -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((strongExprToWeakExpr (trace "X" ((trace "X" ((hetmet_brak' (trace "X" (hetmet_brak))))))) (trace "X" ((trace "X" ((hetmet_esc' (trace "X" (hetmet_esc))))))) (trace "X" (mkWeakTypeVar0)) (trace "X" (mkWeakCoerVar0)) (trace "X" (mkWeakExprVar0)) (trace "X" (eqDecidableNat)) (trace "X" (natToStringInstance)) (trace "X" (uniqueSupply)) (trace "X" (__U0393_)) (trace "X" (__U0394_)) (trace "X" ((trace "X" ((projT1 (trace "X" (e''))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (flatten_type (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_unit (trace "X" (hetmet_PGArrow_unit_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_prod (trace "X" (hetmet_PGArrow_tensor_TyCon))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (ga_type (trace "X" (hetmet_PGArrowTyCon))))))))) (trace "X" (__U0393_)) (trace "X" (KindStar)) (trace "X" (__U03c4_))))))))) (trace "X" (([]))) (trace "X" ((trace "X" ((projT2 (trace "X" (e''))))))) (trace "X" (INil))))))) (trace "X" ((\q -> (trace "X" (OK (trace "X" ((trace "X" ((weakExprToCoreExpr (trace "X" (q))))))))))))))))))))))))))))))));
                                                                                                                                                                                                                                                                                     Prelude.False ->
                                                                                                                                                                                                                                                                                      (trace "X" (case (trace "X" (do_flatten)) of {
                                                                                                                                                                                                                                                                                                   Prelude.True -> (trace "X" (let {haskProof = (trace "X" ((trace "X" (flatten_proof (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_)) (trace "X" (__U0394_)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_)) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (coreVarEqDecidable)) (trace "X" (__U0393_)) (trace "X" (__U0394_)) (trace "X" (__U03be_)) (trace "X" (__U03c4_)) (trace "X" (([]))) (trace "X" (e)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (__U03c4_)))))))) (trace "X" (([])))))))))))) (trace "X" ((trace "X" ((expr2proof (trace "X" (coreVarEqDecidable)) (trace "X" (__U0393_)) (trace "X" (__U0394_)) (trace "X" (__U03be_)) (trace "X" (__U03c4_)) (trace "X" (([]))) (trace "X" (e)))))))))))} in (trace "X" ((trace "X" (orErrorBind (trace "X" ((OK (trace "X" ((trace "X" ((unsafeCoerce (trace "X" (proof2expr)) (trace "X" (eqDecidableNat)) (trace "X" (freshNat)) (trace "X" (__U0393_)) (trace "X" (__U0394_)) (trace "X" (__U03c4_)) (trace "X" (([]))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_)) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (coreVarEqDecidable)) (trace "X" (__U0393_)) (trace "X" (__U0394_)) (trace "X" (__U03be_)) (trace "X" (__U03c4_)) (trace "X" (([]))) (trace "X" (e)))))))))))) (trace "X" ((\x -> (trace "X" ((trace "X" (Prelude.error (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('b')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('q')) (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('e')) (trace "X" ([]))))))))))))))))))))))))))))))))))))))))))))))))))) (trace "X" (natToStringInstance)) (trace "X" (haskProof)) (trace "X" (O)))))))))) (trace "X" ((\e' -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((snd (trace "X" (e'))))))) (trace "X" ((\e'' -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((strongExprToWeakExpr (trace "X" ((trace "X" ((hetmet_brak' (trace "X" (hetmet_brak))))))) (trace "X" ((trace "X" ((hetmet_esc' (trace "X" (hetmet_esc))))))) (trace "X" (mkWeakTypeVar0)) (trace "X" (mkWeakCoerVar0)) (trace "X" (mkWeakExprVar0)) (trace "X" (eqDecidableNat)) (trace "X" (natToStringInstance)) (trace "X" (uniqueSupply)) (trace "X" (__U0393_)) (trace "X" (__U0394_)) (trace "X" ((trace "X" ((projT1 (trace "X" (e''))))))) (trace "X" (__U03c4_)) (trace "X" (([]))) (trace "X" ((trace "X" ((projT2 (trace "X" (e''))))))) (trace "X" (INil))))))) (trace "X" ((\q -> (trace "X" (OK (trace "X" ((trace "X" ((weakExprToCoreExpr (trace "X" (q))))))))))))))))))))))))))))))));
                                                                                                                                                                                                                                                                                                   Prelude.False -> (trace "X" (let {haskProof = (trace "X" ((trace "X" (expr2proof (trace "X" (coreVarEqDecidable)) (trace "X" (__U0393_)) (trace "X" (__U0394_)) (trace "X" (__U03be_)) (trace "X" (__U03c4_)) (trace "X" (([]))) (trace "X" (e))))))} in (trace "X" ((trace "X" (orErrorBind (trace "X" ((OK (trace "X" ((trace "X" ((unsafeCoerce (trace "X" (proof2expr)) (trace "X" (eqDecidableNat)) (trace "X" (freshNat)) (trace "X" (__U0393_)) (trace "X" (__U0394_)) (trace "X" (__U03c4_)) (trace "X" (([]))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_)) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (coreVarEqDecidable)) (trace "X" (__U0393_)) (trace "X" (__U0394_)) (trace "X" (__U03be_)) (trace "X" (__U03c4_)) (trace "X" (([]))) (trace "X" (e)))))))))))) (trace "X" ((\x -> (trace "X" ((trace "X" (Prelude.error (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('b')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('q')) (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('e')) (trace "X" ([]))))))))))))))))))))))))))))))))))))))))))))))))))) (trace "X" (natToStringInstance)) (trace "X" (haskProof)) (trace "X" (O)))))))))) (trace "X" ((\e' -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((snd (trace "X" (e'))))))) (trace "X" ((\e'' -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((strongExprToWeakExpr (trace "X" ((trace "X" ((hetmet_brak' (trace "X" (hetmet_brak))))))) (trace "X" ((trace "X" ((hetmet_esc' (trace "X" (hetmet_esc))))))) (trace "X" (mkWeakTypeVar0)) (trace "X" (mkWeakCoerVar0)) (trace "X" (mkWeakExprVar0)) (trace "X" (eqDecidableNat)) (trace "X" (natToStringInstance)) (trace "X" (uniqueSupply)) (trace "X" (__U0393_)) (trace "X" (__U0394_)) (trace "X" ((trace "X" ((projT1 (trace "X" (e''))))))) (trace "X" (__U03c4_)) (trace "X" (([]))) (trace "X" ((trace "X" ((projT2 (trace "X" (e''))))))) (trace "X" (INil))))))) (trace "X" ((\q -> (trace "X" (OK (trace "X" ((trace "X" ((weakExprToCoreExpr (trace "X" (q))))))))))))))))))))))))))))))))}))}))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
 
-coreToCoreExpr :: Prelude.Bool -> Prelude.Bool -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> UniqSupply.UniqSupply -> TyCon.TyCon -> TyCon.TyCon -> TyCon.TyCon -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> (CoreSyn.Expr Var.Var) -> CoreSyn.Expr Var.Var
-coreToCoreExpr do_flatten do_skolemize hetmet_brak hetmet_esc hetmet_flatten hetmet_unflatten hetmet_flattened_id uniqueSupply hetmet_PGArrowTyCon hetmet_PGArrow_unit_TyCon hetmet_PGArrow_tensor_TyCon hetmet_pga_id hetmet_pga_comp hetmet_pga_first hetmet_pga_second hetmet_pga_cancell hetmet_pga_cancelr hetmet_pga_uncancell hetmet_pga_uncancelr hetmet_pga_assoc hetmet_pga_unassoc hetmet_pga_copy hetmet_pga_drop hetmet_pga_swap ce =
-  (trace "X" (case (trace "X" ((trace "X" (coreToCoreExpr' (trace "X" (do_flatten)) (trace "X" (do_skolemize)) (trace "X" (hetmet_brak)) (trace "X" (hetmet_esc)) (trace "X" (hetmet_flatten)) (trace "X" (hetmet_unflatten)) (trace "X" (hetmet_flattened_id)) (trace "X" (uniqueSupply)) (trace "X" (hetmet_PGArrowTyCon)) (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (hetmet_pga_id)) (trace "X" (hetmet_pga_comp)) (trace "X" (hetmet_pga_first)) (trace "X" (hetmet_pga_second)) (trace "X" (hetmet_pga_cancell)) (trace "X" (hetmet_pga_cancelr)) (trace "X" (hetmet_pga_uncancell)) (trace "X" (hetmet_pga_uncancelr)) (trace "X" (hetmet_pga_assoc)) (trace "X" (hetmet_pga_unassoc)) (trace "X" (hetmet_pga_copy)) (trace "X" (hetmet_pga_drop)) (trace "X" (hetmet_pga_swap)) (trace "X" (ce)))))) of {
+coreToCoreExpr :: Prelude.Bool -> Prelude.Bool -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> UniqSupply.UniqSupply -> TyCon.TyCon -> TyCon.TyCon -> TyCon.TyCon -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> (CoreSyn.Expr Var.Var) -> CoreSyn.Expr Var.Var
+coreToCoreExpr do_flatten do_skolemize hetmet_brak hetmet_esc hetmet_flatten hetmet_unflatten hetmet_flattened_id uniqueSupply hetmet_PGArrowTyCon hetmet_PGArrow_unit_TyCon hetmet_PGArrow_tensor_TyCon hetmet_pga_id hetmet_pga_comp hetmet_pga_first hetmet_pga_second hetmet_pga_cancell hetmet_pga_cancelr hetmet_pga_uncancell hetmet_pga_uncancelr hetmet_pga_assoc hetmet_pga_unassoc hetmet_pga_copy hetmet_pga_drop hetmet_pga_swap hetmet_pga_loopl hetmet_pga_loopr ce =
+  (trace "X" (case (trace "X" ((trace "X" (coreToCoreExpr' (trace "X" (do_flatten)) (trace "X" (do_skolemize)) (trace "X" (hetmet_brak)) (trace "X" (hetmet_esc)) (trace "X" (hetmet_flatten)) (trace "X" (hetmet_unflatten)) (trace "X" (hetmet_flattened_id)) (trace "X" (uniqueSupply)) (trace "X" (hetmet_PGArrowTyCon)) (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (hetmet_pga_id)) (trace "X" (hetmet_pga_comp)) (trace "X" (hetmet_pga_first)) (trace "X" (hetmet_pga_second)) (trace "X" (hetmet_pga_cancell)) (trace "X" (hetmet_pga_cancelr)) (trace "X" (hetmet_pga_uncancell)) (trace "X" (hetmet_pga_uncancelr)) (trace "X" (hetmet_pga_assoc)) (trace "X" (hetmet_pga_unassoc)) (trace "X" (hetmet_pga_copy)) (trace "X" (hetmet_pga_drop)) (trace "X" (hetmet_pga_swap)) (trace "X" (hetmet_pga_loopl)) (trace "X" (hetmet_pga_loopr)) (trace "X" (ce)))))) of {
                Error s -> (trace "X" ((trace "X" (Prelude.error (trace "X" (s))))));
                OK x -> (trace "X" (x))}))
 
-coreToCoreBind :: Prelude.Bool -> Prelude.Bool -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> UniqSupply.UniqSupply -> TyCon.TyCon -> TyCon.TyCon -> TyCon.TyCon -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> (CoreSyn.Bind Var.Var) -> CoreSyn.Bind Var.Var
-coreToCoreBind do_flatten do_skolemize hetmet_brak hetmet_esc hetmet_flatten hetmet_unflatten hetmet_flattened_id uniqueSupply hetmet_PGArrowTyCon hetmet_PGArrow_unit_TyCon hetmet_PGArrow_tensor_TyCon hetmet_pga_id hetmet_pga_comp hetmet_pga_first hetmet_pga_second hetmet_pga_cancell hetmet_pga_cancelr hetmet_pga_uncancell hetmet_pga_uncancelr hetmet_pga_assoc hetmet_pga_unassoc hetmet_pga_copy hetmet_pga_drop hetmet_pga_swap binds =
+coreToCoreBind :: Prelude.Bool -> Prelude.Bool -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> UniqSupply.UniqSupply -> TyCon.TyCon -> TyCon.TyCon -> TyCon.TyCon -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> (CoreSyn.Bind Var.Var) -> CoreSyn.Bind Var.Var
+coreToCoreBind do_flatten do_skolemize hetmet_brak hetmet_esc hetmet_flatten hetmet_unflatten hetmet_flattened_id uniqueSupply hetmet_PGArrowTyCon hetmet_PGArrow_unit_TyCon hetmet_PGArrow_tensor_TyCon hetmet_pga_id hetmet_pga_comp hetmet_pga_first hetmet_pga_second hetmet_pga_cancell hetmet_pga_cancelr hetmet_pga_uncancell hetmet_pga_uncancelr hetmet_pga_assoc hetmet_pga_unassoc hetmet_pga_copy hetmet_pga_drop hetmet_pga_swap hetmet_pga_loopl hetmet_pga_loopr binds =
   (trace "X" (case (trace "X" (binds)) of {
-               CoreSyn.NonRec v e -> (trace "X" (let {e' = (trace "X" ((trace "X" (coreToCoreExpr (trace "X" (do_flatten)) (trace "X" (do_skolemize)) (trace "X" (hetmet_brak)) (trace "X" (hetmet_esc)) (trace "X" (hetmet_flatten)) (trace "X" (hetmet_unflatten)) (trace "X" (hetmet_flattened_id)) (trace "X" (uniqueSupply)) (trace "X" (hetmet_PGArrowTyCon)) (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (hetmet_pga_id)) (trace "X" (hetmet_pga_comp)) (trace "X" (hetmet_pga_first)) (trace "X" (hetmet_pga_second)) (trace "X" (hetmet_pga_cancell)) (trace "X" (hetmet_pga_cancelr)) (trace "X" (hetmet_pga_uncancell)) (trace "X" (hetmet_pga_uncancelr)) (trace "X" (hetmet_pga_assoc)) (trace "X" (hetmet_pga_unassoc)) (trace "X" (hetmet_pga_copy)) (trace "X" (hetmet_pga_drop)) (trace "X" (hetmet_pga_swap)) (trace "X" (e))))))} in (trace "X" (CoreSyn.NonRec (trace "X" ((trace "X" ((Var.setVarType (trace "X" (v)) (trace "X" ((trace "X" ((CoreUtils.exprType (trace "X" (e')))))))))))) (trace "X" (e'))))));
+               CoreSyn.NonRec v e -> (trace "X" (let {e' = (trace "X" ((trace "X" (coreToCoreExpr (trace "X" (do_flatten)) (trace "X" (do_skolemize)) (trace "X" (hetmet_brak)) (trace "X" (hetmet_esc)) (trace "X" (hetmet_flatten)) (trace "X" (hetmet_unflatten)) (trace "X" (hetmet_flattened_id)) (trace "X" (uniqueSupply)) (trace "X" (hetmet_PGArrowTyCon)) (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (hetmet_pga_id)) (trace "X" (hetmet_pga_comp)) (trace "X" (hetmet_pga_first)) (trace "X" (hetmet_pga_second)) (trace "X" (hetmet_pga_cancell)) (trace "X" (hetmet_pga_cancelr)) (trace "X" (hetmet_pga_uncancell)) (trace "X" (hetmet_pga_uncancelr)) (trace "X" (hetmet_pga_assoc)) (trace "X" (hetmet_pga_unassoc)) (trace "X" (hetmet_pga_copy)) (trace "X" (hetmet_pga_drop)) (trace "X" (hetmet_pga_swap)) (trace "X" (hetmet_pga_loopl)) (trace "X" (hetmet_pga_loopr)) (trace "X" (e))))))} in (trace "X" (CoreSyn.NonRec (trace "X" ((trace "X" ((Var.setVarType (trace "X" (v)) (trace "X" ((trace "X" ((CoreUtils.exprType (trace "X" (e')))))))))))) (trace "X" (e'))))));
                CoreSyn.Rec lbe -> (trace "X" (CoreSyn.Rec (trace "X" ((trace "X" ((map (trace "X" ((\ve -> (trace "X" (case (trace "X" (ve)) of {
-                                                                                                                        (,) v e -> (trace "X" ((,) (trace "X" (v)) (trace "X" ((trace "X" ((coreToCoreExpr (trace "X" (do_flatten)) (trace "X" (do_skolemize)) (trace "X" (hetmet_brak)) (trace "X" (hetmet_esc)) (trace "X" (hetmet_flatten)) (trace "X" (hetmet_unflatten)) (trace "X" (hetmet_flattened_id)) (trace "X" (uniqueSupply)) (trace "X" (hetmet_PGArrowTyCon)) (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (hetmet_pga_id)) (trace "X" (hetmet_pga_comp)) (trace "X" (hetmet_pga_first)) (trace "X" (hetmet_pga_second)) (trace "X" (hetmet_pga_cancell)) (trace "X" (hetmet_pga_cancelr)) (trace "X" (hetmet_pga_uncancell)) (trace "X" (hetmet_pga_uncancelr)) (trace "X" (hetmet_pga_assoc)) (trace "X" (hetmet_pga_unassoc)) (trace "X" (hetmet_pga_copy)) (trace "X" (hetmet_pga_drop)) (trace "X" (hetmet_pga_swap)) (trace "X" (e)))))))))}))))) (trace "X" (lbe)))))))))}))
+                                                                                                                        (,) v e -> (trace "X" ((,) (trace "X" (v)) (trace "X" ((trace "X" ((coreToCoreExpr (trace "X" (do_flatten)) (trace "X" (do_skolemize)) (trace "X" (hetmet_brak)) (trace "X" (hetmet_esc)) (trace "X" (hetmet_flatten)) (trace "X" (hetmet_unflatten)) (trace "X" (hetmet_flattened_id)) (trace "X" (uniqueSupply)) (trace "X" (hetmet_PGArrowTyCon)) (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (hetmet_pga_id)) (trace "X" (hetmet_pga_comp)) (trace "X" (hetmet_pga_first)) (trace "X" (hetmet_pga_second)) (trace "X" (hetmet_pga_cancell)) (trace "X" (hetmet_pga_cancelr)) (trace "X" (hetmet_pga_uncancell)) (trace "X" (hetmet_pga_uncancelr)) (trace "X" (hetmet_pga_assoc)) (trace "X" (hetmet_pga_unassoc)) (trace "X" (hetmet_pga_copy)) (trace "X" (hetmet_pga_drop)) (trace "X" (hetmet_pga_swap)) (trace "X" (hetmet_pga_loopl)) (trace "X" (hetmet_pga_loopr)) (trace "X" (e)))))))))}))))) (trace "X" (lbe)))))))))}))
 
-coqPassCoreToCore' :: Prelude.Bool -> Prelude.Bool -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> UniqSupply.UniqSupply -> TyCon.TyCon -> TyCon.TyCon -> TyCon.TyCon -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> (([]) (CoreSyn.Bind Var.Var)) -> ([]) (CoreSyn.Bind Var.Var)
-coqPassCoreToCore' do_flatten do_skolemize hetmet_brak hetmet_esc hetmet_flatten hetmet_unflatten hetmet_flattened_id uniqueSupply hetmet_PGArrowTyCon hetmet_PGArrow_unit_TyCon hetmet_PGArrow_tensor_TyCon hetmet_pga_id hetmet_pga_comp hetmet_pga_first hetmet_pga_second hetmet_pga_cancell hetmet_pga_cancelr hetmet_pga_uncancell hetmet_pga_uncancelr hetmet_pga_assoc hetmet_pga_unassoc hetmet_pga_copy hetmet_pga_drop hetmet_pga_swap lbinds =
-  (trace "X" ((trace "X" (map (trace "X" ((trace "X" ((coreToCoreBind (trace "X" (do_flatten)) (trace "X" (do_skolemize)) (trace "X" (hetmet_brak)) (trace "X" (hetmet_esc)) (trace "X" (hetmet_flatten)) (trace "X" (hetmet_unflatten)) (trace "X" (hetmet_flattened_id)) (trace "X" (uniqueSupply)) (trace "X" (hetmet_PGArrowTyCon)) (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (hetmet_pga_id)) (trace "X" (hetmet_pga_comp)) (trace "X" (hetmet_pga_first)) (trace "X" (hetmet_pga_second)) (trace "X" (hetmet_pga_cancell)) (trace "X" (hetmet_pga_cancelr)) (trace "X" (hetmet_pga_uncancell)) (trace "X" (hetmet_pga_uncancelr)) (trace "X" (hetmet_pga_assoc)) (trace "X" (hetmet_pga_unassoc)) (trace "X" (hetmet_pga_copy)) (trace "X" (hetmet_pga_drop)) (trace "X" (hetmet_pga_swap))))))) (trace "X" (lbinds))))))
+coqPassCoreToCore' :: Prelude.Bool -> Prelude.Bool -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> UniqSupply.UniqSupply -> TyCon.TyCon -> TyCon.TyCon -> TyCon.TyCon -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> (([]) (CoreSyn.Bind Var.Var)) -> ([]) (CoreSyn.Bind Var.Var)
+coqPassCoreToCore' do_flatten do_skolemize hetmet_brak hetmet_esc hetmet_flatten hetmet_unflatten hetmet_flattened_id uniqueSupply hetmet_PGArrowTyCon hetmet_PGArrow_unit_TyCon hetmet_PGArrow_tensor_TyCon hetmet_pga_id hetmet_pga_comp hetmet_pga_first hetmet_pga_second hetmet_pga_cancell hetmet_pga_cancelr hetmet_pga_uncancell hetmet_pga_uncancelr hetmet_pga_assoc hetmet_pga_unassoc hetmet_pga_copy hetmet_pga_drop hetmet_pga_swap hetmet_pga_loopl hetmet_pga_loopr lbinds =
+  (trace "X" ((trace "X" (map (trace "X" ((trace "X" ((coreToCoreBind (trace "X" (do_flatten)) (trace "X" (do_skolemize)) (trace "X" (hetmet_brak)) (trace "X" (hetmet_esc)) (trace "X" (hetmet_flatten)) (trace "X" (hetmet_unflatten)) (trace "X" (hetmet_flattened_id)) (trace "X" (uniqueSupply)) (trace "X" (hetmet_PGArrowTyCon)) (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (hetmet_pga_id)) (trace "X" (hetmet_pga_comp)) (trace "X" (hetmet_pga_first)) (trace "X" (hetmet_pga_second)) (trace "X" (hetmet_pga_cancell)) (trace "X" (hetmet_pga_cancelr)) (trace "X" (hetmet_pga_uncancell)) (trace "X" (hetmet_pga_uncancelr)) (trace "X" (hetmet_pga_assoc)) (trace "X" (hetmet_pga_unassoc)) (trace "X" (hetmet_pga_copy)) (trace "X" (hetmet_pga_drop)) (trace "X" (hetmet_pga_swap)) (trace "X" (hetmet_pga_loopl)) (trace "X" (hetmet_pga_loopr))))))) (trace "X" (lbinds))))))
 
-coqPassCoreToCore :: Prelude.Bool -> Prelude.Bool -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> UniqSupply.UniqSupply -> (([]) (CoreSyn.Bind Var.Var)) -> TyCon.TyCon -> TyCon.TyCon -> TyCon.TyCon -> TyCon.TyCon -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> ([]) (CoreSyn.Bind Var.Var)
-coqPassCoreToCore do_flatten do_skolemize hetmet_brak hetmet_esc hetmet_flatten hetmet_unflatten hetmet_flattened_id uniqueSupply lbinds hetmet_PGArrowTyCon hetmet_PGArrow_unit_TyCon hetmet_PGArrow_tensor_TyCon hetmet_PGArrow_exponent_TyCon hetmet_pga_id hetmet_pga_comp hetmet_pga_first hetmet_pga_second hetmet_pga_cancell hetmet_pga_cancelr hetmet_pga_uncancell hetmet_pga_uncancelr hetmet_pga_assoc hetmet_pga_unassoc hetmet_pga_copy hetmet_pga_drop hetmet_pga_swap hetmet_pga_applyl hetmet_pga_applyr hetmet_pga_curryl hetmet_pga_curryr =
-  (trace "X" ((trace "X" (coqPassCoreToCore' (trace "X" (do_flatten)) (trace "X" (do_skolemize)) (trace "X" (hetmet_brak)) (trace "X" (hetmet_esc)) (trace "X" (hetmet_flatten)) (trace "X" (hetmet_unflatten)) (trace "X" (hetmet_flattened_id)) (trace "X" (uniqueSupply)) (trace "X" (hetmet_PGArrowTyCon)) (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (hetmet_pga_id)) (trace "X" (hetmet_pga_comp)) (trace "X" (hetmet_pga_first)) (trace "X" (hetmet_pga_second)) (trace "X" (hetmet_pga_cancell)) (trace "X" (hetmet_pga_cancelr)) (trace "X" (hetmet_pga_uncancell)) (trace "X" (hetmet_pga_uncancelr)) (trace "X" (hetmet_pga_assoc)) (trace "X" (hetmet_pga_unassoc)) (trace "X" (hetmet_pga_copy)) (trace "X" (hetmet_pga_drop)) (trace "X" (hetmet_pga_swap)) (trace "X" (lbinds))))))
+coqPassCoreToCore :: Prelude.Bool -> Prelude.Bool -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> UniqSupply.UniqSupply -> (([]) (CoreSyn.Bind Var.Var)) -> TyCon.TyCon -> TyCon.TyCon -> TyCon.TyCon -> TyCon.TyCon -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> Var.Var -> ([]) (CoreSyn.Bind Var.Var)
+coqPassCoreToCore do_flatten do_skolemize hetmet_brak hetmet_esc hetmet_flatten hetmet_unflatten hetmet_flattened_id uniqueSupply lbinds hetmet_PGArrowTyCon hetmet_PGArrow_unit_TyCon hetmet_PGArrow_tensor_TyCon hetmet_PGArrow_exponent_TyCon hetmet_pga_id hetmet_pga_comp hetmet_pga_first hetmet_pga_second hetmet_pga_cancell hetmet_pga_cancelr hetmet_pga_uncancell hetmet_pga_uncancelr hetmet_pga_assoc hetmet_pga_unassoc hetmet_pga_copy hetmet_pga_drop hetmet_pga_swap hetmet_pga_applyl hetmet_pga_applyr hetmet_pga_curryl hetmet_pga_curryr hetmet_pga_loopl hetmet_pga_loopr =
+  (trace "X" ((trace "X" (coqPassCoreToCore' (trace "X" (do_flatten)) (trace "X" (do_skolemize)) (trace "X" (hetmet_brak)) (trace "X" (hetmet_esc)) (trace "X" (hetmet_flatten)) (trace "X" (hetmet_unflatten)) (trace "X" (hetmet_flattened_id)) (trace "X" (uniqueSupply)) (trace "X" (hetmet_PGArrowTyCon)) (trace "X" (hetmet_PGArrow_unit_TyCon)) (trace "X" (hetmet_PGArrow_tensor_TyCon)) (trace "X" (hetmet_pga_id)) (trace "X" (hetmet_pga_comp)) (trace "X" (hetmet_pga_first)) (trace "X" (hetmet_pga_second)) (trace "X" (hetmet_pga_cancell)) (trace "X" (hetmet_pga_cancelr)) (trace "X" (hetmet_pga_uncancell)) (trace "X" (hetmet_pga_uncancelr)) (trace "X" (hetmet_pga_assoc)) (trace "X" (hetmet_pga_unassoc)) (trace "X" (hetmet_pga_copy)) (trace "X" (hetmet_pga_drop)) (trace "X" (hetmet_pga_swap)) (trace "X" (hetmet_pga_loopl)) (trace "X" (hetmet_pga_loopr)) (trace "X" (lbinds))))))