From 176674d506ca72f9ddafb19da4691f8cf8b0bbb9 Mon Sep 17 00:00:00 2001 From: Adam Megacz Date: Wed, 20 Apr 2011 12:08:15 -0700 Subject: [PATCH] update baked-in CoqPass.hs --- build/CoqPass.hs | 3839 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 3839 insertions(+) create mode 100644 build/CoqPass.hs diff --git a/build/CoqPass.hs b/build/CoqPass.hs new file mode 100644 index 0000000..8d0a3dd --- /dev/null +++ b/build/CoqPass.hs @@ -0,0 +1,3839 @@ +module CoqPass ( coqPassCoreToString, coqPassCoreToCore ) +where +import qualified Unique +import qualified UniqSupply +import qualified MkCore +import qualified TysWiredIn +import qualified TysPrim +import qualified Outputable +import qualified PrelNames +import qualified OccName +import qualified Name +import qualified Literal +import qualified Type +import qualified TypeRep +import qualified DataCon +import qualified TyCon +import qualified Coercion +import qualified Var +import qualified Id +import qualified FastString +import qualified BasicTypes +import qualified DataCon +import qualified CoreSyn +import qualified CoreUtils +import qualified Class +import qualified Data.Char +import qualified Data.List +import qualified Data.Ord +import qualified Data.Typeable +import Data.Bits ((.&.), shiftL, (.|.)) +import Prelude ( (++), (+), (==), Show, show, Char, (.), ($) ) +import qualified Prelude +import qualified Debug.Trace +import qualified GHC.Base +import qualified System.IO +import qualified System.IO.Unsafe + +getTyConTyVars :: TyCon.TyCon -> [Var.TyVar] +getTyConTyVars tc = + if TyCon.isFunTyCon tc + then [] + else if TyCon.isPrimTyCon tc + then [] + else TyCon.tyConTyVars tc + +cmpAlts :: (CoreSyn.AltCon,[Var.Var],CoreSyn.Expr Var.Var) -> (CoreSyn.AltCon,[Var.Var],CoreSyn.Expr Var.Var) -> Data.Ord.Ordering +cmpAlts (CoreSyn.DEFAULT,_,_) _ = Data.Ord.LT +cmpAlts _ (CoreSyn.DEFAULT,_,_) = Data.Ord.GT +cmpAlts (a1,_,_) (a2,_,_) = Data.Ord.compare a2 a1 + +sortAlts :: [(CoreSyn.AltCon,[Var.Var],CoreSyn.Expr Var.Var)] -> [(CoreSyn.AltCon,[Var.Var],CoreSyn.Expr Var.Var)] +sortAlts x = Data.List.sortBy (\a b -> if a `CoreSyn.ltAlt` b then Data.Ord.LT else Data.Ord.GT) x + +coreVarToWeakVar :: Var.Var -> WeakVar +coreVarToWeakVar v | Id.isId v = WExprVar (WeakExprVar v (errOrFail (coreTypeToWeakType (Var.varType v)))) +coreVarToWeakVar v | Var.isTyVar v = WTypeVar (WeakTypeVar v (coreKindToKind (Var.varType v))) +coreVarToWeakVar v | Var.isCoVar v = WCoerVar (WeakCoerVar v (Prelude.error "FIXME") + (Prelude.error "FIXME") (Prelude.error "FIXME")) +coreVarToWeakVar _ = + Prelude.error "Var.Var that is neither an expression variable, type variable, nor coercion variable!" + +errOrFail (OK x) = x +errOrFail (Error s) = Prelude.error s + +tyConOrTyFun :: TyCon.TyCon -> Prelude.Either TyCon.TyCon TyCon.TyCon +tyConOrTyFun n = + if n == TysPrim.statePrimTyCon -- special-purpose hack treat State# as a type family since it has kind *->* but no tyvars + then Prelude.Right n + else if TyCon.isFamInstTyCon n + then Prelude.Right n + else Prelude.Left n + +nat2int :: Nat -> Prelude.Int +nat2int O = 0 +nat2int (S x) = 1 + (nat2int x) + +natToString :: Nat -> Prelude.String +natToString n = show (nat2int n) + +sanitizeForLatex :: Prelude.String -> Prelude.String +sanitizeForLatex [] = [] +sanitizeForLatex ('_':x) = "\\_"++(sanitizeForLatex x) +sanitizeForLatex ('$':x) = "\\$"++(sanitizeForLatex x) +sanitizeForLatex ('#':x) = "\\#"++(sanitizeForLatex x) +sanitizeForLatex (c:x) = c:(sanitizeForLatex x) + +kindToCoreKind :: Kind -> TypeRep.Kind +kindToCoreKind KindStar = TypeRep.liftedTypeKind +kindToCoreKind (KindArrow k1 k2) = Coercion.mkArrowKind (kindToCoreKind k1) (kindToCoreKind k2) +kindToCoreKind _ = Prelude.error "kindToCoreKind does not know how to handle that" + +coreKindToKind :: TypeRep.Kind -> Kind +coreKindToKind k = + case Coercion.splitKindFunTy_maybe k of + Prelude.Just (k1,k2) -> KindArrow (coreKindToKind k1) (coreKindToKind k2) + Prelude.Nothing -> + if (Coercion.isLiftedTypeKind k) then KindStar + else if (Coercion.isUnliftedTypeKind k) then KindStar + else if (Coercion.isArgTypeKind k) then KindStar + else if (Coercion.isUbxTupleKind k) then KindStar + else if (Coercion.isOpenTypeKind k) then KindStar +-- +-- The "subkinding" in GHC is not dealt with in System FC, and dealing +-- with it is not actually as simple as you'd think. +-- +-- else if (Coercion.isUnliftedTypeKind k) then KindUnliftedType +-- else if (Coercion.isOpenTypeKind k) then KindOpenType +-- else if (Coercion.isArgTypeKind k) then KindArgType +-- else if (Coercion.isUbxTupleKind k) then KindUnboxedTuple +-- + else if (Coercion.isTySuperKind k) then Prelude.error "coreKindToKind got the kind-of-the-kind-of-types" + else if (Coercion.isCoSuperKind k) then Prelude.error "coreKindToKind got the kind-of-the-kind-of-coercions" + else Prelude.error ((Prelude.++) "coreKindToKind got an unknown kind: " + (Outputable.showSDoc (Outputable.ppr k))) +outputableToString :: Outputable.Outputable a => a -> Prelude.String +outputableToString = (\x -> Outputable.showSDoc (Outputable.ppr x)) + +coreViewDeep :: Type.Type -> Type.Type +coreViewDeep t = + case t of + TypeRep.TyVarTy tv -> TypeRep.TyVarTy tv + TypeRep.FunTy arg res -> TypeRep.FunTy (coreViewDeep arg) (coreViewDeep res) + TypeRep.AppTy fun arg -> TypeRep.AppTy (coreViewDeep fun) (coreViewDeep arg) + TypeRep.ForAllTy fun arg -> TypeRep.ForAllTy fun (coreViewDeep arg) + TypeRep.TyConApp tc tys -> let t' = TypeRep.TyConApp tc (Prelude.map coreViewDeep tys) + in case Type.coreView t' of + Prelude.Nothing -> t' + Prelude.Just t'' -> t'' + TypeRep.PredTy p -> case Type.coreView t of + Prelude.Nothing -> TypeRep.PredTy p + Prelude.Just t' -> t' + +coreCoercionToWeakCoercion :: Type.Type -> WeakCoercion +coreCoercionToWeakCoercion c = + WCoUnsafe (errOrFail (coreTypeToWeakType t1)) (errOrFail (coreTypeToWeakType t2)) + where + (t1,t2) = Coercion.coercionKind c +{- +-- REMEMBER: cotycon applications may be oversaturated + case c of + TypeRep.TyVarTy v -> WCoVar (WeakCoerVar v (Prelude.error "FIXME") (Prelude.error "FIXME") (Prelude.error "FIXME")) + TypeRep.AppTy t1 t2 -> WCoApp (coreCoercionToWeakCoercion t1) (coreCoercionToWeakCoercion t2) + TypeRep.TyConApp tc t -> + case TyCon.isCoercionTyCon_maybe tc of + Prelude.Nothing -> Prelude.error ((Prelude.++) "coreCoercionToWeakCoercion got isCoercionTyCon_maybe " (outputableToString c)) + Prelude.Just (_, ctcd) -> + case (ctcd,t) of + (TyCon.CoTrans , [x,y] ) -> WCoComp (coreCoercionToWeakCoercion x) (coreCoercionToWeakCoercion y) + (TyCon.CoSym , [x] ) -> WCoSym (coreCoercionToWeakCoercion x) + (TyCon.CoLeft , [x] ) -> WCoLeft (coreCoercionToWeakCoercion x) + (TyCon.CoRight , [x] ) -> WCoLeft (coreCoercionToWeakCoercion x) +-- (TyCon.CoUnsafe, [t1, t2 ] ) -> WCoUnsafe (coreTypeToWeakType t1) (coreTypeToWeakType t2) + (TyCon.CoTrans , [] ) -> Prelude.error "CoTrans is not in post-publication-appendix SystemFC1" + (TyCon.CoCsel1 , [] ) -> Prelude.error "CoCsel1 is not in post-publication-appendix SystemFC1" + (TyCon.CoCsel2 , [] ) -> Prelude.error "CoCsel2 is not in post-publication-appendix SystemFC1" + (TyCon.CoCselR , [] ) -> Prelude.error "CoCselR is not in post-publication-appendix SystemFC1" + (TyCon.CoInst , [] ) -> Prelude.error "CoInst is not in post-publication-appendix SystemFC1" + (TyCon.CoAxiom _ _ _ , _ ) -> Prelude.error "CoAxiom is not yet implemented (FIXME)" + ( _, [ t1 , t2 ]) -> WCoUnsafe (errOrFail (coreTypeToWeakType t1)) (errOrFail (coreTypeToWeakType t2)) + _ -> Prelude.error ((Prelude.++) "coreCoercionToWeakCoercion got " (outputableToString c)) + _ -> Prelude.error ((Prelude.++) "coreCoercionToWeakCoercion got " (outputableToString c)) +-} +-- TypeRep.ForAllTy v t -> WCoAll (Prelude.error "FIXME") (coreTypeToWeakType t) +-- FIXME x y -> WCoAppT (coreCoercionToWeakCoercion x) (coreCoercionToWeakType y) +-- CoreSyn.Type t -> WCoType (coreTypeToWeakType t) + +{- +weakCoercionToCoreCoercion :: CoreCoercion -> Type.Type +| WCoVar (weakCoerVar _ _ t1 t2) => (t1,t2) +| WCoType t => Prelude_error "FIXME WCoType" +| WCoApp c1 c2 => Prelude_error "FIXME WCoApp" +| WCoAppT c t => Prelude_error "FIXME WCoAppT" +| WCoAll k f => Prelude_error "FIXME WCoAll" +| WCoSym c => let (t2,t1) := weakCoercionTypes c in (t1,t2) +| WCoComp c1 c2 => Prelude_error "FIXME WCoComp" +| WCoLeft c => Prelude_error "FIXME WCoLeft" +| WCoRight c => Prelude_error "FIXME WCoRight" +| WCoUnsafe t1 t2 => (t1,t2) +-} + + +--trace = Debug.Trace.trace +--trace msg x = x +trace msg x = System.IO.Unsafe.unsafePerformIO $ Prelude.return x +{- +trace s x = x +trace msg x = System.IO.Unsafe.unsafePerformIO $ + (Prelude.>>=) (System.IO.hPutStrLn System.IO.stdout msg) (\_ -> Prelude.return x) +trace msg x = System.IO.Unsafe.unsafePerformIO $ + (Prelude.>>=) (System.IO.hPutStr System.IO.stdout " ") (\_ -> Prelude.return x) +-} + +{- -- used for extracting strings WITHOUT the patch for Coq +bin2ascii = + (\ b0 b1 b2 b3 b4 b5 b6 b7 -> + let f b i = if b then 1 `shiftL` i else 0 + in Data.Char.chr (f b0 0 .|. f b1 1 .|. f b2 2 .|. f b3 3 .|. f b4 4 .|. f b5 5 .|. f b6 6 .|. f b7 7)) +-} + +-- I'm leaving this here (commented out) in case I ever need it again) +--checkTypeEquality :: Type.Type -> Type.Type -> Prelude.Bool +--checkTypeEquality t1 t2 = Type.tcEqType (Type.expandTypeSynonyms t1) (Type.expandTypeSynonyms t2) +{-# OPTIONS_GHC -cpp -fglasgow-exts -XTemplateHaskell #-} +{- For Hugs, use the option -F"cpp -P -traditional" -} + + + + +#ifdef __GLASGOW_HASKELL__ +unsafeCoerce = GHC.Base.unsafeCoerce# +#else +-- HUGS +unsafeCoerce = IOExts.unsafeCoerce +#endif + +__ = Prelude.error "Logical or arity value used" + +false_rect :: a1 +false_rect = + (trace "X" (Prelude.error "absurd case")) + +eq_rect :: a1 -> a2 -> a1 -> a2 +eq_rect x f y = + (trace "X" (f)) + +eq_rec :: a1 -> a2 -> a1 -> a2 +eq_rec x f y = + (trace "X" ((trace "X" (eq_rect (trace "X" (x)) (trace "X" (f)) (trace "X" (y)))))) + +eq_rec_r :: a1 -> a2 -> a1 -> a2 +eq_rec_r x h y = + (trace "X" ((trace "X" (eq_rec (trace "X" (x)) (trace "X" (h)) (trace "X" (y)))))) + +eq_rect_r :: a1 -> a2 -> a1 -> a2 +eq_rect_r x h y = + (trace "X" ((trace "X" (eq_rect (trace "X" (x)) (trace "X" (h)) (trace "X" (y)))))) + +data Nat = + O + | S Nat + +nat_rect :: a1 -> (Nat -> a1 -> a1) -> Nat -> a1 +nat_rect f f0 n = + (trace "X" (case (trace "X" (n)) of { + O -> (trace "X" (f)); + S n0 -> (trace "X" ((trace "X" (f0 (trace "X" (n0)) (trace "X" ((trace "X" ((nat_rect (trace "X" (f)) (trace "X" (f0)) (trace "X" (n0)))))))))))})) + +nat_rec :: a1 -> (Nat -> a1 -> a1) -> Nat -> a1 +nat_rec = + (trace "X" (nat_rect)) + +fst :: ((,) a1 a2) -> a1 +fst p = + (trace "X" (case (trace "X" (p)) of { + (,) x y -> (trace "X" (x))})) + +snd :: ((,) a1 a2) -> a2 +snd p = + (trace "X" (case (trace "X" (p)) of { + (,) x y -> (trace "X" (y))})) + +list_rect :: a2 -> (a1 -> (([]) a1) -> a2 -> a2) -> (([]) a1) -> a2 +list_rect f f0 l = + (trace "X" (case (trace "X" (l)) of { + ([]) -> (trace "X" (f)); + (:) y l0 -> (trace "X" ((trace "X" (f0 (trace "X" (y)) (trace "X" (l0)) (trace "X" ((trace "X" ((list_rect (trace "X" (f)) (trace "X" (f0)) (trace "X" (l0)))))))))))})) + +list_rec :: a2 -> (a1 -> (([]) a1) -> a2 -> a2) -> (([]) a1) -> a2 +list_rec = + (trace "X" (list_rect)) + +length :: (([]) a1) -> Nat +length l = + (trace "X" (case (trace "X" (l)) of { + ([]) -> (trace "X" (O)); + (:) y l' -> (trace "X" (S (trace "X" ((trace "X" ((length (trace "X" (l')))))))))})) + +app :: (([]) a1) -> (([]) a1) -> ([]) a1 +app l m = + (trace "X" (case (trace "X" (l)) of { + ([]) -> (trace "X" (m)); + (:) a l1 -> (trace "X" ((:) (trace "X" (a)) (trace "X" ((trace "X" ((app (trace "X" (l1)) (trace "X" (m)))))))))})) + +type Sig a = + a + -- singleton inductive, whose constructor was exist + +data SigT a p = + ExistT a p + +projT1 :: (SigT a1 a2) -> a1 +projT1 x = + (trace "X" (case (trace "X" (x)) of { + ExistT a p -> (trace "X" (a))})) + +projT2 :: (SigT a1 a2) -> a2 +projT2 x = + (trace "X" (case (trace "X" (x)) of { + ExistT x0 h -> (trace "X" (h))})) + +sumbool_rect :: (() -> a1) -> (() -> a1) -> Prelude.Bool -> a1 +sumbool_rect f f0 s = + (trace "X" (case (trace "X" (s)) of { + Prelude.True -> (trace "X" ((trace "X" (f (trace "X" (__)))))); + Prelude.False -> (trace "X" ((trace "X" (f0 (trace "X" (__))))))})) + +sumbool_rec :: (() -> a1) -> (() -> a1) -> Prelude.Bool -> a1 +sumbool_rec = + (trace "X" (sumbool_rect)) + +plus :: Nat -> Nat -> Nat +plus n m = + (trace "X" (case (trace "X" (n)) of { + O -> (trace "X" (m)); + S p -> (trace "X" (S (trace "X" ((trace "X" ((plus (trace "X" (p)) (trace "X" (m)))))))))})) + +eq_nat_dec :: Nat -> Nat -> Prelude.Bool +eq_nat_dec n = + (trace "X" ((trace "X" (nat_rec (trace "X" ((\m -> + (trace "X" (case (trace "X" (m)) of { + O -> (trace "X" (Prelude.True)); + S m0 -> (trace "X" (Prelude.False))}))))) (trace "X" ((\n0 iHn m -> + (trace "X" (case (trace "X" (m)) of { + O -> (trace "X" (Prelude.False)); + S m0 -> (trace "X" ((trace "X" (sumbool_rec (trace "X" ((\_ -> (trace "X" (Prelude.True))))) (trace "X" ((\_ -> (trace "X" (Prelude.False))))) (trace "X" ((trace "X" ((iHn (trace "X" (m0)))))))))))}))))) (trace "X" (n)))))) + +map :: (a1 -> a2) -> (([]) a1) -> ([]) a2 +map f l = + (trace "X" (case (trace "X" (l)) of { + ([]) -> (trace "X" (([]))); + (:) a t -> (trace "X" ((:) (trace "X" ((trace "X" ((f (trace "X" (a))))))) (trace "X" ((trace "X" ((map (trace "X" (f)) (trace "X" (t)))))))))})) + +fold_left :: (a1 -> a2 -> a1) -> (([]) a2) -> a1 -> a1 +fold_left f l a0 = + (trace "X" (case (trace "X" (l)) of { + ([]) -> (trace "X" (a0)); + (:) b t -> (trace "X" ((trace "X" (fold_left (trace "X" (f)) (trace "X" (t)) (trace "X" ((trace "X" ((f (trace "X" (a0)) (trace "X" (b)))))))))))})) + +fold_right :: (a2 -> a1 -> a1) -> a1 -> (([]) a2) -> a1 +fold_right f a0 l = + (trace "X" (case (trace "X" (l)) of { + ([]) -> (trace "X" (a0)); + (:) b t -> (trace "X" ((trace "X" (f (trace "X" (b)) (trace "X" ((trace "X" ((fold_right (trace "X" (f)) (trace "X" (a0)) (trace "X" (t)))))))))))})) + +append :: Prelude.String -> Prelude.String -> Prelude.String +append s1 s2 = + (trace "X" (case (trace "X" (s1)) of { + [] -> (trace "X" (s2)); + (:) c s1' -> (trace "X" ((:) (trace "X" (c)) (trace "X" ((trace "X" ((append (trace "X" (s1')) (trace "X" (s2)))))))))})) + +type EqDecider t = t -> t -> Prelude.Bool + +type EqDecidable t = + t -> t -> Prelude.Bool + -- singleton inductive, whose constructor was Build_EqDecidable + +eqd_dec :: (EqDecidable a1) -> a1 -> a1 -> Prelude.Bool +eqd_dec eqDecidable = + (trace "X" (eqDecidable)) + +type ToString t = + t -> Prelude.String + -- singleton inductive, whose constructor was Build_ToString + +toString :: (ToString a1) -> a1 -> Prelude.String +toString toString0 = + (trace "X" (toString0)) + +type Concatenable t = + t -> t -> t + -- singleton inductive, whose constructor was Build_Concatenable + +concatenate :: (Concatenable a1) -> a1 -> a1 -> a1 +concatenate concatenable = + (trace "X" (concatenable)) + +concatenableString :: Concatenable Prelude.String +concatenableString = + (trace "X" (append)) + +data Tree a = + T_Leaf a + | T_Branch (Tree a) (Tree a) + +tree_rect :: (a1 -> a2) -> ((Tree a1) -> a2 -> (Tree a1) -> a2 -> a2) -> (Tree a1) -> a2 +tree_rect f f0 t = + (trace "X" (case (trace "X" (t)) of { + T_Leaf y -> (trace "X" ((trace "X" (f (trace "X" (y)))))); + T_Branch t0 t1 -> (trace "X" ((trace "X" (f0 (trace "X" (t0)) (trace "X" ((trace "X" ((tree_rect (trace "X" (f)) (trace "X" (f0)) (trace "X" (t0))))))) (trace "X" (t1)) (trace "X" ((trace "X" ((tree_rect (trace "X" (f)) (trace "X" (f0)) (trace "X" (t1)))))))))))})) + +mapOptionTree :: (a1 -> a2) -> (Tree (Prelude.Maybe a1)) -> Tree (Prelude.Maybe a2) +mapOptionTree 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" ((mapOptionTree (trace "X" (f)) (trace "X" (l))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (f)) (trace "X" (r)))))))))})) + +mapOptionTreeAndFlatten :: (a1 -> Tree (Prelude.Maybe a2)) -> (Tree (Prelude.Maybe a1)) -> Tree (Prelude.Maybe a2) +mapOptionTreeAndFlatten f t = + (trace "X" (case (trace "X" (t)) of { + T_Leaf o -> + (trace "X" (case (trace "X" (o)) of { + Prelude.Just x -> (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" ((mapOptionTreeAndFlatten (trace "X" (f)) (trace "X" (l))))))) (trace "X" ((trace "X" ((mapOptionTreeAndFlatten (trace "X" (f)) (trace "X" (r)))))))))})) + +leaves :: (Tree (Prelude.Maybe a1)) -> ([]) a1 +leaves t = + (trace "X" (case (trace "X" (t)) of { + T_Leaf l -> + (trace "X" (case (trace "X" (l)) of { + Prelude.Just x -> (trace "X" ((:) (trace "X" (x)) (trace "X" (([]))))); + Prelude.Nothing -> (trace "X" (([])))})); + T_Branch l r -> (trace "X" ((trace "X" (app (trace "X" ((trace "X" ((leaves (trace "X" (l))))))) (trace "X" ((trace "X" ((leaves (trace "X" (r)))))))))))})) + +unleaves :: (([]) a1) -> Tree (Prelude.Maybe a1) +unleaves l = + (trace "X" (case (trace "X" (l)) of { + ([]) -> (trace "X" (T_Leaf (trace "X" (Prelude.Nothing)))); + (:) a b -> (trace "X" (T_Branch (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (a)))))))) (trace "X" ((trace "X" ((unleaves (trace "X" (b)))))))))})) + +unleaves' :: (([]) a1) -> Tree (Prelude.Maybe a1) +unleaves' l = + (trace "X" (case (trace "X" (l)) of { + ([]) -> (trace "X" (T_Leaf (trace "X" (Prelude.Nothing)))); + (:) a b -> (trace "X" (T_Branch (trace "X" ((trace "X" ((unleaves' (trace "X" (b))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (a))))))))))})) + +filter :: (([]) (Prelude.Maybe a1)) -> ([]) a1 +filter l = + (trace "X" (case (trace "X" (l)) of { + ([]) -> (trace "X" (([]))); + (:) o b -> + (trace "X" (case (trace "X" (o)) of { + Prelude.Just x -> (trace "X" ((:) (trace "X" (x)) (trace "X" ((trace "X" ((filter (trace "X" (b))))))))); + Prelude.Nothing -> (trace "X" ((trace "X" (filter (trace "X" (b))))))}))})) + +in_decidable :: (EqDecidable a1) -> a1 -> (([]) a1) -> Prelude.Bool +in_decidable eqdVV v lv = + (trace "X" ((trace "X" (list_rec (trace "X" (Prelude.False)) (trace "X" ((\a lv0 iHlv -> + (trace "X" (case (trace "X" (iHlv)) of { + Prelude.True -> (trace "X" (Prelude.True)); + Prelude.False -> + (trace "X" (let {dec = (trace "X" ((trace "X" (eqd_dec (trace "X" (eqdVV)) (trace "X" (v)) (trace "X" (a))))))} in + (trace "X" (case (trace "X" (dec)) of { + Prelude.True -> (trace "X" ((trace "X" (eq_rec_r (trace "X" (a)) (trace "X" ((\_ -> (trace "X" (Prelude.True))))) (trace "X" (v)) (trace "X" (__)))))); + Prelude.False -> (trace "X" (Prelude.False))}))))}))))) (trace "X" (lv)))))) + +distinct_decidable :: (EqDecidable a1) -> (([]) a1) -> Prelude.Bool +distinct_decidable eqdVV lv = + (trace "X" ((trace "X" (list_rec (trace "X" (Prelude.True)) (trace "X" ((\a lv0 iHlv -> + (trace "X" (case (trace "X" (iHlv)) of { + Prelude.True -> + (trace "X" (let {dec = (trace "X" ((trace "X" (in_decidable (trace "X" (eqdVV)) (trace "X" (a)) (trace "X" (lv0))))))} in + (trace "X" (case (trace "X" (dec)) of { + Prelude.True -> (trace "X" (Prelude.False)); + Prelude.False -> (trace "X" (Prelude.True))})))); + Prelude.False -> (trace "X" (Prelude.False))}))))) (trace "X" (lv)))))) + +list_eq_dec :: (([]) a1) -> (([]) a1) -> (a1 -> a1 -> Prelude.Bool) -> Prelude.Bool +list_eq_dec l1 = + (trace "X" ((trace "X" (list_rect (trace "X" ((\l2 dec -> + (trace "X" (case (trace "X" (l2)) of { + ([]) -> (trace "X" (Prelude.True)); + (:) t l3 -> (trace "X" (Prelude.False))}))))) (trace "X" ((\a l2 iHl1 l3 dec -> + (trace "X" (case (trace "X" (l3)) of { + ([]) -> (trace "X" (Prelude.False)); + (:) b l4 -> + (trace "X" (let {eqx = (trace "X" ((trace "X" (iHl1 (trace "X" (l4)) (trace "X" (dec))))))} in + (trace "X" (case (trace "X" (eqx)) of { + Prelude.True -> + (trace "X" ((trace "X" (eq_rect_r (trace "X" (l4)) (trace "X" ((\iHl2 -> + (trace "X" (let {eqy = (trace "X" ((trace "X" (dec (trace "X" (a)) (trace "X" (b))))))} in + (trace "X" (case (trace "X" (eqy)) of { + Prelude.True -> (trace "X" ((trace "X" (eq_rec_r (trace "X" (b)) (trace "X" (Prelude.True)) (trace "X" (a)))))); + Prelude.False -> (trace "X" (Prelude.False))}))))))) (trace "X" (l2)) (trace "X" (iHl1)))))); + Prelude.False -> (trace "X" (Prelude.False))}))))}))))) (trace "X" (l1)))))) + +eqDecidableList :: (EqDecidable a1) -> EqDecidable (([]) a1) +eqDecidableList eqd v1 v2 = + (trace "X" ((trace "X" (list_eq_dec (trace "X" (v1)) (trace "X" (v2)) (trace "X" ((unsafeCoerce (trace "X" ((trace "X" ((eqd_dec (trace "X" (eqd)))))))))))))) + +data Vec a = + Vec_nil + | Vec_cons Nat a (Vec a) + +vec2list :: Nat -> (Vec a1) -> ([]) a1 +vec2list n v = + (trace "X" (case (trace "X" (v)) of { + Vec_nil -> (trace "X" (([]))); + Vec_cons n0 a va -> (trace "X" ((:) (trace "X" (a)) (trace "X" ((trace "X" ((vec2list (trace "X" (n0)) (trace "X" (va)))))))))})) + +vec_zip :: Nat -> (Vec a1) -> (Vec a2) -> Vec ((,) a1 a2) +vec_zip n va vb = + (trace "X" ((trace "X" (nat_rect (trace "X" ((\va0 vb0 -> (trace "X" (Vec_nil))))) (trace "X" ((\n0 iHn va0 vb0 -> + (trace "X" (let { + x = (trace "X" (\_ -> + (trace "X" (case (trace "X" (va0)) of { + Vec_nil -> (trace "X" (false_rect)); + Vec_cons n1 x x0 -> + (trace "X" ((trace "X" (eq_rect (trace "X" (n0)) (trace "X" ((\x1 x2 -> + (trace "X" (case (trace "X" (vb0)) of { + Vec_nil -> (trace "X" (false_rect)); + Vec_cons n2 x3 x4 -> (trace "X" ((trace "X" (eq_rect (trace "X" (n0)) (trace "X" ((\x5 x6 -> (trace "X" (Vec_cons (trace "X" (n0)) (trace "X" (((,) (trace "X" (x1)) (trace "X" (x5))))) (trace "X" ((trace "X" ((iHn (trace "X" (x2)) (trace "X" (x6)))))))))))) (trace "X" (n2)) (trace "X" (x3)) (trace "X" (x4))))))}))))) (trace "X" (n1)) (trace "X" (x)) (trace "X" (x0))))))}))))} + in + (trace "X" ((trace "X" (unsafeCoerce (trace "X" (x)) (trace "X" (__))))))))))) (trace "X" (n)) (trace "X" (va)) (trace "X" (vb)))))) + +vec_map :: Nat -> (a1 -> a2) -> (Vec a1) -> Vec a2 +vec_map n f v = + (trace "X" ((trace "X" (nat_rect (trace "X" ((\v0 -> (trace "X" (Vec_nil))))) (trace "X" ((\n0 iHn v0 -> + (trace "X" (case (trace "X" (v0)) of { + Vec_nil -> (trace "X" (false_rect)); + Vec_cons n1 x x0 -> (trace "X" ((trace "X" (eq_rect (trace "X" (n0)) (trace "X" ((\x1 x2 -> (trace "X" (Vec_cons (trace "X" (n0)) (trace "X" ((trace "X" ((f (trace "X" (x1))))))) (trace "X" ((trace "X" ((iHn (trace "X" (x2)))))))))))) (trace "X" (n1)) (trace "X" (x)) (trace "X" (x0))))))}))))) (trace "X" (n)) (trace "X" (v)))))) + +list2vec :: (([]) a1) -> Vec a1 +list2vec l = + (trace "X" ((trace "X" (list_rect (trace "X" (Vec_nil)) (trace "X" ((\a l0 iHl -> (trace "X" (Vec_cons + (trace "X" ((trace "X" ((let { + length0 l1 = + (trace "X" (case (trace "X" (l1)) of { + ([]) -> (trace "X" (O)); + (:) y l' -> (trace "X" (S (trace "X" ((trace "X" ((length0 (trace "X" (l')))))))))}))} + in length0 (trace "X" (l0))))))) (trace "X" (a)) (trace "X" (iHl))))))) (trace "X" (l)))))) + +vec_chop' :: (([]) a1) -> (([]) a1) -> (Vec a2) -> Vec a2 +vec_chop' l1 l2 v = + (trace "X" ((trace "X" (list_rect (trace "X" ((\v0 -> (trace "X" (v0))))) (trace "X" ((\a l3 iHl1 v0 -> + (trace "X" ((trace "X" (iHl1 + (trace "X" ((case (trace "X" (v0)) of { + Vec_nil -> (trace "X" (false_rect)); + Vec_cons n x x0 -> (trace "X" ((trace "X" (eq_rect (trace "X" ((trace "X" ((length (trace "X" ((trace "X" ((app (trace "X" (l3)) (trace "X" (l2)))))))))))) (trace "X" ((\x1 x2 -> (trace "X" (x2))))) (trace "X" (n)) (trace "X" (x)) (trace "X" (x0))))))})))))))))) (trace "X" (l1)) (trace "X" (v)))))) + +data IList i f = + INil + | ICons i (([]) i) f (IList i f) + +ilist_head :: a1 -> (([]) a1) -> (IList a1 a2) -> a2 +ilist_head x y il = + (trace "X" (case (trace "X" (il)) of { + INil -> (trace "X" (false_rect)); + ICons i is x0 x1 -> (trace "X" ((trace "X" (eq_rect (trace "X" (x)) (trace "X" ((\_ -> (trace "X" ((trace "X" (eq_rect (trace "X" (y)) (trace "X" ((\x2 x3 -> (trace "X" (x2))))) (trace "X" (is))))))))) (trace "X" (i)) (trace "X" (__)) (trace "X" (x0)) (trace "X" (x1))))))})) + +ilist_tail :: a1 -> (([]) a1) -> (IList a1 a2) -> IList a1 a2 +ilist_tail x y il = + (trace "X" (case (trace "X" (il)) of { + INil -> (trace "X" (false_rect)); + ICons i is x0 x1 -> (trace "X" ((trace "X" (eq_rect (trace "X" (x)) (trace "X" ((\_ -> (trace "X" ((trace "X" (eq_rect (trace "X" (y)) (trace "X" ((\x2 x3 -> (trace "X" (x3))))) (trace "X" (is))))))))) (trace "X" (i)) (trace "X" (__)) (trace "X" (x0)) (trace "X" (x1))))))})) + +ilmap :: (([]) a1) -> (a1 -> a2 -> a3) -> (IList a1 a2) -> IList a1 a3 +ilmap il f = + (trace "X" ((trace "X" (list_rect (trace "X" ((\x -> (trace "X" (INil))))) (trace "X" ((\a il0 iHil x -> + (trace "X" (case (trace "X" (x)) of { + INil -> (trace "X" (false_rect)); + ICons i is x0 x1 -> (trace "X" ((trace "X" (eq_rect (trace "X" (a)) (trace "X" ((\_ -> (trace "X" ((trace "X" (eq_rect (trace "X" (il0)) (trace "X" ((\x2 x3 -> (trace "X" (ICons (trace "X" (a)) (trace "X" (il0)) (trace "X" ((trace "X" ((f (trace "X" (a)) (trace "X" (x2))))))) (trace "X" ((trace "X" ((iHil (trace "X" (x3)))))))))))) (trace "X" (is))))))))) (trace "X" (i)) (trace "X" (__)) (trace "X" (x0)) (trace "X" (x1))))))}))))) (trace "X" (il)))))) + +ilist_chop :: (([]) a1) -> (([]) a1) -> (IList a1 a2) -> IList a1 a2 +ilist_chop l1 l2 v = + (trace "X" ((trace "X" (list_rect (trace "X" ((\v0 -> (trace "X" (INil))))) (trace "X" ((\a l3 iHl1 v0 -> (trace "X" (ICons (trace "X" (a)) (trace "X" (l3)) + (trace "X" ((case (trace "X" (v0)) of { + INil -> (trace "X" (false_rect)); + ICons i is x x0 -> (trace "X" ((trace "X" (eq_rect (trace "X" (a)) (trace "X" ((\_ -> (trace "X" ((trace "X" (eq_rect (trace "X" ((trace "X" ((app (trace "X" (l3)) (trace "X" (l2))))))) (trace "X" ((\x1 x2 -> (trace "X" (x1))))) (trace "X" (is))))))))) (trace "X" (i)) (trace "X" (__)) (trace "X" (x)) (trace "X" (x0))))))}))) + (trace "X" ((trace "X" ((unsafeCoerce (trace "X" (iHl1)) + (trace "X" ((case (trace "X" (v0)) of { + INil -> (trace "X" (false_rect)); + ICons i is x x0 -> (trace "X" ((trace "X" (eq_rect (trace "X" (a)) (trace "X" ((\_ -> (trace "X" ((trace "X" (eq_rect (trace "X" ((trace "X" ((app (trace "X" (l3)) (trace "X" (l2))))))) (trace "X" ((\x1 x2 -> (trace "X" (x2))))) (trace "X" (is))))))))) (trace "X" (i)) (trace "X" (__)) (trace "X" (x)) (trace "X" (x0))))))}))))))))))))) (trace "X" (l1)) (trace "X" (v)))))) + +ilist_chop' :: (([]) a1) -> (([]) a1) -> (IList a1 a2) -> IList a1 a2 +ilist_chop' l1 l2 v = + (trace "X" ((trace "X" (list_rect (trace "X" ((\v0 -> (trace "X" (v0))))) (trace "X" ((\a l3 iHl1 v0 -> + (trace "X" ((trace "X" (iHl1 + (trace "X" ((case (trace "X" (v0)) of { + INil -> (trace "X" (false_rect)); + ICons i is x x0 -> (trace "X" ((trace "X" (eq_rect (trace "X" (a)) (trace "X" ((\_ -> (trace "X" ((trace "X" (eq_rect (trace "X" ((trace "X" ((app (trace "X" (l3)) (trace "X" (l2))))))) (trace "X" ((\x1 x2 -> (trace "X" (x2))))) (trace "X" (is))))))))) (trace "X" (i)) (trace "X" (__)) (trace "X" (x)) (trace "X" (x0))))))})))))))))) (trace "X" (l1)) (trace "X" (v)))))) + +ilist_to_list :: (([]) a1) -> (IList a1 a2) -> ([]) a2 +ilist_to_list l il = + (trace "X" (case (trace "X" (il)) of { + INil -> (trace "X" (([]))); + ICons i is a b -> (trace "X" ((:) (trace "X" (a)) (trace "X" ((trace "X" ((ilist_to_list (trace "X" (is)) (trace "X" (b)))))))))})) + +data ITree i f = + INone + | ILeaf i f + | IBranch (Tree (Prelude.Maybe i)) (Tree (Prelude.Maybe i)) (ITree i f) (ITree i f) + +iTree_rect :: a3 -> (a1 -> a2 -> a3) -> ((Tree (Prelude.Maybe a1)) -> (Tree (Prelude.Maybe a1)) -> (ITree a1 a2) -> a3 -> (ITree a1 a2) -> a3 -> a3) -> (Tree (Prelude.Maybe a1)) -> (ITree a1 a2) -> a3 +iTree_rect f f0 f1 t i = + (trace "X" (case (trace "X" (i)) of { + INone -> (trace "X" (f)); + ILeaf i0 y -> (trace "X" ((trace "X" (f0 (trace "X" (i0)) (trace "X" (y)))))); + IBranch it1 it2 i0 i1 -> (trace "X" ((trace "X" (f1 (trace "X" (it1)) (trace "X" (it2)) (trace "X" (i0)) (trace "X" ((trace "X" ((iTree_rect (trace "X" (f)) (trace "X" (f0)) (trace "X" (f1)) (trace "X" (it1)) (trace "X" (i0))))))) (trace "X" (i1)) (trace "X" ((trace "X" ((iTree_rect (trace "X" (f)) (trace "X" (f0)) (trace "X" (f1)) (trace "X" (it2)) (trace "X" (i1)))))))))))})) + +itmap :: (Tree (Prelude.Maybe a1)) -> (a1 -> a2 -> a3) -> (ITree a1 a2) -> ITree a1 a3 +itmap il f = + (trace "X" ((trace "X" (tree_rect (trace "X" ((\a x -> + (trace "X" (case (trace "X" (a)) of { + Prelude.Just i -> (trace "X" (ILeaf (trace "X" (i)) + (trace "X" ((trace "X" ((f (trace "X" (i)) + (trace "X" ((case (trace "X" (x)) of { + INone -> (trace "X" (false_rect)); + ILeaf i0 x0 -> (trace "X" ((trace "X" (eq_rect (trace "X" (i)) (trace "X" ((\x1 -> (trace "X" (x1))))) (trace "X" (i0)) (trace "X" (x0)))))); + IBranch it1 it2 x0 x1 -> (trace "X" ((trace "X" (false_rect (trace "X" (x0)) (trace "X" (x1))))))})))))))))); + Prelude.Nothing -> (trace "X" (INone))}))))) (trace "X" ((\il1 iHil1 il2 iHil2 x -> (trace "X" (IBranch (trace "X" (il1)) (trace "X" (il2)) + (trace "X" ((case (trace "X" (x)) of { + INone -> (trace "X" (false_rect)); + ILeaf i x0 -> (trace "X" ((trace "X" (false_rect (trace "X" (x0)))))); + IBranch it1 it2 x0 x1 -> (trace "X" ((trace "X" (eq_rect (trace "X" (il1)) (trace "X" ((\_ -> (trace "X" ((trace "X" (eq_rect (trace "X" (il2)) (trace "X" ((\x2 x3 -> (trace "X" ((trace "X" (iHil1 (trace "X" (x2))))))))) (trace "X" (it2))))))))) (trace "X" (it1)) (trace "X" (__)) (trace "X" (x0)) (trace "X" (x1))))))}))) + (trace "X" ((case (trace "X" (x)) of { + INone -> (trace "X" (false_rect)); + ILeaf i x0 -> (trace "X" ((trace "X" (false_rect (trace "X" (x0)))))); + IBranch it1 it2 x0 x1 -> (trace "X" ((trace "X" (eq_rect (trace "X" (il1)) (trace "X" ((\_ -> (trace "X" ((trace "X" (eq_rect (trace "X" (il2)) (trace "X" ((\x2 x3 -> (trace "X" ((trace "X" (iHil2 (trace "X" (x3))))))))) (trace "X" (it2))))))))) (trace "X" (it1)) (trace "X" (__)) (trace "X" (x0)) (trace "X" (x1))))))})))))))) (trace "X" (il)))))) + +eol :: Prelude.String +eol = '\n':[] + +data Monad t = + Build_Monad (() -> () -> t) (() -> () -> t -> (() -> t) -> t) + +returnM :: (Monad a1) -> a2 -> a1 +returnM monad x = + (trace "X" (case (trace "X" (monad)) of { + Build_Monad returnM0 bindM0 -> (trace "X" ((trace "X" (unsafeCoerce (trace "X" (returnM0)) (trace "X" (__)) (trace "X" (x))))))})) + +bindM :: (Monad a1) -> a1 -> (a2 -> a1) -> a1 +bindM monad x x0 = + (trace "X" (case (trace "X" (monad)) of { + Build_Monad returnM0 bindM0 -> (trace "X" ((trace "X" (unsafeCoerce (trace "X" (bindM0)) (trace "X" (__)) (trace "X" (__)) (trace "X" (x)) (trace "X" (x0))))))})) + +data OrError t = + Error Prelude.String + | OK t + +orErrorBind :: (OrError a1) -> (a1 -> OrError a2) -> OrError a2 +orErrorBind oe f = + (trace "X" (case (trace "X" (oe)) of { + Error s -> (trace "X" (Error (trace "X" (s)))); + OK t -> (trace "X" ((trace "X" (f (trace "X" (t))))))})) + +orErrorBindWithMessage :: (OrError a1) -> (a1 -> OrError a2) -> Prelude.String -> OrError a2 +orErrorBindWithMessage oe f err_msg = + (trace "X" (case (trace "X" (oe)) of { + Error s -> (trace "X" (Error (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" (err_msg)) (trace "X" (eol))))))) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" (' ')) (trace "X" ([]))))))))))))) (trace "X" (s))))))))); + OK t -> (trace "X" ((trace "X" (f (trace "X" (t))))))})) + +addErrorMessage :: Prelude.String -> (OrError a1) -> OrError a1 +addErrorMessage s x = + (trace "X" ((trace "X" (orErrorBindWithMessage (trace "X" (x)) (trace "X" ((\y -> (trace "X" (OK (trace "X" (y))))))) (trace "X" (s)))))) + +eqDecidableNat :: EqDecidable Nat +eqDecidableNat v1 v2 = + (trace "X" ((trace "X" (eq_nat_dec (trace "X" (v1)) (trace "X" (v2)))))) + +list2vecOrFail :: (([]) a1) -> Nat -> (Nat -> Nat -> Prelude.String) -> OrError (Vec a1) +list2vecOrFail l n error_message = + (trace "X" (let {v = (trace "X" ((trace "X" (list2vec (trace "X" (l))))))} in + (trace "X" (let {s = (trace "X" ((trace "X" (eqd_dec (trace "X" (eqDecidableNat)) (trace "X" ((trace "X" ((length (trace "X" (l))))))) (trace "X" (n))))))} in + (trace "X" (case (trace "X" (s)) of { + Prelude.True -> (trace "X" (let {v0 = (trace "X" ((trace "X" (eq_rect (trace "X" ((trace "X" ((length (trace "X" (l))))))) (trace "X" (v)) (trace "X" (n))))))} in (trace "X" (OK (trace "X" (v0)))))); + Prelude.False -> (trace "X" (Error (trace "X" ((trace "X" ((error_message (trace "X" ((trace "X" ((length (trace "X" (l))))))) (trace "X" (n)))))))))})))))) + +type UniqM t = + UniqSupply.UniqSupply -> OrError ((,) UniqSupply.UniqSupply t) + -- singleton inductive, whose constructor was uniqM + +uniqMonad :: Monad (UniqM ()) +uniqMonad = + (trace "X" (Build_Monad (trace "X" ((\_ x u -> (trace "X" (OK (trace "X" (((,) (trace "X" (u)) (trace "X" (x)))))))))) (trace "X" ((\_ _ x f u -> + (trace "X" (case (trace "X" ((trace "X" (x (trace "X" (u)))))) of { + Error s -> (trace "X" (Error (trace "X" (s)))); + OK p -> (trace "X" (case (trace "X" (p)) of { + (,) u' va -> (trace "X" ((trace "X" (f (trace "X" (va)) (trace "X" (u'))))))}))}))))))) + +getU :: UniqM Unique.Unique +getU us = + (trace "X" (case (trace "X" ((trace "X" (UniqSupply.splitUniqSupply (trace "X" (us)))))) of { + (,) us1 us2 -> (trace "X" (OK (trace "X" (((,) (trace "X" (us1)) (trace "X" ((trace "X" ((UniqSupply.uniqFromSupply (trace "X" (us2))))))))))))})) + +data FreshMonad t = + Build_FreshMonad (Monad ()) ((([]) t) -> ()) + +type FMT t x = () + +fMT_Monad :: (FreshMonad a1) -> Monad (FMT a1 ()) +fMT_Monad f = + (trace "X" (case (trace "X" (f)) of { + Build_FreshMonad fMT_Monad0 fMT_fresh0 -> (trace "X" (fMT_Monad0))})) + +fMT_fresh :: (FreshMonad a1) -> (([]) a1) -> FMT a1 (SigT a1 ()) +fMT_fresh f = + (trace "X" (case (trace "X" (f)) of { + Build_FreshMonad fMT_Monad0 fMT_fresh0 -> (trace "X" (fMT_fresh0))})) + +treeM :: (Monad a2) -> (Tree (Prelude.Maybe a2)) -> a2 +treeM mT t = + (trace "X" (case (trace "X" (t)) of { + T_Leaf o -> + (trace "X" (case (trace "X" (o)) of { + Prelude.Just x -> (trace "X" ((trace "X" (bindM (trace "X" (mT)) (trace "X" (x)) (trace "X" ((\x' -> (trace "X" ((trace "X" (returnM (trace "X" (mT)) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (x'))))))))))))))))))); + Prelude.Nothing -> (trace "X" ((trace "X" (returnM (trace "X" (mT)) (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing)))))))))})); + T_Branch b1 b2 -> (trace "X" ((trace "X" (bindM (trace "X" (mT)) (trace "X" ((trace "X" ((treeM (trace "X" (mT)) (trace "X" (b1))))))) (trace "X" ((\b1' -> (trace "X" ((trace "X" (bindM (trace "X" (mT)) (trace "X" ((trace "X" ((treeM (trace "X" (mT)) (trace "X" (b2))))))) (trace "X" ((\b2' -> (trace "X" ((trace "X" (returnM (trace "X" (mT)) (trace "X" ((T_Branch (trace "X" (b1')) (trace "X" (b2')))))))))))))))))))))))})) + +type Latex = + Prelude.String + -- singleton inductive, whose constructor was rawLatex + +type LatexMath = + Prelude.String + -- singleton inductive, whose constructor was rawLatexMath + +type ToLatex t = + t -> Latex + -- singleton inductive, whose constructor was Build_ToLatex + +toLatex :: (ToLatex a1) -> a1 -> Latex +toLatex toLatex0 = + (trace "X" (toLatex0)) + +latexToString :: ToString Latex +latexToString x = + (trace "X" (x)) + +type ToLatexMath t = + t -> LatexMath + -- singleton inductive, whose constructor was Build_ToLatexMath + +toLatexMath :: (ToLatexMath a1) -> a1 -> LatexMath +toLatexMath toLatexMath0 = + (trace "X" (toLatexMath0)) + +concatenableLatexMath :: Concatenable LatexMath +concatenableLatexMath l1 l2 = + (trace "X" ((trace "X" (concatenate (trace "X" (concatenableString)) (trace "X" (l1)) (trace "X" (l2)))))) + +latexMathToString :: ToString LatexMath +latexMathToString x = + (trace "X" (x)) + +toLatexMathLatex :: ToLatexMath Latex +toLatexMathLatex l = + (trace "X" ((trace "X" (concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" (((:) (trace "X" ('\\')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('x')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('{')) (trace "X" ([])))))))))))))))))))) (trace "X" ((trace "X" ((toString (trace "X" (latexToString)) (trace "X" (l)))))))))))) (trace "X" (((:) (trace "X" ('}')) (trace "X" ([]))))))))) + +stringToLatex :: ToLatex Prelude.String +stringToLatex x = + (trace "X" ((trace "X" (sanitizeForLatex (trace "X" (x)))))) + +stringToLatexMath :: ToLatexMath Prelude.String +stringToLatexMath x = + (trace "X" ((trace "X" (toLatexMath (trace "X" (toLatexMathLatex)) (trace "X" ((trace "X" ((toLatex (trace "X" (stringToLatex)) (trace "X" (x))))))))))) + +latexMathToLatexMath :: ToLatexMath LatexMath +latexMathToLatexMath x = + (trace "X" (x)) + +treeToLatexMath :: (ToLatexMath a1) -> (Tree (Prelude.Maybe a1)) -> LatexMath +treeToLatexMath toLatexV t = + (trace "X" (case (trace "X" (t)) of { + T_Leaf o -> + (trace "X" (case (trace "X" (o)) of { + Prelude.Just x -> (trace "X" ((trace "X" (concatenate (trace "X" (concatenableLatexMath)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableLatexMath)) (trace "X" (((:) (trace "X" ('\\')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('g')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('e')) (trace "X" ([]))))))))))))))))))))))) (trace "X" ((trace "X" ((toLatexMath (trace "X" (toLatexV)) (trace "X" (x)))))))))))) (trace "X" (((:) (trace "X" ('\\')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('g')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('e')) (trace "X" ([]))))))))))))))))))))))))))); + Prelude.Nothing -> (trace "X" ((:) (trace "X" ('\\')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('g')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('\\')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('g')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('e')) (trace "X" ([])))))))))))))))))))))))))))))))))))))))))))})); + T_Branch b1 b2 -> (trace "X" ((trace "X" (concatenate (trace "X" (concatenableLatexMath)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableLatexMath)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableLatexMath)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableLatexMath)) (trace "X" (((:) (trace "X" ('\\')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('g')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('e')) (trace "X" ([]))))))))))))))))))))))) (trace "X" ((trace "X" ((treeToLatexMath (trace "X" (toLatexV)) (trace "X" (b1)))))))))))) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" (',')) (trace "X" (((:) (trace "X" (' ')) (trace "X" ([])))))))))))))))) (trace "X" ((trace "X" ((treeToLatexMath (trace "X" (toLatexV)) (trace "X" (b2)))))))))))) (trace "X" (((:) (trace "X" ('\\')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('g')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('e')) (trace "X" ([])))))))))))))))))))))))))))})) + +data ND judgment rule = + Nd_id0 + | Nd_id1 judgment + | Nd_weak1 judgment + | Nd_copy (Tree (Prelude.Maybe judgment)) + | Nd_prod (Tree (Prelude.Maybe judgment)) (Tree (Prelude.Maybe judgment)) (Tree (Prelude.Maybe judgment)) (Tree (Prelude.Maybe judgment)) (ND judgment rule) (ND judgment rule) + | Nd_comp (Tree (Prelude.Maybe judgment)) (Tree (Prelude.Maybe judgment)) (Tree (Prelude.Maybe judgment)) (ND judgment rule) (ND judgment rule) + | Nd_cancell (Tree (Prelude.Maybe judgment)) + | Nd_cancelr (Tree (Prelude.Maybe judgment)) + | Nd_llecnac (Tree (Prelude.Maybe judgment)) + | Nd_rlecnac (Tree (Prelude.Maybe judgment)) + | Nd_assoc (Tree (Prelude.Maybe judgment)) (Tree (Prelude.Maybe judgment)) (Tree (Prelude.Maybe judgment)) + | Nd_cossa (Tree (Prelude.Maybe judgment)) (Tree (Prelude.Maybe judgment)) (Tree (Prelude.Maybe judgment)) + | Nd_rule (Tree (Prelude.Maybe judgment)) (Tree (Prelude.Maybe judgment)) rule + +nD_rect :: a3 -> (a1 -> a3) -> (a1 -> a3) -> ((Tree (Prelude.Maybe a1)) -> a3) -> ((Tree (Prelude.Maybe a1)) -> (Tree (Prelude.Maybe a1)) -> (Tree (Prelude.Maybe a1)) -> (Tree (Prelude.Maybe a1)) -> (ND a1 a2) -> a3 -> (ND a1 a2) -> a3 -> a3) -> ((Tree (Prelude.Maybe a1)) -> (Tree (Prelude.Maybe a1)) -> (Tree (Prelude.Maybe a1)) -> (ND a1 a2) -> a3 -> (ND a1 a2) -> a3 -> a3) -> ((Tree (Prelude.Maybe a1)) -> a3) -> ((Tree (Prelude.Maybe a1)) -> a3) -> ((Tree (Prelude.Maybe a1)) -> a3) -> ((Tree (Prelude.Maybe a1)) -> a3) -> ((Tree (Prelude.Maybe a1)) -> (Tree (Prelude.Maybe a1)) -> (Tree (Prelude.Maybe a1)) -> a3) -> ((Tree (Prelude.Maybe a1)) -> (Tree (Prelude.Maybe a1)) -> (Tree (Prelude.Maybe a1)) -> a3) -> ((Tree (Prelude.Maybe a1)) -> (Tree (Prelude.Maybe a1)) -> a2 -> a3) -> (Tree (Prelude.Maybe a1)) -> (Tree (Prelude.Maybe a1)) -> (ND a1 a2) -> a3 +nD_rect f f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 hypotheses conclusions n = + (trace "X" (case (trace "X" (n)) of { + Nd_id0 -> (trace "X" (f)); + Nd_id1 h -> (trace "X" ((trace "X" (f0 (trace "X" (h)))))); + Nd_weak1 h -> (trace "X" ((trace "X" (f1 (trace "X" (h)))))); + Nd_copy h -> (trace "X" ((trace "X" (f2 (trace "X" (h)))))); + Nd_prod h1 h2 c1 c2 pf1 pf2 -> (trace "X" ((trace "X" (f3 (trace "X" (h1)) (trace "X" (h2)) (trace "X" (c1)) (trace "X" (c2)) (trace "X" (pf1)) (trace "X" ((trace "X" ((nD_rect (trace "X" (f)) (trace "X" (f0)) (trace "X" (f1)) (trace "X" (f2)) (trace "X" (f3)) (trace "X" (f4)) (trace "X" (f5)) (trace "X" (f6)) (trace "X" (f7)) (trace "X" (f8)) (trace "X" (f9)) (trace "X" (f10)) (trace "X" (f11)) (trace "X" (h1)) (trace "X" (c1)) (trace "X" (pf1))))))) (trace "X" (pf2)) (trace "X" ((trace "X" ((nD_rect (trace "X" (f)) (trace "X" (f0)) (trace "X" (f1)) (trace "X" (f2)) (trace "X" (f3)) (trace "X" (f4)) (trace "X" (f5)) (trace "X" (f6)) (trace "X" (f7)) (trace "X" (f8)) (trace "X" (f9)) (trace "X" (f10)) (trace "X" (f11)) (trace "X" (h2)) (trace "X" (c2)) (trace "X" (pf2))))))))))); + Nd_comp h x c pf1 pf2 -> (trace "X" ((trace "X" (f4 (trace "X" (h)) (trace "X" (x)) (trace "X" (c)) (trace "X" (pf1)) (trace "X" ((trace "X" ((nD_rect (trace "X" (f)) (trace "X" (f0)) (trace "X" (f1)) (trace "X" (f2)) (trace "X" (f3)) (trace "X" (f4)) (trace "X" (f5)) (trace "X" (f6)) (trace "X" (f7)) (trace "X" (f8)) (trace "X" (f9)) (trace "X" (f10)) (trace "X" (f11)) (trace "X" (h)) (trace "X" (x)) (trace "X" (pf1))))))) (trace "X" (pf2)) (trace "X" ((trace "X" ((nD_rect (trace "X" (f)) (trace "X" (f0)) (trace "X" (f1)) (trace "X" (f2)) (trace "X" (f3)) (trace "X" (f4)) (trace "X" (f5)) (trace "X" (f6)) (trace "X" (f7)) (trace "X" (f8)) (trace "X" (f9)) (trace "X" (f10)) (trace "X" (f11)) (trace "X" (x)) (trace "X" (c)) (trace "X" (pf2))))))))))); + Nd_cancell a -> (trace "X" ((trace "X" (f5 (trace "X" (a)))))); + Nd_cancelr a -> (trace "X" ((trace "X" (f6 (trace "X" (a)))))); + Nd_llecnac a -> (trace "X" ((trace "X" (f7 (trace "X" (a)))))); + Nd_rlecnac a -> (trace "X" ((trace "X" (f8 (trace "X" (a)))))); + Nd_assoc a b c -> (trace "X" ((trace "X" (f9 (trace "X" (a)) (trace "X" (b)) (trace "X" (c)))))); + Nd_cossa a b c -> (trace "X" ((trace "X" (f10 (trace "X" (a)) (trace "X" (b)) (trace "X" (c)))))); + Nd_rule h c r -> (trace "X" ((trace "X" (f11 (trace "X" (h)) (trace "X" (c)) (trace "X" (r))))))})) + +data SIND judgment rule = + Scnd_weak (Tree (Prelude.Maybe judgment)) + | Scnd_comp (Tree (Prelude.Maybe judgment)) (Tree (Prelude.Maybe judgment)) judgment (SIND judgment rule) rule + | Scnd_branch (Tree (Prelude.Maybe judgment)) (Tree (Prelude.Maybe judgment)) (Tree (Prelude.Maybe judgment)) (SIND judgment rule) (SIND judgment rule) + +mkSIND :: (Tree (Prelude.Maybe a1)) -> (Tree (Prelude.Maybe a1)) -> (Tree (Prelude.Maybe a1)) -> (ND a1 a2) -> (SIND a1 a2) -> SIND a1 a2 +mkSIND h x c nd = + (trace "X" ((trace "X" (nD_rect (trace "X" ((\k -> (trace "X" (k))))) (trace "X" ((\h0 k -> (trace "X" (k))))) (trace "X" ((\h0 k -> (trace "X" (Scnd_weak (trace "X" (h))))))) (trace "X" ((\h0 k -> (trace "X" (Scnd_branch (trace "X" (h)) (trace "X" (h0)) (trace "X" (h0)) (trace "X" (k)) (trace "X" (k))))))) (trace "X" ((\h1 h2 c1 c2 nd1 iHnd1 nd2 iHnd2 k -> + (trace "X" (case (trace "X" (k)) of { + Scnd_weak c0 -> (trace "X" (false_rect)); + Scnd_comp ht ct c0 x0 x1 -> (trace "X" ((trace "X" (eq_rect (trace "X" (h)) (trace "X" ((\_ -> (trace "X" (false_rect))))) (trace "X" (ht)) (trace "X" (__)) (trace "X" (x0)) (trace "X" (x1)))))); + Scnd_branch ht c0 c3 x0 x1 -> (trace "X" ((trace "X" (eq_rect (trace "X" (h)) (trace "X" ((\_ -> (trace "X" ((trace "X" (eq_rect (trace "X" (h1)) (trace "X" ((\_ -> (trace "X" ((trace "X" (eq_rect (trace "X" (h2)) (trace "X" ((\x2 x3 -> (trace "X" (Scnd_branch (trace "X" (h)) (trace "X" (c1)) (trace "X" (c2)) (trace "X" ((trace "X" ((iHnd1 (trace "X" (x2))))))) (trace "X" ((trace "X" ((iHnd2 (trace "X" (x3)))))))))))) (trace "X" (c3))))))))) (trace "X" (c0)) (trace "X" (__))))))))) (trace "X" (ht)) (trace "X" (__)) (trace "X" (x0)) (trace "X" (x1))))))}))))) (trace "X" ((\h0 x0 c0 nd1 iHnd1 nd2 iHnd2 k -> (trace "X" ((trace "X" (iHnd2 (trace "X" ((trace "X" ((iHnd1 (trace "X" (k)))))))))))))) (trace "X" ((\a k -> + (trace "X" (case (trace "X" (k)) of { + Scnd_weak c0 -> (trace "X" (false_rect)); + Scnd_comp ht ct c0 x0 x1 -> (trace "X" ((trace "X" (eq_rect (trace "X" (h)) (trace "X" ((\_ -> (trace "X" (false_rect))))) (trace "X" (ht)) (trace "X" (__)) (trace "X" (x0)) (trace "X" (x1)))))); + Scnd_branch ht c1 c2 x0 x1 -> (trace "X" ((trace "X" (eq_rect (trace "X" (h)) (trace "X" ((\_ -> (trace "X" ((trace "X" (eq_rect (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (eq_rect (trace "X" (a)) (trace "X" ((\x2 x3 -> (trace "X" (x3))))) (trace "X" (c2))))))))) (trace "X" (c1)) (trace "X" (__))))))))) (trace "X" (ht)) (trace "X" (__)) (trace "X" (x0)) (trace "X" (x1))))))}))))) (trace "X" ((\a k -> + (trace "X" (case (trace "X" (k)) of { + Scnd_weak c0 -> (trace "X" (false_rect)); + Scnd_comp ht ct c0 x0 x1 -> (trace "X" ((trace "X" (eq_rect (trace "X" (h)) (trace "X" ((\_ -> (trace "X" (false_rect))))) (trace "X" (ht)) (trace "X" (__)) (trace "X" (x0)) (trace "X" (x1)))))); + Scnd_branch ht c1 c2 x0 x1 -> (trace "X" ((trace "X" (eq_rect (trace "X" (h)) (trace "X" ((\_ -> (trace "X" ((trace "X" (eq_rect (trace "X" (a)) (trace "X" ((\_ -> (trace "X" ((trace "X" (eq_rect (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing))))) (trace "X" ((\x2 x3 -> (trace "X" (x2))))) (trace "X" (c2))))))))) (trace "X" (c1)) (trace "X" (__))))))))) (trace "X" (ht)) (trace "X" (__)) (trace "X" (x0)) (trace "X" (x1))))))}))))) (trace "X" ((\a k -> (trace "X" (Scnd_branch (trace "X" (h)) (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing))))) (trace "X" (a)) (trace "X" ((Scnd_weak (trace "X" (h))))) (trace "X" (k))))))) (trace "X" ((\a k -> (trace "X" (Scnd_branch (trace "X" (h)) (trace "X" (a)) (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing))))) (trace "X" (k)) (trace "X" ((Scnd_weak (trace "X" (h)))))))))) (trace "X" ((\a b c0 k -> + (trace "X" (case (trace "X" (k)) of { + Scnd_weak c1 -> (trace "X" (false_rect)); + Scnd_comp ht ct c1 x0 x1 -> (trace "X" ((trace "X" (eq_rect (trace "X" (h)) (trace "X" ((\_ -> (trace "X" (false_rect))))) (trace "X" (ht)) (trace "X" (__)) (trace "X" (x0)) (trace "X" (x1)))))); + Scnd_branch ht c1 c2 x0 x1 -> + (trace "X" ((trace "X" (eq_rect (trace "X" (h)) (trace "X" ((\_ -> + (trace "X" ((trace "X" (eq_rect (trace "X" ((T_Branch (trace "X" (a)) (trace "X" (b))))) (trace "X" ((\_ -> + (trace "X" ((trace "X" (eq_rect (trace "X" (c0)) (trace "X" ((\x2 x3 -> + (trace "X" (case (trace "X" (x2)) of { + Scnd_weak c3 -> (trace "X" (false_rect)); + Scnd_comp ht0 ct c3 x4 x5 -> (trace "X" ((trace "X" (eq_rect (trace "X" (h)) (trace "X" ((\_ -> (trace "X" (false_rect))))) (trace "X" (ht0)) (trace "X" (__)) (trace "X" (x4)) (trace "X" (x5)))))); + Scnd_branch ht0 c3 c4 x4 x5 -> (trace "X" (let {h0 = (trace "X" ((trace "X" (eq_rect (trace "X" (h)) (trace "X" ((\_ -> (trace "X" ((trace "X" (eq_rect (trace "X" (a)) (trace "X" ((\_ -> (trace "X" ((trace "X" (eq_rect (trace "X" (b)) (trace "X" ((\x6 x7 -> (trace "X" (Scnd_branch (trace "X" (h)) (trace "X" (a)) (trace "X" ((T_Branch (trace "X" (b)) (trace "X" (c0))))) (trace "X" (x6)) (trace "X" ((Scnd_branch (trace "X" (h)) (trace "X" (b)) (trace "X" (c0)) (trace "X" (x7)) (trace "X" (x3)))))))))) (trace "X" (c4))))))))) (trace "X" (c3)) (trace "X" (__))))))))) (trace "X" (ht0)) (trace "X" (__))))))} in (trace "X" ((trace "X" (unsafeCoerce (trace "X" (h0)) (trace "X" (x4)) (trace "X" (x5))))))))}))))) (trace "X" (c2))))))))) (trace "X" (c1)) (trace "X" (__))))))))) (trace "X" (ht)) (trace "X" (__)) (trace "X" (x0)) (trace "X" (x1))))))}))))) (trace "X" ((\a b c0 k -> + (trace "X" (case (trace "X" (k)) of { + Scnd_weak c1 -> (trace "X" (false_rect)); + Scnd_comp ht ct c1 x0 x1 -> (trace "X" ((trace "X" (eq_rect (trace "X" (h)) (trace "X" ((\_ -> (trace "X" (false_rect))))) (trace "X" (ht)) (trace "X" (__)) (trace "X" (x0)) (trace "X" (x1)))))); + Scnd_branch ht c1 c2 x0 x1 -> + (trace "X" ((trace "X" (eq_rect (trace "X" (h)) (trace "X" ((\_ -> + (trace "X" ((trace "X" (eq_rect (trace "X" (a)) (trace "X" ((\_ -> + (trace "X" ((trace "X" (eq_rect (trace "X" ((T_Branch (trace "X" (b)) (trace "X" (c0))))) (trace "X" ((\x2 x3 -> + (trace "X" (case (trace "X" (x3)) of { + Scnd_weak c3 -> (trace "X" (false_rect)); + Scnd_comp ht0 ct c3 x4 x5 -> (trace "X" ((trace "X" (eq_rect (trace "X" (h)) (trace "X" ((\_ -> (trace "X" (false_rect))))) (trace "X" (ht0)) (trace "X" (__)) (trace "X" (x4)) (trace "X" (x5)))))); + Scnd_branch ht0 c3 c4 x4 x5 -> (trace "X" (let {h0 = (trace "X" ((trace "X" (eq_rect (trace "X" (h)) (trace "X" ((\_ -> (trace "X" ((trace "X" (eq_rect (trace "X" (b)) (trace "X" ((\_ -> (trace "X" ((trace "X" (eq_rect (trace "X" (c0)) (trace "X" ((\x6 x7 -> (trace "X" (Scnd_branch (trace "X" (h)) (trace "X" ((T_Branch (trace "X" (a)) (trace "X" (b))))) (trace "X" (c0)) (trace "X" ((Scnd_branch (trace "X" (h)) (trace "X" (a)) (trace "X" (b)) (trace "X" (x2)) (trace "X" (x6))))) (trace "X" (x7))))))) (trace "X" (c4))))))))) (trace "X" (c3)) (trace "X" (__))))))))) (trace "X" (ht0)) (trace "X" (__))))))} in (trace "X" ((trace "X" (unsafeCoerce (trace "X" (h0)) (trace "X" (x4)) (trace "X" (x5))))))))}))))) (trace "X" (c2))))))))) (trace "X" (c1)) (trace "X" (__))))))))) (trace "X" (ht)) (trace "X" (__)) (trace "X" (x0)) (trace "X" (x1))))))}))))) (trace "X" ((\h0 c0 r k -> + (trace "X" (case (trace "X" (c0)) of { + T_Leaf o -> + (trace "X" (case (trace "X" (o)) of { + Prelude.Just j -> (trace "X" (Scnd_comp (trace "X" (h)) (trace "X" (h0)) (trace "X" (j)) (trace "X" (k)) (trace "X" (r)))); + Prelude.Nothing -> (trace "X" (Scnd_weak (trace "X" (h))))})); + T_Branch c1 c2 -> (trace "X" (Prelude.error "absurd case"))}))))) (trace "X" (x)) (trace "X" (c)) (trace "X" (nd)))))) + +data ClosedSIND judgment rule = + Cnd_weak + | Cnd_rule (Tree (Prelude.Maybe judgment)) (Tree (Prelude.Maybe judgment)) (ClosedSIND judgment rule) rule + | Cnd_branch (Tree (Prelude.Maybe judgment)) (Tree (Prelude.Maybe judgment)) (ClosedSIND judgment rule) (ClosedSIND judgment rule) + +closedFromSIND :: (Tree (Prelude.Maybe a1)) -> (Tree (Prelude.Maybe a1)) -> (SIND a1 a2) -> (ClosedSIND a1 a2) -> ClosedSIND a1 a2 +closedFromSIND h0 c0 pn0 cnd0 = + (trace "X" (case (trace "X" (pn0)) of { + Scnd_weak c1 -> (trace "X" ((trace "X" (eq_rect (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing))))) (trace "X" ((\pn1 -> (trace "X" (Cnd_weak))))) (trace "X" (c0)) (trace "X" (pn0)))))); + Scnd_comp ht ct c1 pn' rule -> (trace "X" (let {qq = (trace "X" ((trace "X" (closedFromSIND (trace "X" (ht)) (trace "X" (ct)) (trace "X" (pn'))))))} in (trace "X" (Cnd_rule (trace "X" (ct)) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (c1)))))))) (trace "X" ((trace "X" ((qq (trace "X" ((trace "X" ((eq_rect (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (c1)))))))) (trace "X" ((\pn1 -> (trace "X" ((trace "X" (eq_rect_r (trace "X" (h0)) (trace "X" ((\pn'0 -> (trace "X" (cnd0))))) (trace "X" (ht)) (trace "X" (pn'))))))))) (trace "X" (c0)) (trace "X" (pn0)))))))))))) (trace "X" (rule)))))); + Scnd_branch ht c1 c2 pn' pn'' -> (trace "X" (let {q1 = (trace "X" ((trace "X" (closedFromSIND (trace "X" (ht)) (trace "X" (c1)) (trace "X" (pn'))))))} in (trace "X" (let {q2 = (trace "X" ((trace "X" (closedFromSIND (trace "X" (ht)) (trace "X" (c2)) (trace "X" (pn''))))))} in (trace "X" (Cnd_branch (trace "X" (c1)) (trace "X" (c2)) (trace "X" ((trace "X" ((q1 (trace "X" ((trace "X" ((eq_rect (trace "X" ((T_Branch (trace "X" (c1)) (trace "X" (c2))))) (trace "X" ((\pn1 -> (trace "X" ((trace "X" (eq_rect_r (trace "X" (h0)) (trace "X" ((\pn'0 pn''0 -> (trace "X" (cnd0))))) (trace "X" (ht)) (trace "X" (pn')) (trace "X" (pn''))))))))) (trace "X" (c0)) (trace "X" (pn0)))))))))))) (trace "X" ((trace "X" ((q2 (trace "X" ((trace "X" ((eq_rect (trace "X" ((T_Branch (trace "X" (c1)) (trace "X" (c2))))) (trace "X" ((\pn1 -> (trace "X" ((trace "X" (eq_rect_r (trace "X" (h0)) (trace "X" ((\pn'0 pn''0 -> (trace "X" (cnd0))))) (trace "X" (ht)) (trace "X" (pn')) (trace "X" (pn''))))))))) (trace "X" (c0)) (trace "X" (pn0))))))))))))))))))})) + +eolL :: LatexMath +eolL = + (trace "X" (eol)) + +sIND_toLatexMath :: (ToLatexMath a1) -> ((Tree (Prelude.Maybe a1)) -> (Tree (Prelude.Maybe a1)) -> ToLatexMath a2) -> ((Tree (Prelude.Maybe a1)) -> (Tree (Prelude.Maybe a1)) -> a2 -> Prelude.Bool) -> (Tree (Prelude.Maybe a1)) -> (Tree (Prelude.Maybe a1)) -> (SIND a1 a2) -> LatexMath +sIND_toLatexMath judgmentToLatexMath ruleToLatexMath hideRule h c pns = + (trace "X" (case (trace "X" (pns)) of { + Scnd_weak c0 -> (trace "X" ([])); + Scnd_comp ht ct c0 pns0 rule -> + (trace "X" (case (trace "X" ((trace "X" (hideRule (trace "X" (ct)) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (c0)))))))) (trace "X" (rule)))))) of { + Prelude.True -> (trace "X" ((trace "X" (sIND_toLatexMath (trace "X" (judgmentToLatexMath)) (trace "X" (ruleToLatexMath)) (trace "X" (hideRule)) (trace "X" (ht)) (trace "X" (ct)) (trace "X" (pns0)))))); + Prelude.False -> (trace "X" ((trace "X" (concatenate (trace "X" (concatenableLatexMath)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableLatexMath)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableLatexMath)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableLatexMath)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableLatexMath)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableLatexMath)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableLatexMath)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableLatexMath)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableLatexMath)) (trace "X" (((:) (trace "X" ('\\')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('f')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('[')) (trace "X" ([])))))))))))))))))))))))))) (trace "X" ((trace "X" ((toLatexMath (trace "X" ((trace "X" ((ruleToLatexMath (trace "X" (ct)) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (c0))))))))))))) (trace "X" (rule)))))))))))) (trace "X" (((:) (trace "X" (']')) (trace "X" (((:) (trace "X" ('{')) (trace "X" ([]))))))))))))) (trace "X" (eolL))))))) (trace "X" ((trace "X" ((sIND_toLatexMath (trace "X" (judgmentToLatexMath)) (trace "X" (ruleToLatexMath)) (trace "X" (hideRule)) (trace "X" (ht)) (trace "X" (ct)) (trace "X" (pns0)))))))))))) (trace "X" (((:) (trace "X" ('}')) (trace "X" (((:) (trace "X" ('{')) (trace "X" ([]))))))))))))) (trace "X" (eolL))))))) (trace "X" ((trace "X" ((toLatexMath (trace "X" (judgmentToLatexMath)) (trace "X" (c0)))))))))))) (trace "X" (((:) (trace "X" ('}')) (trace "X" ([])))))))))) (trace "X" (eolL))))))})); + Scnd_branch ht c1 c2 pns1 pns2 -> (trace "X" ((trace "X" (concatenate (trace "X" (concatenableLatexMath)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableLatexMath)) (trace "X" ((trace "X" ((sIND_toLatexMath (trace "X" (judgmentToLatexMath)) (trace "X" (ruleToLatexMath)) (trace "X" (hideRule)) (trace "X" (ht)) (trace "X" (c1)) (trace "X" (pns1))))))) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('\\')) (trace "X" (((:) (trace "X" ('h')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('{')) (trace "X" (((:) (trace "X" ('1')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('m')) (trace "X" (((:) (trace "X" ('}')) (trace "X" (((:) (trace "X" (' ')) (trace "X" ([]))))))))))))))))))))))))))))))))))))))))))))))))) (trace "X" ((trace "X" ((sIND_toLatexMath (trace "X" (judgmentToLatexMath)) (trace "X" (ruleToLatexMath)) (trace "X" (hideRule)) (trace "X" (ht)) (trace "X" (c2)) (trace "X" (pns2)))))))))))})) + +natToStringInstance :: ToString Nat +natToStringInstance = + (trace "X" (natToString)) + +data Kind = + KindStar + | KindArrow Kind Kind + | KindUnliftedType + | KindUnboxedTuple + | KindArgType + | KindOpenType + +kind_rect :: a1 -> (Kind -> a1 -> Kind -> a1 -> a1) -> a1 -> a1 -> a1 -> a1 -> Kind -> a1 +kind_rect f f0 f1 f2 f3 f4 k = + (trace "X" (case (trace "X" (k)) of { + KindStar -> (trace "X" (f)); + KindArrow k0 k1 -> (trace "X" ((trace "X" (f0 (trace "X" (k0)) (trace "X" ((trace "X" ((kind_rect (trace "X" (f)) (trace "X" (f0)) (trace "X" (f1)) (trace "X" (f2)) (trace "X" (f3)) (trace "X" (f4)) (trace "X" (k0))))))) (trace "X" (k1)) (trace "X" ((trace "X" ((kind_rect (trace "X" (f)) (trace "X" (f0)) (trace "X" (f1)) (trace "X" (f2)) (trace "X" (f3)) (trace "X" (f4)) (trace "X" (k1))))))))))); + KindUnliftedType -> (trace "X" (f1)); + KindUnboxedTuple -> (trace "X" (f2)); + KindArgType -> (trace "X" (f3)); + KindOpenType -> (trace "X" (f4))})) + +kind_rec :: a1 -> (Kind -> a1 -> Kind -> a1 -> a1) -> a1 -> a1 -> a1 -> a1 -> Kind -> a1 +kind_rec = + (trace "X" (kind_rect)) + +kindToString :: Kind -> Prelude.String +kindToString k = + (trace "X" (case (trace "X" (k)) of { + KindStar -> (trace "X" ((:) (trace "X" ('*')) (trace "X" ([])))); + KindArrow k1 k2 -> + (trace "X" (case (trace "X" (k1)) of { + KindStar -> (trace "X" ((trace "X" (concatenate (trace "X" (concatenableString)) (trace "X" (((:) (trace "X" ('*')) (trace "X" (((:) (trace "X" ('=')) (trace "X" (((:) (trace "X" ('>')) (trace "X" ([]))))))))))) (trace "X" ((trace "X" ((kindToString (trace "X" (k2))))))))))); + _ -> (trace "X" ((trace "X" (concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" (((:) (trace "X" ('(')) (trace "X" ([]))))) (trace "X" ((trace "X" ((kindToString (trace "X" (k1)))))))))))) (trace "X" (((:) (trace "X" (')')) (trace "X" (((:) (trace "X" ('=')) (trace "X" (((:) (trace "X" ('>')) (trace "X" ([])))))))))))))))) (trace "X" ((trace "X" ((kindToString (trace "X" (k2)))))))))))})); + KindUnliftedType -> (trace "X" ((:) (trace "X" ('#')) (trace "X" ([])))); + KindUnboxedTuple -> (trace "X" ((:) (trace "X" ('(')) (trace "X" (((:) (trace "X" ('#')) (trace "X" (((:) (trace "X" (')')) (trace "X" ([])))))))))); + KindArgType -> (trace "X" ((:) (trace "X" ('?')) (trace "X" (((:) (trace "X" ('?')) (trace "X" ([]))))))); + KindOpenType -> (trace "X" ((:) (trace "X" ('?')) (trace "X" ([]))))})) + +kindToString0 :: ToString Kind +kindToString0 = + (trace "X" (kindToString)) + +kindToLatexMath :: Kind -> LatexMath +kindToLatexMath k = + (trace "X" (case (trace "X" (k)) of { + KindStar -> (trace "X" ((:) (trace "X" ('\\')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('r')) (trace "X" ([])))))))))))))))); + KindArrow k1 k2 -> + (trace "X" (case (trace "X" (k1)) of { + KindStar -> (trace "X" ((trace "X" (concatenate (trace "X" (concatenableLatexMath)) (trace "X" (((:) (trace "X" ('\\')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('\\')) (trace "X" (((:) (trace "X" ('R')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('g')) (trace "X" (((:) (trace "X" ('h')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('w')) (trace "X" (((:) (trace "X" (' ')) (trace "X" ([]))))))))))))))))))))))))))))))))))))))))))))))))))))) (trace "X" ((trace "X" ((kindToLatexMath (trace "X" (k2))))))))))); + _ -> (trace "X" ((trace "X" (concatenate (trace "X" (concatenableLatexMath)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableLatexMath)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableLatexMath)) (trace "X" (((:) (trace "X" ('(')) (trace "X" ([]))))) (trace "X" ((trace "X" ((kindToLatexMath (trace "X" (k1)))))))))))) (trace "X" (((:) (trace "X" (')')) (trace "X" (((:) (trace "X" ('\\')) (trace "X" (((:) (trace "X" ('R')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('g')) (trace "X" (((:) (trace "X" ('h')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('w')) (trace "X" (((:) (trace "X" (' ')) (trace "X" ([])))))))))))))))))))))))))))))))))))))))))))))) (trace "X" ((trace "X" ((kindToLatexMath (trace "X" (k2)))))))))))})); + KindUnliftedType -> (trace "X" ((:) (trace "X" ('\\')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('x')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('{')) (trace "X" (((:) (trace "X" ('\\')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('{')) (trace "X" (((:) (trace "X" ('\\')) (trace "X" (((:) (trace "X" ('#')) (trace "X" (((:) (trace "X" ('}')) (trace "X" (((:) (trace "X" ('}')) (trace "X" ([]))))))))))))))))))))))))))))))))))))))))))); + KindUnboxedTuple -> (trace "X" ((:) (trace "X" ('\\')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('x')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('{')) (trace "X" (((:) (trace "X" ('\\')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('{')) (trace "X" (((:) (trace "X" ('(')) (trace "X" (((:) (trace "X" ('\\')) (trace "X" (((:) (trace "X" ('#')) (trace "X" (((:) (trace "X" (')')) (trace "X" (((:) (trace "X" ('}')) (trace "X" (((:) (trace "X" ('}')) (trace "X" ([]))))))))))))))))))))))))))))))))))))))))))))))))); + KindArgType -> (trace "X" ((:) (trace "X" ('\\')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('x')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('{')) (trace "X" (((:) (trace "X" ('\\')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('{')) (trace "X" (((:) (trace "X" ('?')) (trace "X" (((:) (trace "X" ('?')) (trace "X" (((:) (trace "X" ('}')) (trace "X" (((:) (trace "X" ('}')) (trace "X" ([]))))))))))))))))))))))))))))))))))))))))))); + KindOpenType -> (trace "X" ((:) (trace "X" ('\\')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('x')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('{')) (trace "X" (((:) (trace "X" ('\\')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('{')) (trace "X" (((:) (trace "X" ('?')) (trace "X" (((:) (trace "X" ('}')) (trace "X" (((:) (trace "X" ('}')) (trace "X" ([]))))))))))))))))))))))))))))))))))))))))})) + +kindEqDecidable :: EqDecidable Kind +kindEqDecidable v1 = + (trace "X" ((trace "X" (kind_rec (trace "X" ((\v2 -> + (trace "X" (case (trace "X" (v2)) of { + KindStar -> (trace "X" (Prelude.True)); + _ -> (trace "X" (Prelude.False))}))))) (trace "X" ((\v1_1 iHv1_1 v1_2 iHv1_2 v2 -> + (trace "X" (case (trace "X" (v2)) of { + KindArrow v2_1 v2_2 -> + (trace "X" (let {s = (trace "X" ((trace "X" (iHv1_1 (trace "X" (v2_1))))))} in + (trace "X" (case (trace "X" (s)) of { + Prelude.True -> + (trace "X" (let {s0 = (trace "X" ((trace "X" (iHv1_2 (trace "X" (v2_2))))))} in + (trace "X" (case (trace "X" (s0)) of { + Prelude.True -> (trace "X" ((trace "X" (eq_rec_r (trace "X" (v2_2)) (trace "X" ((\iHv1_3 -> (trace "X" ((trace "X" (eq_rec_r (trace "X" (v2_1)) (trace "X" ((\iHv1_4 -> (trace "X" (Prelude.True))))) (trace "X" (v1_1)) (trace "X" (iHv1_1))))))))) (trace "X" (v1_2)) (trace "X" (iHv1_2)))))); + Prelude.False -> (trace "X" ((trace "X" (eq_rec_r (trace "X" (v2_1)) (trace "X" ((\iHv1_3 -> (trace "X" (Prelude.False))))) (trace "X" (v1_1)) (trace "X" (iHv1_1))))))})))); + Prelude.False -> + (trace "X" (let {s0 = (trace "X" ((trace "X" (iHv1_2 (trace "X" (v2_2))))))} in + (trace "X" (case (trace "X" (s0)) of { + Prelude.True -> (trace "X" ((trace "X" (eq_rec_r (trace "X" (v2_2)) (trace "X" ((\iHv1_3 -> (trace "X" (Prelude.False))))) (trace "X" (v1_2)) (trace "X" (iHv1_2)))))); + Prelude.False -> (trace "X" (Prelude.False))}))))})))); + _ -> (trace "X" (Prelude.False))}))))) (trace "X" ((\v2 -> + (trace "X" (case (trace "X" (v2)) of { + KindUnliftedType -> (trace "X" (Prelude.True)); + _ -> (trace "X" (Prelude.False))}))))) (trace "X" ((\v2 -> + (trace "X" (case (trace "X" (v2)) of { + KindUnboxedTuple -> (trace "X" (Prelude.True)); + _ -> (trace "X" (Prelude.False))}))))) (trace "X" ((\v2 -> + (trace "X" (case (trace "X" (v2)) of { + KindArgType -> (trace "X" (Prelude.True)); + _ -> (trace "X" (Prelude.False))}))))) (trace "X" ((\v2 -> + (trace "X" (case (trace "X" (v2)) of { + KindOpenType -> (trace "X" (Prelude.True)); + _ -> (trace "X" (Prelude.False))}))))) (trace "X" (v1)))))) + +splitKind :: Kind -> (,) (([]) Kind) Kind +splitKind k = + (trace "X" (case (trace "X" (k)) of { + KindArrow a b -> (trace "X" (case (trace "X" ((trace "X" (splitKind (trace "X" (b)))))) of { + (,) args res -> (trace "X" ((,) (trace "X" (((:) (trace "X" (a)) (trace "X" (args))))) (trace "X" (res))))})); + _ -> (trace "X" ((,) (trace "X" (([]))) (trace "X" (k))))})) + +haskLiteralToString :: ToString Literal.Literal +haskLiteralToString = + (trace "X" (outputableToString)) + +haskLiteralToTyCon :: Literal.Literal -> TyCon.TyCon +haskLiteralToTyCon lit = + (trace "X" (case (trace "X" (lit)) of { + Literal.MachChar h -> (trace "X" (TysPrim.charPrimTyCon)); + Literal.MachInt h -> (trace "X" (TysPrim.intPrimTyCon)); + Literal.MachInt64 h -> (trace "X" (TysPrim.int64PrimTyCon)); + Literal.MachWord h -> (trace "X" (TysPrim.wordPrimTyCon)); + Literal.MachWord64 h -> (trace "X" (TysPrim.word64PrimTyCon)); + Literal.MachFloat h -> (trace "X" (TysPrim.floatPrimTyCon)); + Literal.MachDouble h -> (trace "X" (TysPrim.doublePrimTyCon)); + _ -> (trace "X" (TysPrim.addrPrimTyCon))})) + +tyConToString :: ToString TyCon.TyCon +tyConToString = + (trace "X" (outputableToString)) + +tyFunToString :: ToString TyCon.TyCon +tyFunToString = + (trace "X" (outputableToString)) + +arrowTyCon :: TyCon.TyCon +arrowTyCon = Type.funTyCon + +coreVarEqDecidable :: EqDecidable Var.Var +coreVarEqDecidable = + (trace "X" ((==))) + +coreVarToString :: ToString Var.Var +coreVarToString = + (trace "X" (outputableToString)) + +tyConEqDecidable :: EqDecidable TyCon.TyCon +tyConEqDecidable = + (trace "X" ((==))) + +tyFunEqDecidable :: EqDecidable TyCon.TyCon +tyFunEqDecidable = + (trace "X" ((==))) + +coreTypeToString :: ToString TypeRep.Type +coreTypeToString = + (trace "X" ((outputableToString . coreViewDeep))) + +coreDataConToString :: ToString DataCon.DataCon +coreDataConToString = + (trace "X" (outputableToString)) + +coreExprToString :: ToString (CoreSyn.Expr Var.Var) +coreExprToString = + (trace "X" (outputableToString)) + +data WeakTypeVar0 = + WeakTypeVar Var.Var Kind + +data WeakType = + WTyVarTy WeakTypeVar0 + | WAppTy WeakType WeakType + | WTyFunApp TyCon.TyCon (([]) WeakType) + | WTyCon TyCon.TyCon + | WFunTyCon + | WCodeTy WeakTypeVar0 WeakType + | WCoFunTy WeakType WeakType WeakType + | WForAllTy WeakTypeVar0 WeakType + | WClassP Class.Class (([]) WeakType) + | WIParam (BasicTypes.IPName Name.Name) WeakType + +weakTypeVarEqDecidable :: EqDecidable WeakTypeVar0 +weakTypeVarEqDecidable v1 v2 = + (trace "X" (case (trace "X" (v1)) of { + WeakTypeVar cv1 k1 -> + (trace "X" (case (trace "X" (v2)) of { + WeakTypeVar cv2 k2 -> + (trace "X" (let {s = (trace "X" ((trace "X" (eqd_dec (trace "X" (coreVarEqDecidable)) (trace "X" (cv1)) (trace "X" (cv2))))))} in + (trace "X" (case (trace "X" (s)) of { + Prelude.True -> + (trace "X" ((trace "X" (eq_rec_r (trace "X" (cv2)) + (trace "X" ((let {s0 = (trace "X" ((trace "X" (eqd_dec (trace "X" (kindEqDecidable)) (trace "X" (k1)) (trace "X" (k2))))))} in + (trace "X" (case (trace "X" (s0)) of { + Prelude.True -> (trace "X" ((trace "X" (eq_rec_r (trace "X" (k2)) (trace "X" (Prelude.True)) (trace "X" (k1)))))); + Prelude.False -> (trace "X" (Prelude.False))}))))) (trace "X" (cv1)))))); + Prelude.False -> (trace "X" (Prelude.False))}))))}))})) + +data WeakCoerVar0 = + WeakCoerVar Var.Var Kind WeakType WeakType + +data WeakCoercion = + WCoVar WeakCoerVar0 + | WCoType WeakType + | WCoApp WeakCoercion WeakCoercion + | WCoAppT WeakCoercion WeakType + | WCoAll Kind (WeakTypeVar0 -> WeakCoercion) + | WCoSym WeakCoercion + | WCoComp WeakCoercion WeakCoercion + | WCoLeft WeakCoercion + | WCoRight WeakCoercion + | WCoUnsafe WeakType WeakType + +weakCoercionTypes :: WeakCoercion -> (,) WeakType WeakType +weakCoercionTypes wc = + (trace "X" (case (trace "X" (wc)) of { + WCoVar w -> (trace "X" (case (trace "X" (w)) of { + WeakCoerVar c k t1 t2 -> (trace "X" ((,) (trace "X" (t1)) (trace "X" (t2))))})); + WCoSym c -> (trace "X" (case (trace "X" ((trace "X" (weakCoercionTypes (trace "X" (c)))))) of { + (,) t2 t1 -> (trace "X" ((,) (trace "X" (t1)) (trace "X" (t2))))})); + WCoUnsafe t1 t2 -> (trace "X" ((,) (trace "X" (t1)) (trace "X" (t2)))); + _ -> (trace "X" ((,) (trace "X" (WFunTyCon)) (trace "X" (WFunTyCon))))})) + +weakTypeToString :: ToString WeakType +weakTypeToString = + (trace "X" ((coreTypeToString . weakTypeToCoreType))) + +data WeakExprVar0 = + WeakExprVar Var.Var WeakType + +data WeakVar = + WExprVar WeakExprVar0 + | WTypeVar WeakTypeVar0 + | WCoerVar WeakCoerVar0 + +weakTypeVarToKind :: WeakTypeVar0 -> Kind +weakTypeVarToKind tv = + (trace "X" (case (trace "X" (tv)) of { + WeakTypeVar c k -> (trace "X" (k))})) + +weakVarToCoreVar :: WeakVar -> Var.Var +weakVarToCoreVar wv = + (trace "X" (case (trace "X" (wv)) of { + WExprVar w -> (trace "X" (case (trace "X" (w)) of { + WeakExprVar v w0 -> (trace "X" (v))})); + WTypeVar w -> (trace "X" (case (trace "X" (w)) of { + WeakTypeVar v k -> (trace "X" (v))})); + WCoerVar w -> (trace "X" (case (trace "X" (w)) of { + WeakCoerVar v k w0 w1 -> (trace "X" (v))}))})) + +tyConTyVars :: TyCon.TyCon -> ([]) WeakTypeVar0 +tyConTyVars tc = + (trace "X" ((trace "X" (filter + (trace "X" ((trace "X" ((map (trace "X" ((\x -> + (trace "X" (case (trace "X" ((trace "X" (coreVarToWeakVar (trace "X" (x)))))) of { + WTypeVar v -> (trace "X" (Prelude.Just (trace "X" (v)))); + _ -> (trace "X" (Prelude.Nothing))}))))) (trace "X" ((trace "X" ((getTyConTyVars (trace "X" (tc)))))))))))))))) + +tyConKind :: TyCon.TyCon -> ([]) Kind +tyConKind tc = + (trace "X" ((trace "X" (map (trace "X" ((\x -> (trace "X" ((trace "X" (weakTypeVarToKind (trace "X" (x))))))))) (trace "X" ((trace "X" ((tyConTyVars (trace "X" ((trace "X" (((\x -> x) (trace "X" (tc)))))))))))))))) + +tyFunKind :: TyCon.TyCon -> (,) (([]) Kind) Kind +tyFunKind tc = + (trace "X" ((trace "X" (splitKind (trace "X" ((trace "X" (((coreKindToKind . TyCon.tyConKind) (trace "X" ((trace "X" (((\x -> x) (trace "X" (tc)))))))))))))))) + +data WeakAltCon = + WeakDataAlt DataCon.DataCon + | WeakLitAlt Literal.Literal + | WeakDEFAULT + +data WeakExpr = + WEVar WeakExprVar0 + | WELit Literal.Literal + | WELet WeakExprVar0 WeakExpr WeakExpr + | WELetRec (Tree (Prelude.Maybe ((,) WeakExprVar0 WeakExpr))) WeakExpr + | WECast WeakExpr WeakCoercion + | WENote CoreSyn.Note WeakExpr + | WEApp WeakExpr WeakExpr + | WETyApp WeakExpr WeakType + | WECoApp WeakExpr WeakCoercion + | WELam WeakExprVar0 WeakExpr + | WETyLam WeakTypeVar0 WeakExpr + | WECoLam WeakCoerVar0 WeakExpr + | WEBrak WeakExprVar0 WeakTypeVar0 WeakExpr WeakType + | WEEsc WeakExprVar0 WeakTypeVar0 WeakExpr WeakType + | WECSP WeakExprVar0 WeakTypeVar0 WeakExpr WeakType + | WECase WeakExprVar0 WeakExpr WeakType TyCon.TyCon (([]) WeakType) (Tree (Prelude.Maybe ((,) ((,) ((,) ((,) WeakAltCon (([]) WeakTypeVar0)) (([]) WeakCoerVar0)) (([]) WeakExprVar0)) WeakExpr))) + +coreTypeToWeakType' :: TypeRep.Type -> OrError WeakType +coreTypeToWeakType' ct = + (trace "X" (case (trace "X" (ct)) of { + TypeRep.TyVarTy cv -> + (trace "X" (case (trace "X" ((trace "X" (coreVarToWeakVar (trace "X" (cv)))))) of { + WExprVar w -> (trace "X" (Error (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('x')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('v')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('b')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('a')) (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" ([]))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))); + WTypeVar tv -> (trace "X" (OK (trace "X" ((WTyVarTy (trace "X" (tv))))))); + WCoerVar w -> (trace "X" (Error (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('e')) (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" ('v')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('b')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('a')) (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" ([])))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))})); + TypeRep.AppTy t1 t2 -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((coreTypeToWeakType' (trace "X" (t2))))))) (trace "X" ((\t2' -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((coreTypeToWeakType' (trace "X" (t1))))))) (trace "X" ((\t1' -> (trace "X" (OK (trace "X" ((WAppTy (trace "X" (t1')) (trace "X" (t2'))))))))))))))))))))); + TypeRep.TyConApp tc_ lct -> + (trace "X" (let { + recurse = (trace "X" ((trace "X" (let { + rec tl = + (trace "X" (case (trace "X" (tl)) of { + ([]) -> (trace "X" (OK (trace "X" (([]))))); + (:) a b -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((coreTypeToWeakType' (trace "X" (a))))))) (trace "X" ((\a' -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((unsafeCoerce (trace "X" (rec)) (trace "X" (b))))))) (trace "X" ((\b' -> (trace "X" (OK (trace "X" (((:) (trace "X" (a')) (trace "X" (b')))))))))))))))))))))}))} + in rec (trace "X" (lct))))))} + in + (trace "X" (case (trace "X" ((trace "X" (tyConOrTyFun (trace "X" (tc_)))))) of { + Prelude.Left tc -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (tyConEqDecidable)) (trace "X" (tc)) (trace "X" (TysWiredIn.hetMetCodeTypeTyCon)))))) of { + Prelude.True -> + (trace "X" (case (trace "X" (lct)) of { + ([]) -> (trace "X" (Error (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" (((:) (trace "X" ('m')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('s')) (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" ('i')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('m')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('b')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('x')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('y')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" (':')) (trace "X" (((:) (trace "X" (' ')) (trace "X" ([]))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) (trace "X" ((trace "X" ((toString (trace "X" (coreTypeToString)) (trace "X" (ct)))))))))))))); + (:) c l -> + (trace "X" (case (trace "X" (c)) of { + TypeRep.TyVarTy ec -> + (trace "X" (case (trace "X" (l)) of { + ([]) -> (trace "X" (Error (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" (((:) (trace "X" ('m')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('s')) (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" ('i')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('m')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('b')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('x')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('y')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" (':')) (trace "X" (((:) (trace "X" (' ')) (trace "X" ([]))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) (trace "X" ((trace "X" ((toString (trace "X" (coreTypeToString)) (trace "X" (ct)))))))))))))); + (:) tbody l0 -> + (trace "X" (case (trace "X" (l0)) of { + ([]) -> + (trace "X" (case (trace "X" ((trace "X" (coreVarToWeakVar (trace "X" (ec)))))) of { + WExprVar w -> (trace "X" (Error (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('x')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('v')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('b')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('m')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('b')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('x')) (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" ([]))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))); + WTypeVar ec' -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((coreTypeToWeakType' (trace "X" (tbody))))))) (trace "X" ((\tbody' -> (trace "X" (OK (trace "X" ((WCodeTy (trace "X" (ec')) (trace "X" (tbody')))))))))))))); + WCoerVar w -> (trace "X" (Error (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('e')) (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" ('v')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('b')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('m')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('b')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('x')) (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" ([])))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))})); + (:) c0 l1 -> (trace "X" (Error (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" (((:) (trace "X" ('m')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('s')) (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" ('i')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('m')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('b')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('x')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('y')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" (':')) (trace "X" (((:) (trace "X" (' ')) (trace "X" ([]))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) (trace "X" ((trace "X" ((toString (trace "X" (coreTypeToString)) (trace "X" (ct))))))))))))))}))})); + _ -> (trace "X" (Error (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" (((:) (trace "X" ('m')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('s')) (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" ('i')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('m')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('b')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('x')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('y')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" (':')) (trace "X" (((:) (trace "X" (' ')) (trace "X" ([]))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) (trace "X" ((trace "X" ((toString (trace "X" (coreTypeToString)) (trace "X" (ct))))))))))))))}))})); + Prelude.False -> + (trace "X" (let { + tc' = (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (tyConEqDecidable)) (trace "X" (tc)) (trace "X" (arrowTyCon)))))) of { + Prelude.True -> (trace "X" (WFunTyCon)); + Prelude.False -> (trace "X" (WTyCon (trace "X" (tc))))}))} + in + (trace "X" ((trace "X" (orErrorBind (trace "X" (recurse)) (trace "X" ((\recurse' -> (trace "X" (OK (trace "X" ((trace "X" ((fold_left (trace "X" ((\x y -> (trace "X" (WAppTy (trace "X" (x)) (trace "X" (y))))))) (trace "X" (recurse')) (trace "X" (tc'))))))))))))))))))})); + Prelude.Right tf -> (trace "X" ((trace "X" (orErrorBind (trace "X" (recurse)) (trace "X" ((\recurse' -> (trace "X" (OK (trace "X" ((WTyFunApp (trace "X" (tf)) (trace "X" (recurse'))))))))))))))})))); + TypeRep.FunTy t1 t2 -> + (trace "X" (case (trace "X" (t1)) of { + TypeRep.PredTy p -> + (trace "X" (case (trace "X" (p)) of { + TypeRep.EqPred t3 t4 -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((coreTypeToWeakType' (trace "X" (t3))))))) (trace "X" ((\t1' -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((coreTypeToWeakType' (trace "X" (t4))))))) (trace "X" ((\t2' -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((coreTypeToWeakType' (trace "X" (t2))))))) (trace "X" ((\t3' -> (trace "X" (OK (trace "X" ((WCoFunTy (trace "X" (t1')) (trace "X" (t2')) (trace "X" (t3')))))))))))))))))))))))))))); + _ -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((coreTypeToWeakType' (trace "X" (t1))))))) (trace "X" ((\t1' -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((coreTypeToWeakType' (trace "X" (t2))))))) (trace "X" ((\t2' -> (trace "X" (OK (trace "X" ((WAppTy (trace "X" ((WAppTy (trace "X" (WFunTyCon)) (trace "X" (t1'))))) (trace "X" (t2')))))))))))))))))))))})); + _ -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((coreTypeToWeakType' (trace "X" (t1))))))) (trace "X" ((\t1' -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((coreTypeToWeakType' (trace "X" (t2))))))) (trace "X" ((\t2' -> (trace "X" (OK (trace "X" ((WAppTy (trace "X" ((WAppTy (trace "X" (WFunTyCon)) (trace "X" (t1'))))) (trace "X" (t2')))))))))))))))))))))})); + TypeRep.ForAllTy cv t -> + (trace "X" (case (trace "X" ((trace "X" (coreVarToWeakVar (trace "X" (cv)))))) of { + WExprVar w -> (trace "X" (Error (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('x')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('v')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('b')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('a')) (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" ([]))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))); + WTypeVar tv -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((coreTypeToWeakType' (trace "X" (t))))))) (trace "X" ((\t' -> (trace "X" (OK (trace "X" ((WForAllTy (trace "X" (tv)) (trace "X" (t')))))))))))))); + WCoerVar w -> (trace "X" (Error (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('e')) (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" ('v')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('b')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('a')) (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" ([])))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))})); + TypeRep.PredTy p -> + (trace "X" (case (trace "X" (p)) of { + TypeRep.ClassP cl lct -> + (trace "X" ((trace "X" (orErrorBind + (trace "X" ((trace "X" ((let { + rec tl = + (trace "X" (case (trace "X" (tl)) of { + ([]) -> (trace "X" (OK (trace "X" (([]))))); + (:) a b -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((coreTypeToWeakType' (trace "X" (a))))))) (trace "X" ((\a' -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((rec (trace "X" (b))))))) (trace "X" ((\b' -> (trace "X" (OK (trace "X" (((:) (trace "X" (a')) (trace "X" (b')))))))))))))))))))))}))} + in rec (trace "X" (lct))))))) (trace "X" ((\lct' -> (trace "X" (OK (trace "X" ((WClassP (trace "X" (cl)) (trace "X" (lct')))))))))))))); + TypeRep.IParam ipn ct0 -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((coreTypeToWeakType' (trace "X" (ct0))))))) (trace "X" ((\ct' -> (trace "X" (OK (trace "X" ((WIParam (trace "X" (ipn)) (trace "X" (ct')))))))))))))); + TypeRep.EqPred c c0 -> (trace "X" (Error (trace "X" (((:) (trace "X" ('h')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('b')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('E')) (trace "X" (((:) (trace "X" ('q')) (trace "X" (((:) (trace "X" ('P')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('d')) (trace "X" ([])))))))))))))))))))))))))))))))))))))))))))))))))))))))}))})) + +coreTypeToWeakType :: TypeRep.Type -> OrError WeakType +coreTypeToWeakType t = + (trace "X" ((trace "X" (addErrorMessage (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" ('T')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('W')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('k')) (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" ((coreTypeToWeakType' (trace "X" ((trace "X" ((coreViewDeep (trace "X" (t)))))))))))))))) + +isBrak :: (CoreSyn.Expr Var.Var) -> Prelude.Maybe ((,) ((,) WeakExprVar0 WeakTypeVar0) TypeRep.Type) +isBrak ce = + (trace "X" (case (trace "X" (ce)) of { + CoreSyn.App c c0 -> + (trace "X" (case (trace "X" (c)) of { + CoreSyn.App c1 c2 -> + (trace "X" (case (trace "X" (c1)) of { + CoreSyn.Var v -> + (trace "X" (case (trace "X" (c2)) of { + CoreSyn.Type c3 -> + (trace "X" (case (trace "X" (c3)) of { + TypeRep.TyVarTy ec -> + (trace "X" (case (trace "X" (c0)) of { + CoreSyn.Type tbody -> + (trace "X" (case (trace "X" ((trace "X" ((==) (trace "X" (PrelNames.hetmet_brak_name)) (trace "X" ((trace "X" ((Var.varName (trace "X" (v))))))))))) of { + Prelude.True -> + (trace "X" (case (trace "X" ((trace "X" (coreVarToWeakVar (trace "X" (ec)))))) of { + WTypeVar tv -> + (trace "X" (case (trace "X" ((trace "X" (coreVarToWeakVar (trace "X" (v)))))) of { + WExprVar v' -> (trace "X" (Prelude.Just (trace "X" (((,) (trace "X" (((,) (trace "X" (v')) (trace "X" (tv))))) (trace "X" (tbody))))))); + _ -> (trace "X" (Prelude.Nothing))})); + _ -> (trace "X" (Prelude.Nothing))})); + Prelude.False -> (trace "X" (Prelude.Nothing))})); + _ -> (trace "X" (Prelude.Nothing))})); + _ -> (trace "X" (Prelude.Nothing))})); + _ -> (trace "X" (Prelude.Nothing))})); + _ -> (trace "X" (Prelude.Nothing))})); + _ -> (trace "X" (Prelude.Nothing))})); + _ -> (trace "X" (Prelude.Nothing))})) + +isEsc :: (CoreSyn.Expr Var.Var) -> Prelude.Maybe ((,) ((,) WeakExprVar0 WeakTypeVar0) TypeRep.Type) +isEsc ce = + (trace "X" (case (trace "X" (ce)) of { + CoreSyn.App c c0 -> + (trace "X" (case (trace "X" (c)) of { + CoreSyn.App c1 c2 -> + (trace "X" (case (trace "X" (c1)) of { + CoreSyn.Var v -> + (trace "X" (case (trace "X" (c2)) of { + CoreSyn.Type c3 -> + (trace "X" (case (trace "X" (c3)) of { + TypeRep.TyVarTy ec -> + (trace "X" (case (trace "X" (c0)) of { + CoreSyn.Type tbody -> + (trace "X" (case (trace "X" ((trace "X" ((==) (trace "X" (PrelNames.hetmet_esc_name)) (trace "X" ((trace "X" ((Var.varName (trace "X" (v))))))))))) of { + Prelude.True -> + (trace "X" (case (trace "X" ((trace "X" (coreVarToWeakVar (trace "X" (ec)))))) of { + WTypeVar tv -> + (trace "X" (case (trace "X" ((trace "X" (coreVarToWeakVar (trace "X" (v)))))) of { + WExprVar v' -> (trace "X" (Prelude.Just (trace "X" (((,) (trace "X" (((,) (trace "X" (v')) (trace "X" (tv))))) (trace "X" (tbody))))))); + _ -> (trace "X" (Prelude.Nothing))})); + _ -> (trace "X" (Prelude.Nothing))})); + Prelude.False -> (trace "X" (Prelude.Nothing))})); + _ -> (trace "X" (Prelude.Nothing))})); + _ -> (trace "X" (Prelude.Nothing))})); + _ -> (trace "X" (Prelude.Nothing))})); + _ -> (trace "X" (Prelude.Nothing))})); + _ -> (trace "X" (Prelude.Nothing))})); + _ -> (trace "X" (Prelude.Nothing))})) + +isCSP :: (CoreSyn.Expr Var.Var) -> Prelude.Maybe ((,) ((,) WeakExprVar0 WeakTypeVar0) TypeRep.Type) +isCSP ce = + (trace "X" (case (trace "X" (ce)) of { + CoreSyn.App c c0 -> + (trace "X" (case (trace "X" (c)) of { + CoreSyn.App c1 c2 -> + (trace "X" (case (trace "X" (c1)) of { + CoreSyn.Var v -> + (trace "X" (case (trace "X" (c2)) of { + CoreSyn.Type c3 -> + (trace "X" (case (trace "X" (c3)) of { + TypeRep.TyVarTy ec -> + (trace "X" (case (trace "X" (c0)) of { + CoreSyn.Type tbody -> + (trace "X" (case (trace "X" ((trace "X" ((==) (trace "X" (PrelNames.hetmet_csp_name)) (trace "X" ((trace "X" ((Var.varName (trace "X" (v))))))))))) of { + Prelude.True -> + (trace "X" (case (trace "X" ((trace "X" (coreVarToWeakVar (trace "X" (ec)))))) of { + WTypeVar tv -> + (trace "X" (case (trace "X" ((trace "X" (coreVarToWeakVar (trace "X" (v)))))) of { + WExprVar v' -> (trace "X" (Prelude.Just (trace "X" (((,) (trace "X" (((,) (trace "X" (v')) (trace "X" (tv))))) (trace "X" (tbody))))))); + _ -> (trace "X" (Prelude.Nothing))})); + _ -> (trace "X" (Prelude.Nothing))})); + Prelude.False -> (trace "X" (Prelude.Nothing))})); + _ -> (trace "X" (Prelude.Nothing))})); + _ -> (trace "X" (Prelude.Nothing))})); + _ -> (trace "X" (Prelude.Nothing))})); + _ -> (trace "X" (Prelude.Nothing))})); + _ -> (trace "X" (Prelude.Nothing))})); + _ -> (trace "X" (Prelude.Nothing))})) + +expectTyConApp :: WeakType -> (([]) WeakType) -> OrError ((,) TyCon.TyCon (([]) WeakType)) +expectTyConApp wt acc = + (trace "X" (case (trace "X" (wt)) of { + WAppTy t1 t2 -> (trace "X" ((trace "X" (expectTyConApp (trace "X" (t1)) (trace "X" (((:) (trace "X" (t2)) (trace "X" (acc))))))))); + WTyFunApp tc tys -> (trace "X" (Error (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('x')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('T')) (trace "X" (((:) (trace "X" ('y')) (trace "X" (((:) (trace "X" ('C')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('A')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('T')) (trace "X" (((:) (trace "X" ('y')) (trace "X" (((:) (trace "X" ('F')) (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('A')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" (':')) (trace "X" (((:) (trace "X" (' ')) (trace "X" ([]))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) (trace "X" ((trace "X" ((toString (trace "X" (weakTypeToString)) (trace "X" (wt)))))))))))))); + WTyCon tc -> (trace "X" (OK (trace "X" (((,) (trace "X" (tc)) (trace "X" (acc))))))); + _ -> (trace "X" (Error (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('x')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('T')) (trace "X" (((:) (trace "X" ('y')) (trace "X" (((:) (trace "X" ('C')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('A')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" (' ')) (trace "X" ([]))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) (trace "X" ((trace "X" ((toString (trace "X" (weakTypeToString)) (trace "X" (wt))))))))))))))})) + +coreExprToWeakExpr :: (CoreSyn.Expr Var.Var) -> OrError WeakExpr +coreExprToWeakExpr ce = + (trace "X" (case (trace "X" (ce)) of { + CoreSyn.Var v -> + (trace "X" (case (trace "X" ((trace "X" (coreVarToWeakVar (trace "X" (v)))))) of { + WExprVar ev -> (trace "X" (OK (trace "X" ((WEVar (trace "X" (ev))))))); + WTypeVar w -> (trace "X" (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" ('a')) (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" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('v')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('b')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('e')) (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" ('a')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('E')) (trace "X" (((:) (trace "X" ('V')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('!')) (trace "X" ([]))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))); + WCoerVar w -> (trace "X" (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" ('a')) (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" ('v')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('b')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('e')) (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" ('a')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('E')) (trace "X" (((:) (trace "X" ('V')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('!')) (trace "X" ([])))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))})); + CoreSyn.Lit lit -> (trace "X" (OK (trace "X" ((WELit (trace "X" (lit))))))); + CoreSyn.App e1 e2 -> + (trace "X" (case (trace "X" ((trace "X" (isBrak (trace "X" (e1)))))) of { + Prelude.Just p -> + (trace "X" (case (trace "X" (p)) of { + (,) p0 t -> (trace "X" (case (trace "X" (p0)) of { + (,) v tv -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((coreExprToWeakExpr (trace "X" (e2))))))) (trace "X" ((\e' -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((coreTypeToWeakType (trace "X" (t))))))) (trace "X" ((\t' -> (trace "X" (OK (trace "X" ((WEBrak (trace "X" (v)) (trace "X" (tv)) (trace "X" (e')) (trace "X" (t')))))))))))))))))))))}))})); + Prelude.Nothing -> + (trace "X" (case (trace "X" ((trace "X" (isEsc (trace "X" (e1)))))) of { + Prelude.Just p -> + (trace "X" (case (trace "X" (p)) of { + (,) p0 t -> (trace "X" (case (trace "X" (p0)) of { + (,) v tv -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((coreExprToWeakExpr (trace "X" (e2))))))) (trace "X" ((\e' -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((coreTypeToWeakType (trace "X" (t))))))) (trace "X" ((\t' -> (trace "X" (OK (trace "X" ((WEEsc (trace "X" (v)) (trace "X" (tv)) (trace "X" (e')) (trace "X" (t')))))))))))))))))))))}))})); + Prelude.Nothing -> + (trace "X" (case (trace "X" ((trace "X" (isCSP (trace "X" (e1)))))) of { + Prelude.Just p -> + (trace "X" (case (trace "X" (p)) of { + (,) p0 t -> (trace "X" (case (trace "X" (p0)) of { + (,) v tv -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((coreExprToWeakExpr (trace "X" (e2))))))) (trace "X" ((\e' -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((coreTypeToWeakType (trace "X" (t))))))) (trace "X" ((\t' -> (trace "X" (OK (trace "X" ((WECSP (trace "X" (v)) (trace "X" (tv)) (trace "X" (e')) (trace "X" (t')))))))))))))))))))))}))})); + Prelude.Nothing -> + (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((coreExprToWeakExpr (trace "X" (e1))))))) (trace "X" ((\e1' -> + (trace "X" (case (trace "X" (e2)) of { + CoreSyn.Type t -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((coreTypeToWeakType (trace "X" (t))))))) (trace "X" ((\t' -> (trace "X" (OK (trace "X" ((WETyApp (trace "X" (e1')) (trace "X" (t')))))))))))))); + _ -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((coreExprToWeakExpr (trace "X" (e2))))))) (trace "X" ((\e2' -> (trace "X" (OK (trace "X" ((WEApp (trace "X" (e1')) (trace "X" (e2'))))))))))))))})))))))))}))}))})); + CoreSyn.Lam v e -> + (trace "X" (case (trace "X" ((trace "X" (coreVarToWeakVar (trace "X" (v)))))) of { + WExprVar ev -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((coreExprToWeakExpr (trace "X" (e))))))) (trace "X" ((\e' -> (trace "X" (OK (trace "X" ((WELam (trace "X" (ev)) (trace "X" (e')))))))))))))); + WTypeVar tv -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((coreExprToWeakExpr (trace "X" (e))))))) (trace "X" ((\e' -> (trace "X" (OK (trace "X" ((WETyLam (trace "X" (tv)) (trace "X" (e')))))))))))))); + WCoerVar cv -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((coreExprToWeakExpr (trace "X" (e))))))) (trace "X" ((\e' -> (trace "X" (OK (trace "X" ((WECoLam (trace "X" (cv)) (trace "X" (e'))))))))))))))})); + CoreSyn.Let c e -> + (trace "X" (case (trace "X" (c)) of { + CoreSyn.NonRec v ve -> + (trace "X" (case (trace "X" ((trace "X" (coreVarToWeakVar (trace "X" (v)))))) of { + WExprVar ev -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((coreExprToWeakExpr (trace "X" (ve))))))) (trace "X" ((\ve' -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((coreExprToWeakExpr (trace "X" (e))))))) (trace "X" ((\e' -> (trace "X" (OK (trace "X" ((WELet (trace "X" (ev)) (trace "X" (ve')) (trace "X" (e'))))))))))))))))))))); + WTypeVar w -> + (trace "X" (case (trace "X" (e)) of { + CoreSyn.Type t -> (trace "X" (Error (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('w')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('a')) (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" (((:) (trace "X" ('-')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('t')) (trace "X" ([])))))))))))))))))))))))))))))))))))))))))))))); + _ -> (trace "X" (Error (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('w')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('(')) (trace "X" (((:) (trace "X" ('E')) (trace "X" (((:) (trace "X" ('L')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('<')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('y')) (trace "X" (((:) (trace "X" ('v')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('>')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" (')')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('w')) (trace "X" (((:) (trace "X" ('h')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('!')) (trace "X" (((:) (trace "X" ('=')) (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" ([])))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))})); + WCoerVar w -> (trace "X" (Error (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('w')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('(')) (trace "X" (((:) (trace "X" ('E')) (trace "X" (((:) (trace "X" ('L')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" (' ')) (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" ('V')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('>')) (trace "X" (((:) (trace "X" (')')) (trace "X" ([])))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))})); + CoreSyn.Rec rb -> + (trace "X" ((trace "X" (orErrorBind + (trace "X" ((trace "X" ((let { + coreExprToWeakExprList cel = + (trace "X" (case (trace "X" (cel)) of { + ([]) -> (trace "X" (OK (trace "X" (([]))))); + (:) p t -> + (trace "X" (case (trace "X" (p)) of { + (,) v' e' -> + (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((coreExprToWeakExprList (trace "X" (t))))))) (trace "X" ((\t' -> + (trace "X" (case (trace "X" ((trace "X" (coreVarToWeakVar (trace "X" (v')))))) of { + WExprVar ev -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((coreExprToWeakExpr (trace "X" (e'))))))) (trace "X" ((\e'0 -> (trace "X" (OK (trace "X" (((:) (trace "X" (((,) (trace "X" (ev)) (trace "X" (e'0))))) (trace "X" (t')))))))))))))); + WTypeVar w -> (trace "X" (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" ('a')) (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" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('v')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('b')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('v')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('t')) (trace "X" ([])))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))); + WCoerVar w -> (trace "X" (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" ('a')) (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" ('v')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('b')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('v')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('t')) (trace "X" ([]))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))})))))))))}))}))} + in coreExprToWeakExprList (trace "X" (rb))))))) (trace "X" ((\rb' -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((coreExprToWeakExpr (trace "X" (e))))))) (trace "X" ((\e' -> (trace "X" (OK (trace "X" ((WELetRec (trace "X" ((trace "X" ((unleaves' (trace "X" (rb'))))))) (trace "X" (e')))))))))))))))))))))})); + CoreSyn.Case e v tbranches alts -> + (trace "X" (case (trace "X" ((trace "X" (coreVarToWeakVar (trace "X" (v)))))) of { + WExprVar ev -> + (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((coreTypeToWeakType (trace "X" ((trace "X" ((CoreUtils.exprType (trace "X" (e)))))))))))) (trace "X" ((\te' -> + (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((expectTyConApp (trace "X" (te')) (trace "X" (([])))))))) (trace "X" ((\tca -> + (trace "X" (case (trace "X" (tca)) of { + (,) tc lt -> + (trace "X" ((trace "X" (orErrorBind + (trace "X" ((trace "X" ((let { + mkBranches branches = + (trace "X" (case (trace "X" (branches)) of { + ([]) -> (trace "X" (OK (trace "X" (([]))))); + (:) t rest -> + (trace "X" (case (trace "X" (t)) of { + (,,) alt vars e0 -> + (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((mkBranches (trace "X" (rest))))))) (trace "X" ((\rest' -> + (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((coreExprToWeakExpr (trace "X" (e0))))))) (trace "X" ((\e' -> + (trace "X" (case (trace "X" (alt)) of { + CoreSyn.DataAlt dc -> + (trace "X" (let {vars0 = (trace "X" ((trace "X" (map (trace "X" (coreVarToWeakVar)) (trace "X" (vars))))))} in + (trace "X" (OK (trace "X" (((:) (trace "X" (((,) (trace "X" (((,) (trace "X" (((,) (trace "X" (((,) (trace "X" ((WeakDataAlt (trace "X" (dc))))) + (trace "X" ((trace "X" ((filter + (trace "X" ((trace "X" ((map (trace "X" ((\x -> + (trace "X" (case (trace "X" (x)) of { + WTypeVar v0 -> (trace "X" (Prelude.Just (trace "X" (v0)))); + _ -> (trace "X" (Prelude.Nothing))}))))) (trace "X" (vars0))))))))))))))) + (trace "X" ((trace "X" ((filter + (trace "X" ((trace "X" ((map (trace "X" ((\x -> + (trace "X" (case (trace "X" (x)) of { + WCoerVar v0 -> (trace "X" (Prelude.Just (trace "X" (v0)))); + _ -> (trace "X" (Prelude.Nothing))}))))) (trace "X" (vars0))))))))))))))) + (trace "X" ((trace "X" ((filter + (trace "X" ((trace "X" ((map (trace "X" ((\x -> + (trace "X" (case (trace "X" (x)) of { + WExprVar v0 -> (trace "X" (Prelude.Just (trace "X" (v0)))); + _ -> (trace "X" (Prelude.Nothing))}))))) (trace "X" (vars0))))))))))))))) (trace "X" (e'))))) (trace "X" (rest'))))))))); + CoreSyn.LitAlt lit -> (trace "X" (OK (trace "X" (((:) (trace "X" (((,) (trace "X" (((,) (trace "X" (((,) (trace "X" (((,) (trace "X" ((WeakLitAlt (trace "X" (lit))))) (trace "X" (([])))))) (trace "X" (([])))))) (trace "X" (([])))))) (trace "X" (e'))))) (trace "X" (rest'))))))); + CoreSyn.DEFAULT -> (trace "X" (OK (trace "X" (((:) (trace "X" (((,) (trace "X" (((,) (trace "X" (((,) (trace "X" (((,) (trace "X" (WeakDEFAULT)) (trace "X" (([])))))) (trace "X" (([])))))) (trace "X" (([])))))) (trace "X" (e'))))) (trace "X" (rest')))))))}))))))))))))))))}))}))} + in mkBranches (trace "X" (alts))))))) (trace "X" ((\branches -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((coreExprToWeakExpr (trace "X" (e))))))) (trace "X" ((\scrutinee -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((coreTypeToWeakType (trace "X" (tbranches))))))) (trace "X" ((\tbranches' -> (trace "X" (OK (trace "X" ((WECase (trace "X" (ev)) (trace "X" (scrutinee)) (trace "X" (tbranches')) (trace "X" (tc)) (trace "X" (lt)) (trace "X" ((trace "X" ((unleaves (trace "X" (branches)))))))))))))))))))))))))))))))))})))))))))))))))); + WTypeVar w -> (trace "X" (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" ('a')) (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" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('v')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('b')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('e')) (trace "X" ([]))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))); + WCoerVar w -> (trace "X" (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" ('a')) (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" ('v')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('b')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('e')) (trace "X" ([])))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))})); + CoreSyn.Cast e co -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((coreExprToWeakExpr (trace "X" (e))))))) (trace "X" ((\e' -> (trace "X" (OK (trace "X" ((WECast (trace "X" (e')) (trace "X" ((trace "X" ((coreCoercionToWeakCoercion (trace "X" (co))))))))))))))))))); + CoreSyn.Note n e -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((coreExprToWeakExpr (trace "X" (e))))))) (trace "X" ((\e' -> (trace "X" (OK (trace "X" ((WENote (trace "X" (n)) (trace "X" (e')))))))))))))); + CoreSyn.Type t -> (trace "X" (Error (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('d')) (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" ('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" ('i')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('i')) (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" ('w')) (trace "X" (((:) (trace "X" ('h')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('E')) (trace "X" (((:) (trace "X" ('x')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('h')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('h')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('v')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('b')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('n')) (trace "X" ([]))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))})) + +dataConExTyVars :: DataCon.DataCon -> ([]) WeakTypeVar0 +dataConExTyVars cdc = + (trace "X" ((trace "X" (filter + (trace "X" ((trace "X" ((map (trace "X" ((\x -> + (trace "X" (case (trace "X" ((trace "X" (coreVarToWeakVar (trace "X" (x)))))) of { + WTypeVar v -> (trace "X" (Prelude.Just (trace "X" (v)))); + _ -> (trace "X" (Prelude.Nothing))}))))) (trace "X" ((trace "X" ((DataCon.dataConExTyVars (trace "X" (cdc)))))))))))))))) + +dataConCoerKinds :: DataCon.DataCon -> ([]) ((,) WeakType WeakType) +dataConCoerKinds cdc = + (trace "X" ((trace "X" (filter + (trace "X" ((trace "X" ((map (trace "X" ((\x -> + (trace "X" (case (trace "X" (x)) of { + TypeRep.EqPred t1 t2 -> + (trace "X" (case (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((coreTypeToWeakType (trace "X" (t1))))))) (trace "X" ((\t1' -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((coreTypeToWeakType (trace "X" (t2))))))) (trace "X" ((\t2' -> (trace "X" (OK (trace "X" (((,) (trace "X" (t1')) (trace "X" (t2'))))))))))))))))))))) of { + Error error_message -> (trace "X" (Prelude.Nothing)); + OK z -> (trace "X" (Prelude.Just (trace "X" (z))))})); + _ -> (trace "X" (Prelude.Nothing))}))))) (trace "X" ((trace "X" ((DataCon.dataConEqTheta (trace "X" (cdc)))))))))))))))) + +dataConFieldTypes :: DataCon.DataCon -> ([]) WeakType +dataConFieldTypes cdc = + (trace "X" ((trace "X" (filter + (trace "X" ((trace "X" ((map (trace "X" ((\x -> + (trace "X" (case (trace "X" ((trace "X" (coreTypeToWeakType (trace "X" (x)))))) of { + Error error_message -> (trace "X" (Prelude.Nothing)); + OK z -> (trace "X" (Prelude.Just (trace "X" (z))))}))))) (trace "X" ((trace "X" ((DataCon.dataConOrigArgTys (trace "X" (cdc)))))))))))))))) + +type DataCon = + DataCon.DataCon + -- singleton inductive, whose constructor was mkDataCon + +dataConToCoreDataCon :: TyCon.TyCon -> DataCon -> DataCon.DataCon +dataConToCoreDataCon tc dc = + (trace "X" (dc)) + +tyConKind' :: TyCon.TyCon -> Kind +tyConKind' tc = + (trace "X" ((trace "X" (fold_right (trace "X" ((\x x0 -> (trace "X" (KindArrow (trace "X" (x)) (trace "X" (x0))))))) (trace "X" (KindStar)) (trace "X" ((trace "X" ((tyConKind (trace "X" (tc))))))))))) + +data RawHaskType tV = + TVar Kind tV + | TCon TyCon.TyCon + | TArrow + | TCoerc Kind (RawHaskType tV) (RawHaskType tV) (RawHaskType tV) + | TApp Kind Kind (RawHaskType tV) (RawHaskType tV) + | TAll Kind (tV -> RawHaskType tV) + | TCode (RawHaskType tV) (RawHaskType tV) + | TyFunApp TyCon.TyCon (RawHaskTypeList tV) +data RawHaskTypeList tV = + TyFunApp_nil + | TyFunApp_cons Kind (([]) Kind) (RawHaskType tV) (RawHaskTypeList tV) + +data RawCoercionKind tV = + MkRawCoercionKind Kind (RawHaskType tV) (RawHaskType tV) + +type TypeEnv = ([]) Kind + +type InstantiatedTypeEnv tV = IList Kind tV + +type HaskCoercionKind = () -> (InstantiatedTypeEnv ()) -> RawCoercionKind () + +type CoercionEnv = ([]) HaskCoercionKind + +type InstantiatedCoercionEnv tV cV = Vec cV + +type HaskTyVar = () -> (InstantiatedTypeEnv ()) -> () + +type HaskCoVar = () -> () -> (InstantiatedTypeEnv ()) -> (InstantiatedCoercionEnv () ()) -> () + +type HaskLevel = ([]) HaskTyVar + +type HaskType = () -> (InstantiatedTypeEnv ()) -> RawHaskType () + +haskTyVarToType :: TypeEnv -> Kind -> HaskTyVar -> (InstantiatedTypeEnv a1) -> RawHaskType a1 +haskTyVarToType __U0393_0 __U03ba_ htv ite = + (trace "X" (TVar (trace "X" (__U03ba_)) (trace "X" ((trace "X" ((unsafeCoerce (trace "X" (htv)) (trace "X" (__)) (trace "X" (ite))))))))) + +data HaskTypeOfSomeKind0 = + HaskTypeOfSomeKind Kind HaskType + +data LeveledHaskType = + MkLeveledHaskType HaskType HaskLevel + +freshHaskTyVar :: (([]) Kind) -> Kind -> (InstantiatedTypeEnv a1) -> a1 +freshHaskTyVar __U0393_0 __U03ba_ env = + (trace "X" ((trace "X" (ilist_head (trace "X" (__U03ba_)) (trace "X" (__U0393_0)) (trace "X" (env)))))) + +haskTAll :: TypeEnv -> Kind -> (() -> (InstantiatedTypeEnv ()) -> () -> RawHaskType ()) -> (InstantiatedTypeEnv a1) -> RawHaskType a1 +haskTAll __U0393_0 __U03ba_ __U03c3_ env = + (trace "X" (TAll (trace "X" (__U03ba_)) (trace "X" ((trace "X" ((unsafeCoerce (trace "X" (__U03c3_)) (trace "X" (__)) (trace "X" (env))))))))) + +haskTApp :: TypeEnv -> Kind -> (() -> (InstantiatedTypeEnv ()) -> () -> RawHaskType ()) -> HaskTyVar -> (InstantiatedTypeEnv a1) -> RawHaskType a1 +haskTApp __U0393_0 __U03ba_ __U03c3_ cv env = + (trace "X" ((trace "X" (unsafeCoerce (trace "X" (__U03c3_)) (trace "X" (__)) (trace "X" (env)) (trace "X" ((trace "X" ((unsafeCoerce (trace "X" (cv)) (trace "X" (__)) (trace "X" (env))))))))))) + +haskBrak :: TypeEnv -> HaskTyVar -> HaskType -> (InstantiatedTypeEnv a1) -> RawHaskType a1 +haskBrak __U0393_0 v t env = + (trace "X" (TCode (trace "X" ((TVar (trace "X" (KindStar)) (trace "X" ((trace "X" ((unsafeCoerce (trace "X" (v)) (trace "X" (__)) (trace "X" (env)))))))))) (trace "X" ((trace "X" ((unsafeCoerce (trace "X" (t)) (trace "X" (__)) (trace "X" (env))))))))) + +mkHaskCoercionKind :: TypeEnv -> Kind -> HaskType -> HaskType -> (InstantiatedTypeEnv a1) -> RawCoercionKind a1 +mkHaskCoercionKind __U0393_0 __U03ba_ t1 t2 ite = + (trace "X" (MkRawCoercionKind (trace "X" (__U03ba_)) (trace "X" ((trace "X" ((unsafeCoerce (trace "X" (t1)) (trace "X" (__)) (trace "X" (ite))))))) (trace "X" ((trace "X" ((unsafeCoerce (trace "X" (t2)) (trace "X" (__)) (trace "X" (ite))))))))) + +substT :: TypeEnv -> Kind -> Kind -> (() -> (InstantiatedTypeEnv ()) -> () -> RawHaskType ()) -> HaskType -> (InstantiatedTypeEnv a1) -> RawHaskType a1 +substT __U0393_0 __U03ba___U2081_ __U03ba___U2082_ exp v env = + (trace "X" ((trace "X" (let { + flattenT __U03ba_ exp0 = + (trace "X" (case (trace "X" (exp0)) of { + TVar __U03ba_0 x -> (trace "X" (x)); + TCon tc -> (trace "X" (TCon (trace "X" (tc)))); + TArrow -> (trace "X" (TArrow)); + TCoerc __U03ba_0 t1 t2 t -> (trace "X" (TCoerc (trace "X" (__U03ba_0)) (trace "X" ((trace "X" ((flattenT (trace "X" (__U03ba_0)) (trace "X" (t1))))))) (trace "X" ((trace "X" ((flattenT (trace "X" (__U03ba_0)) (trace "X" (t2))))))) (trace "X" ((trace "X" ((flattenT (trace "X" (KindStar)) (trace "X" (t))))))))); + TApp __U03ba___U2081_0 __U03ba___U2082_0 x y -> (trace "X" (TApp (trace "X" (__U03ba___U2081_0)) (trace "X" (__U03ba___U2082_0)) (trace "X" ((trace "X" ((flattenT (trace "X" ((KindArrow (trace "X" (__U03ba___U2082_0)) (trace "X" (__U03ba___U2081_0))))) (trace "X" (x))))))) (trace "X" ((trace "X" ((flattenT (trace "X" (__U03ba___U2082_0)) (trace "X" (y))))))))); + TAll __U03ba_0 y -> (trace "X" (TAll (trace "X" (__U03ba_0)) (trace "X" ((\v0 -> (trace "X" ((trace "X" (flattenT (trace "X" (KindStar)) (trace "X" ((trace "X" ((y (trace "X" ((TVar (trace "X" (__U03ba_0)) (trace "X" (v0))))))))))))))))))); + TCode v0 e -> (trace "X" (TCode (trace "X" ((trace "X" ((flattenT (trace "X" (KindStar)) (trace "X" (v0))))))) (trace "X" ((trace "X" ((flattenT (trace "X" (KindStar)) (trace "X" (e))))))))); + TyFunApp tfc lt -> (trace "X" (TyFunApp (trace "X" (tfc)) (trace "X" ((trace "X" ((flattenTyFunApp (trace "X" ((trace "X" ((fst (trace "X" ((trace "X" ((tyFunKind (trace "X" (tfc)))))))))))) (trace "X" (lt)))))))))})); + flattenTyFunApp lk exp0 = + (trace "X" (case (trace "X" (exp0)) of { + TyFunApp_nil -> (trace "X" (TyFunApp_nil)); + TyFunApp_cons __U03ba_ kl t rest -> (trace "X" (TyFunApp_cons (trace "X" (__U03ba_)) (trace "X" (kl)) (trace "X" ((trace "X" ((flattenT (trace "X" (__U03ba_)) (trace "X" (t))))))) (trace "X" ((trace "X" ((flattenTyFunApp (trace "X" (kl)) (trace "X" (rest)))))))))}))} + in flattenT (trace "X" (__U03ba___U2082_)) (trace "X" ((trace "X" ((unsafeCoerce (trace "X" (exp)) (trace "X" (__)) (trace "X" ((trace "X" ((ilmap (trace "X" (__U0393_0)) (trace "X" ((\__U03ba_ tv -> (trace "X" (TVar (trace "X" (__U03ba_)) (trace "X" (tv))))))) (trace "X" (env))))))) (trace "X" ((trace "X" ((unsafeCoerce (trace "X" (v)) (trace "X" (__)) (trace "X" (env)))))))))))))))) + +unlev :: TypeEnv -> Kind -> LeveledHaskType -> (InstantiatedTypeEnv a1) -> RawHaskType a1 +unlev __U0393_0 __U03ba_ lht x = + (trace "X" (case (trace "X" (lht)) of { + MkLeveledHaskType t l -> (trace "X" ((trace "X" (unsafeCoerce (trace "X" (t)) (trace "X" (__)) (trace "X" (x))))))})) + +weakITE :: TypeEnv -> Kind -> (InstantiatedTypeEnv a1) -> InstantiatedTypeEnv a1 +weakITE __U0393_0 __U03ba_ ite = + (trace "X" ((trace "X" (ilist_tail (trace "X" (__U03ba_)) (trace "X" (__U0393_0)) (trace "X" (ite)))))) + +weakCE :: TypeEnv -> Kind -> CoercionEnv -> CoercionEnv +weakCE __U0393_0 __U03ba_ __U0394_0 = + (trace "X" ((trace "X" (map (trace "X" ((\x _ ite -> (trace "X" ((trace "X" (x (trace "X" (__)) (trace "X" ((trace "X" ((weakITE (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (ite)))))))))))))) (trace "X" (__U0394_0)))))) + +weakV :: TypeEnv -> Kind -> Kind -> HaskTyVar -> (InstantiatedTypeEnv a1) -> a1 +weakV __U0393_0 __U03ba_ __U03ba_v cv' ite = + (trace "X" ((trace "X" (unsafeCoerce (trace "X" (cv')) (trace "X" (__)) (trace "X" ((trace "X" ((weakITE (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (ite))))))))))) + +weakV' :: TypeEnv -> (([]) Kind) -> Kind -> HaskTyVar -> (InstantiatedTypeEnv a1) -> a1 +weakV' __U0393_0 __U03ba_ __U03ba_v cv' env = + (trace "X" ((trace "X" (list_rect (trace "X" ((unsafeCoerce (trace "X" (cv'))))) (trace "X" ((\a __U03ba_0 iH__U03ba_ _ -> + (trace "X" ((trace "X" (weakV + (trace "X" ((trace "X" ((let { + app0 l m = + (trace "X" (case (trace "X" (l)) of { + ([]) -> (trace "X" (m)); + (:) a0 l1 -> (trace "X" ((:) (trace "X" (a0)) (trace "X" ((trace "X" ((app0 (trace "X" (l1)) (trace "X" (m)))))))))}))} + in app0 (trace "X" (__U03ba_0)) (trace "X" (__U0393_0))))))) (trace "X" (a)) (trace "X" (__U03ba_v)) (trace "X" ((unsafeCoerce (trace "X" (iH__U03ba_)))))))))))) (trace "X" (__U03ba_)) (trace "X" (__)) (trace "X" (env)))))) + +weakT :: TypeEnv -> Kind -> Kind -> HaskType -> (InstantiatedTypeEnv a1) -> RawHaskType a1 +weakT __U0393_0 __U03ba_ __U03ba___U2082_ lt ite = + (trace "X" ((trace "X" (unsafeCoerce (trace "X" (lt)) (trace "X" (__)) (trace "X" ((trace "X" ((weakITE (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (ite))))))))))) + +weakL :: TypeEnv -> Kind -> HaskLevel -> HaskLevel +weakL __U0393_0 __U03ba_ lt = + (trace "X" ((trace "X" (map (trace "X" ((\x _ -> (trace "X" ((trace "X" (weakV (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (KindStar)) (trace "X" (x))))))))) (trace "X" (lt)))))) + +weakT' :: TypeEnv -> (([]) Kind) -> Kind -> HaskType -> (InstantiatedTypeEnv a1) -> RawHaskType a1 +weakT' __U0393_0 __U03ba_ __U03ba___U2082_ lt x = + (trace "X" ((trace "X" (list_rect (trace "X" ((unsafeCoerce (trace "X" (lt))))) (trace "X" ((\a __U03ba_0 iH__U03ba_ _ -> + (trace "X" ((trace "X" (weakT + (trace "X" ((trace "X" ((let { + app0 l m = + (trace "X" (case (trace "X" (l)) of { + ([]) -> (trace "X" (m)); + (:) a0 l1 -> (trace "X" ((:) (trace "X" (a0)) (trace "X" ((trace "X" ((app0 (trace "X" (l1)) (trace "X" (m)))))))))}))} + in app0 (trace "X" (__U03ba_0)) (trace "X" (__U0393_0))))))) (trace "X" (a)) (trace "X" (__U03ba___U2082_)) (trace "X" ((unsafeCoerce (trace "X" (iH__U03ba_)))))))))))) (trace "X" (__U03ba_)) (trace "X" (__)) (trace "X" (x)))))) + +weakT'' :: TypeEnv -> (([]) Kind) -> Kind -> HaskType -> (InstantiatedTypeEnv a1) -> RawHaskType a1 +weakT'' __U0393_0 __U03ba_ __U03ba___U2082_ lt x = + (trace "X" (let {x0 = (trace "X" ((trace "X" (ilist_chop (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (x))))))} in (trace "X" ((trace "X" (unsafeCoerce (trace "X" (lt)) (trace "X" (__)) (trace "X" (x0)))))))) + +lamer :: (([]) Kind) -> (([]) Kind) -> (([]) Kind) -> Kind -> HaskType -> (InstantiatedTypeEnv a1) -> RawHaskType a1 +lamer a b c __U03ba_ lt x = + (trace "X" (let {lt0 = (trace "X" ((trace "X" (eq_rect_r (trace "X" ((trace "X" ((app (trace "X" ((trace "X" ((app (trace "X" (a)) (trace "X" (b))))))) (trace "X" (c))))))) (trace "X" (lt)) (trace "X" ((trace "X" ((app (trace "X" (a)) (trace "X" ((trace "X" ((app (trace "X" (b)) (trace "X" (c))))))))))))))))} in (trace "X" ((trace "X" (unsafeCoerce (trace "X" (lt0)) (trace "X" (__)) (trace "X" (x)))))))) + +weakL' :: TypeEnv -> (([]) Kind) -> HaskLevel -> HaskLevel +weakL' __U0393_0 __U03ba_ lev = + (trace "X" ((trace "X" (list_rect (trace "X" (lev)) (trace "X" ((\a __U03ba_0 iH__U03ba_ -> + (trace "X" ((trace "X" (weakL + (trace "X" ((trace "X" ((let { + app0 l m = + (trace "X" (case (trace "X" (l)) of { + ([]) -> (trace "X" (m)); + (:) a0 l1 -> (trace "X" ((:) (trace "X" (a0)) (trace "X" ((trace "X" ((app0 (trace "X" (l1)) (trace "X" (m)))))))))}))} + in app0 (trace "X" (__U03ba_0)) (trace "X" (__U0393_0))))))) (trace "X" (a)) (trace "X" (iH__U03ba_))))))))) (trace "X" (__U03ba_)))))) + +weakLT :: TypeEnv -> Kind -> Kind -> LeveledHaskType -> LeveledHaskType +weakLT __U0393_0 __U03ba_ __U03ba___U2082_ lt = + (trace "X" (case (trace "X" (lt)) of { + MkLeveledHaskType t l -> (trace "X" (MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (weakT (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (__U03ba___U2082_)) (trace "X" (t))))))))) (trace "X" ((trace "X" ((weakL (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (l)))))))))})) + +weakLT' :: TypeEnv -> (([]) Kind) -> Kind -> LeveledHaskType -> LeveledHaskType +weakLT' __U0393_0 __U03ba_ __U03ba___U2082_ lt = + (trace "X" (case (trace "X" (lt)) of { + MkLeveledHaskType t l -> (trace "X" (MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (weakT' (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (__U03ba___U2082_)) (trace "X" (t))))))))) (trace "X" ((trace "X" ((weakL' (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (l)))))))))})) + +weakICE :: TypeEnv -> Kind -> CoercionEnv -> (InstantiatedCoercionEnv a1 a2) -> InstantiatedCoercionEnv a1 a2 +weakICE __U0393_0 __U03ba_ __U0394_0 ice = + (trace "X" ((trace "X" (eq_rect_r (trace "X" ((trace "X" ((length (trace "X" ((trace "X" ((map (trace "X" ((\x _ ite -> (trace "X" ((trace "X" (x (trace "X" (__)) (trace "X" ((trace "X" ((weakITE (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (ite)))))))))))))) (trace "X" (__U0394_0)))))))))))) (trace "X" (ice)) (trace "X" ((trace "X" ((length (trace "X" (__U0394_0))))))))))) + +weakCK :: TypeEnv -> Kind -> HaskCoercionKind -> (InstantiatedTypeEnv a1) -> RawCoercionKind a1 +weakCK __U0393_0 __U03ba_ hck x = + (trace "X" ((trace "X" (unsafeCoerce (trace "X" (hck)) (trace "X" (__)) + (trace "X" ((case (trace "X" (x)) of { + INil -> (trace "X" (false_rect)); + ICons i is x0 x1 -> (trace "X" ((trace "X" (eq_rect (trace "X" (__U03ba_)) (trace "X" ((\_ -> (trace "X" ((trace "X" (eq_rect (trace "X" (__U0393_0)) (trace "X" ((\x2 x3 -> (trace "X" (x3))))) (trace "X" (is))))))))) (trace "X" (i)) (trace "X" (__)) (trace "X" (x0)) (trace "X" (x1))))))}))))))) + +weakCK' :: TypeEnv -> (([]) Kind) -> HaskCoercionKind -> (InstantiatedTypeEnv a1) -> RawCoercionKind a1 +weakCK' __U0393_0 __U03ba_ hck x = + (trace "X" ((trace "X" (list_rect (trace "X" ((unsafeCoerce (trace "X" (hck))))) (trace "X" ((\a __U03ba_0 iH__U03ba_ _ -> + (trace "X" ((trace "X" (weakCK + (trace "X" ((trace "X" ((let { + app0 l m = + (trace "X" (case (trace "X" (l)) of { + ([]) -> (trace "X" (m)); + (:) a0 l1 -> (trace "X" ((:) (trace "X" (a0)) (trace "X" ((trace "X" ((app0 (trace "X" (l1)) (trace "X" (m)))))))))}))} + in app0 (trace "X" (__U03ba_0)) (trace "X" (__U0393_0))))))) (trace "X" (a)) (trace "X" ((unsafeCoerce (trace "X" (iH__U03ba_)))))))))))) (trace "X" (__U03ba_)) (trace "X" (__)) (trace "X" (x)))))) + +weakCK'' :: TypeEnv -> (([]) Kind) -> (([]) HaskCoercionKind) -> ([]) HaskCoercionKind +weakCK'' __U0393_0 __U03ba_ hck = + (trace "X" ((trace "X" (map (trace "X" ((\x _ -> (trace "X" ((trace "X" (weakCK' (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (x))))))))) (trace "X" (hck)))))) + +weakCV :: TypeEnv -> CoercionEnv -> Kind -> HaskCoVar -> (InstantiatedTypeEnv a1) -> (InstantiatedCoercionEnv a1 a2) -> a2 +weakCV __U0393_0 __U0394_0 __U03ba_ cv' ite ice = + (trace "X" ((trace "X" (unsafeCoerce (trace "X" (cv')) (trace "X" (__)) (trace "X" (__)) (trace "X" ((trace "X" ((weakITE (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (ite))))))) (trace "X" ((trace "X" ((weakICE (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (__U0394_0)) (trace "X" (ice))))))))))) + +weakF :: TypeEnv -> Kind -> Kind -> (() -> (InstantiatedTypeEnv ()) -> () -> RawHaskType ()) -> (InstantiatedTypeEnv a1) -> a1 -> RawHaskType a1 +weakF __U0393_0 __U03ba_ __U03ba___U2082_ f ite tv = + (trace "X" ((trace "X" (unsafeCoerce (trace "X" (f)) (trace "X" (__)) (trace "X" ((trace "X" ((weakITE (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (ite))))))) (trace "X" (tv)))))) + +caseType0 :: TypeEnv -> (([]) Kind) -> (IList Kind HaskType) -> HaskType -> (InstantiatedTypeEnv a1) -> RawHaskType a1 +caseType0 __U0393_0 lk x x0 x1 = + (trace "X" (case (trace "X" (lk)) of { + ([]) -> (trace "X" ((trace "X" (unsafeCoerce (trace "X" (x0)) (trace "X" (__)) (trace "X" (x1)))))); + (:) k lk' -> + (trace "X" ((trace "X" (caseType0 (trace "X" (__U0393_0)) (trace "X" (lk')) (trace "X" ((trace "X" ((ilist_tail (trace "X" (k)) (trace "X" (lk')) (trace "X" (x))))))) (trace "X" ((\_ env -> (trace "X" (TApp + (trace "X" ((trace "X" ((let { + fold_right0 l = + (trace "X" (case (trace "X" (l)) of { + ([]) -> (trace "X" (KindStar)); + (:) b t -> (trace "X" (KindArrow (trace "X" (b)) (trace "X" ((trace "X" ((fold_right0 (trace "X" (t)))))))))}))} + in fold_right0 (trace "X" (lk'))))))) (trace "X" (k)) (trace "X" ((trace "X" ((x0 (trace "X" (__)) (trace "X" (env))))))) (trace "X" ((trace "X" ((ilist_head (trace "X" (k)) (trace "X" (lk')) (trace "X" (x)) (trace "X" (__)) (trace "X" (env)))))))))))) (trace "X" (x1))))))})) + +caseType :: TypeEnv -> TyCon.TyCon -> (IList Kind HaskType) -> (InstantiatedTypeEnv a1) -> RawHaskType a1 +caseType __U0393_0 tc atypes x = + (trace "X" ((trace "X" (caseType0 (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((tyConKind (trace "X" (tc))))))) (trace "X" (atypes)) (trace "X" ((\_ env -> (trace "X" (TCon (trace "X" (tc))))))) (trace "X" (x)))))) + +data StrongAltCon = + Build_StrongAltCon WeakAltCon Nat Nat Nat (Vec Kind) (TypeEnv -> (IList Kind HaskType) -> Vec HaskCoercionKind) (TypeEnv -> (IList Kind HaskType) -> Vec HaskType) + +sac_altcon :: TyCon.TyCon -> StrongAltCon -> WeakAltCon +sac_altcon tc s = + (trace "X" (case (trace "X" (s)) of { + Build_StrongAltCon x x0 x1 x2 x3 x4 x5 -> (trace "X" (x))})) + +sac_numExTyVars :: TyCon.TyCon -> StrongAltCon -> Nat +sac_numExTyVars tc s = + (trace "X" (case (trace "X" (s)) of { + Build_StrongAltCon x x0 x1 x2 x3 x4 x5 -> (trace "X" (x0))})) + +sac_numCoerVars :: TyCon.TyCon -> StrongAltCon -> Nat +sac_numCoerVars tc s = + (trace "X" (case (trace "X" (s)) of { + Build_StrongAltCon x x0 x1 x2 x3 x4 x5 -> (trace "X" (x1))})) + +sac_numExprVars :: TyCon.TyCon -> StrongAltCon -> Nat +sac_numExprVars tc s = + (trace "X" (case (trace "X" (s)) of { + Build_StrongAltCon x x0 x1 x2 x3 x4 x5 -> (trace "X" (x2))})) + +sac_ekinds :: TyCon.TyCon -> StrongAltCon -> Vec Kind +sac_ekinds tc s = + (trace "X" (case (trace "X" (s)) of { + Build_StrongAltCon x x0 x1 x2 x3 x4 x5 -> (trace "X" (x3))})) + +sac___U0393_ :: TyCon.TyCon -> StrongAltCon -> (([]) Kind) -> ([]) Kind +sac___U0393_ tc s __U0393_0 = + (trace "X" ((trace "X" (app (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (s))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (s)))))))))))) (trace "X" (__U0393_0)))))) + +sac_coercions :: TyCon.TyCon -> StrongAltCon -> TypeEnv -> (IList Kind HaskType) -> Vec HaskCoercionKind +sac_coercions tc s = + (trace "X" (case (trace "X" (s)) of { + Build_StrongAltCon x x0 x1 x2 x3 x4 x5 -> (trace "X" (x4))})) + +sac_types :: TyCon.TyCon -> StrongAltCon -> TypeEnv -> (IList Kind HaskType) -> Vec HaskType +sac_types tc s = + (trace "X" (case (trace "X" (s)) of { + Build_StrongAltCon x x0 x1 x2 x3 x4 x5 -> (trace "X" (x5))})) + +sac___U0394_ :: TyCon.TyCon -> StrongAltCon -> TypeEnv -> (IList Kind HaskType) -> (([]) HaskCoercionKind) -> ([]) HaskCoercionKind +sac___U0394_ tc s __U0393_0 atypes __U0394_0 = + (trace "X" ((trace "X" (app (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numCoerVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (s))))))) (trace "X" ((trace "X" ((sac_coercions (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (s)) (trace "X" (__U0393_0)) (trace "X" (atypes)))))))))))) (trace "X" (__U0394_0)))))) + +literalType :: Literal.Literal -> TypeEnv -> (InstantiatedTypeEnv a1) -> RawHaskType a1 +literalType lit __U0393_0 x = + (trace "X" (let {z = (trace "X" (\ite -> (trace "X" (TCon (trace "X" ((trace "X" ((haskLiteralToTyCon (trace "X" (lit)))))))))))} in (trace "X" ((trace "X" (eq_rect (trace "X" ((trace "X" ((tyConKind (trace "X" ((trace "X" ((haskLiteralToTyCon (trace "X" (lit)))))))))))) (trace "X" ((\_ ite -> (trace "X" ((trace "X" (z (trace "X" (ite))))))))) (trace "X" (([]))) (trace "X" (__)) (trace "X" (x)))))))) + +update___U03be_ :: (EqDecidable a1) -> TypeEnv -> (a1 -> LeveledHaskType) -> HaskLevel -> (([]) ((,) a1 HaskType)) -> a1 -> LeveledHaskType +update___U03be_ eQD_VV __U0393_0 __U03be_0 lev vt = + (trace "X" (case (trace "X" (vt)) of { + ([]) -> (trace "X" (__U03be_0)); + (:) p tl -> (trace "X" ((\v' -> + (trace "X" (case (trace "X" (p)) of { + (,) v __U03c4_ -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (eQD_VV)) (trace "X" (v)) (trace "X" (v')))))) of { + Prelude.True -> (trace "X" (MkLeveledHaskType (trace "X" (__U03c4_)) (trace "X" (lev)))); + Prelude.False -> (trace "X" ((trace "X" (update___U03be_ (trace "X" (eQD_VV)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" (tl)) (trace "X" (v'))))))}))})))))})) + +compareT :: Nat -> Kind -> (RawHaskType Nat) -> Kind -> (RawHaskType Nat) -> Prelude.Bool +compareT n __U03ba___U2081_ t1 __U03ba___U2082_ t2 = + (trace "X" (case (trace "X" (t1)) of { + TVar __U03ba_ x -> + (trace "X" (case (trace "X" (t2)) of { + TVar __U03ba_0 x' -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (eqDecidableNat)) (trace "X" (x)) (trace "X" (x')))))) of { + Prelude.True -> (trace "X" (Prelude.True)); + Prelude.False -> (trace "X" (Prelude.False))})); + _ -> (trace "X" (Prelude.False))})); + TCon tc -> + (trace "X" (case (trace "X" (t2)) of { + TCon tc' -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (tyConEqDecidable)) (trace "X" (tc)) (trace "X" (tc')))))) of { + Prelude.True -> (trace "X" (Prelude.True)); + Prelude.False -> (trace "X" (Prelude.False))})); + _ -> (trace "X" (Prelude.False))})); + TArrow -> + (trace "X" (case (trace "X" (t2)) of { + TArrow -> (trace "X" (Prelude.True)); + _ -> (trace "X" (Prelude.False))})); + TCoerc __U03ba_ t3 t4 t -> + (trace "X" (case (trace "X" (t4)) of { + TCoerc __U03ba_0 t1' t2' t' -> + (trace "X" (case (trace "X" (case (trace "X" ((trace "X" (compareT (trace "X" (n)) (trace "X" (__U03ba_)) (trace "X" (t3)) (trace "X" (__U03ba_0)) (trace "X" (t1')))))) of { + Prelude.True -> (trace "X" ((trace "X" (compareT (trace "X" (n)) (trace "X" (__U03ba_)) (trace "X" (t4)) (trace "X" (__U03ba_0)) (trace "X" (t2')))))); + Prelude.False -> (trace "X" (Prelude.False))})) of { + Prelude.True -> (trace "X" ((trace "X" (compareT (trace "X" (n)) (trace "X" (KindStar)) (trace "X" (t)) (trace "X" (KindStar)) (trace "X" (t')))))); + Prelude.False -> (trace "X" (Prelude.False))})); + _ -> (trace "X" (Prelude.False))})); + TApp __U03ba___U2081_0 __U03ba___U2082_0 x y -> + (trace "X" (case (trace "X" (t2)) of { + TApp __U03ba___U2081_1 __U03ba___U2082_1 x' y' -> + (trace "X" (case (trace "X" ((trace "X" (compareT (trace "X" (n)) (trace "X" ((KindArrow (trace "X" (__U03ba___U2082_0)) (trace "X" (__U03ba___U2081_0))))) (trace "X" (x)) (trace "X" ((KindArrow (trace "X" (__U03ba___U2082_1)) (trace "X" (__U03ba___U2081_1))))) (trace "X" (x')))))) of { + Prelude.True -> (trace "X" ((trace "X" (compareT (trace "X" (n)) (trace "X" (__U03ba___U2082_0)) (trace "X" (y)) (trace "X" (__U03ba___U2082_1)) (trace "X" (y')))))); + Prelude.False -> (trace "X" (Prelude.False))})); + _ -> (trace "X" (Prelude.False))})); + TAll __U03ba_ y -> + (trace "X" (case (trace "X" (t2)) of { + TAll __U03ba_0 y' -> (trace "X" ((trace "X" (compareT (trace "X" ((S (trace "X" (n))))) (trace "X" (KindStar)) (trace "X" ((trace "X" ((y (trace "X" (n))))))) (trace "X" (KindStar)) (trace "X" ((trace "X" ((y' (trace "X" (n))))))))))); + _ -> (trace "X" (Prelude.False))})); + TCode ec t -> + (trace "X" (case (trace "X" (t2)) of { + TCode ec' t' -> + (trace "X" (case (trace "X" ((trace "X" (compareT (trace "X" (n)) (trace "X" (KindStar)) (trace "X" (ec)) (trace "X" (KindStar)) (trace "X" (ec')))))) of { + Prelude.True -> (trace "X" ((trace "X" (compareT (trace "X" (n)) (trace "X" (KindStar)) (trace "X" (t)) (trace "X" (KindStar)) (trace "X" (t')))))); + Prelude.False -> (trace "X" (Prelude.False))})); + _ -> (trace "X" (Prelude.False))})); + TyFunApp tfc lt -> + (trace "X" (case (trace "X" (t2)) of { + TyFunApp tfc' lt' -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (tyFunEqDecidable)) (trace "X" (tfc)) (trace "X" (tfc')))))) of { + Prelude.True -> (trace "X" ((trace "X" (compareTL (trace "X" (n)) (trace "X" ((trace "X" ((fst (trace "X" ((trace "X" ((tyFunKind (trace "X" (tfc)))))))))))) (trace "X" (lt)) (trace "X" ((trace "X" ((fst (trace "X" ((trace "X" ((tyFunKind (trace "X" (tfc')))))))))))) (trace "X" (lt')))))); + Prelude.False -> (trace "X" (Prelude.False))})); + _ -> (trace "X" (Prelude.False))}))})) + +compareTL :: Nat -> (([]) Kind) -> (RawHaskTypeList Nat) -> (([]) Kind) -> (RawHaskTypeList Nat) -> Prelude.Bool +compareTL n __U03ba___U2081_ t1 __U03ba___U2082_ t2 = + (trace "X" (case (trace "X" (t1)) of { + TyFunApp_nil -> + (trace "X" (case (trace "X" (t2)) of { + TyFunApp_nil -> (trace "X" (Prelude.True)); + TyFunApp_cons __U03ba_ kl r r0 -> (trace "X" (Prelude.False))})); + TyFunApp_cons __U03ba_ kl t r -> + (trace "X" (case (trace "X" (t2)) of { + TyFunApp_nil -> (trace "X" (Prelude.False)); + TyFunApp_cons __U03ba_' kl' t' r' -> + (trace "X" (case (trace "X" ((trace "X" (compareT (trace "X" (n)) (trace "X" (__U03ba_)) (trace "X" (t)) (trace "X" (__U03ba_')) (trace "X" (t')))))) of { + Prelude.True -> (trace "X" ((trace "X" (compareTL (trace "X" (n)) (trace "X" (kl)) (trace "X" (r)) (trace "X" (kl')) (trace "X" (r')))))); + Prelude.False -> (trace "X" (Prelude.False))}))}))})) + +count' :: (([]) Kind) -> Nat -> IList Kind Nat +count' lk n = + (trace "X" (case (trace "X" (lk)) of { + ([]) -> (trace "X" (INil)); + (:) h t -> (trace "X" (ICons (trace "X" (h)) (trace "X" (t)) (trace "X" (n)) (trace "X" ((trace "X" ((count' (trace "X" (t)) (trace "X" ((S (trace "X" (n))))))))))))})) + +compareHT :: TypeEnv -> Kind -> HaskType -> HaskType -> Prelude.Bool +compareHT __U0393_0 __U03ba_ ht1 ht2 = + (trace "X" ((trace "X" (compareT (trace "X" ((trace "X" ((length (trace "X" (__U0393_0))))))) (trace "X" (__U03ba_)) (trace "X" ((trace "X" ((unsafeCoerce (trace "X" (ht1)) (trace "X" (__)) (trace "X" ((trace "X" ((count' (trace "X" (__U0393_0)) (trace "X" (O)))))))))))) (trace "X" (__U03ba_)) (trace "X" ((trace "X" ((unsafeCoerce (trace "X" (ht2)) (trace "X" (__)) (trace "X" ((trace "X" ((count' (trace "X" (__U0393_0)) (trace "X" (O)))))))))))))))) + +haskTypeEqDecidable :: TypeEnv -> Kind -> EqDecidable HaskType +haskTypeEqDecidable __U0393_0 __U03ba_ v1 v2 = + (trace "X" (let {q = (trace "X" ((trace "X" (compareHT (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (v1)) (trace "X" (v2))))))} in + (trace "X" (case (trace "X" (q)) of { + Prelude.True -> (trace "X" (Prelude.True)); + Prelude.False -> (trace "X" (Prelude.False))})))) + +haskTyVarEqDecidable :: TypeEnv -> Kind -> EqDecidable HaskTyVar +haskTyVarEqDecidable __U0393_0 __U03ba_ v1 v2 = + (trace "X" (let {q = (trace "X" ((trace "X" (compareHT (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" ((\_ -> (trace "X" ((trace "X" (haskTyVarToType (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (v1))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (haskTyVarToType (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (v2)))))))))))))} in + (trace "X" (case (trace "X" (q)) of { + Prelude.True -> (trace "X" (Prelude.True)); + Prelude.False -> (trace "X" (Prelude.False))})))) + +haskLevelEqDecidable :: TypeEnv -> EqDecidable HaskLevel +haskLevelEqDecidable __U0393_0 v1 v2 = + (trace "X" ((trace "X" (eqd_dec (trace "X" ((trace "X" ((eqDecidableList (trace "X" ((trace "X" ((haskTyVarEqDecidable (trace "X" (__U0393_0)) (trace "X" (KindStar)))))))))))) (trace "X" (v1)) (trace "X" (v2)))))) + +typeToString' :: Prelude.Bool -> Nat -> Kind -> (RawHaskType Nat) -> Prelude.String +typeToString' needparens n __U03ba_ t = + (trace "X" (case (trace "X" (t)) of { + TVar __U03ba_0 v -> (trace "X" ((trace "X" (concatenate (trace "X" (concatenableString)) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('v')) (trace "X" ([])))))))) (trace "X" ((trace "X" ((toString (trace "X" (natToStringInstance)) (trace "X" (v))))))))))); + TCon tc -> (trace "X" ((trace "X" (toString (trace "X" (tyConToString)) (trace "X" (tc)))))); + TArrow -> (trace "X" ((:) (trace "X" ('(')) (trace "X" (((:) (trace "X" ('-')) (trace "X" (((:) (trace "X" ('>')) (trace "X" (((:) (trace "X" (')')) (trace "X" ([]))))))))))))); + TCoerc __U03ba_0 t1 t2 t0 -> (trace "X" ((trace "X" (concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" (((:) (trace "X" ('(')) (trace "X" ([]))))) (trace "X" ((trace "X" ((typeToString' (trace "X" (Prelude.False)) (trace "X" (n)) (trace "X" (__U03ba_0)) (trace "X" (t1)))))))))))) (trace "X" (((:) (trace "X" ('~')) (trace "X" ([])))))))))) (trace "X" ((trace "X" ((typeToString' (trace "X" (Prelude.False)) (trace "X" (n)) (trace "X" (__U03ba_0)) (trace "X" (t2)))))))))))) (trace "X" (((:) (trace "X" (')')) (trace "X" (((:) (trace "X" ('=')) (trace "X" (((:) (trace "X" ('>')) (trace "X" ([])))))))))))))))) (trace "X" ((trace "X" ((typeToString' (trace "X" (needparens)) (trace "X" (n)) (trace "X" (KindStar)) (trace "X" (t0))))))))))); + TApp __U03ba___U2081_ __U03ba___U2082_ t1 t2 -> + (trace "X" (case (trace "X" (t1)) of { + TApp __U03ba___U2081_0 __U03ba___U2082_0 r t3 -> + (trace "X" (case (trace "X" (r)) of { + TArrow -> + (trace "X" (case (trace "X" (needparens)) of { + Prelude.True -> (trace "X" ((trace "X" (concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" (((:) (trace "X" ('(')) (trace "X" ([]))))) (trace "X" ((trace "X" ((typeToString' (trace "X" (Prelude.True)) (trace "X" (n)) (trace "X" (__U03ba___U2082_0)) (trace "X" (t3)))))))))))) (trace "X" (((:) (trace "X" ('-')) (trace "X" (((:) (trace "X" ('>')) (trace "X" ([]))))))))))))) (trace "X" ((trace "X" ((typeToString' (trace "X" (Prelude.True)) (trace "X" (n)) (trace "X" (__U03ba___U2082_)) (trace "X" (t2)))))))))))) (trace "X" (((:) (trace "X" (')')) (trace "X" ([]))))))))); + Prelude.False -> (trace "X" ((trace "X" (concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((typeToString' (trace "X" (Prelude.True)) (trace "X" (n)) (trace "X" (__U03ba___U2082_0)) (trace "X" (t3))))))) (trace "X" (((:) (trace "X" ('-')) (trace "X" (((:) (trace "X" ('>')) (trace "X" ([]))))))))))))) (trace "X" ((trace "X" ((typeToString' (trace "X" (Prelude.True)) (trace "X" (n)) (trace "X" (__U03ba___U2082_)) (trace "X" (t2)))))))))))})); + _ -> + (trace "X" (case (trace "X" (needparens)) of { + Prelude.True -> (trace "X" ((trace "X" (concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" (((:) (trace "X" ('(')) (trace "X" ([]))))) (trace "X" ((trace "X" ((typeToString' (trace "X" (Prelude.True)) (trace "X" (n)) (trace "X" ((KindArrow (trace "X" (__U03ba___U2082_)) (trace "X" (__U03ba___U2081_))))) (trace "X" (t1)))))))))))) (trace "X" (((:) (trace "X" (' ')) (trace "X" ([])))))))))) (trace "X" ((trace "X" ((typeToString' (trace "X" (Prelude.False)) (trace "X" (n)) (trace "X" (__U03ba___U2082_)) (trace "X" (t2)))))))))))) (trace "X" (((:) (trace "X" (')')) (trace "X" ([]))))))))); + Prelude.False -> (trace "X" ((trace "X" (concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((typeToString' (trace "X" (Prelude.True)) (trace "X" (n)) (trace "X" ((KindArrow (trace "X" (__U03ba___U2082_)) (trace "X" (__U03ba___U2081_))))) (trace "X" (t1))))))) (trace "X" (((:) (trace "X" (' ')) (trace "X" ([])))))))))) (trace "X" ((trace "X" ((typeToString' (trace "X" (Prelude.False)) (trace "X" (n)) (trace "X" (__U03ba___U2082_)) (trace "X" (t2)))))))))))}))})); + _ -> + (trace "X" (case (trace "X" (needparens)) of { + Prelude.True -> (trace "X" ((trace "X" (concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" (((:) (trace "X" ('(')) (trace "X" ([]))))) (trace "X" ((trace "X" ((typeToString' (trace "X" (Prelude.True)) (trace "X" (n)) (trace "X" ((KindArrow (trace "X" (__U03ba___U2082_)) (trace "X" (__U03ba___U2081_))))) (trace "X" (t1)))))))))))) (trace "X" (((:) (trace "X" (' ')) (trace "X" ([])))))))))) (trace "X" ((trace "X" ((typeToString' (trace "X" (Prelude.False)) (trace "X" (n)) (trace "X" (__U03ba___U2082_)) (trace "X" (t2)))))))))))) (trace "X" (((:) (trace "X" (')')) (trace "X" ([]))))))))); + Prelude.False -> (trace "X" ((trace "X" (concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((typeToString' (trace "X" (Prelude.True)) (trace "X" (n)) (trace "X" ((KindArrow (trace "X" (__U03ba___U2082_)) (trace "X" (__U03ba___U2081_))))) (trace "X" (t1))))))) (trace "X" (((:) (trace "X" (' ')) (trace "X" ([])))))))))) (trace "X" ((trace "X" ((typeToString' (trace "X" (Prelude.False)) (trace "X" (n)) (trace "X" (__U03ba___U2082_)) (trace "X" (t2)))))))))))}))})); + TAll k f -> (trace "X" (let {alpha = (trace "X" ((trace "X" (concatenate (trace "X" (concatenableString)) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('v')) (trace "X" ([])))))))) (trace "X" ((trace "X" ((toString (trace "X" (natToStringInstance)) (trace "X" (n)))))))))))} in (trace "X" ((trace "X" (concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" (((:) (trace "X" ('(')) (trace "X" (((:) (trace "X" ('f')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" (' ')) (trace "X" ([])))))))))))))))))))))))))) (trace "X" (alpha))))))) (trace "X" (((:) (trace "X" (':')) (trace "X" ([])))))))))) (trace "X" ((trace "X" ((toString (trace "X" (kindToString0)) (trace "X" (k)))))))))))) (trace "X" (((:) (trace "X" (')')) (trace "X" ([])))))))))) (trace "X" ((trace "X" ((typeToString' (trace "X" (Prelude.False)) (trace "X" ((S (trace "X" (n))))) (trace "X" (KindStar)) (trace "X" ((trace "X" ((f (trace "X" (n)))))))))))))))))); + TCode ec t0 -> (trace "X" ((trace "X" (concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" (((:) (trace "X" ('<')) (trace "X" (((:) (trace "X" ('[')) (trace "X" ([])))))))) (trace "X" ((trace "X" ((typeToString' (trace "X" (Prelude.True)) (trace "X" (n)) (trace "X" (KindStar)) (trace "X" (t0)))))))))))) (trace "X" (((:) (trace "X" (']')) (trace "X" (((:) (trace "X" ('>')) (trace "X" (((:) (trace "X" ('@')) (trace "X" ([])))))))))))))))) (trace "X" ((trace "X" ((typeToString' (trace "X" (Prelude.False)) (trace "X" (n)) (trace "X" (KindStar)) (trace "X" (ec))))))))))); + TyFunApp tfc lt -> (trace "X" ((trace "X" (concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((toString (trace "X" (tyFunToString)) (trace "X" (tfc))))))) (trace "X" (((:) (trace "X" ('_')) (trace "X" ([])))))))))) (trace "X" ((trace "X" ((toString (trace "X" (natToStringInstance)) (trace "X" (n)))))))))))) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('[')) (trace "X" ([]))))))))))))) (trace "X" ((trace "X" ((fold_left (trace "X" ((\x y -> (trace "X" ((trace "X" (concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('\\')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" (' ')) (trace "X" ([])))))))))))))) (trace "X" (x))))))) (trace "X" (y))))))))) (trace "X" ((trace "X" ((typeList2string (trace "X" (Prelude.False)) (trace "X" (n)) (trace "X" ((trace "X" ((fst (trace "X" ((trace "X" ((tyFunKind (trace "X" (tfc)))))))))))) (trace "X" (lt))))))) (trace "X" ([])))))))))))) (trace "X" (((:) (trace "X" (']')) (trace "X" ([])))))))))})) + +typeList2string :: Prelude.Bool -> Nat -> (([]) Kind) -> (RawHaskTypeList Nat) -> ([]) Prelude.String +typeList2string needparens n __U03ba_ t = + (trace "X" (case (trace "X" (t)) of { + TyFunApp_nil -> (trace "X" (([]))); + TyFunApp_cons __U03ba_0 kl rhk rhkl -> (trace "X" ((:) (trace "X" ((trace "X" ((typeToString' (trace "X" (needparens)) (trace "X" (n)) (trace "X" (__U03ba_0)) (trace "X" (rhk))))))) (trace "X" ((trace "X" ((typeList2string (trace "X" (needparens)) (trace "X" (n)) (trace "X" (kl)) (trace "X" (rhkl)))))))))})) + +typeToString :: TypeEnv -> Kind -> HaskType -> Prelude.String +typeToString __U0393_0 __U03ba_ ht = + (trace "X" ((trace "X" (typeToString' (trace "X" (Prelude.False)) (trace "X" ((trace "X" ((length (trace "X" (__U0393_0))))))) (trace "X" (__U03ba_)) (trace "X" ((trace "X" ((unsafeCoerce (trace "X" (ht)) (trace "X" (__)) (trace "X" ((trace "X" ((count' (trace "X" (__U0393_0)) (trace "X" (O)))))))))))))))) + +typeToStringInstance :: TypeEnv -> Kind -> ToString HaskType +typeToStringInstance __U0393_0 __U03ba_ = + (trace "X" ((trace "X" (typeToString (trace "X" (__U0393_0)) (trace "X" (__U03ba_)))))) + +type StrongCaseBranchWithVVs vV = + Vec vV + -- singleton inductive, whose constructor was Build_StrongCaseBranchWithVVs + +scbwv_exprvars :: (EqDecidable a1) -> TyCon.TyCon -> TypeEnv -> (IList Kind HaskType) -> StrongAltCon -> (StrongCaseBranchWithVVs a1) -> Vec a1 +scbwv_exprvars eQD_VV tc __U0393_0 atypes sac s = + (trace "X" (s)) + +scbwv_varstypes :: (EqDecidable a1) -> TyCon.TyCon -> TypeEnv -> (IList Kind HaskType) -> StrongAltCon -> (StrongCaseBranchWithVVs a1) -> Vec ((,) a1 HaskType) +scbwv_varstypes eQD_VV tc __U0393_0 atypes sac s = + (trace "X" ((trace "X" (vec_zip (trace "X" ((trace "X" ((sac_numExprVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((scbwv_exprvars (trace "X" (eQD_VV)) (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (atypes)) (trace "X" (sac)) (trace "X" (s))))))) (trace "X" ((trace "X" ((sac_types (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)) (trace "X" (__U0393_0)) (trace "X" (atypes))))))))))) + +scbwv___U03be_ :: (EqDecidable a1) -> TyCon.TyCon -> TypeEnv -> (IList Kind HaskType) -> StrongAltCon -> (StrongCaseBranchWithVVs a1) -> (a1 -> LeveledHaskType) -> HaskLevel -> a1 -> LeveledHaskType +scbwv___U03be_ eQD_VV tc __U0393_0 atypes sac s __U03be_0 lev = + (trace "X" ((trace "X" (update___U03be_ (trace "X" (eQD_VV)) (trace "X" ((trace "X" ((app (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (__U0393_0))))))) (trace "X" ((\x -> (trace "X" ((trace "X" (weakLT' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (KindStar)) (trace "X" ((trace "X" ((__U03be_0 (trace "X" (x)))))))))))))) (trace "X" ((trace "X" ((weakL' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (lev))))))) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExprVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((scbwv_varstypes (trace "X" (eQD_VV)) (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (atypes)) (trace "X" (sac)) (trace "X" (s)))))))))))))))) + +data Expr vV = + EGlobal TypeEnv CoercionEnv (vV -> LeveledHaskType) LeveledHaskType WeakExprVar0 + | EVar TypeEnv CoercionEnv (vV -> LeveledHaskType) vV + | ELit TypeEnv CoercionEnv (vV -> LeveledHaskType) Literal.Literal HaskLevel + | EApp TypeEnv CoercionEnv (vV -> LeveledHaskType) (() -> (InstantiatedTypeEnv ()) -> RawHaskType ()) (() -> (InstantiatedTypeEnv ()) -> RawHaskType ()) HaskLevel (Expr vV) (Expr vV) + | ELam TypeEnv CoercionEnv (vV -> LeveledHaskType) HaskType HaskType HaskLevel vV (Expr vV) + | ELet TypeEnv CoercionEnv (vV -> LeveledHaskType) HaskType HaskType HaskLevel vV (Expr vV) (Expr vV) + | EEsc TypeEnv CoercionEnv (vV -> LeveledHaskType) HaskTyVar HaskType HaskLevel (Expr vV) + | EBrak TypeEnv CoercionEnv (vV -> LeveledHaskType) HaskTyVar HaskType (([]) HaskTyVar) (Expr vV) + | ECast TypeEnv CoercionEnv (vV -> LeveledHaskType) HaskType HaskType HaskLevel (Expr vV) + | ENote TypeEnv CoercionEnv (vV -> LeveledHaskType) LeveledHaskType CoreSyn.Note (Expr vV) + | ETyApp TypeEnv CoercionEnv Kind (() -> (InstantiatedTypeEnv ()) -> () -> RawHaskType ()) HaskType (vV -> LeveledHaskType) HaskLevel (Expr vV) + | ECoLam TypeEnv (([]) HaskCoercionKind) Kind HaskType HaskType HaskType (vV -> LeveledHaskType) HaskLevel (Expr vV) + | ECoApp TypeEnv CoercionEnv Kind HaskType HaskType (() -> (InstantiatedTypeEnv ()) -> RawHaskType ()) (vV -> LeveledHaskType) HaskLevel (Expr vV) + | ETyLam (([]) Kind) CoercionEnv (vV -> LeveledHaskType) Kind (() -> (InstantiatedTypeEnv ()) -> () -> RawHaskType ()) HaskLevel (Expr vV) + | ECase TypeEnv CoercionEnv (vV -> LeveledHaskType) HaskLevel TyCon.TyCon HaskType (IList Kind HaskType) (Expr vV) (Tree (Prelude.Maybe (SigT StrongAltCon (SigT (StrongCaseBranchWithVVs vV) (Expr vV))))) + | ELetRec TypeEnv CoercionEnv (vV -> LeveledHaskType) HaskLevel HaskType (Tree (Prelude.Maybe ((,) vV HaskType))) (ELetRecBindings vV) (Expr vV) +data ELetRecBindings vV = + ELR_nil TypeEnv CoercionEnv (vV -> LeveledHaskType) HaskLevel + | ELR_leaf TypeEnv CoercionEnv (vV -> LeveledHaskType) HaskLevel vV HaskType (Expr vV) + | ELR_branch TypeEnv CoercionEnv (vV -> LeveledHaskType) HaskLevel (Tree (Prelude.Maybe ((,) vV HaskType))) (Tree (Prelude.Maybe ((,) vV HaskType))) (ELetRecBindings vV) (ELetRecBindings vV) + +data Judg = + MkJudg TypeEnv CoercionEnv (Tree (Prelude.Maybe LeveledHaskType)) (Tree (Prelude.Maybe LeveledHaskType)) + +type ProofCaseBranch = + Tree (Prelude.Maybe LeveledHaskType) + -- singleton inductive, whose constructor was Build_ProofCaseBranch + +pcb_freevars :: TyCon.TyCon -> TypeEnv -> (([]) HaskCoercionKind) -> HaskLevel -> HaskType -> (IList Kind HaskType) -> StrongAltCon -> ProofCaseBranch -> Tree (Prelude.Maybe LeveledHaskType) +pcb_freevars tc __U0393_0 __U0394_0 lev branchtype avars sac p = + (trace "X" (p)) + +pcb_judg :: TyCon.TyCon -> TypeEnv -> (([]) HaskCoercionKind) -> HaskLevel -> HaskType -> (IList Kind HaskType) -> StrongAltCon -> ProofCaseBranch -> Judg +pcb_judg tc __U0393_0 __U0394_0 lev branchtype avars sac p = + (trace "X" (MkJudg (trace "X" ((trace "X" ((sac___U0393_ (trace "X" (tc)) (trace "X" (sac)) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((sac___U0394_ (trace "X" (tc)) (trace "X" (sac)) (trace "X" (__U0393_0)) (trace "X" (avars)) (trace "X" ((trace "X" ((map (trace "X" ((\x _ -> (trace "X" ((trace "X" (weakCK' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (x))))))))) (trace "X" (__U0394_0)))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((weakLT' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (KindStar))))))) (trace "X" ((trace "X" ((pcb_freevars (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (lev)) (trace "X" (branchtype)) (trace "X" (avars)) (trace "X" (sac)) (trace "X" (p)))))))))))) (trace "X" ((trace "X" ((unleaves (trace "X" ((trace "X" ((map (trace "X" ((\t -> (trace "X" (MkLeveledHaskType (trace "X" (t)) (trace "X" ((trace "X" ((weakL' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (lev)))))))))))) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExprVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_types (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)) (trace "X" (__U0393_0)) (trace "X" (avars))))))))))))))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((trace "X" ((weakLT' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (KindStar)) (trace "X" ((MkLeveledHaskType (trace "X" (branchtype)) (trace "X" (lev)))))))))))))))))) + +data Arrange t = + RCanL (Tree (Prelude.Maybe t)) + | RCanR (Tree (Prelude.Maybe t)) + | RuCanL (Tree (Prelude.Maybe t)) + | RuCanR (Tree (Prelude.Maybe t)) + | RAssoc (Tree (Prelude.Maybe t)) (Tree (Prelude.Maybe t)) (Tree (Prelude.Maybe t)) + | RCossa (Tree (Prelude.Maybe t)) (Tree (Prelude.Maybe t)) (Tree (Prelude.Maybe t)) + | RExch (Tree (Prelude.Maybe t)) (Tree (Prelude.Maybe t)) + | RWeak (Tree (Prelude.Maybe t)) + | RCont (Tree (Prelude.Maybe t)) + | RLeft (Tree (Prelude.Maybe t)) (Tree (Prelude.Maybe t)) (Tree (Prelude.Maybe t)) (Arrange t) + | RRight (Tree (Prelude.Maybe t)) (Tree (Prelude.Maybe t)) (Tree (Prelude.Maybe t)) (Arrange t) + | RComp (Tree (Prelude.Maybe t)) (Tree (Prelude.Maybe t)) (Tree (Prelude.Maybe t)) (Arrange t) (Arrange t) + +data Rule = + RArrange TypeEnv CoercionEnv (Tree (Prelude.Maybe LeveledHaskType)) (Tree (Prelude.Maybe LeveledHaskType)) (Tree (Prelude.Maybe LeveledHaskType)) (Arrange LeveledHaskType) + | RBrak TypeEnv CoercionEnv HaskType HaskTyVar (Tree (Prelude.Maybe LeveledHaskType)) (([]) HaskTyVar) + | REsc TypeEnv CoercionEnv HaskType HaskTyVar (Tree (Prelude.Maybe LeveledHaskType)) HaskLevel + | RNote TypeEnv CoercionEnv (Tree (Prelude.Maybe LeveledHaskType)) HaskType HaskLevel CoreSyn.Note + | RLit TypeEnv CoercionEnv Literal.Literal HaskLevel + | RVar TypeEnv CoercionEnv HaskType HaskLevel + | RGlobal TypeEnv CoercionEnv HaskType HaskLevel WeakExprVar0 + | RLam TypeEnv CoercionEnv (Tree (Prelude.Maybe LeveledHaskType)) HaskType HaskType HaskLevel + | RCast TypeEnv CoercionEnv (Tree (Prelude.Maybe LeveledHaskType)) HaskType HaskType HaskLevel + | RJoin TypeEnv CoercionEnv (Tree (Prelude.Maybe LeveledHaskType)) (Tree (Prelude.Maybe LeveledHaskType)) (Tree (Prelude.Maybe LeveledHaskType)) (Tree (Prelude.Maybe LeveledHaskType)) + | RApp TypeEnv CoercionEnv (Tree (Prelude.Maybe LeveledHaskType)) (Tree (Prelude.Maybe LeveledHaskType)) (() -> (InstantiatedTypeEnv ()) -> RawHaskType ()) (() -> (InstantiatedTypeEnv ()) -> RawHaskType ()) HaskLevel + | RLet TypeEnv CoercionEnv (Tree (Prelude.Maybe LeveledHaskType)) (Tree (Prelude.Maybe LeveledHaskType)) HaskType HaskType HaskLevel + | RVoid TypeEnv CoercionEnv + | RAppT TypeEnv CoercionEnv (Tree (Prelude.Maybe LeveledHaskType)) Kind (() -> (InstantiatedTypeEnv ()) -> () -> RawHaskType ()) HaskType HaskLevel + | RAbsT (([]) Kind) CoercionEnv (Tree (Prelude.Maybe LeveledHaskType)) Kind (() -> (InstantiatedTypeEnv ()) -> () -> RawHaskType ()) HaskLevel + | RAppCo TypeEnv CoercionEnv (Tree (Prelude.Maybe LeveledHaskType)) Kind HaskType HaskType (() -> (InstantiatedTypeEnv ()) -> RawHaskType ()) HaskLevel + | RAbsCo TypeEnv (([]) HaskCoercionKind) (Tree (Prelude.Maybe LeveledHaskType)) Kind HaskType HaskType HaskType HaskLevel + | RLetRec TypeEnv CoercionEnv (Tree (Prelude.Maybe LeveledHaskType)) HaskType (Tree (Prelude.Maybe HaskType)) HaskLevel + | RCase TypeEnv (([]) HaskCoercionKind) HaskLevel TyCon.TyCon (Tree (Prelude.Maybe LeveledHaskType)) (IList Kind HaskType) HaskType (Tree (Prelude.Maybe (SigT StrongAltCon ProofCaseBranch))) + +weakAltConToCoreAltCon :: WeakAltCon -> CoreSyn.AltCon +weakAltConToCoreAltCon wa = + (trace "X" (case (trace "X" (wa)) of { + WeakDataAlt cdc -> (trace "X" (CoreSyn.DataAlt (trace "X" (cdc)))); + WeakLitAlt lit -> (trace "X" (CoreSyn.LitAlt (trace "X" (lit)))); + WeakDEFAULT -> (trace "X" (CoreSyn.DEFAULT))})) + +weakTypeToCoreType :: WeakType -> TypeRep.Type +weakTypeToCoreType wt = + (trace "X" (case (trace "X" (wt)) of { + WTyVarTy w -> (trace "X" (case (trace "X" (w)) of { + WeakTypeVar v k -> (trace "X" (TypeRep.TyVarTy (trace "X" (v))))})); + WAppTy t1 t2 -> + (trace "X" (case (trace "X" (t1)) of { + WAppTy w t3 -> + (trace "X" (case (trace "X" (w)) of { + WFunTyCon -> (trace "X" (TypeRep.FunTy (trace "X" ((trace "X" ((weakTypeToCoreType (trace "X" (t3))))))) (trace "X" ((trace "X" ((weakTypeToCoreType (trace "X" (t2))))))))); + _ -> + (trace "X" (case (trace "X" ((trace "X" (weakTypeToCoreType (trace "X" (t1)))))) of { + TypeRep.TyConApp tc tys -> (trace "X" (TypeRep.TyConApp (trace "X" (tc)) (trace "X" ((trace "X" ((app (trace "X" (tys)) (trace "X" (((:) (trace "X" ((trace "X" ((weakTypeToCoreType (trace "X" (t2))))))) (trace "X" (([]))))))))))))); + x -> (trace "X" (TypeRep.AppTy (trace "X" (x)) (trace "X" ((trace "X" ((weakTypeToCoreType (trace "X" (t2)))))))))}))})); + _ -> + (trace "X" (case (trace "X" ((trace "X" (weakTypeToCoreType (trace "X" (t1)))))) of { + TypeRep.TyConApp tc tys -> (trace "X" (TypeRep.TyConApp (trace "X" (tc)) (trace "X" ((trace "X" ((app (trace "X" (tys)) (trace "X" (((:) (trace "X" ((trace "X" ((weakTypeToCoreType (trace "X" (t2))))))) (trace "X" (([]))))))))))))); + x -> (trace "X" (TypeRep.AppTy (trace "X" (x)) (trace "X" ((trace "X" ((weakTypeToCoreType (trace "X" (t2)))))))))}))})); + WTyFunApp tf lt -> (trace "X" (TypeRep.TyConApp (trace "X" ((trace "X" (((\x -> x) (trace "X" (tf))))))) (trace "X" ((trace "X" ((map (trace "X" (weakTypeToCoreType)) (trace "X" (lt))))))))); + WTyCon tc -> (trace "X" (TypeRep.TyConApp (trace "X" ((trace "X" (((\x -> x) (trace "X" (tc))))))) (trace "X" (([]))))); + WFunTyCon -> (trace "X" (TypeRep.TyConApp (trace "X" ((trace "X" (((\x -> x) (trace "X" (arrowTyCon))))))) (trace "X" (([]))))); + WCodeTy w t -> (trace "X" (case (trace "X" (w)) of { + WeakTypeVar ec k -> (trace "X" (TypeRep.TyConApp (trace "X" ((trace "X" (((\x -> x) (trace "X" (TysWiredIn.hetMetCodeTypeTyCon))))))) (trace "X" (((:) (trace "X" ((TypeRep.TyVarTy (trace "X" (ec))))) (trace "X" (((:) (trace "X" ((trace "X" ((weakTypeToCoreType (trace "X" (t))))))) (trace "X" (([])))))))))))})); + WCoFunTy t1 t2 t3 -> (trace "X" (TypeRep.FunTy (trace "X" ((TypeRep.PredTy (trace "X" ((TypeRep.EqPred (trace "X" ((trace "X" ((weakTypeToCoreType (trace "X" (t1))))))) (trace "X" ((trace "X" ((weakTypeToCoreType (trace "X" (t2))))))))))))) (trace "X" ((trace "X" ((weakTypeToCoreType (trace "X" (t3))))))))); + WForAllTy w t -> (trace "X" (case (trace "X" (w)) of { + WeakTypeVar wtv k -> (trace "X" (TypeRep.ForAllTy (trace "X" (wtv)) (trace "X" ((trace "X" ((weakTypeToCoreType (trace "X" (t)))))))))})); + WClassP c lt -> (trace "X" (TypeRep.PredTy (trace "X" ((TypeRep.ClassP (trace "X" (c)) (trace "X" ((trace "X" ((map (trace "X" (weakTypeToCoreType)) (trace "X" (lt)))))))))))); + WIParam n ty -> (trace "X" (TypeRep.PredTy (trace "X" ((TypeRep.IParam (trace "X" (n)) (trace "X" ((trace "X" ((weakTypeToCoreType (trace "X" (ty))))))))))))})) + +weakCoercionToCoreCoercion :: WeakCoercion -> Coercion.Coercion +weakCoercionToCoreCoercion wc = + (trace "X" ((trace "X" (Coercion.mkUnsafeCoercion (trace "X" ((trace "X" ((weakTypeToCoreType (trace "X" ((trace "X" ((fst (trace "X" ((trace "X" ((weakCoercionTypes (trace "X" (wc))))))))))))))))) (trace "X" ((trace "X" ((weakTypeToCoreType (trace "X" ((trace "X" ((snd (trace "X" ((trace "X" ((weakCoercionTypes (trace "X" (wc))))))))))))))))))))) + +weakExprToCoreExpr :: WeakExpr -> CoreSyn.Expr Var.Var +weakExprToCoreExpr me = + (trace "X" (case (trace "X" (me)) of { + WEVar w -> (trace "X" (case (trace "X" (w)) of { + WeakExprVar v w0 -> (trace "X" (CoreSyn.Var (trace "X" (v))))})); + WELit lit -> (trace "X" (CoreSyn.Lit (trace "X" (lit)))); + WELet w ve e -> (trace "X" (case (trace "X" (w)) of { + WeakExprVar v w0 -> (trace "X" ((trace "X" (MkCore.mkCoreLet (trace "X" ((CoreSyn.NonRec (trace "X" (v)) (trace "X" ((trace "X" ((weakExprToCoreExpr (trace "X" (ve)))))))))) (trace "X" ((trace "X" ((weakExprToCoreExpr (trace "X" (e)))))))))))})); + WELetRec mlr e -> (trace "X" (CoreSyn.Let (trace "X" ((CoreSyn.Rec + (trace "X" ((trace "X" ((let { + mkLetBindings mlr0 = + (trace "X" (case (trace "X" (mlr0)) of { + T_Leaf o -> + (trace "X" (case (trace "X" (o)) of { + Prelude.Just p -> + (trace "X" (case (trace "X" (p)) of { + (,) w e0 -> (trace "X" (case (trace "X" (w)) of { + WeakExprVar cv w0 -> (trace "X" ((:) (trace "X" (((,) (trace "X" (cv)) (trace "X" ((trace "X" ((weakExprToCoreExpr (trace "X" (e0)))))))))) (trace "X" (([])))))}))})); + Prelude.Nothing -> (trace "X" (([])))})); + T_Branch b1 b2 -> (trace "X" ((trace "X" (app (trace "X" ((trace "X" ((mkLetBindings (trace "X" (b1))))))) (trace "X" ((trace "X" ((mkLetBindings (trace "X" (b2)))))))))))}))} + in mkLetBindings (trace "X" (mlr)))))))))) (trace "X" ((trace "X" ((weakExprToCoreExpr (trace "X" (e))))))))); + WECast e co -> (trace "X" (CoreSyn.Cast (trace "X" ((trace "X" ((weakExprToCoreExpr (trace "X" (e))))))) (trace "X" ((trace "X" ((weakCoercionToCoreCoercion (trace "X" (co))))))))); + WENote n e -> (trace "X" (CoreSyn.Note (trace "X" (n)) (trace "X" ((trace "X" ((weakExprToCoreExpr (trace "X" (e))))))))); + WEApp e1 e2 -> (trace "X" (CoreSyn.App (trace "X" ((trace "X" ((weakExprToCoreExpr (trace "X" (e1))))))) (trace "X" ((trace "X" ((weakExprToCoreExpr (trace "X" (e2))))))))); + WETyApp e t -> (trace "X" (CoreSyn.App (trace "X" ((trace "X" ((weakExprToCoreExpr (trace "X" (e))))))) (trace "X" ((CoreSyn.Type (trace "X" ((trace "X" ((weakTypeToCoreType (trace "X" (t)))))))))))); + WECoApp e co -> (trace "X" (CoreSyn.App (trace "X" ((trace "X" ((weakExprToCoreExpr (trace "X" (e))))))) (trace "X" ((CoreSyn.Type (trace "X" ((trace "X" (((\x -> x) (trace "X" ((trace "X" ((weakCoercionToCoreCoercion (trace "X" (co))))))))))))))))); + WELam w e -> (trace "X" (case (trace "X" (w)) of { + WeakExprVar ev w0 -> (trace "X" (CoreSyn.Lam (trace "X" (ev)) (trace "X" ((trace "X" ((weakExprToCoreExpr (trace "X" (e)))))))))})); + WETyLam w e -> (trace "X" (case (trace "X" (w)) of { + WeakTypeVar tv k -> (trace "X" (CoreSyn.Lam (trace "X" (tv)) (trace "X" ((trace "X" ((weakExprToCoreExpr (trace "X" (e)))))))))})); + WECoLam w e -> (trace "X" (case (trace "X" (w)) of { + WeakCoerVar cv k w0 w1 -> (trace "X" (CoreSyn.Lam (trace "X" (cv)) (trace "X" ((trace "X" ((weakExprToCoreExpr (trace "X" (e)))))))))})); + WEBrak v w e t -> (trace "X" (case (trace "X" (w)) of { + WeakTypeVar ec k -> (trace "X" ((trace "X" (fold_left (trace "X" ((\x x0 -> (trace "X" (CoreSyn.App (trace "X" (x)) (trace "X" (x0))))))) (trace "X" (((:) (trace "X" ((CoreSyn.Type (trace "X" ((TypeRep.TyVarTy (trace "X" (ec)))))))) (trace "X" (((:) (trace "X" ((CoreSyn.Type (trace "X" ((trace "X" ((weakTypeToCoreType (trace "X" (t)))))))))) (trace "X" (((:) (trace "X" ((trace "X" ((weakExprToCoreExpr (trace "X" (e))))))) (trace "X" (([])))))))))))) (trace "X" ((CoreSyn.Var (trace "X" ((trace "X" ((weakVarToCoreVar (trace "X" ((WExprVar (trace "X" (v)))))))))))))))))})); + WEEsc v w e t -> (trace "X" (case (trace "X" (w)) of { + WeakTypeVar ec k -> (trace "X" ((trace "X" (fold_left (trace "X" ((\x x0 -> (trace "X" (CoreSyn.App (trace "X" (x)) (trace "X" (x0))))))) (trace "X" (((:) (trace "X" ((CoreSyn.Type (trace "X" ((TypeRep.TyVarTy (trace "X" (ec)))))))) (trace "X" (((:) (trace "X" ((CoreSyn.Type (trace "X" ((trace "X" ((weakTypeToCoreType (trace "X" (t)))))))))) (trace "X" (((:) (trace "X" ((trace "X" ((weakExprToCoreExpr (trace "X" (e))))))) (trace "X" (([])))))))))))) (trace "X" ((CoreSyn.Var (trace "X" ((trace "X" ((weakVarToCoreVar (trace "X" ((WExprVar (trace "X" (v)))))))))))))))))})); + WECSP v w e t -> (trace "X" (case (trace "X" (w)) of { + WeakTypeVar ec k -> (trace "X" ((trace "X" (fold_left (trace "X" ((\x x0 -> (trace "X" (CoreSyn.App (trace "X" (x)) (trace "X" (x0))))))) (trace "X" (((:) (trace "X" ((CoreSyn.Type (trace "X" ((TypeRep.TyVarTy (trace "X" (ec)))))))) (trace "X" (((:) (trace "X" ((CoreSyn.Type (trace "X" ((trace "X" ((weakTypeToCoreType (trace "X" (t)))))))))) (trace "X" (((:) (trace "X" ((trace "X" ((weakExprToCoreExpr (trace "X" (e))))))) (trace "X" (([])))))))))))) (trace "X" ((CoreSyn.Var (trace "X" ((trace "X" ((weakVarToCoreVar (trace "X" ((WExprVar (trace "X" (v)))))))))))))))))})); + WECase vscrut escrut tbranches tc types alts -> (trace "X" (CoreSyn.Case (trace "X" ((trace "X" ((weakExprToCoreExpr (trace "X" (escrut))))))) (trace "X" ((trace "X" ((weakVarToCoreVar (trace "X" ((WExprVar (trace "X" (vscrut)))))))))) (trace "X" ((trace "X" ((weakTypeToCoreType (trace "X" (tbranches))))))) + (trace "X" ((trace "X" ((sortAlts + (trace "X" ((trace "X" ((let { + mkCaseBranches alts0 = + (trace "X" (case (trace "X" (alts0)) of { + T_Leaf o -> + (trace "X" (case (trace "X" (o)) of { + Prelude.Just p -> + (trace "X" (case (trace "X" (p)) of { + (,) p0 e -> + (trace "X" (case (trace "X" (p0)) of { + (,) p1 evars -> + (trace "X" (case (trace "X" (p1)) of { + (,) p2 cvars -> (trace "X" (case (trace "X" (p2)) of { + (,) ac tvars -> (trace "X" ((:) (trace "X" (((,,) (trace "X" ((trace "X" ((weakAltConToCoreAltCon (trace "X" (ac))))))) (trace "X" ((trace "X" ((app (trace "X" ((trace "X" ((app (trace "X" ((trace "X" ((map (trace "X" ((\v -> (trace "X" ((trace "X" (weakVarToCoreVar (trace "X" ((WTypeVar (trace "X" (v)))))))))))) (trace "X" (tvars))))))) (trace "X" ((trace "X" ((map (trace "X" ((\v -> (trace "X" ((trace "X" (weakVarToCoreVar (trace "X" ((WCoerVar (trace "X" (v)))))))))))) (trace "X" (cvars)))))))))))) (trace "X" ((trace "X" ((map (trace "X" ((\v -> (trace "X" ((trace "X" (weakVarToCoreVar (trace "X" ((WExprVar (trace "X" (v)))))))))))) (trace "X" (evars)))))))))))) (trace "X" ((trace "X" ((weakExprToCoreExpr (trace "X" (e)))))))))) (trace "X" (([])))))}))}))}))})); + Prelude.Nothing -> (trace "X" (([])))})); + T_Branch b1 b2 -> (trace "X" ((trace "X" (app (trace "X" ((trace "X" ((mkCaseBranches (trace "X" (b1))))))) (trace "X" ((trace "X" ((mkCaseBranches (trace "X" (b2)))))))))))}))} + in mkCaseBranches (trace "X" (alts))))))))))))))})) + +weakTypeOfWeakExpr :: WeakExpr -> OrError WeakType +weakTypeOfWeakExpr we = + (trace "X" ((trace "X" (coreTypeToWeakType (trace "X" ((trace "X" ((CoreUtils.exprType (trace "X" ((trace "X" ((weakExprToCoreExpr (trace "X" (we)))))))))))))))) + +weakExprToString :: ToString WeakExpr +weakExprToString we = + (trace "X" ((trace "X" (toString (trace "X" (coreExprToString)) (trace "X" ((trace "X" ((weakExprToCoreExpr (trace "X" (we))))))))))) + +type TyVarResolver = WeakTypeVar0 -> OrError HaskTyVar + +type CoVarResolver = WeakCoerVar0 -> OrError HaskCoVar + +up__U03c6_ :: TypeEnv -> WeakTypeVar0 -> TyVarResolver -> TyVarResolver +up__U03c6_ __U0393_0 tv __U03c6_0 tv' = + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (weakTypeVarEqDecidable)) (trace "X" (tv)) (trace "X" (tv')))))) of { + Prelude.True -> (trace "X" (let {fresh0 = (trace "X" (\_ -> (trace "X" ((trace "X" (freshHaskTyVar (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((weakTypeVarToKind (trace "X" (tv)))))))))))))} in (trace "X" (OK (trace "X" ((trace "X" ((eq_rect (trace "X" (tv)) (trace "X" (fresh0)) (trace "X" (tv'))))))))))); + Prelude.False -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((__U03c6_0 (trace "X" (tv'))))))) (trace "X" ((\tv'' -> (trace "X" (OK (trace "X" ((\_ ite -> (trace "X" ((trace "X" (tv'' (trace "X" (__)) (trace "X" ((trace "X" ((weakITE (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((weakTypeVarToKind (trace "X" (tv))))))) (trace "X" (ite)))))))))))))))))))))))})) + +up__U03c6_' :: TypeEnv -> (([]) WeakTypeVar0) -> TyVarResolver -> TyVarResolver +up__U03c6_' __U0393_0 tvs __U03c6_0 = + (trace "X" ((trace "X" (list_rect (trace "X" (__U03c6_0)) (trace "X" ((\a tvs0 iHtvs -> (trace "X" ((trace "X" (up__U03c6_ (trace "X" ((trace "X" ((app (trace "X" ((trace "X" ((map (trace "X" ((\tv -> (trace "X" ((trace "X" (weakTypeVarToKind (trace "X" (tv))))))))) (trace "X" (tvs0))))))) (trace "X" (__U0393_0))))))) (trace "X" (a)) (trace "X" (iHtvs))))))))) (trace "X" (tvs)))))) + +substPhi :: TypeEnv -> Kind -> Kind -> HaskType -> HaskType -> (InstantiatedTypeEnv a1) -> RawHaskType a1 +substPhi __U0393_0 __U03ba_ __U03ba_' __U03b8_ ht x = + (trace "X" ((trace "X" (substT (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (__U03ba_')) (trace "X" ((\_ env x0 -> (trace "X" ((trace "X" (ht (trace "X" (__)) (trace "X" ((ICons (trace "X" (__U03ba_)) (trace "X" (__U0393_0)) (trace "X" (x0)) (trace "X" (env)))))))))))) (trace "X" (__U03b8_)) (trace "X" (x)))))) + +subst__U03c6_ :: TypeEnv -> (([]) Kind) -> (IList Kind HaskType) -> Kind -> HaskType -> (InstantiatedTypeEnv a1) -> RawHaskType a1 +subst__U03c6_ __U0393_0 lk __U03b8_ __U03ba_ x x0 = + (trace "X" (let { + h = (trace "X" ((trace "X" (list_rect (trace "X" ((\__U03b8_0 q -> (trace "X" (q))))) (trace "X" ((\a lk0 iHlk __U03b8_0 q -> + (trace "X" ((trace "X" (iHlk + (trace "X" ((case (trace "X" (__U03b8_0)) of { + INil -> (trace "X" (false_rect)); + ICons i is x1 x2 -> (trace "X" ((trace "X" (eq_rect (trace "X" (a)) (trace "X" ((\_ -> (trace "X" ((trace "X" (eq_rect (trace "X" (lk0)) (trace "X" ((\x3 x4 -> (trace "X" (x4))))) (trace "X" (is))))))))) (trace "X" (i)) (trace "X" (__)) (trace "X" (x1)) (trace "X" (x2))))))}))) + (trace "X" ((case (trace "X" (__U03b8_0)) of { + INil -> (trace "X" (false_rect)); + ICons i is x1 x2 -> (trace "X" ((trace "X" (eq_rect (trace "X" (a)) (trace "X" ((\_ -> (trace "X" ((trace "X" (eq_rect (trace "X" (lk0)) (trace "X" ((\x3 x4 _ -> (trace "X" ((trace "X" (substPhi (trace "X" ((trace "X" ((app (trace "X" (lk0)) (trace "X" (__U0393_0))))))) (trace "X" (a)) (trace "X" (__U03ba_)) (trace "X" ((\_ -> (trace "X" ((trace "X" (weakT' (trace "X" (__U0393_0)) (trace "X" (lk0)) (trace "X" (a)) (trace "X" (x3))))))))) (trace "X" (q))))))))) (trace "X" (is))))))))) (trace "X" (i)) (trace "X" (__)) (trace "X" (x1)) (trace "X" (x2))))))})))))))))) (trace "X" (lk))))))} + in + (trace "X" ((trace "X" (unsafeCoerce (trace "X" (h)) (trace "X" (__U03b8_)) (trace "X" (x)) (trace "X" (__)) (trace "X" (x0)))))))) + +data StrongAltConPlusJunk = + Build_StrongAltConPlusJunk StrongAltCon (TypeEnv -> TyVarResolver -> TyVarResolver) (TypeEnv -> CoercionEnv -> (IList Kind HaskType) -> CoVarResolver -> CoVarResolver) + +sacpj_sac :: TyCon.TyCon -> StrongAltConPlusJunk -> StrongAltCon +sacpj_sac tc s = + (trace "X" (case (trace "X" (s)) of { + Build_StrongAltConPlusJunk sacpj_sac0 sacpj___U03c6_0 sacpj___U03c8_0 -> (trace "X" (sacpj_sac0))})) + +sacpj___U03c6_ :: TyCon.TyCon -> StrongAltConPlusJunk -> TypeEnv -> TyVarResolver -> TyVarResolver +sacpj___U03c6_ tc s = + (trace "X" (case (trace "X" (s)) of { + Build_StrongAltConPlusJunk sacpj_sac0 sacpj___U03c6_0 sacpj___U03c8_0 -> (trace "X" (sacpj___U03c6_0))})) + +sacpj___U03c8_ :: TyCon.TyCon -> StrongAltConPlusJunk -> TypeEnv -> CoercionEnv -> (IList Kind HaskType) -> CoVarResolver -> CoVarResolver +sacpj___U03c8_ tc s = + (trace "X" (case (trace "X" (s)) of { + Build_StrongAltConPlusJunk sacpj_sac0 sacpj___U03c6_0 sacpj___U03c8_0 -> (trace "X" (sacpj___U03c8_0))})) + +mkPhi :: (([]) WeakTypeVar0) -> TyVarResolver +mkPhi lv = + (trace "X" (let {__U03c6_' = (trace "X" ((trace "X" (up__U03c6_' (trace "X" (([]))) (trace "X" (lv)) (trace "X" ((\x -> Prelude.error "encountered unbound tyvar!")))))))} in (trace "X" ((trace "X" (eq_rect_r (trace "X" ((trace "X" ((app (trace "X" ((trace "X" ((map (trace "X" ((\tv -> (trace "X" ((trace "X" (weakTypeVarToKind (trace "X" (tv))))))))) (trace "X" (lv))))))) (trace "X" (([])))))))) (trace "X" (__U03c6_')) (trace "X" ((trace "X" ((map (trace "X" ((\tv -> (trace "X" ((trace "X" (weakTypeVarToKind (trace "X" (tv))))))))) (trace "X" (lv))))))))))))) + +dataConExKinds :: DataCon.DataCon -> Vec Kind +dataConExKinds dc = + (trace "X" ((trace "X" (vec_map (trace "X" ((trace "X" ((length (trace "X" ((trace "X" ((dataConExTyVars (trace "X" (dc)))))))))))) (trace "X" ((\x -> (trace "X" ((trace "X" (weakTypeVarToKind (trace "X" (x))))))))) (trace "X" ((trace "X" ((list2vec (trace "X" ((trace "X" ((dataConExTyVars (trace "X" (dc)))))))))))))))) + +tyConKinds :: TyCon.TyCon -> Vec Kind +tyConKinds tc = + (trace "X" ((trace "X" (vec_map (trace "X" ((trace "X" ((length (trace "X" ((trace "X" ((tyConTyVars (trace "X" (tc)))))))))))) (trace "X" ((\x -> (trace "X" ((trace "X" (weakTypeVarToKind (trace "X" (x))))))))) (trace "X" ((trace "X" ((list2vec (trace "X" ((trace "X" ((tyConTyVars (trace "X" (tc)))))))))))))))) + +fixkind :: Kind -> WeakTypeVar0 -> WeakTypeVar0 +fixkind __U03ba_ tv = + (trace "X" (WeakTypeVar (trace "X" ((trace "X" ((weakVarToCoreVar (trace "X" ((WTypeVar (trace "X" (tv)))))))))) (trace "X" (__U03ba_)))) + +mkTAll' :: Kind -> (([]) Kind) -> HaskType -> (InstantiatedTypeEnv a1) -> a1 -> RawHaskType a1 +mkTAll' __U03ba_ __U0393_0 x ite x0 = + (trace "X" ((trace "X" (unsafeCoerce (trace "X" (x)) (trace "X" (__)) (trace "X" ((ICons (trace "X" (__U03ba_)) (trace "X" (__U0393_0)) (trace "X" (x0)) (trace "X" (ite))))))))) + +mkTAll :: Kind -> (([]) Kind) -> HaskType -> (InstantiatedTypeEnv a1) -> RawHaskType a1 +mkTAll __U03ba_ __U0393_0 x x0 = + (trace "X" (TAll (trace "X" (__U03ba_)) (trace "X" ((trace "X" ((mkTAll' (trace "X" (__U03ba_)) (trace "X" (__U0393_0)) (trace "X" (x)) (trace "X" (x0))))))))) + +weakTypeToType :: TypeEnv -> TyVarResolver -> WeakType -> OrError HaskTypeOfSomeKind0 +weakTypeToType __U0393_0 __U03c6_0 t = + (trace "X" ((trace "X" (addErrorMessage (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" (((:) (trace "X" ('w')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('k')) (trace "X" (((:) (trace "X" ('T')) (trace "X" (((:) (trace "X" ('y')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('T')) (trace "X" (((:) (trace "X" ('o')) (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" ((toString (trace "X" (weakTypeToString)) (trace "X" (t)))))))))))) + (trace "X" ((case (trace "X" (t)) of { + WTyVarTy v -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((__U03c6_0 (trace "X" (v))))))) (trace "X" ((\v' -> (trace "X" ((trace "X" (addErrorMessage (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" ('W')) (trace "X" (((:) (trace "X" ('T')) (trace "X" (((:) (trace "X" ('y')) (trace "X" (((:) (trace "X" ('V')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('T')) (trace "X" (((:) (trace "X" ('y')) (trace "X" ([]))))))))))))))))))))))))))))))))))))))))) (trace "X" ((OK (trace "X" ((HaskTypeOfSomeKind (trace "X" ((trace "X" ((weakTypeVarToKind (trace "X" (v))))))) (trace "X" ((\_ env -> (trace "X" (TVar (trace "X" ((trace "X" ((weakTypeVarToKind (trace "X" (v))))))) (trace "X" ((trace "X" ((v' (trace "X" (__)) (trace "X" (env))))))))))))))))))))))))))))); + WAppTy t1 t2 -> + (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((weakTypeToType (trace "X" (__U0393_0)) (trace "X" (__U03c6_0)) (trace "X" (t1))))))) (trace "X" ((\t1' -> + (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((weakTypeToType (trace "X" (__U0393_0)) (trace "X" (__U03c6_0)) (trace "X" (t2))))))) (trace "X" ((\t2' -> + (trace "X" ((trace "X" (addErrorMessage (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" ('W')) (trace "X" (((:) (trace "X" ('A')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('T')) (trace "X" (((:) (trace "X" ('y')) (trace "X" ([]))))))))))))))))))))))))))))))))))) + (trace "X" ((case (trace "X" (t1')) of { + HaskTypeOfSomeKind k1' t1'0 -> + (trace "X" (case (trace "X" (t2')) of { + HaskTypeOfSomeKind k2' t2'0 -> + (trace "X" (case (trace "X" (k1')) of { + KindArrow k1'1 k1'2 -> + (trace "X" (let {s = (trace "X" ((trace "X" (eqd_dec (trace "X" (kindEqDecidable)) (trace "X" (k1'1)) (trace "X" (k2'))))))} in + (trace "X" (case (trace "X" (s)) of { + Prelude.True -> (trace "X" ((trace "X" (eq_rect_r (trace "X" (k2')) (trace "X" ((\t1'1 -> (trace "X" (OK (trace "X" ((HaskTypeOfSomeKind (trace "X" (k1'2)) (trace "X" ((\_ env -> (trace "X" (TApp (trace "X" (k1'2)) (trace "X" (k2')) (trace "X" ((trace "X" ((t1'1 (trace "X" (__)) (trace "X" (env))))))) (trace "X" ((trace "X" ((t2'0 (trace "X" (__)) (trace "X" (env)))))))))))))))))))) (trace "X" (k1'1)) (trace "X" (t1'0)))))); + Prelude.False -> (trace "X" (Error (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" (((:) (trace "X" ('K')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('m')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('m')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('h')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('W')) (trace "X" (((:) (trace "X" ('A')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('T')) (trace "X" (((:) (trace "X" ('y')) (trace "X" (((:) (trace "X" (':')) (trace "X" (((:) (trace "X" (' ')) (trace "X" ([]))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) (trace "X" ((trace "X" ((toString (trace "X" (kindToString0)) (trace "X" (k1'1)))))))))))) (trace "X" (((:) (trace "X" (' ')) (trace "X" ([])))))))))) (trace "X" ((trace "X" ((toString (trace "X" (kindToString0)) (trace "X" (k2'))))))))))))))})))); + x -> (trace "X" (let {err = (trace "X" ((trace "X" (concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('o')) (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" (' ')) (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" ((toString (trace "X" ((trace "X" ((typeToStringInstance (trace "X" (__U0393_0)) (trace "X" (x))))))) (trace "X" (t1'0)))))))))))) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('f')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('k')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" (' ')) (trace "X" ([])))))))))))))))))))))))))))))))))) (trace "X" ((trace "X" ((toString (trace "X" (kindToString0)) (trace "X" (x)))))))))))) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('o')) (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" (((:) (trace "X" (' ')) (trace "X" ([])))))))))))))))))))))))))))))))))) (trace "X" ((trace "X" ((toString (trace "X" ((trace "X" ((typeToStringInstance (trace "X" (__U0393_0)) (trace "X" (k2'))))))) (trace "X" (t2'0)))))))))))) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('f')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('k')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" (' ')) (trace "X" ([])))))))))))))))))))))))))))))))))) (trace "X" ((trace "X" ((toString (trace "X" (kindToString0)) (trace "X" (k2')))))))))))} in (trace "X" (Error (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" (((:) (trace "X" ('K')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('m')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('m')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('h')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('W')) (trace "X" (((:) (trace "X" ('A')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('T')) (trace "X" (((:) (trace "X" ('y')) (trace "X" (((:) (trace "X" (':')) (trace "X" (((:) (trace "X" (' ')) (trace "X" ([]))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) (trace "X" (err)))))))))))}))}))}))))))))))))))))))))); + WTyFunApp tc lt -> + (trace "X" ((trace "X" (orErrorBind + (trace "X" ((trace "X" ((let { + weakTypeListToTypeList lk lt0 = + (trace "X" (case (trace "X" (lt0)) of { + ([]) -> + (trace "X" (case (trace "X" (lk)) of { + ([]) -> (trace "X" (OK (trace "X" ((\_ x -> (trace "X" (TyFunApp_nil))))))); + (:) k l -> (trace "X" (Error (trace "X" (((:) (trace "X" ('W')) (trace "X" (((:) (trace "X" ('T')) (trace "X" (((:) (trace "X" ('y')) (trace "X" (((:) (trace "X" ('F')) (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('A')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('p')) (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" ('a')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('g')) (trace "X" (((:) (trace "X" ('h')) (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" (((:) (trace "X" ('s')) (trace "X" ([])))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))})); + (:) tx lt' -> + (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((weakTypeToType (trace "X" (__U0393_0)) (trace "X" (__U03c6_0)) (trace "X" (tx))))))) (trace "X" ((\t' -> + (trace "X" (case (trace "X" (lk)) of { + ([]) -> (trace "X" (Error (trace "X" (((:) (trace "X" ('W')) (trace "X" (((:) (trace "X" ('T')) (trace "X" (((:) (trace "X" ('y')) (trace "X" (((:) (trace "X" ('F')) (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('A')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('p')) (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" ('i')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('m')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('y')) (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" (((:) (trace "X" ('s')) (trace "X" ([]))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))); + (:) k lk' -> + (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((weakTypeListToTypeList (trace "X" (lk')) (trace "X" (lt'))))))) (trace "X" ((\rhtl' -> + (trace "X" ((trace "X" (addErrorMessage (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" ('w')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('k')) (trace "X" (((:) (trace "X" ('T')) (trace "X" (((:) (trace "X" ('y')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('L')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('T')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('T')) (trace "X" (((:) (trace "X" ('y')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('L')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('t')) (trace "X" ([]))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) + (trace "X" ((case (trace "X" (t')) of { + HaskTypeOfSomeKind k' t'0 -> + (trace "X" (let {s = (trace "X" ((trace "X" (eqd_dec (trace "X" (kindEqDecidable)) (trace "X" (k)) (trace "X" (k'))))))} in + (trace "X" (case (trace "X" (s)) of { + Prelude.True -> (trace "X" ((trace "X" (eq_rect_r (trace "X" (k')) (trace "X" ((OK (trace "X" ((\_ ite -> (trace "X" (TyFunApp_cons (trace "X" (k')) (trace "X" (lk')) (trace "X" ((trace "X" ((t'0 (trace "X" (__)) (trace "X" (ite))))))) (trace "X" ((trace "X" ((rhtl' (trace "X" (__)) (trace "X" (ite))))))))))))))) (trace "X" (k)))))); + Prelude.False -> (trace "X" (Error (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" (((:) (trace "X" ('K')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('m')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('m')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('h')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('w')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('k')) (trace "X" (((:) (trace "X" ('T')) (trace "X" (((:) (trace "X" ('y')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('L')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('T')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('T')) (trace "X" (((:) (trace "X" ('y')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('L')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('t')) (trace "X" ([]))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) (trace "X" ((trace "X" ((toString (trace "X" (kindToString0)) (trace "X" (k)))))))))))) (trace "X" (((:) (trace "X" (' ')) (trace "X" ([])))))))))) (trace "X" ((trace "X" ((toString (trace "X" (kindToString0)) (trace "X" (k'))))))))))))))}))))}))))))))))))))})))))))))}))} + in weakTypeListToTypeList (trace "X" ((trace "X" ((fst (trace "X" ((trace "X" ((tyFunKind (trace "X" (tc)))))))))))) (trace "X" (lt))))))) (trace "X" ((\lt' -> (trace "X" ((trace "X" (addErrorMessage (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" ('W')) (trace "X" (((:) (trace "X" ('T')) (trace "X" (((:) (trace "X" ('y')) (trace "X" (((:) (trace "X" ('F')) (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('A')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('p')) (trace "X" ([])))))))))))))))))))))))))))))))))))))))))))) (trace "X" ((OK (trace "X" ((HaskTypeOfSomeKind (trace "X" ((trace "X" ((snd (trace "X" ((trace "X" ((tyFunKind (trace "X" (tc)))))))))))) (trace "X" ((\_ x -> (trace "X" (TyFunApp (trace "X" (tc)) (trace "X" ((trace "X" ((lt' (trace "X" (__)) (trace "X" (x))))))))))))))))))))))))))))); + WTyCon tc -> (trace "X" ((trace "X" (addErrorMessage (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" ('W')) (trace "X" (((:) (trace "X" ('T')) (trace "X" (((:) (trace "X" ('y')) (trace "X" (((:) (trace "X" ('C')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('n')) (trace "X" ([]))))))))))))))))))))))))))))))))))) (trace "X" ((OK (trace "X" ((HaskTypeOfSomeKind (trace "X" ((trace "X" ((tyConKind' (trace "X" (tc))))))) (trace "X" ((\_ x -> (trace "X" (TCon (trace "X" (tc))))))))))))))))); + WFunTyCon -> (trace "X" (OK (trace "X" ((HaskTypeOfSomeKind (trace "X" ((KindArrow (trace "X" (KindStar)) (trace "X" ((KindArrow (trace "X" (KindStar)) (trace "X" (KindStar)))))))) (trace "X" ((\_ ite -> (trace "X" (TArrow)))))))))); + WCodeTy ec tbody -> + (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((weakTypeToType (trace "X" (__U0393_0)) (trace "X" (__U03c6_0)) (trace "X" (tbody))))))) (trace "X" ((\tbody' -> + (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((__U03c6_0 (trace "X" ((trace "X" ((fixkind (trace "X" (KindStar)) (trace "X" (ec)))))))))))) (trace "X" ((\ec' -> + (trace "X" ((trace "X" (addErrorMessage (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" ('W')) (trace "X" (((:) (trace "X" ('C')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('T')) (trace "X" (((:) (trace "X" ('y')) (trace "X" ([])))))))))))))))))))))))))))))))))))))) + (trace "X" ((case (trace "X" (tbody')) of { + HaskTypeOfSomeKind __U03ba_ h -> + (trace "X" (let {s = (trace "X" ((trace "X" (eqd_dec (trace "X" (kindEqDecidable)) (trace "X" (__U03ba_)) (trace "X" (KindStar))))))} in + (trace "X" (case (trace "X" (s)) of { + Prelude.True -> (trace "X" (OK (trace "X" ((HaskTypeOfSomeKind (trace "X" (KindStar)) (trace "X" ((\_ x -> (trace "X" (TCode (trace "X" ((TVar (trace "X" ((trace "X" ((weakTypeVarToKind (trace "X" ((trace "X" ((fixkind (trace "X" (KindStar)) (trace "X" (ec)))))))))))) (trace "X" ((trace "X" ((ec' (trace "X" (__)) (trace "X" (x)))))))))) (trace "X" ((trace "X" ((eq_rect_r (trace "X" (KindStar)) (trace "X" ((\h0 -> (trace "X" ((trace "X" (h0 (trace "X" (__)) (trace "X" (x))))))))) (trace "X" (__U03ba_)) (trace "X" (h))))))))))))))))); + Prelude.False -> (trace "X" (Error (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" (((:) (trace "X" ('K')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('m')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('m')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('h')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('W')) (trace "X" (((:) (trace "X" ('C')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('T')) (trace "X" (((:) (trace "X" ('y')) (trace "X" (((:) (trace "X" (':')) (trace "X" (((:) (trace "X" (' ')) (trace "X" ([])))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) (trace "X" ((trace "X" ((toString (trace "X" (kindToString0)) (trace "X" (__U03ba_)))))))))))) (trace "X" (((:) (trace "X" (' ')) (trace "X" ([])))))))))) (trace "X" ((trace "X" ((toString (trace "X" (kindToString0)) (trace "X" (KindStar))))))))))))))}))))}))))))))))))))))))))); + WCoFunTy t1 t2 t3 -> + (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((weakTypeToType (trace "X" (__U0393_0)) (trace "X" (__U03c6_0)) (trace "X" (t1))))))) (trace "X" ((\t1' -> + (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((weakTypeToType (trace "X" (__U0393_0)) (trace "X" (__U03c6_0)) (trace "X" (t2))))))) (trace "X" ((\t2' -> + (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((weakTypeToType (trace "X" (__U0393_0)) (trace "X" (__U03c6_0)) (trace "X" (t3))))))) (trace "X" ((\t3' -> + (trace "X" ((trace "X" (addErrorMessage (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" ('W')) (trace "X" (((:) (trace "X" ('C')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('F')) (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('T')) (trace "X" (((:) (trace "X" ('y')) (trace "X" ([]))))))))))))))))))))))))))))))))))))))))) + (trace "X" ((case (trace "X" (t1')) of { + HaskTypeOfSomeKind k1' t1'0 -> + (trace "X" (case (trace "X" (t2')) of { + HaskTypeOfSomeKind k2' t2'0 -> + (trace "X" (case (trace "X" (t3')) of { + HaskTypeOfSomeKind k3' t3'0 -> + (trace "X" (let {s = (trace "X" ((trace "X" (eqd_dec (trace "X" (kindEqDecidable)) (trace "X" (k1')) (trace "X" (k2'))))))} in + (trace "X" (case (trace "X" (s)) of { + Prelude.True -> + (trace "X" ((trace "X" (eq_rect_r (trace "X" (k2')) (trace "X" ((\t1'1 -> + (trace "X" (let {s0 = (trace "X" ((trace "X" (eqd_dec (trace "X" (kindEqDecidable)) (trace "X" (k3')) (trace "X" (KindStar))))))} in + (trace "X" (case (trace "X" (s0)) of { + Prelude.True -> (trace "X" ((trace "X" (eq_rect_r (trace "X" (KindStar)) (trace "X" ((\t3'1 -> (trace "X" (OK (trace "X" ((HaskTypeOfSomeKind (trace "X" (KindStar)) (trace "X" ((\_ env -> (trace "X" (TCoerc (trace "X" (k2')) (trace "X" ((trace "X" ((t1'1 (trace "X" (__)) (trace "X" (env))))))) (trace "X" ((trace "X" ((t2'0 (trace "X" (__)) (trace "X" (env))))))) (trace "X" ((trace "X" ((t3'1 (trace "X" (__)) (trace "X" (env)))))))))))))))))))) (trace "X" (k3')) (trace "X" (t3'0)))))); + Prelude.False -> (trace "X" (Error (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" (((:) (trace "X" ('K')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('m')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('m')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('h')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('l')) (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" ('W')) (trace "X" (((:) (trace "X" ('C')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('F')) (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('T')) (trace "X" (((:) (trace "X" ('y')) (trace "X" ([]))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) (trace "X" ((trace "X" ((toString (trace "X" (kindToString0)) (trace "X" (k3')))))))))))) (trace "X" (((:) (trace "X" (' ')) (trace "X" ([])))))))))) (trace "X" ((trace "X" ((toString (trace "X" (kindToString0)) (trace "X" (KindStar))))))))))))))}))))))) (trace "X" (k1')) (trace "X" (t1'0)))))); + Prelude.False -> (trace "X" (Error (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" (((:) (trace "X" ('K')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('m')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('m')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('h')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('g')) (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('m')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('f')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('W')) (trace "X" (((:) (trace "X" ('C')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('F')) (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('T')) (trace "X" (((:) (trace "X" ('y')) (trace "X" ([])))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) (trace "X" ((trace "X" ((toString (trace "X" (kindToString0)) (trace "X" (k1')))))))))))) (trace "X" (((:) (trace "X" (' ')) (trace "X" ([])))))))))) (trace "X" ((trace "X" ((toString (trace "X" (kindToString0)) (trace "X" (k2'))))))))))))))}))))}))}))})))))))))))))))))))))))))))); + WForAllTy wtv t0 -> + (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((weakTypeToType (trace "X" (((:) (trace "X" ((trace "X" ((weakTypeVarToKind (trace "X" (wtv))))))) (trace "X" (__U0393_0))))) (trace "X" ((trace "X" ((up__U03c6_ (trace "X" (__U0393_0)) (trace "X" (wtv)) (trace "X" (__U03c6_0))))))) (trace "X" (t0))))))) (trace "X" ((\t1 -> + (trace "X" ((trace "X" (addErrorMessage (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" ('W')) (trace "X" (((:) (trace "X" ('F')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('A')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('T')) (trace "X" (((:) (trace "X" ('y')) (trace "X" ([])))))))))))))))))))))))))))))))))))))))))))) + (trace "X" ((case (trace "X" (t1)) of { + HaskTypeOfSomeKind __U03ba_ h -> + (trace "X" (let {s = (trace "X" ((trace "X" (eqd_dec (trace "X" (kindEqDecidable)) (trace "X" (KindStar)) (trace "X" (__U03ba_))))))} in + (trace "X" (case (trace "X" (s)) of { + Prelude.True -> (trace "X" ((trace "X" (eq_rect (trace "X" (KindStar)) (trace "X" ((\h0 -> (trace "X" (OK (trace "X" ((HaskTypeOfSomeKind (trace "X" (KindStar)) (trace "X" ((\_ -> (trace "X" ((trace "X" (mkTAll (trace "X" ((trace "X" ((weakTypeVarToKind (trace "X" (wtv))))))) (trace "X" (__U0393_0)) (trace "X" (h0))))))))))))))))) (trace "X" (__U03ba_)) (trace "X" (h)))))); + Prelude.False -> (trace "X" (Error (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" (((:) (trace "X" ('K')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('m')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('m')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('h')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('W')) (trace "X" (((:) (trace "X" ('F')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('A')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('T')) (trace "X" (((:) (trace "X" ('y')) (trace "X" (((:) (trace "X" (':')) (trace "X" (((:) (trace "X" (' ')) (trace "X" ([])))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) (trace "X" ((trace "X" ((toString (trace "X" (kindToString0)) (trace "X" (KindStar)))))))))))) (trace "X" (((:) (trace "X" (' ')) (trace "X" ([])))))))))) (trace "X" ((trace "X" ((toString (trace "X" (kindToString0)) (trace "X" (__U03ba_))))))))))))))}))))})))))))))))))); + WClassP c lt -> (trace "X" (Error (trace "X" (((:) (trace "X" ('w')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('k')) (trace "X" (((:) (trace "X" ('T')) (trace "X" (((:) (trace "X" ('y')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('T')) (trace "X" (((:) (trace "X" ('o')) (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" ('W')) (trace "X" (((:) (trace "X" ('C')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('P')) (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" ('i')) (trace "X" (((:) (trace "X" ('m')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('m')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('d')) (trace "X" ([]))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))); + WIParam c ty -> (trace "X" (Error (trace "X" (((:) (trace "X" ('w')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('k')) (trace "X" (((:) (trace "X" ('T')) (trace "X" (((:) (trace "X" ('y')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('T')) (trace "X" (((:) (trace "X" ('o')) (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" ('W')) (trace "X" (((:) (trace "X" ('I')) (trace "X" (((:) (trace "X" ('P')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('m')) (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" ('i')) (trace "X" (((:) (trace "X" ('m')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('m')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('d')) (trace "X" ([])))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))}))))))) + +weakTypeToType' :: TyCon.TyCon -> DataCon -> TypeEnv -> (IList Kind HaskType) -> WeakType -> OrError HaskType +weakTypeToType' tc dc __U0393_0 avars ct = + (trace "X" ((trace "X" (addErrorMessage (trace "X" (((:) (trace "X" ('w')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('k')) (trace "X" (((:) (trace "X" ('T')) (trace "X" (((:) (trace "X" ('y')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('T')) (trace "X" (((:) (trace "X" ('o')) (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" ((let {avars' = (trace "X" ((trace "X" (ilmap (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((length (trace "X" ((trace "X" ((tyConTyVars (trace "X" ((trace "X" (((\x -> x) (trace "X" (tc))))))))))))))))) (trace "X" ((trace "X" ((tyConKinds (trace "X" ((trace "X" (((\x -> x) (trace "X" (tc))))))))))))))))) (trace "X" ((\x x0 _ -> (trace "X" ((trace "X" (weakT' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((length (trace "X" ((trace "X" ((dataConExTyVars (trace "X" ((trace "X" ((dataConToCoreDataCon (trace "X" (tc)) (trace "X" (dc))))))))))))))))) (trace "X" ((trace "X" ((dataConExKinds (trace "X" ((trace "X" ((dataConToCoreDataCon (trace "X" (tc)) (trace "X" (dc))))))))))))))))) (trace "X" (x)) (trace "X" (x0))))))))) (trace "X" (avars))))))} in + (trace "X" (let {q = (trace "X" ((trace "X" (subst__U03c6_ (trace "X" ((trace "X" ((app (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((length (trace "X" ((trace "X" ((dataConExTyVars (trace "X" ((trace "X" ((dataConToCoreDataCon (trace "X" (tc)) (trace "X" (dc))))))))))))))))) (trace "X" ((trace "X" ((dataConExKinds (trace "X" ((trace "X" ((dataConToCoreDataCon (trace "X" (tc)) (trace "X" (dc))))))))))))))))) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((length (trace "X" ((trace "X" ((tyConTyVars (trace "X" ((trace "X" (((\x -> x) (trace "X" (tc))))))))))))))))) (trace "X" ((trace "X" ((tyConKinds (trace "X" ((trace "X" (((\x -> x) (trace "X" (tc))))))))))))))))) (trace "X" (avars'))))))} in + (trace "X" (let {__U03c6_' = (trace "X" ((trace "X" (up__U03c6_' (trace "X" ((trace "X" ((map (trace "X" ((\x -> (trace "X" ((trace "X" (weakTypeVarToKind (trace "X" (x))))))))) (trace "X" ((trace "X" ((dataConExTyVars (trace "X" ((trace "X" ((dataConToCoreDataCon (trace "X" (tc)) (trace "X" (dc))))))))))))))))) (trace "X" ((trace "X" ((tyConTyVars (trace "X" ((trace "X" (((\x -> x) (trace "X" (tc)))))))))))) (trace "X" ((trace "X" ((mkPhi (trace "X" ((trace "X" ((dataConExTyVars (trace "X" ((trace "X" ((dataConToCoreDataCon (trace "X" (tc)) (trace "X" (dc)))))))))))))))))))))} in + (trace "X" (let {t = (trace "X" ((trace "X" (weakTypeToType (trace "X" ((trace "X" ((app (trace "X" ((trace "X" ((map (trace "X" ((\tv -> (trace "X" ((trace "X" (weakTypeVarToKind (trace "X" (tv))))))))) (trace "X" ((trace "X" ((tyConTyVars (trace "X" ((trace "X" (((\x -> x) (trace "X" (tc))))))))))))))))) (trace "X" ((trace "X" ((map (trace "X" ((\x -> (trace "X" ((trace "X" (weakTypeVarToKind (trace "X" (x))))))))) (trace "X" ((trace "X" ((dataConExTyVars (trace "X" ((trace "X" ((dataConToCoreDataCon (trace "X" (tc)) (trace "X" (dc)))))))))))))))))))))) (trace "X" (__U03c6_')) (trace "X" (ct))))))} in + (trace "X" (case (trace "X" (t)) of { + Error error_message -> (trace "X" (Error (trace "X" (error_message)))); + OK t0 -> + (trace "X" (case (trace "X" (t0)) of { + HaskTypeOfSomeKind tk t1 -> + (trace "X" (let {s = (trace "X" ((trace "X" (eqd_dec (trace "X" (kindEqDecidable)) (trace "X" (tk)) (trace "X" (KindStar))))))} in + (trace "X" (case (trace "X" (s)) of { + Prelude.True -> (trace "X" ((trace "X" (eq_rect_r (trace "X" (KindStar)) (trace "X" ((\t2 -> (trace "X" (OK (trace "X" ((let {t' = (trace "X" (\_ -> (trace "X" ((trace "X" (weakT'' (trace "X" ((trace "X" ((app (trace "X" ((trace "X" ((map (trace "X" ((\tv -> (trace "X" ((trace "X" (weakTypeVarToKind (trace "X" (tv))))))))) (trace "X" ((trace "X" ((tyConTyVars (trace "X" ((trace "X" (((\x -> x) (trace "X" (tc))))))))))))))))) (trace "X" ((trace "X" ((map (trace "X" ((\x -> (trace "X" ((trace "X" (weakTypeVarToKind (trace "X" (x))))))))) (trace "X" ((trace "X" ((dataConExTyVars (trace "X" ((trace "X" ((dataConToCoreDataCon (trace "X" (tc)) (trace "X" (dc)))))))))))))))))))))) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (t2))))))))} in (trace "X" (let {t'' = (trace "X" (\_ -> (trace "X" ((trace "X" (lamer (trace "X" ((trace "X" ((map (trace "X" ((\tv -> (trace "X" ((trace "X" (weakTypeVarToKind (trace "X" (tv))))))))) (trace "X" ((trace "X" ((tyConTyVars (trace "X" ((trace "X" (((\x -> x) (trace "X" (tc))))))))))))))))) (trace "X" ((trace "X" ((map (trace "X" ((\x -> (trace "X" ((trace "X" (weakTypeVarToKind (trace "X" (x))))))))) (trace "X" ((trace "X" ((dataConExTyVars (trace "X" ((trace "X" ((dataConToCoreDataCon (trace "X" (tc)) (trace "X" (dc))))))))))))))))) (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (t'))))))))} in (trace "X" ((\_ -> (trace "X" ((trace "X" (q (trace "X" (KindStar)) (trace "X" ((trace "X" ((eq_rect (trace "X" ((trace "X" ((map (trace "X" ((\x -> (trace "X" ((trace "X" (weakTypeVarToKind (trace "X" (x))))))))) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((length (trace "X" ((trace "X" ((tyConTyVars (trace "X" ((trace "X" (((\x -> x) (trace "X" (tc))))))))))))))))) (trace "X" ((trace "X" ((list2vec (trace "X" ((trace "X" ((tyConTyVars (trace "X" ((trace "X" (((\x -> x) (trace "X" (tc))))))))))))))))))))))))))) (trace "X" ((trace "X" ((eq_rect (trace "X" ((trace "X" ((map (trace "X" ((\x -> (trace "X" ((trace "X" (weakTypeVarToKind (trace "X" (x))))))))) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((length (trace "X" ((trace "X" ((dataConExTyVars (trace "X" ((trace "X" ((dataConToCoreDataCon (trace "X" (tc)) (trace "X" (dc))))))))))))))))) (trace "X" ((trace "X" ((list2vec (trace "X" ((trace "X" ((dataConExTyVars (trace "X" ((trace "X" ((dataConToCoreDataCon (trace "X" (tc)) (trace "X" (dc))))))))))))))))))))))))))) (trace "X" ((trace "X" ((eq_rect_r (trace "X" ((trace "X" ((tyConTyVars (trace "X" ((trace "X" (((\x -> x) (trace "X" (tc)))))))))))) (trace "X" ((trace "X" ((eq_rect_r (trace "X" ((trace "X" ((dataConExTyVars (trace "X" ((trace "X" ((dataConToCoreDataCon (trace "X" (tc)) (trace "X" (dc)))))))))))) (trace "X" (t'')) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((length (trace "X" ((trace "X" ((dataConExTyVars (trace "X" ((trace "X" ((dataConToCoreDataCon (trace "X" (tc)) (trace "X" (dc))))))))))))))))) (trace "X" ((trace "X" ((list2vec (trace "X" ((trace "X" ((dataConExTyVars (trace "X" ((trace "X" ((dataConToCoreDataCon (trace "X" (tc)) (trace "X" (dc))))))))))))))))))))))))))) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((length (trace "X" ((trace "X" ((tyConTyVars (trace "X" ((trace "X" (((\x -> x) (trace "X" (tc))))))))))))))))) (trace "X" ((trace "X" ((list2vec (trace "X" ((trace "X" ((tyConTyVars (trace "X" ((trace "X" (((\x -> x) (trace "X" (tc))))))))))))))))))))))))))) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((length (trace "X" ((trace "X" ((dataConExTyVars (trace "X" ((trace "X" ((dataConToCoreDataCon (trace "X" (tc)) (trace "X" (dc))))))))))))))))) (trace "X" ((trace "X" ((vec_map (trace "X" ((trace "X" ((length (trace "X" ((trace "X" ((dataConExTyVars (trace "X" ((trace "X" ((dataConToCoreDataCon (trace "X" (tc)) (trace "X" (dc))))))))))))))))) (trace "X" ((\x -> (trace "X" ((trace "X" (weakTypeVarToKind (trace "X" (x))))))))) (trace "X" ((trace "X" ((list2vec (trace "X" ((trace "X" ((dataConExTyVars (trace "X" ((trace "X" ((dataConToCoreDataCon (trace "X" (tc)) (trace "X" (dc)))))))))))))))))))))))))))))))) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((length (trace "X" ((trace "X" ((tyConTyVars (trace "X" ((trace "X" (((\x -> x) (trace "X" (tc))))))))))))))))) (trace "X" ((trace "X" ((vec_map (trace "X" ((trace "X" ((length (trace "X" ((trace "X" ((tyConTyVars (trace "X" ((trace "X" (((\x -> x) (trace "X" (tc))))))))))))))))) (trace "X" ((\x -> (trace "X" ((trace "X" (weakTypeVarToKind (trace "X" (x))))))))) (trace "X" ((trace "X" ((list2vec (trace "X" ((trace "X" ((tyConTyVars (trace "X" ((trace "X" (((\x -> x) (trace "X" (tc))))))))))))))))))))))))))))))))))))))))))))))))) (trace "X" (tk)) (trace "X" (t1)))))); + Prelude.False -> (trace "X" (Error (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" (((:) (trace "X" ('w')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('k')) (trace "X" (((:) (trace "X" ('T')) (trace "X" (((:) (trace "X" ('y')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('T')) (trace "X" (((:) (trace "X" ('o')) (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" ((toString (trace "X" (kindToString0)) (trace "X" (tk)))))))))))) (trace "X" (((:) (trace "X" (' ')) (trace "X" ([])))))))))) (trace "X" ((trace "X" ((toString (trace "X" (kindToString0)) (trace "X" (KindStar))))))))))))))}))))}))}))))))))))))))) + +mkStrongAltCon :: TyCon.TyCon -> DataCon -> StrongAltCon +mkStrongAltCon tc dc = + (trace "X" (Build_StrongAltCon (trace "X" ((WeakDataAlt (trace "X" ((trace "X" ((dataConToCoreDataCon (trace "X" (tc)) (trace "X" (dc)))))))))) (trace "X" ((trace "X" ((length (trace "X" ((trace "X" ((dataConExTyVars (trace "X" ((trace "X" ((dataConToCoreDataCon (trace "X" (tc)) (trace "X" (dc))))))))))))))))) (trace "X" ((trace "X" ((length (trace "X" ((trace "X" ((dataConCoerKinds (trace "X" ((trace "X" ((dataConToCoreDataCon (trace "X" (tc)) (trace "X" (dc))))))))))))))))) (trace "X" ((trace "X" ((length (trace "X" ((trace "X" ((dataConFieldTypes (trace "X" ((trace "X" ((dataConToCoreDataCon (trace "X" (tc)) (trace "X" (dc))))))))))))))))) (trace "X" ((trace "X" ((dataConExKinds (trace "X" ((trace "X" ((dataConToCoreDataCon (trace "X" (tc)) (trace "X" (dc)))))))))))) (trace "X" ((\__U0393_0 avars -> + (trace "X" ((trace "X" (vec_map (trace "X" ((trace "X" ((length (trace "X" ((trace "X" ((dataConCoerKinds (trace "X" ((trace "X" ((dataConToCoreDataCon (trace "X" (tc)) (trace "X" (dc))))))))))))))))) (trace "X" ((\x -> + (trace "X" (case (trace "X" (x)) of { + (,) w w0 -> + (trace "X" (let {q = (trace "X" ((trace "X" (weakTypeToType' (trace "X" (tc)) (trace "X" (dc)) (trace "X" (__U0393_0))))))} in + (trace "X" (let {q0 = (trace "X" ((trace "X" (eq_rect_r (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((length (trace "X" ((trace "X" ((tyConTyVars (trace "X" ((trace "X" (((\x -> x) (trace "X" (tc))))))))))))))))) (trace "X" ((trace "X" ((vec_map (trace "X" ((trace "X" ((length (trace "X" ((trace "X" ((tyConTyVars (trace "X" ((trace "X" (((\x -> x) (trace "X" (tc))))))))))))))))) (trace "X" ((\x0 -> (trace "X" ((trace "X" (weakTypeVarToKind (trace "X" (x0))))))))) (trace "X" ((trace "X" ((list2vec (trace "X" ((trace "X" ((tyConTyVars (trace "X" ((trace "X" (((\x -> x) (trace "X" (tc))))))))))))))))))))))))))) (trace "X" (q)) (trace "X" ((trace "X" ((map (trace "X" ((\x0 -> (trace "X" ((trace "X" (weakTypeVarToKind (trace "X" (x0))))))))) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((length (trace "X" ((trace "X" ((tyConTyVars (trace "X" ((trace "X" (((\x -> x) (trace "X" (tc))))))))))))))))) (trace "X" ((trace "X" ((list2vec (trace "X" ((trace "X" ((tyConTyVars (trace "X" ((trace "X" (((\x -> x) (trace "X" (tc)))))))))))))))))))))))))))))))} in + (trace "X" (let {q1 = (trace "X" ((trace "X" (eq_rect (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((length (trace "X" ((trace "X" ((tyConTyVars (trace "X" ((trace "X" (((\x -> x) (trace "X" (tc))))))))))))))))) (trace "X" ((trace "X" ((list2vec (trace "X" ((trace "X" ((tyConTyVars (trace "X" ((trace "X" (((\x -> x) (trace "X" (tc)))))))))))))))))))))) (trace "X" (q0)) (trace "X" ((trace "X" ((tyConTyVars (trace "X" ((trace "X" (((\x -> x) (trace "X" (tc))))))))))))))))} in + (trace "X" (case (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((q1 (trace "X" (avars)) (trace "X" (w))))))) (trace "X" ((\t1 -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((q1 (trace "X" (avars)) (trace "X" (w0))))))) (trace "X" ((\t2 -> (trace "X" (OK (trace "X" ((\_ -> (trace "X" ((trace "X" (mkHaskCoercionKind (trace "X" ((trace "X" ((app (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((length (trace "X" ((trace "X" ((dataConExTyVars (trace "X" ((trace "X" ((dataConToCoreDataCon (trace "X" (tc)) (trace "X" (dc))))))))))))))))) (trace "X" ((trace "X" ((dataConExKinds (trace "X" ((trace "X" ((dataConToCoreDataCon (trace "X" (tc)) (trace "X" (dc))))))))))))))))) (trace "X" (__U0393_0))))))) (trace "X" (KindStar)) (trace "X" (t1)) (trace "X" (t2))))))))))))))))))))))))) of { + Error s -> (trace "X" ((trace "X" (Prelude.error (trace "X" (s)))))); + OK y -> (trace "X" (y))}))))))))}))))) (trace "X" ((trace "X" ((list2vec (trace "X" ((trace "X" ((dataConCoerKinds (trace "X" ((trace "X" ((dataConToCoreDataCon (trace "X" (tc)) (trace "X" (dc)))))))))))))))))))))))) (trace "X" ((\__U0393_0 avars -> + (trace "X" ((trace "X" (vec_map (trace "X" ((trace "X" ((length (trace "X" ((trace "X" ((dataConFieldTypes (trace "X" ((trace "X" ((dataConToCoreDataCon (trace "X" (tc)) (trace "X" (dc))))))))))))))))) (trace "X" ((\x -> + (trace "X" (let {q = (trace "X" ((trace "X" (weakTypeToType' (trace "X" (tc)) (trace "X" (dc)) (trace "X" (__U0393_0))))))} in + (trace "X" (let {q0 = (trace "X" ((trace "X" (eq_rect_r (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((length (trace "X" ((trace "X" ((tyConTyVars (trace "X" ((trace "X" (((\x -> x) (trace "X" (tc))))))))))))))))) (trace "X" ((trace "X" ((vec_map (trace "X" ((trace "X" ((length (trace "X" ((trace "X" ((tyConTyVars (trace "X" ((trace "X" (((\x -> x) (trace "X" (tc))))))))))))))))) (trace "X" ((\x0 -> (trace "X" ((trace "X" (weakTypeVarToKind (trace "X" (x0))))))))) (trace "X" ((trace "X" ((list2vec (trace "X" ((trace "X" ((tyConTyVars (trace "X" ((trace "X" (((\x -> x) (trace "X" (tc))))))))))))))))))))))))))) (trace "X" (q)) (trace "X" ((trace "X" ((map (trace "X" ((\x0 -> (trace "X" ((trace "X" (weakTypeVarToKind (trace "X" (x0))))))))) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((length (trace "X" ((trace "X" ((tyConTyVars (trace "X" ((trace "X" (((\x -> x) (trace "X" (tc))))))))))))))))) (trace "X" ((trace "X" ((list2vec (trace "X" ((trace "X" ((tyConTyVars (trace "X" ((trace "X" (((\x -> x) (trace "X" (tc)))))))))))))))))))))))))))))))} in + (trace "X" (let {q1 = (trace "X" ((trace "X" (eq_rect (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((length (trace "X" ((trace "X" ((tyConTyVars (trace "X" ((trace "X" (((\x -> x) (trace "X" (tc))))))))))))))))) (trace "X" ((trace "X" ((list2vec (trace "X" ((trace "X" ((tyConTyVars (trace "X" ((trace "X" (((\x -> x) (trace "X" (tc)))))))))))))))))))))) (trace "X" (q0)) (trace "X" ((trace "X" ((tyConTyVars (trace "X" ((trace "X" (((\x -> x) (trace "X" (tc))))))))))))))))} in + (trace "X" (let {y = (trace "X" ((trace "X" (q1 (trace "X" (avars)) (trace "X" (x))))))} in + (trace "X" (case (trace "X" (y)) of { + Error s -> (trace "X" ((trace "X" (Prelude.error (trace "X" (s)))))); + OK y' -> (trace "X" (y'))}))))))))))))) (trace "X" ((trace "X" ((list2vec (trace "X" ((trace "X" ((dataConFieldTypes (trace "X" ((trace "X" ((dataConToCoreDataCon (trace "X" (tc)) (trace "X" (dc)))))))))))))))))))))))))) + +weakCV' :: TypeEnv -> CoercionEnv -> (([]) Kind) -> HaskCoVar -> (InstantiatedTypeEnv a1) -> (InstantiatedCoercionEnv a1 a2) -> a2 +weakCV' __U0393_0 __U0394_0 __U0393_' x env cenv = + (trace "X" ((trace "X" (unsafeCoerce (trace "X" (x)) (trace "X" (__)) (trace "X" (__)) (trace "X" ((trace "X" ((ilist_chop' (trace "X" (__U0393_')) (trace "X" (__U0393_0)) (trace "X" (env))))))) (trace "X" ((trace "X" ((eq_rect_r (trace "X" ((trace "X" ((length (trace "X" ((trace "X" ((map (trace "X" ((\x0 _ -> (trace "X" ((trace "X" (weakCK' (trace "X" (__U0393_0)) (trace "X" (__U0393_')) (trace "X" (x0))))))))) (trace "X" (__U0394_0)))))))))))) (trace "X" (cenv)) (trace "X" ((trace "X" ((length (trace "X" (__U0394_0)))))))))))))))) + +mkStrongAltConPlusJunk :: TyCon.TyCon -> DataCon -> StrongAltConPlusJunk +mkStrongAltConPlusJunk tc dc = + (trace "X" (Build_StrongAltConPlusJunk (trace "X" ((trace "X" ((mkStrongAltCon (trace "X" (tc)) (trace "X" (dc))))))) (trace "X" ((\__U0393_0 __U03c6_0 htv -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((__U03c6_0 (trace "X" (htv))))))) (trace "X" ((\htv' -> (trace "X" (OK (trace "X" ((\_ -> (trace "X" ((trace "X" (weakV' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" ((trace "X" ((mkStrongAltCon (trace "X" (tc)) (trace "X" (dc)))))))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" ((trace "X" ((mkStrongAltCon (trace "X" (tc)) (trace "X" (dc))))))))))))))))) (trace "X" ((trace "X" ((weakTypeVarToKind (trace "X" (htv))))))) (trace "X" (htv'))))))))))))))))))))) (trace "X" ((\__U0393_0 __U0394_0 avars __U03c8_0 htv -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((__U03c8_0 (trace "X" (htv))))))) (trace "X" ((\htv' -> (trace "X" (OK (trace "X" ((\_ _ env cenv -> (trace "X" ((trace "X" (weakCV' (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" ((trace "X" ((mkStrongAltCon (trace "X" (tc)) (trace "X" (dc)))))))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" ((trace "X" ((mkStrongAltCon (trace "X" (tc)) (trace "X" (dc))))))))))))))))) (trace "X" (htv')) (trace "X" (env)) (trace "X" ((trace "X" ((vec_chop' (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numCoerVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" ((trace "X" ((mkStrongAltCon (trace "X" (tc)) (trace "X" (dc)))))))))))) (trace "X" ((trace "X" ((sac_coercions (trace "X" ((Prelude.error "Proj Args"))) (trace "X" ((trace "X" ((mkStrongAltCon (trace "X" (tc)) (trace "X" (dc))))))) (trace "X" (__U0393_0)) (trace "X" (avars)))))))))))) (trace "X" ((trace "X" ((weakCK'' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((length (trace "X" ((trace "X" ((dataConExTyVars (trace "X" ((trace "X" ((dataConToCoreDataCon (trace "X" (tc)) (trace "X" (dc))))))))))))))))) (trace "X" ((trace "X" ((dataConExKinds (trace "X" ((trace "X" ((dataConToCoreDataCon (trace "X" (tc)) (trace "X" (dc))))))))))))))))) (trace "X" (__U0394_0))))))) (trace "X" (cenv)))))))))))))))))))))))))))) + +mkStrongAltConPlusJunk' :: TyCon.TyCon -> WeakAltCon -> OrError StrongAltConPlusJunk +mkStrongAltConPlusJunk' tc alt = + (trace "X" (case (trace "X" (alt)) of { + WeakDataAlt c -> + (trace "X" (let {tc' = (trace "X" ((trace "X" (DataCon.dataConTyCon (trace "X" (c))))))} in + (trace "X" (let {eqpf = (trace "X" ((trace "X" (eqd_dec (trace "X" (tyConEqDecidable)) (trace "X" (tc)) (trace "X" (tc'))))))} in + (trace "X" (case (trace "X" (eqpf)) of { + Prelude.True -> (trace "X" ((trace "X" (eq_rect_r (trace "X" (tc')) (trace "X" ((OK (trace "X" ((trace "X" ((mkStrongAltConPlusJunk (trace "X" (tc')) (trace "X" (c)))))))))) (trace "X" (tc)))))); + Prelude.False -> (trace "X" (Error (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" (' ')) (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" ('o')) (trace "X" (((:) (trace "X" ('f')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('y')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" (' ')) (trace "X" ([]))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) (trace "X" ((trace "X" ((toString (trace "X" (tyConToString)) (trace "X" (tc)))))))))))) (trace "X" (((:) (trace "X" (',')) (trace "X" (((:) (trace "X" (' ')) (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" ('a')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('b')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('h')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('w')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('h')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" (' ')) (trace "X" ([]))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) (trace "X" ((trace "X" ((toString (trace "X" (coreDataConToString)) (trace "X" ((trace "X" ((dataConToCoreDataCon (trace "X" (tc')) (trace "X" (c)))))))))))))))))))})))))); + x -> (trace "X" (OK (trace "X" ((Build_StrongAltConPlusJunk (trace "X" ((Build_StrongAltCon (trace "X" (x)) (trace "X" (O)) (trace "X" (O)) (trace "X" (O)) (trace "X" (Vec_nil)) (trace "X" ((\__U0393_0 atypes -> (trace "X" (Vec_nil))))) (trace "X" ((\__U0393_0 atypes -> (trace "X" (Vec_nil)))))))) (trace "X" ((\__U0393_0 __U03c6_0 -> (trace "X" (__U03c6_0))))) (trace "X" ((\__U0393_0 __U0394_0 atypes __U03c8_0 -> (trace "X" ((trace "X" (eq_rect_r (trace "X" (__U0394_0)) (trace "X" (__U03c8_0)) (trace "X" ((trace "X" ((weakCK'' (trace "X" (__U0393_0)) (trace "X" (([]))) (trace "X" (__U0394_0)))))))))))))))))))})) + +weakExprVarToWeakType :: WeakExprVar0 -> WeakType +weakExprVarToWeakType wev = + (trace "X" (case (trace "X" (wev)) of { + WeakExprVar c t -> (trace "X" (t))})) + +weak__U03c8_ :: TypeEnv -> CoercionEnv -> HaskCoercionKind -> (WeakCoerVar0 -> OrError HaskCoVar) -> WeakCoerVar0 -> OrError HaskCoVar +weak__U03c8_ __U0393_0 __U0394_0 __U03ba_ __U03c8_0 x = + (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((__U03c8_0 (trace "X" (x))))))) (trace "X" ((\x0 -> (trace "X" (OK (trace "X" ((\_ _ env cenv -> + (trace "X" (case (trace "X" (cenv)) of { + Vec_nil -> (trace "X" (false_rect)); + Vec_cons n x1 x2 -> (trace "X" ((trace "X" (eq_rect (trace "X" ((trace "X" ((length (trace "X" (__U0394_0))))))) (trace "X" ((\x3 x4 -> (trace "X" (x3))))) (trace "X" (n)) (trace "X" (x1)) (trace "X" (x2))))))})))))))))))))) + +castExpr :: WeakExpr -> Prelude.String -> TypeEnv -> CoercionEnv -> (Var.Var -> LeveledHaskType) -> LeveledHaskType -> LeveledHaskType -> (Expr Var.Var) -> OrError (Expr Var.Var) +castExpr we err_msg __U0393_0 __U0394_0 __U03be_0 __U03c4_ __U03c4_' e = + (trace "X" ((trace "X" (addErrorMessage (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('E')) (trace "X" (((:) (trace "X" ('x')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" (' ')) (trace "X" ([]))))))))))))))))))))))))))))) (trace "X" (err_msg))))))) + (trace "X" ((case (trace "X" (__U03c4_)) of { + MkLeveledHaskType __U03c4_0 l -> + (trace "X" (case (trace "X" (__U03c4_')) of { + MkLeveledHaskType __U03c4_'0 l' -> + (trace "X" (let {s = (trace "X" ((trace "X" (eqd_dec (trace "X" ((trace "X" ((haskLevelEqDecidable (trace "X" (__U0393_0))))))) (trace "X" (l)) (trace "X" (l'))))))} in + (trace "X" (case (trace "X" (s)) of { + Prelude.True -> + (trace "X" (let {s0 = (trace "X" ((trace "X" (eqd_dec (trace "X" ((trace "X" ((haskTypeEqDecidable (trace "X" (__U0393_0)) (trace "X" (KindStar))))))) (trace "X" (__U03c4_0)) (trace "X" (__U03c4_'0))))))} in + (trace "X" (case (trace "X" (s0)) of { + Prelude.True -> (trace "X" ((trace "X" (eq_rect_r (trace "X" (__U03c4_'0)) (trace "X" ((\e0 -> (trace "X" ((trace "X" (eq_rect_r (trace "X" (l')) (trace "X" ((\e1 -> (trace "X" (OK (trace "X" (e1))))))) (trace "X" (l)) (trace "X" (e0))))))))) (trace "X" (__U03c4_0)) (trace "X" (e)))))); + Prelude.False -> (trace "X" (Error (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (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" ('m')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('m')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('h')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('E')) (trace "X" (((:) (trace "X" ('x')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" (',')) (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" ('k')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('b')) (trace "X" (((:) (trace "X" ('y')) (trace "X" (((:) (trace "X" (' ')) (trace "X" ([])))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) (trace "X" (err_msg))))))) (trace "X" (eol))))))) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('g')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" (':')) (trace "X" (((:) (trace "X" (' ')) (trace "X" ([])))))))))))))))))))))))))))) (trace "X" ((trace "X" ((toString (trace "X" ((trace "X" ((typeToStringInstance (trace "X" (__U0393_0)) (trace "X" (KindStar))))))) (trace "X" (__U03c4_0)))))))))))) (trace "X" (eol))))))) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('w')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('n')) (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" ((trace "X" ((toString (trace "X" ((trace "X" ((typeToStringInstance (trace "X" (__U0393_0)) (trace "X" (KindStar))))))) (trace "X" (__U03c4_'0))))))))))))))})))); + Prelude.False -> (trace "X" (Error (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (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" ('m')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('m')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('h')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('E')) (trace "X" (((:) (trace "X" ('x')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" (',')) (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" ('k')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('b')) (trace "X" (((:) (trace "X" ('y')) (trace "X" (((:) (trace "X" (' ')) (trace "X" ([]))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) (trace "X" (err_msg))))))) (trace "X" (eol))))))) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('g')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" (':')) (trace "X" (((:) (trace "X" (' ')) (trace "X" ([])))))))))))))))))))))))))))) (trace "X" ((trace "X" ((fold_left (trace "X" ((\x y -> (trace "X" ((trace "X" (concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" (y)) (trace "X" (((:) (trace "X" (',')) (trace "X" ([])))))))))) (trace "X" (y))))))))) (trace "X" ((trace "X" ((map (trace "X" ((\x -> (trace "X" ((trace "X" (toString (trace "X" ((trace "X" ((typeToStringInstance (trace "X" (__U0393_0)) (trace "X" (KindStar))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (haskTyVarToType (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x)))))))))))))))) (trace "X" (l))))))) (trace "X" ([])))))))))))) (trace "X" (eol))))))) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('w')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('n')) (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" ((trace "X" ((fold_left (trace "X" ((\x y -> (trace "X" ((trace "X" (concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" (x)) (trace "X" (((:) (trace "X" (',')) (trace "X" ([])))))))))) (trace "X" (y))))))))) (trace "X" ((trace "X" ((map (trace "X" ((\x -> (trace "X" ((trace "X" (toString (trace "X" ((trace "X" ((typeToStringInstance (trace "X" (__U0393_0)) (trace "X" (KindStar))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (haskTyVarToType (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" (x)))))))))))))))) (trace "X" (l'))))))) (trace "X" ([]))))))))))))))}))))}))}))))))) + +coVarKind :: WeakCoerVar0 -> Kind +coVarKind wcv = + (trace "X" (case (trace "X" (wcv)) of { + WeakCoerVar c __U03ba_ w w0 -> (trace "X" (__U03ba_))})) + +weakTypeToTypeOfKind :: TypeEnv -> TyVarResolver -> WeakType -> Kind -> OrError HaskType +weakTypeToTypeOfKind __U0393_0 __U03c6_0 t __U03ba_ = + (trace "X" (let {wt = (trace "X" ((trace "X" (weakTypeToType (trace "X" (__U0393_0)) (trace "X" (__U03c6_0)) (trace "X" (t))))))} in + (trace "X" (case (trace "X" (wt)) of { + Error error_message -> (trace "X" (Error (trace "X" (error_message)))); + OK h -> + (trace "X" (case (trace "X" (h)) of { + HaskTypeOfSomeKind __U03ba_0 h0 -> + (trace "X" (let {s = (trace "X" ((trace "X" (eqd_dec (trace "X" (kindEqDecidable)) (trace "X" (__U03ba_)) (trace "X" (__U03ba_0))))))} in + (trace "X" (case (trace "X" (s)) of { + Prelude.True -> (trace "X" ((trace "X" (eq_rect_r (trace "X" (__U03ba_0)) (trace "X" ((OK (trace "X" (h0))))) (trace "X" (__U03ba_)))))); + Prelude.False -> (trace "X" (Error (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" (((:) (trace "X" ('K')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('m')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('m')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('h')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('w')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('k')) (trace "X" (((:) (trace "X" ('T')) (trace "X" (((:) (trace "X" ('y')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('T')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('T')) (trace "X" (((:) (trace "X" ('y')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('O')) (trace "X" (((:) (trace "X" ('f')) (trace "X" (((:) (trace "X" ('K')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" (' ')) (trace "X" ([]))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) (trace "X" ((trace "X" ((toString (trace "X" (kindToString0)) (trace "X" (__U03ba_)))))))))))) (trace "X" (((:) (trace "X" (' ')) (trace "X" ([])))))))))) (trace "X" ((trace "X" ((toString (trace "X" (kindToString0)) (trace "X" (__U03ba_0))))))))))))))}))))}))})))) + +varsTypes :: TypeEnv -> (Tree (Prelude.Maybe ((,) WeakExprVar0 WeakExpr))) -> TyVarResolver -> Tree (Prelude.Maybe ((,) Var.Var HaskType)) +varsTypes __U0393_0 t __U03c6_0 = + (trace "X" (case (trace "X" (t)) of { + T_Leaf o -> + (trace "X" (case (trace "X" (o)) of { + Prelude.Just p -> + (trace "X" (case (trace "X" (p)) of { + (,) wev e -> + (trace "X" (case (trace "X" ((trace "X" (weakTypeToTypeOfKind (trace "X" (__U0393_0)) (trace "X" (__U03c6_0)) (trace "X" ((trace "X" ((weakExprVarToWeakType (trace "X" (wev))))))) (trace "X" (KindStar)))))) of { + Error error_message -> (trace "X" (T_Leaf (trace "X" (Prelude.Nothing)))); + OK t' -> (trace "X" (T_Leaf (trace "X" ((Prelude.Just (trace "X" (((,) (trace "X" ((trace "X" ((weakVarToCoreVar (trace "X" ((WExprVar (trace "X" (wev)))))))))) (trace "X" (t'))))))))))}))})); + Prelude.Nothing -> (trace "X" (T_Leaf (trace "X" (Prelude.Nothing))))})); + T_Branch b1 b2 -> (trace "X" (T_Branch (trace "X" ((trace "X" ((varsTypes (trace "X" (__U0393_0)) (trace "X" (b1)) (trace "X" (__U03c6_0))))))) (trace "X" ((trace "X" ((varsTypes (trace "X" (__U0393_0)) (trace "X" (b2)) (trace "X" (__U03c6_0)))))))))})) + +mkAvars :: TypeEnv -> (([]) WeakType) -> (([]) Kind) -> TyVarResolver -> OrError (IList Kind HaskType) +mkAvars __U0393_0 wtl lk __U03c6_0 = + (trace "X" (case (trace "X" (lk)) of { + ([]) -> + (trace "X" (case (trace "X" (wtl)) of { + ([]) -> (trace "X" (OK (trace "X" (INil)))); + (:) w l -> (trace "X" (Error (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('g')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('h')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('m')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('m')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('h')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('m')) (trace "X" (((:) (trace "X" ('k')) (trace "X" (((:) (trace "X" ('A')) (trace "X" (((:) (trace "X" ('v')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('s')) (trace "X" ([]))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))})); + (:) k lk' -> + (trace "X" (case (trace "X" (wtl)) of { + ([]) -> (trace "X" (Error (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('g')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('h')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('m')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('m')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('h')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('m')) (trace "X" (((:) (trace "X" ('k')) (trace "X" (((:) (trace "X" ('A')) (trace "X" (((:) (trace "X" ('v')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('s')) (trace "X" ([])))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))); + (:) wt wtl' -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((weakTypeToTypeOfKind (trace "X" (__U0393_0)) (trace "X" (__U03c6_0)) (trace "X" (wt)) (trace "X" (k))))))) (trace "X" ((\t -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((mkAvars (trace "X" (__U0393_0)) (trace "X" (wtl')) (trace "X" (lk')) (trace "X" (__U03c6_0))))))) (trace "X" ((\rest -> (trace "X" (OK (trace "X" ((ICons (trace "X" (k)) (trace "X" (lk')) (trace "X" (t)) (trace "X" (rest)))))))))))))))))))))}))})) + +update_ig :: (Var.Var -> Prelude.Bool) -> (([]) Var.Var) -> Var.Var -> Prelude.Bool +update_ig ig vars = + (trace "X" (case (trace "X" (vars)) of { + ([]) -> (trace "X" (ig)); + (:) v vars' -> (trace "X" ((\v' -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (coreVarEqDecidable)) (trace "X" (v)) (trace "X" (v')))))) of { + Prelude.True -> (trace "X" (Prelude.False)); + Prelude.False -> (trace "X" ((trace "X" (update_ig (trace "X" (ig)) (trace "X" (vars')) (trace "X" (v'))))))})))))})) + +doesWeakVarOccur :: WeakExprVar0 -> WeakExpr -> Prelude.Bool +doesWeakVarOccur wev me = + (trace "X" (case (trace "X" (me)) of { + WEVar cv -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (coreVarEqDecidable)) (trace "X" ((trace "X" ((weakVarToCoreVar (trace "X" ((WExprVar (trace "X" (wev)))))))))) (trace "X" ((trace "X" ((weakVarToCoreVar (trace "X" ((WExprVar (trace "X" (cv)))))))))))))) of { + Prelude.True -> (trace "X" (Prelude.True)); + Prelude.False -> (trace "X" (Prelude.False))})); + WELit h -> (trace "X" (Prelude.False)); + WELet cv e1 e2 -> + (trace "X" (case (trace "X" ((trace "X" (doesWeakVarOccur (trace "X" (wev)) (trace "X" (e1)))))) of { + Prelude.True -> (trace "X" (Prelude.True)); + Prelude.False -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (coreVarEqDecidable)) (trace "X" ((trace "X" ((weakVarToCoreVar (trace "X" ((WExprVar (trace "X" (wev)))))))))) (trace "X" ((trace "X" ((weakVarToCoreVar (trace "X" ((WExprVar (trace "X" (cv)))))))))))))) of { + Prelude.True -> (trace "X" (Prelude.False)); + Prelude.False -> (trace "X" ((trace "X" (doesWeakVarOccur (trace "X" (wev)) (trace "X" (e2))))))}))})); + WELetRec mlr e -> + (trace "X" (case (trace "X" ((trace "X" (doesWeakVarOccur (trace "X" (wev)) (trace "X" (e)))))) of { + Prelude.True -> (trace "X" (Prelude.True)); + Prelude.False -> + (trace "X" ((trace "X" (let { + doesWeakVarOccurLetRec mlr0 = + (trace "X" (case (trace "X" (mlr0)) of { + T_Leaf o -> + (trace "X" (case (trace "X" (o)) of { + Prelude.Just p -> + (trace "X" (case (trace "X" (p)) of { + (,) cv e0 -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (coreVarEqDecidable)) (trace "X" ((trace "X" ((weakVarToCoreVar (trace "X" ((WExprVar (trace "X" (wev)))))))))) (trace "X" ((trace "X" ((weakVarToCoreVar (trace "X" ((WExprVar (trace "X" (cv)))))))))))))) of { + Prelude.True -> (trace "X" (Prelude.False)); + Prelude.False -> (trace "X" ((trace "X" (doesWeakVarOccur (trace "X" (wev)) (trace "X" (e0))))))}))})); + Prelude.Nothing -> (trace "X" (Prelude.False))})); + T_Branch b1 b2 -> + (trace "X" (case (trace "X" ((trace "X" (doesWeakVarOccurLetRec (trace "X" (b1)))))) of { + Prelude.True -> (trace "X" (Prelude.True)); + Prelude.False -> (trace "X" ((trace "X" (doesWeakVarOccurLetRec (trace "X" (b2))))))}))}))} + in doesWeakVarOccurLetRec (trace "X" (mlr))))))})); + WECast e co -> (trace "X" ((trace "X" (doesWeakVarOccur (trace "X" (wev)) (trace "X" (e)))))); + WENote n e -> (trace "X" ((trace "X" (doesWeakVarOccur (trace "X" (wev)) (trace "X" (e)))))); + WEApp e1 e2 -> + (trace "X" (case (trace "X" ((trace "X" (doesWeakVarOccur (trace "X" (wev)) (trace "X" (e1)))))) of { + Prelude.True -> (trace "X" (Prelude.True)); + Prelude.False -> (trace "X" ((trace "X" (doesWeakVarOccur (trace "X" (wev)) (trace "X" (e2))))))})); + WETyApp e t -> (trace "X" ((trace "X" (doesWeakVarOccur (trace "X" (wev)) (trace "X" (e)))))); + WECoApp e co -> (trace "X" ((trace "X" (doesWeakVarOccur (trace "X" (wev)) (trace "X" (e)))))); + WELam cv e -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (coreVarEqDecidable)) (trace "X" ((trace "X" ((weakVarToCoreVar (trace "X" ((WExprVar (trace "X" (wev)))))))))) (trace "X" ((trace "X" ((weakVarToCoreVar (trace "X" ((WExprVar (trace "X" (cv)))))))))))))) of { + Prelude.True -> (trace "X" (Prelude.False)); + Prelude.False -> (trace "X" ((trace "X" (doesWeakVarOccur (trace "X" (wev)) (trace "X" (e))))))})); + WETyLam cv e -> (trace "X" ((trace "X" (doesWeakVarOccur (trace "X" (wev)) (trace "X" (e)))))); + WECoLam cv e -> (trace "X" ((trace "X" (doesWeakVarOccur (trace "X" (wev)) (trace "X" (e)))))); + WEBrak w ec e w0 -> (trace "X" ((trace "X" (doesWeakVarOccur (trace "X" (wev)) (trace "X" (e)))))); + WEEsc w ec e w0 -> (trace "X" ((trace "X" (doesWeakVarOccur (trace "X" (wev)) (trace "X" (e)))))); + WECSP w ec e w0 -> (trace "X" ((trace "X" (doesWeakVarOccur (trace "X" (wev)) (trace "X" (e)))))); + WECase vscrut escrut tbranches tc avars alts -> + (trace "X" (case (trace "X" ((trace "X" (doesWeakVarOccur (trace "X" (wev)) (trace "X" (escrut)))))) of { + Prelude.True -> (trace "X" (Prelude.True)); + Prelude.False -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (coreVarEqDecidable)) (trace "X" ((trace "X" ((weakVarToCoreVar (trace "X" ((WExprVar (trace "X" (wev)))))))))) (trace "X" ((trace "X" ((weakVarToCoreVar (trace "X" ((WExprVar (trace "X" (vscrut)))))))))))))) of { + Prelude.True -> (trace "X" (Prelude.False)); + Prelude.False -> + (trace "X" ((trace "X" (let { + doesWeakVarOccurAlts0 alts0 = + (trace "X" (case (trace "X" (alts0)) of { + T_Leaf y -> + (trace "X" (case (trace "X" (y)) of { + Prelude.Just y0 -> (trace "X" (case (trace "X" (y0)) of { + (,) y1 e -> (trace "X" ((trace "X" (doesWeakVarOccur (trace "X" (wev)) (trace "X" (e))))))})); + Prelude.Nothing -> (trace "X" (Prelude.False))})); + T_Branch b1 b2 -> + (trace "X" (case (trace "X" ((trace "X" (doesWeakVarOccurAlts0 (trace "X" (b1)))))) of { + Prelude.True -> (trace "X" (Prelude.True)); + Prelude.False -> (trace "X" ((trace "X" (doesWeakVarOccurAlts0 (trace "X" (b2))))))}))}))} + in doesWeakVarOccurAlts0 (trace "X" (alts))))))}))}))})) + +doesWeakVarOccurAlts :: WeakExprVar0 -> (Tree (Prelude.Maybe ((,) ((,) ((,) ((,) WeakAltCon (([]) WeakTypeVar0)) (([]) WeakCoerVar0)) (([]) WeakExprVar0)) WeakExpr))) -> Prelude.Bool +doesWeakVarOccurAlts wev alts = + (trace "X" (case (trace "X" (alts)) of { + T_Leaf o -> + (trace "X" (case (trace "X" (o)) of { + Prelude.Just p -> (trace "X" (case (trace "X" (p)) of { + (,) p0 e -> (trace "X" ((trace "X" (doesWeakVarOccur (trace "X" (wev)) (trace "X" (e))))))})); + Prelude.Nothing -> (trace "X" (Prelude.False))})); + T_Branch b1 b2 -> + (trace "X" (case (trace "X" ((trace "X" (doesWeakVarOccurAlts (trace "X" (wev)) (trace "X" (b1)))))) of { + Prelude.True -> (trace "X" (Prelude.True)); + Prelude.False -> (trace "X" ((trace "X" (doesWeakVarOccurAlts (trace "X" (wev)) (trace "X" (b2))))))}))})) + +weakExprToStrongExpr :: TypeEnv -> CoercionEnv -> TyVarResolver -> CoVarResolver -> (Var.Var -> LeveledHaskType) -> (Var.Var -> Prelude.Bool) -> HaskType -> HaskLevel -> WeakExpr -> OrError (Expr Var.Var) +weakExprToStrongExpr __U0393_0 __U0394_0 __U03c6_0 __U03c8_0 __U03be_0 ig __U03c4_ lev we = + (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" (' ')) (trace "X" (((:) (trace "X" ('w')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('k')) (trace "X" (((:) (trace "X" ('E')) (trace "X" (((:) (trace "X" ('x')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('T')) (trace "X" (((:) (trace "X" ('o')) (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" ('E')) (trace "X" (((:) (trace "X" ('x')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" (' ')) (trace "X" ([])))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) (trace "X" ((trace "X" ((toString (trace "X" (weakExprToString)) (trace "X" (we)))))))))))) + (trace "X" ((case (trace "X" (we)) of { + WEVar v -> + (trace "X" (case (trace "X" ((trace "X" (ig (trace "X" ((trace "X" ((weakVarToCoreVar (trace "X" ((WExprVar (trace "X" (v)))))))))))))) of { + Prelude.True -> (trace "X" (OK (trace "X" ((EGlobal (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" ((MkLeveledHaskType (trace "X" (__U03c4_)) (trace "X" (lev))))) (trace "X" (v))))))); + Prelude.False -> (trace "X" ((trace "X" (castExpr (trace "X" (we)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" (((:) (trace "X" ('W')) (trace "X" (((:) (trace "X" ('E')) (trace "X" (((:) (trace "X" ('V')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" (' ')) (trace "X" ([])))))))))))))))))))) (trace "X" ((trace "X" ((toString (trace "X" (coreVarToString)) (trace "X" ((trace "X" ((weakVarToCoreVar (trace "X" ((WExprVar (trace "X" (v)))))))))))))))))))) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" ((trace "X" ((__U03be_0 (trace "X" ((trace "X" ((weakVarToCoreVar (trace "X" ((WExprVar (trace "X" (v))))))))))))))) (trace "X" ((MkLeveledHaskType (trace "X" (__U03c4_)) (trace "X" (lev))))) (trace "X" ((EVar (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" ((trace "X" ((weakVarToCoreVar (trace "X" ((WExprVar (trace "X" (v)))))))))))))))))})); + WELit lit -> (trace "X" ((trace "X" (castExpr (trace "X" (we)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" (((:) (trace "X" ('W')) (trace "X" (((:) (trace "X" ('E')) (trace "X" (((:) (trace "X" ('L')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" (' ')) (trace "X" ([])))))))))))))))))))) (trace "X" ((trace "X" ((toString (trace "X" (haskLiteralToString)) (trace "X" (lit)))))))))))) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (literalType (trace "X" (lit)) (trace "X" (__U0393_0))))))))) (trace "X" (lev))))) (trace "X" ((MkLeveledHaskType (trace "X" (__U03c4_)) (trace "X" (lev))))) (trace "X" ((ELit (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (lit)) (trace "X" (lev))))))))); + WELet v ve ebody -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((weakTypeToTypeOfKind (trace "X" (__U0393_0)) (trace "X" (__U03c6_0)) (trace "X" ((trace "X" ((weakExprVarToWeakType (trace "X" (v))))))) (trace "X" (KindStar))))))) (trace "X" ((\tv -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((weakExprToStrongExpr (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03c6_0)) (trace "X" (__U03c8_0)) (trace "X" (__U03be_0)) (trace "X" (ig)) (trace "X" (tv)) (trace "X" (lev)) (trace "X" (ve))))))) (trace "X" ((\ve' -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((weakExprToStrongExpr (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03c6_0)) (trace "X" (__U03c8_0)) (trace "X" ((trace "X" ((update___U03be_ (trace "X" (coreVarEqDecidable)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" (((:) (trace "X" (((,) (trace "X" ((trace "X" ((weakVarToCoreVar (trace "X" ((WExprVar (trace "X" (v)))))))))) (trace "X" (tv))))) (trace "X" (([]))))))))))) (trace "X" ((trace "X" ((update_ig (trace "X" (ig)) (trace "X" (((:) (trace "X" ((trace "X" ((weakVarToCoreVar (trace "X" ((WExprVar (trace "X" (v)))))))))) (trace "X" (([]))))))))))) (trace "X" (__U03c4_)) (trace "X" (lev)) (trace "X" (ebody))))))) (trace "X" ((\ebody' -> (trace "X" (OK (trace "X" ((ELet (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (tv)) (trace "X" (__U03c4_)) (trace "X" (lev)) (trace "X" ((trace "X" ((weakVarToCoreVar (trace "X" ((WExprVar (trace "X" (v)))))))))) (trace "X" (ve')) (trace "X" (ebody')))))))))))))))))))))))))))); + WELetRec rb e -> + (trace "X" (let {__U03be_' = (trace "X" ((trace "X" (update___U03be_ (trace "X" (coreVarEqDecidable)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" ((trace "X" ((leaves (trace "X" ((trace "X" ((varsTypes (trace "X" (__U0393_0)) (trace "X" (rb)) (trace "X" (__U03c6_0))))))))))))))))} in + (trace "X" (let {ig' = (trace "X" ((trace "X" (update_ig (trace "X" (ig)) (trace "X" ((trace "X" ((map (trace "X" ((\x -> (trace "X" ((trace "X" (weakVarToCoreVar (trace "X" ((WExprVar (trace "X" ((trace "X" ((fst (trace "X" (x))))))))))))))))) (trace "X" ((trace "X" ((leaves (trace "X" (rb))))))))))))))))} in + (trace "X" (let { + binds = (trace "X" ((trace "X" (let { + binds t = + (trace "X" (case (trace "X" (t)) of { + T_Leaf o -> + (trace "X" (case (trace "X" (o)) of { + Prelude.Just p -> + (trace "X" (case (trace "X" (p)) of { + (,) wev e0 -> + (trace "X" ((trace "X" (addErrorMessage (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" ('s')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('m')) (trace "X" (((:) (trace "X" ('e')) (trace "X" ([]))))))))))))))))))))))))))))) + (trace "X" ((let {o0 = (trace "X" ((trace "X" (weakTypeToTypeOfKind (trace "X" (__U0393_0)) (trace "X" (__U03c6_0)) (trace "X" ((trace "X" ((weakExprVarToWeakType (trace "X" (wev))))))) (trace "X" (KindStar))))))} in + (trace "X" (case (trace "X" (o0)) of { + Error error_message -> (trace "X" (Error (trace "X" (error_message)))); + OK h -> + (trace "X" (let {s = (trace "X" ((trace "X" (eqd_dec (trace "X" ((trace "X" ((haskTypeEqDecidable (trace "X" (__U0393_0)) (trace "X" (KindStar))))))) (trace "X" (h)) (trace "X" ((\_ -> (trace "X" ((trace "X" (unlev (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" ((trace "X" ((__U03be_' (trace "X" ((trace "X" ((weakVarToCoreVar (trace "X" ((WExprVar (trace "X" (wev))))))))))))))))))))))))))} in + (trace "X" (case (trace "X" (s)) of { + Prelude.True -> + (trace "X" (case (trace "X" (wev)) of { + WeakExprVar c w -> + (trace "X" ((trace "X" (eq_rect_r (trace "X" ((\_ -> (trace "X" ((trace "X" (unlev (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" ((trace "X" ((__U03be_' (trace "X" ((trace "X" ((weakVarToCoreVar (trace "X" ((WExprVar (trace "X" ((WeakExprVar (trace "X" (c)) (trace "X" (w))))))))))))))))))))))))) + (trace "X" ((let {e'' = (trace "X" ((trace "X" (weakExprToStrongExpr (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03c6_0)) (trace "X" (__U03c8_0)) (trace "X" (__U03be_')) (trace "X" (ig')) (trace "X" ((\_ -> (trace "X" ((trace "X" (unlev (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" ((trace "X" ((__U03be_' (trace "X" ((trace "X" ((weakVarToCoreVar (trace "X" ((WExprVar (trace "X" ((WeakExprVar (trace "X" (c)) (trace "X" (w))))))))))))))))))))))))) (trace "X" (lev)) (trace "X" (e0))))))} in + (trace "X" (case (trace "X" (e'')) of { + Error error_message -> (trace "X" (Error (trace "X" (error_message)))); + OK e1 -> (trace "X" (OK (trace "X" ((ELR_leaf (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_')) (trace "X" (lev)) (trace "X" (c)) (trace "X" ((\_ -> (trace "X" ((trace "X" (unlev (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" ((trace "X" ((__U03be_' (trace "X" ((trace "X" ((weakVarToCoreVar (trace "X" ((WExprVar (trace "X" ((WeakExprVar (trace "X" (c)) (trace "X" (w))))))))))))))))))))))))) (trace "X" ((let {l = (trace "X" ((trace "X" (leaves (trace "X" ((trace "X" ((varsTypes (trace "X" (__U0393_0)) (trace "X" (rb)) (trace "X" (__U03c6_0)))))))))))} in (trace "X" ((trace "X" (list_rect (trace "X" ((\e' e2 -> (trace "X" (unsafeCoerce (trace "X" (e2))))))) (trace "X" ((\a l0 iHl e' e2 -> (trace "X" (e2))))) (trace "X" (l)) (trace "X" ((\__U03c4_0 -> (trace "X" ((trace "X" (weakExprToStrongExpr (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03c6_0)) (trace "X" (__U03c8_0)) (trace "X" (__U03be_')) (trace "X" (ig')) (trace "X" (__U03c4_0)) (trace "X" (lev)) (trace "X" (e0))))))))) (trace "X" (e1))))))))))))))}))))) (trace "X" (h))))))})); + Prelude.False -> (trace "X" (Error (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (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" ((toString (trace "X" ((trace "X" ((typeToStringInstance (trace "X" (__U0393_0)) (trace "X" (KindStar))))))) (trace "X" (h)))))))))))) (trace "X" (((:) (trace "X" (' ')) (trace "X" ([])))))))))) (trace "X" ((trace "X" ((toString (trace "X" ((trace "X" ((typeToStringInstance (trace "X" (__U0393_0)) (trace "X" (KindStar))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (unlev (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" ((trace "X" ((__U03be_' (trace "X" ((trace "X" ((weakVarToCoreVar (trace "X" ((WExprVar (trace "X" (wev))))))))))))))))))))))))))))))))))}))))})))))))))})); + Prelude.Nothing -> (trace "X" (OK (trace "X" ((ELR_nil (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_')) (trace "X" (lev)))))))})); + T_Branch b1 b2 -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((binds (trace "X" (b1))))))) (trace "X" ((\b1' -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((binds (trace "X" (b2))))))) (trace "X" ((\b2' -> (trace "X" (OK (trace "X" ((ELR_branch (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_')) (trace "X" (lev)) (trace "X" ((trace "X" ((varsTypes (trace "X" (__U0393_0)) (trace "X" (b1)) (trace "X" (__U03c6_0))))))) (trace "X" ((trace "X" ((varsTypes (trace "X" (__U0393_0)) (trace "X" (b2)) (trace "X" (__U03c6_0))))))) (trace "X" (b1')) (trace "X" (b2')))))))))))))))))))))}))} + in binds (trace "X" (rb))))))} + in + (trace "X" ((trace "X" (orErrorBind (trace "X" (binds)) (trace "X" ((\binds' -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((weakExprToStrongExpr (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03c6_0)) (trace "X" (__U03c8_0)) (trace "X" (__U03be_')) (trace "X" (ig')) (trace "X" (__U03c4_)) (trace "X" (lev)) (trace "X" (e))))))) (trace "X" ((\e' -> (trace "X" (OK (trace "X" ((ELetRec (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" (__U03c4_)) (trace "X" ((trace "X" ((varsTypes (trace "X" (__U0393_0)) (trace "X" (rb)) (trace "X" (__U03c6_0))))))) (trace "X" (binds')) (trace "X" (e'))))))))))))))))))))))))))); + WECast e co -> (trace "X" (case (trace "X" ((trace "X" (weakCoercionTypes (trace "X" (co)))))) of { + (,) t1 t2 -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((weakTypeToTypeOfKind (trace "X" (__U0393_0)) (trace "X" (__U03c6_0)) (trace "X" (t1)) (trace "X" (KindStar))))))) (trace "X" ((\t1' -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((weakTypeToTypeOfKind (trace "X" (__U0393_0)) (trace "X" (__U03c6_0)) (trace "X" (t2)) (trace "X" (KindStar))))))) (trace "X" ((\t2' -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((weakExprToStrongExpr (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03c6_0)) (trace "X" (__U03c8_0)) (trace "X" (__U03be_0)) (trace "X" (ig)) (trace "X" (t1')) (trace "X" (lev)) (trace "X" (e))))))) (trace "X" ((\e' -> (trace "X" ((trace "X" (castExpr (trace "X" (we)) (trace "X" (((:) (trace "X" ('W')) (trace "X" (((:) (trace "X" ('E')) (trace "X" (((:) (trace "X" ('C')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('t')) (trace "X" ([])))))))))))))))))))) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" ((MkLeveledHaskType (trace "X" (t2')) (trace "X" (lev))))) (trace "X" ((MkLeveledHaskType (trace "X" (__U03c4_)) (trace "X" (lev))))) (trace "X" ((ECast (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (t1')) (trace "X" (t2')) (trace "X" (lev)) (trace "X" (e'))))))))))))))))))))))))))))))})); + WENote n e -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((weakExprToStrongExpr (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03c6_0)) (trace "X" (__U03c8_0)) (trace "X" (__U03be_0)) (trace "X" (ig)) (trace "X" (__U03c4_)) (trace "X" (lev)) (trace "X" (e))))))) (trace "X" ((\e' -> (trace "X" (OK (trace "X" ((ENote (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" ((MkLeveledHaskType (trace "X" (__U03c4_)) (trace "X" (lev))))) (trace "X" (n)) (trace "X" (e')))))))))))))); + WEApp e1 e2 -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((weakTypeOfWeakExpr (trace "X" (e2))))))) (trace "X" ((\t2 -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((weakTypeToTypeOfKind (trace "X" (__U0393_0)) (trace "X" (__U03c6_0)) (trace "X" (t2)) (trace "X" (KindStar))))))) (trace "X" ((\t2' -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((weakExprToStrongExpr (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03c6_0)) (trace "X" (__U03c8_0)) (trace "X" (__U03be_0)) (trace "X" (ig)) (trace "X" (t2')) (trace "X" (lev)) (trace "X" (e2))))))) (trace "X" ((\e2' -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((weakExprToStrongExpr (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03c6_0)) (trace "X" (__U03c8_0)) (trace "X" (__U03be_0)) (trace "X" (ig)) (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" ((t2' (trace "X" (__)) (trace "X" (env)))))))))) (trace "X" ((trace "X" ((__U03c4_ (trace "X" (__)) (trace "X" (env)))))))))))) (trace "X" (lev)) (trace "X" (e1))))))) (trace "X" ((\e1' -> (trace "X" (OK (trace "X" ((EApp (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (__U03c4_)) (trace "X" (t2')) (trace "X" (lev)) (trace "X" (e1')) (trace "X" (e2'))))))))))))))))))))))))))))))))))); + WETyApp e t -> + (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((weakTypeOfWeakExpr (trace "X" (e))))))) (trace "X" ((\te -> + (trace "X" (case (trace "X" (te)) of { + WForAllTy wtv te' -> (trace "X" (let {__U03c6_' = (trace "X" ((trace "X" (up__U03c6_ (trace "X" (__U0393_0)) (trace "X" (wtv)) (trace "X" (__U03c6_0))))))} in (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((weakTypeToTypeOfKind (trace "X" (((:) (trace "X" ((trace "X" ((weakTypeVarToKind (trace "X" (wtv))))))) (trace "X" (__U0393_0))))) (trace "X" (__U03c6_')) (trace "X" (te')) (trace "X" (KindStar))))))) (trace "X" ((\te'' -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((weakExprToStrongExpr (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03c6_0)) (trace "X" (__U03c8_0)) (trace "X" (__U03be_0)) (trace "X" (ig)) (trace "X" ((\_ -> (trace "X" ((trace "X" (mkTAll (trace "X" ((trace "X" ((weakTypeVarToKind (trace "X" (wtv))))))) (trace "X" (__U0393_0)) (trace "X" (te''))))))))) (trace "X" (lev)) (trace "X" (e))))))) (trace "X" ((\e' -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((weakTypeToTypeOfKind (trace "X" (__U0393_0)) (trace "X" (__U03c6_0)) (trace "X" (t)) (trace "X" ((trace "X" ((weakTypeVarToKind (trace "X" (wtv)))))))))))) (trace "X" ((\t' -> (trace "X" ((trace "X" (castExpr (trace "X" (we)) (trace "X" (((:) (trace "X" ('W')) (trace "X" (((:) (trace "X" ('E')) (trace "X" (((:) (trace "X" ('T')) (trace "X" (((:) (trace "X" ('y')) (trace "X" (((:) (trace "X" ('A')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('p')) (trace "X" ([]))))))))))))))))))))))) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (substT (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((weakTypeVarToKind (trace "X" (wtv))))))) (trace "X" (KindStar)) (trace "X" ((\_ -> (trace "X" ((trace "X" (mkTAll' (trace "X" ((trace "X" ((weakTypeVarToKind (trace "X" (wtv))))))) (trace "X" (__U0393_0)) (trace "X" (te''))))))))) (trace "X" (t'))))))))) (trace "X" (lev))))) (trace "X" ((MkLeveledHaskType (trace "X" (__U03c4_)) (trace "X" (lev))))) (trace "X" ((ETyApp (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((weakTypeVarToKind (trace "X" (wtv))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (mkTAll' (trace "X" ((trace "X" ((weakTypeVarToKind (trace "X" (wtv))))))) (trace "X" (__U0393_0)) (trace "X" (te''))))))))) (trace "X" (t')) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" (e')))))))))))))))))))))))))))))))); + _ -> (trace "X" (Error (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" (((:) (trace "X" ('w')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('k')) (trace "X" (((:) (trace "X" ('T')) (trace "X" (((:) (trace "X" ('y')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('T')) (trace "X" (((:) (trace "X" ('o')) (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" ('W')) (trace "X" (((:) (trace "X" ('E')) (trace "X" (((:) (trace "X" ('T')) (trace "X" (((:) (trace "X" ('y')) (trace "X" (((:) (trace "X" ('A')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('b')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" ('y')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('w')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('h')) (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" (((:) (trace "X" (' ')) (trace "X" ([]))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) (trace "X" ((trace "X" ((toString (trace "X" (weakTypeToString)) (trace "X" (te))))))))))))))}))))))))); + WECoApp e co -> + (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((weakTypeOfWeakExpr (trace "X" (e))))))) (trace "X" ((\te -> + (trace "X" (case (trace "X" (te)) of { + WCoFunTy t1 t2 t3 -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((weakTypeToType (trace "X" (__U0393_0)) (trace "X" (__U03c6_0)) (trace "X" (t1))))))) (trace "X" ((\t1' -> (trace "X" (case (trace "X" (t1')) of { + HaskTypeOfSomeKind __U03ba_ t1'' -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((weakTypeToTypeOfKind (trace "X" (__U0393_0)) (trace "X" (__U03c6_0)) (trace "X" (t2)) (trace "X" (__U03ba_))))))) (trace "X" ((\t2'' -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((weakTypeToTypeOfKind (trace "X" (__U0393_0)) (trace "X" (__U03c6_0)) (trace "X" (t3)) (trace "X" (KindStar))))))) (trace "X" ((\t3'' -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((weakExprToStrongExpr (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03c6_0)) (trace "X" (__U03c8_0)) (trace "X" (__U03be_0)) (trace "X" (ig)) (trace "X" ((\_ env -> (trace "X" (TCoerc (trace "X" (__U03ba_)) (trace "X" ((trace "X" ((t1'' (trace "X" (__)) (trace "X" (env))))))) (trace "X" ((trace "X" ((t2'' (trace "X" (__)) (trace "X" (env))))))) (trace "X" ((trace "X" ((__U03c4_ (trace "X" (__)) (trace "X" (env)))))))))))) (trace "X" (lev)) (trace "X" (e))))))) (trace "X" ((\e' -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((castExpr (trace "X" (we)) (trace "X" (((:) (trace "X" ('W')) (trace "X" (((:) (trace "X" ('E')) (trace "X" (((:) (trace "X" ('C')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('A')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('p')) (trace "X" ([]))))))))))))))))))))))) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" ((MkLeveledHaskType (trace "X" ((\_ env -> (trace "X" (TCoerc (trace "X" (__U03ba_)) (trace "X" ((trace "X" ((t1'' (trace "X" (__)) (trace "X" (env))))))) (trace "X" ((trace "X" ((t2'' (trace "X" (__)) (trace "X" (env))))))) (trace "X" ((trace "X" ((__U03c4_ (trace "X" (__)) (trace "X" (env)))))))))))) (trace "X" (lev))))) (trace "X" ((MkLeveledHaskType (trace "X" ((\_ env -> (trace "X" (TCoerc (trace "X" (__U03ba_)) (trace "X" ((trace "X" ((t1'' (trace "X" (__)) (trace "X" (env))))))) (trace "X" ((trace "X" ((t2'' (trace "X" (__)) (trace "X" (env))))))) (trace "X" ((trace "X" ((__U03c4_ (trace "X" (__)) (trace "X" (env)))))))))))) (trace "X" (lev))))) (trace "X" (e'))))))) (trace "X" ((\e'' -> (trace "X" (OK (trace "X" ((ECoApp (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03ba_)) (trace "X" (t1'')) (trace "X" (t2'')) (trace "X" (__U03c4_)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" (e'')))))))))))))))))))))))))))))))))))}))))))))); + _ -> (trace "X" (Error (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" (((:) (trace "X" ('w')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('k')) (trace "X" (((:) (trace "X" ('T')) (trace "X" (((:) (trace "X" ('y')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('T')) (trace "X" (((:) (trace "X" ('o')) (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" ('W')) (trace "X" (((:) (trace "X" ('E')) (trace "X" (((:) (trace "X" ('C')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('A')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('b')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" ('y')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('w')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('h')) (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" (((:) (trace "X" (' ')) (trace "X" ([]))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) (trace "X" ((trace "X" ((toString (trace "X" (weakTypeToString)) (trace "X" (te))))))))))))))}))))))))); + WELam ev ebody -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((weakTypeToTypeOfKind (trace "X" (__U0393_0)) (trace "X" (__U03c6_0)) (trace "X" ((trace "X" ((weakExprVarToWeakType (trace "X" (ev))))))) (trace "X" (KindStar))))))) (trace "X" ((\tv -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((weakTypeOfWeakExpr (trace "X" (ebody))))))) (trace "X" ((\tbody -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((weakTypeToTypeOfKind (trace "X" (__U0393_0)) (trace "X" (__U03c6_0)) (trace "X" (tbody)) (trace "X" (KindStar))))))) (trace "X" ((\tbody' -> (trace "X" (let {__U03be_' = (trace "X" ((trace "X" (update___U03be_ (trace "X" (coreVarEqDecidable)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" (((:) (trace "X" (((,) (trace "X" ((trace "X" ((weakVarToCoreVar (trace "X" ((WExprVar (trace "X" (ev)))))))))) (trace "X" (tv))))) (trace "X" (([]))))))))))} in (trace "X" (let {ig' = (trace "X" ((trace "X" (update_ig (trace "X" (ig)) (trace "X" (((:) (trace "X" ((trace "X" ((weakVarToCoreVar (trace "X" ((WExprVar (trace "X" (ev)))))))))) (trace "X" (([]))))))))))} in (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((weakExprToStrongExpr (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03c6_0)) (trace "X" (__U03c8_0)) (trace "X" (__U03be_')) (trace "X" (ig')) (trace "X" (tbody')) (trace "X" (lev)) (trace "X" (ebody))))))) (trace "X" ((\ebody' -> (trace "X" ((trace "X" (castExpr (trace "X" (we)) (trace "X" (((:) (trace "X" ('W')) (trace "X" (((:) (trace "X" ('E')) (trace "X" (((:) (trace "X" ('L')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('m')) (trace "X" ([]))))))))))))))))) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" ((MkLeveledHaskType (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" ((tv (trace "X" (__)) (trace "X" (env)))))))))) (trace "X" ((trace "X" ((tbody' (trace "X" (__)) (trace "X" (env)))))))))))) (trace "X" (lev))))) (trace "X" ((MkLeveledHaskType (trace "X" (__U03c4_)) (trace "X" (lev))))) (trace "X" ((ELam (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (tv)) (trace "X" (tbody')) (trace "X" (lev)) (trace "X" ((trace "X" ((weakVarToCoreVar (trace "X" ((WExprVar (trace "X" (ev)))))))))) (trace "X" (ebody'))))))))))))))))))))))))))))))))))))))))); + WETyLam tv e -> (trace "X" (let {__U03c6_' = (trace "X" ((trace "X" (up__U03c6_ (trace "X" (__U0393_0)) (trace "X" (tv)) (trace "X" (__U03c6_0))))))} in (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((weakTypeOfWeakExpr (trace "X" (e))))))) (trace "X" ((\te -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((weakTypeToTypeOfKind (trace "X" (((:) (trace "X" ((trace "X" ((weakTypeVarToKind (trace "X" (tv))))))) (trace "X" (__U0393_0))))) (trace "X" (__U03c6_')) (trace "X" (te)) (trace "X" (KindStar))))))) (trace "X" ((\__U03c4_' -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((weakExprToStrongExpr (trace "X" (((:) (trace "X" ((trace "X" ((weakTypeVarToKind (trace "X" (tv))))))) (trace "X" (__U0393_0))))) (trace "X" ((trace "X" ((weakCE (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((weakTypeVarToKind (trace "X" (tv))))))) (trace "X" (__U0394_0))))))) (trace "X" (__U03c6_')) (trace "X" ((\x -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((__U03c8_0 (trace "X" (x))))))) (trace "X" ((\y -> (trace "X" (OK (trace "X" ((\_ _ -> (trace "X" ((trace "X" (weakCV (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((weakTypeVarToKind (trace "X" (tv))))))) (trace "X" (y))))))))))))))))))))) (trace "X" ((\x -> (trace "X" ((trace "X" (weakLT (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((weakTypeVarToKind (trace "X" (tv))))))) (trace "X" (KindStar)) (trace "X" ((trace "X" ((__U03be_0 (trace "X" (x)))))))))))))) (trace "X" (ig)) (trace "X" ((\_ -> (trace "X" ((trace "X" (haskTApp (trace "X" (((:) (trace "X" ((trace "X" ((weakTypeVarToKind (trace "X" (tv))))))) (trace "X" (__U0393_0))))) (trace "X" ((trace "X" ((weakTypeVarToKind (trace "X" (tv))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (weakF (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((weakTypeVarToKind (trace "X" (tv))))))) (trace "X" (KindStar)) (trace "X" ((\_ -> (trace "X" ((trace "X" (mkTAll' (trace "X" ((trace "X" ((weakTypeVarToKind (trace "X" (tv))))))) (trace "X" (__U0393_0)) (trace "X" (__U03c4_')))))))))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (freshHaskTyVar (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((weakTypeVarToKind (trace "X" (tv))))))))))))))))))))) (trace "X" ((trace "X" ((weakL (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((weakTypeVarToKind (trace "X" (tv))))))) (trace "X" (lev))))))) (trace "X" (e))))))) (trace "X" ((\e' -> (trace "X" ((trace "X" (castExpr (trace "X" (we)) (trace "X" (((:) (trace "X" ('W')) (trace "X" (((:) (trace "X" ('E')) (trace "X" (((:) (trace "X" ('T')) (trace "X" (((:) (trace "X" ('y')) (trace "X" (((:) (trace "X" ('L')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('m')) (trace "X" (((:) (trace "X" ('2')) (trace "X" ([])))))))))))))))))))))))))) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (haskTAll (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((weakTypeVarToKind (trace "X" (tv))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (mkTAll' (trace "X" ((trace "X" ((weakTypeVarToKind (trace "X" (tv))))))) (trace "X" (__U0393_0)) (trace "X" (__U03c4_')))))))))))))))) (trace "X" (lev))))) (trace "X" ((MkLeveledHaskType (trace "X" (__U03c4_)) (trace "X" (lev))))) (trace "X" ((ETyLam (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" ((trace "X" ((weakTypeVarToKind (trace "X" (tv))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (mkTAll' (trace "X" ((trace "X" ((weakTypeVarToKind (trace "X" (tv))))))) (trace "X" (__U0393_0)) (trace "X" (__U03c4_'))))))))) (trace "X" (lev)) (trace "X" (e')))))))))))))))))))))))))))))))); + WECoLam cv e -> (trace "X" (case (trace "X" (cv)) of { + WeakCoerVar x x0 t1 t2 -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((weakTypeOfWeakExpr (trace "X" (e))))))) (trace "X" ((\te -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((weakTypeToTypeOfKind (trace "X" (__U0393_0)) (trace "X" (__U03c6_0)) (trace "X" (te)) (trace "X" (KindStar))))))) (trace "X" ((\te' -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((weakTypeToTypeOfKind (trace "X" (__U0393_0)) (trace "X" (__U03c6_0)) (trace "X" (t1)) (trace "X" ((trace "X" ((coVarKind (trace "X" (cv)))))))))))) (trace "X" ((\t1' -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((weakTypeToTypeOfKind (trace "X" (__U0393_0)) (trace "X" (__U03c6_0)) (trace "X" (t2)) (trace "X" ((trace "X" ((coVarKind (trace "X" (cv)))))))))))) (trace "X" ((\t2' -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((weakExprToStrongExpr (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" ((\_ -> (trace "X" ((trace "X" (mkHaskCoercionKind (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((coVarKind (trace "X" (cv))))))) (trace "X" (t1')) (trace "X" (t2'))))))))) (trace "X" (__U0394_0))))) (trace "X" (__U03c6_0)) (trace "X" ((trace "X" ((weak__U03c8_ (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((\_ -> (trace "X" ((trace "X" (mkHaskCoercionKind (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((coVarKind (trace "X" (cv))))))) (trace "X" (t1')) (trace "X" (t2'))))))))) (trace "X" (__U03c8_0))))))) (trace "X" (__U03be_0)) (trace "X" (ig)) (trace "X" (te')) (trace "X" (lev)) (trace "X" (e))))))) (trace "X" ((\e' -> (trace "X" ((trace "X" (castExpr (trace "X" (we)) (trace "X" (((:) (trace "X" ('W')) (trace "X" (((:) (trace "X" ('E')) (trace "X" (((:) (trace "X" ('C')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('L')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('m')) (trace "X" ([]))))))))))))))))))))))) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" ((MkLeveledHaskType (trace "X" ((\_ env -> (trace "X" (TCoerc (trace "X" ((trace "X" ((coVarKind (trace "X" (cv))))))) (trace "X" ((trace "X" ((t1' (trace "X" (__)) (trace "X" (env))))))) (trace "X" ((trace "X" ((t2' (trace "X" (__)) (trace "X" (env))))))) (trace "X" ((trace "X" ((te' (trace "X" (__)) (trace "X" (env)))))))))))) (trace "X" (lev))))) (trace "X" ((MkLeveledHaskType (trace "X" (__U03c4_)) (trace "X" (lev))))) (trace "X" ((ECoLam (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((coVarKind (trace "X" (cv))))))) (trace "X" (te')) (trace "X" (t1')) (trace "X" (t2')) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" (e'))))))))))))))))))))))))))))))))))))))))))))})); + WEBrak w ec e tbody -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((__U03c6_0 (trace "X" ((trace "X" ((fixkind (trace "X" (KindStar)) (trace "X" (ec)))))))))))) (trace "X" ((\ec' -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((weakTypeToTypeOfKind (trace "X" (__U0393_0)) (trace "X" (__U03c6_0)) (trace "X" (tbody)) (trace "X" (KindStar))))))) (trace "X" ((\tbody' -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((weakExprToStrongExpr (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03c6_0)) (trace "X" (__U03c8_0)) (trace "X" (__U03be_0)) (trace "X" (ig)) (trace "X" (tbody')) (trace "X" (((:) (trace "X" (ec')) (trace "X" (lev))))) (trace "X" (e))))))) (trace "X" ((\e' -> (trace "X" ((trace "X" (castExpr (trace "X" (we)) (trace "X" (((:) (trace "X" ('W')) (trace "X" (((:) (trace "X" ('E')) (trace "X" (((:) (trace "X" ('B')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('k')) (trace "X" ([])))))))))))))))))))) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (haskBrak (trace "X" (__U0393_0)) (trace "X" (ec')) (trace "X" (tbody'))))))))) (trace "X" (lev))))) (trace "X" ((MkLeveledHaskType (trace "X" (__U03c4_)) (trace "X" (lev))))) (trace "X" ((EBrak (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (ec')) (trace "X" (tbody')) (trace "X" (lev)) (trace "X" (e')))))))))))))))))))))))))))))); + WEEsc w ec e tbody -> + (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((__U03c6_0 (trace "X" (ec))))))) (trace "X" ((\ec'' -> + (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((weakTypeToTypeOfKind (trace "X" (__U0393_0)) (trace "X" (__U03c6_0)) (trace "X" (tbody)) (trace "X" (KindStar))))))) (trace "X" ((\tbody' -> + (trace "X" (case (trace "X" (lev)) of { + ([]) -> (trace "X" (Error (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('l')) (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" ('e')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('f')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('n')) (trace "X" ([])))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))); + (:) ec' lev' -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((weakExprToStrongExpr (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03c6_0)) (trace "X" (__U03c8_0)) (trace "X" (__U03be_0)) (trace "X" (ig)) (trace "X" ((\_ -> (trace "X" ((trace "X" (haskBrak (trace "X" (__U0393_0)) (trace "X" (ec')) (trace "X" (tbody'))))))))) (trace "X" (lev')) (trace "X" (e))))))) (trace "X" ((\e' -> (trace "X" ((trace "X" (castExpr (trace "X" (we)) (trace "X" (((:) (trace "X" ('W')) (trace "X" (((:) (trace "X" ('E')) (trace "X" (((:) (trace "X" ('E')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('c')) (trace "X" ([]))))))))))))))))) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" ((MkLeveledHaskType (trace "X" (tbody')) (trace "X" (((:) (trace "X" (ec')) (trace "X" (lev')))))))) (trace "X" ((MkLeveledHaskType (trace "X" (__U03c4_)) (trace "X" (lev))))) (trace "X" ((EEsc (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (ec')) (trace "X" (tbody')) (trace "X" (lev')) (trace "X" (e'))))))))))))))))})))))))))))))))); + WECSP w ec e tbody -> (trace "X" (Error (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" (' ')) (trace "X" (((:) (trace "X" ('C')) (trace "X" (((:) (trace "X" ('S')) (trace "X" (((:) (trace "X" ('P')) (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" ('b')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('y')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('H')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('k')) (trace "X" (((:) (trace "X" ('W')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('k')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('g')) (trace "X" (((:) (trace "X" ('e')) (trace "X" ([])))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))); + WECase vscrut escrut tbranches tc avars alts -> + (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((weakTypeOfWeakExpr (trace "X" (escrut))))))) (trace "X" ((\tscrut -> + (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((weakTypeToTypeOfKind (trace "X" (__U0393_0)) (trace "X" (__U03c6_0)) (trace "X" (tscrut)) (trace "X" (KindStar))))))) (trace "X" ((\tscrut' -> + (trace "X" (case (trace "X" ((trace "X" (doesWeakVarOccurAlts (trace "X" (vscrut)) (trace "X" (alts)))))) of { + Prelude.True -> (trace "X" (Error (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" (' ')) (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" ('w')) (trace "X" (((:) (trace "X" ('h')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('h')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('y')) (trace "X" (((:) (trace "X" (' ')) (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" ('i')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('s')) (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" ('e')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('-')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('h')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('h')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('h')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('v')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('b')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('g')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('w')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('y')) (trace "X" (((:) (trace "X" ('!')) (trace "X" (((:) (trace "X" ('!')) (trace "X" ([]))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))); + Prelude.False -> + (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((mkAvars (trace "X" (__U0393_0)) (trace "X" (avars)) (trace "X" ((trace "X" ((tyConKind (trace "X" (tc))))))) (trace "X" (__U03c6_0))))))) (trace "X" ((\avars' -> + (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((weakTypeToTypeOfKind (trace "X" (__U0393_0)) (trace "X" (__U03c6_0)) (trace "X" (tbranches)) (trace "X" (KindStar))))))) (trace "X" ((\tbranches' -> + (trace "X" ((trace "X" (orErrorBind + (trace "X" ((trace "X" ((let { + mkTree t = + (trace "X" (case (trace "X" (t)) of { + T_Leaf o -> + (trace "X" (case (trace "X" (o)) of { + Prelude.Just p -> + (trace "X" (case (trace "X" (p)) of { + (,) p0 ebranch -> + (trace "X" (case (trace "X" (p0)) of { + (,) p1 exprvars -> + (trace "X" (case (trace "X" (p1)) of { + (,) p2 coervars -> + (trace "X" (case (trace "X" (p2)) of { + (,) ac extyvars -> + (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((mkStrongAltConPlusJunk' (trace "X" (tc)) (trace "X" (ac))))))) (trace "X" ((\sac -> + (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((list2vecOrFail (trace "X" ((trace "X" ((map (trace "X" ((\ev -> (trace "X" ((trace "X" (weakVarToCoreVar (trace "X" ((WExprVar (trace "X" (ev)))))))))))) (trace "X" (exprvars))))))) (trace "X" ((trace "X" ((sac_numExprVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" ((trace "X" ((sacpj_sac (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" ((\x x0 -> (trace "X" ((:) (trace "X" ('W')) (trace "X" (((:) (trace "X" ('E')) (trace "X" (((:) (trace "X" ('C')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('e')) (trace "X" ([]))))))))))))))))))))))))))) (trace "X" ((\exprvars' -> + (trace "X" ((trace "X" (orErrorBind + (trace "X" ((let {dec = (trace "X" ((trace "X" (distinct_decidable (trace "X" (coreVarEqDecidable)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExprVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" ((trace "X" ((sacpj_sac (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (exprvars')))))))))))} in + (trace "X" (case (trace "X" (dec)) of { + Prelude.True -> (trace "X" (OK (trace "X" (__)))); + Prelude.False -> (trace "X" (Error (trace "X" (((:) (trace "X" ('m')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('f')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('m')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('H')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('k')) (trace "X" (((:) (trace "X" ('W')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('k')) (trace "X" (((:) (trace "X" (':')) (trace "X" (((:) (trace "X" (' ')) (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" ('b')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('h')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('w')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('h')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('v')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('b')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('d')) (trace "X" ([])))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))}))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((weakExprToStrongExpr (trace "X" ((trace "X" ((sac___U0393_ (trace "X" (tc)) (trace "X" ((trace "X" ((sacpj_sac (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((sac___U0394_ (trace "X" (tc)) (trace "X" ((trace "X" ((sacpj_sac (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" (__U0393_0)) (trace "X" (avars')) (trace "X" ((trace "X" ((weakCK'' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" ((trace "X" ((sacpj_sac (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" ((trace "X" ((sacpj_sac (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))))))))))))) (trace "X" (__U0394_0)))))))))))) (trace "X" ((trace "X" ((sacpj___U03c6_ (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)) (trace "X" (__U0393_0)) (trace "X" (__U03c6_0))))))) (trace "X" ((trace "X" ((sacpj___U03c8_ (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (avars')) (trace "X" (__U03c8_0))))))) (trace "X" ((trace "X" ((scbwv___U03be_ (trace "X" (coreVarEqDecidable)) (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (avars')) (trace "X" ((trace "X" ((sacpj_sac (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" (exprvars')) (trace "X" (__U03be_0)) (trace "X" (lev))))))) (trace "X" ((trace "X" ((update_ig (trace "X" (ig)) (trace "X" ((trace "X" ((map (trace "X" (fst)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExprVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" ((trace "X" ((sacpj_sac (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" ((trace "X" ((scbwv_varstypes (trace "X" (coreVarEqDecidable)) (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (avars')) (trace "X" ((trace "X" ((sacpj_sac (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" (exprvars')))))))))))))))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (weakT' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" ((trace "X" ((sacpj_sac (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" ((trace "X" ((sacpj_sac (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))))))))))))) (trace "X" (KindStar)) (trace "X" (tbranches'))))))))) (trace "X" ((trace "X" ((weakL' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" ((trace "X" ((sacpj_sac (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" ((trace "X" ((sacpj_sac (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))))))))))))) (trace "X" (lev))))))) (trace "X" (ebranch))))))) (trace "X" ((\ebranch' -> (trace "X" (OK (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((ExistT (trace "X" ((trace "X" ((sacpj_sac (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((ExistT (trace "X" (exprvars')) (trace "X" (ebranch'))))))))))))))))))))))))))))))))))))))))))))}))}))}))})); + Prelude.Nothing -> (trace "X" (OK (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing)))))))})); + T_Branch b1 b2 -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((mkTree (trace "X" (b1))))))) (trace "X" ((\b1' -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((mkTree (trace "X" (b2))))))) (trace "X" ((\b2' -> (trace "X" (OK (trace "X" ((T_Branch (trace "X" (b1')) (trace "X" (b2')))))))))))))))))))))}))} + in mkTree (trace "X" (alts))))))) (trace "X" ((\tree -> (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((weakExprToStrongExpr (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03c6_0)) (trace "X" (__U03c8_0)) (trace "X" (__U03be_0)) (trace "X" (ig)) (trace "X" ((\_ -> (trace "X" ((trace "X" (caseType (trace "X" (__U0393_0)) (trace "X" (tc)) (trace "X" (avars'))))))))) (trace "X" (lev)) (trace "X" (escrut))))))) (trace "X" ((\escrut' -> (trace "X" ((trace "X" (castExpr (trace "X" (we)) (trace "X" (((:) (trace "X" ('E')) (trace "X" (((:) (trace "X" ('C')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('e')) (trace "X" ([]))))))))))))))))) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" ((MkLeveledHaskType (trace "X" (tbranches')) (trace "X" (lev))))) (trace "X" ((MkLeveledHaskType (trace "X" (__U03c4_)) (trace "X" (lev))))) (trace "X" ((ECase (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" (tc)) (trace "X" (tbranches')) (trace "X" (avars')) (trace "X" (escrut')) (trace "X" (tree)))))))))))))))))))))))))))))))))))))}))))))))))))))))}))))))) + +pivotContext :: (Tree (Prelude.Maybe a1)) -> (Tree (Prelude.Maybe a1)) -> (Tree (Prelude.Maybe a1)) -> Arrange a1 +pivotContext a b c = + (trace "X" (RComp (trace "X" ((T_Branch (trace "X" ((T_Branch (trace "X" (a)) (trace "X" (b))))) (trace "X" (c))))) (trace "X" ((T_Branch (trace "X" (a)) (trace "X" ((T_Branch (trace "X" (c)) (trace "X" (b)))))))) (trace "X" ((T_Branch (trace "X" ((T_Branch (trace "X" (a)) (trace "X" (c))))) (trace "X" (b))))) (trace "X" ((RComp (trace "X" ((T_Branch (trace "X" ((T_Branch (trace "X" (a)) (trace "X" (b))))) (trace "X" (c))))) (trace "X" ((T_Branch (trace "X" (a)) (trace "X" ((T_Branch (trace "X" (b)) (trace "X" (c)))))))) (trace "X" ((T_Branch (trace "X" (a)) (trace "X" ((T_Branch (trace "X" (c)) (trace "X" (b)))))))) (trace "X" ((RCossa (trace "X" (a)) (trace "X" (b)) (trace "X" (c))))) (trace "X" ((RLeft (trace "X" ((T_Branch (trace "X" (b)) (trace "X" (c))))) (trace "X" ((T_Branch (trace "X" (c)) (trace "X" (b))))) (trace "X" (a)) (trace "X" ((RExch (trace "X" (c)) (trace "X" (b))))))))))) (trace "X" ((RAssoc (trace "X" (a)) (trace "X" (c)) (trace "X" (b))))))) + +copyAndPivotContext :: (Tree (Prelude.Maybe a1)) -> (Tree (Prelude.Maybe a1)) -> (Tree (Prelude.Maybe a1)) -> Arrange a1 +copyAndPivotContext a b c = + (trace "X" (RComp (trace "X" ((T_Branch (trace "X" ((T_Branch (trace "X" (a)) (trace "X" (b))))) (trace "X" ((T_Branch (trace "X" (c)) (trace "X" (b)))))))) (trace "X" ((T_Branch (trace "X" ((T_Branch (trace "X" (a)) (trace "X" (c))))) (trace "X" ((T_Branch (trace "X" (b)) (trace "X" (b)))))))) (trace "X" ((T_Branch (trace "X" ((T_Branch (trace "X" (a)) (trace "X" (c))))) (trace "X" (b))))) (trace "X" ((RComp (trace "X" ((T_Branch (trace "X" ((T_Branch (trace "X" (a)) (trace "X" (b))))) (trace "X" ((T_Branch (trace "X" (c)) (trace "X" (b)))))))) (trace "X" ((T_Branch (trace "X" ((T_Branch (trace "X" ((T_Branch (trace "X" (a)) (trace "X" (c))))) (trace "X" (b))))) (trace "X" (b))))) (trace "X" ((T_Branch (trace "X" ((T_Branch (trace "X" (a)) (trace "X" (c))))) (trace "X" ((T_Branch (trace "X" (b)) (trace "X" (b)))))))) (trace "X" ((RComp (trace "X" ((T_Branch (trace "X" ((T_Branch (trace "X" (a)) (trace "X" (b))))) (trace "X" ((T_Branch (trace "X" (c)) (trace "X" (b)))))))) (trace "X" ((T_Branch (trace "X" ((T_Branch (trace "X" ((T_Branch (trace "X" (a)) (trace "X" (b))))) (trace "X" (c))))) (trace "X" (b))))) (trace "X" ((T_Branch (trace "X" ((T_Branch (trace "X" ((T_Branch (trace "X" (a)) (trace "X" (c))))) (trace "X" (b))))) (trace "X" (b))))) (trace "X" ((RAssoc (trace "X" ((T_Branch (trace "X" (a)) (trace "X" (b))))) (trace "X" (c)) (trace "X" (b))))) (trace "X" ((RRight (trace "X" ((T_Branch (trace "X" ((T_Branch (trace "X" (a)) (trace "X" (b))))) (trace "X" (c))))) (trace "X" ((T_Branch (trace "X" ((T_Branch (trace "X" (a)) (trace "X" (c))))) (trace "X" (b))))) (trace "X" (b)) (trace "X" ((trace "X" ((pivotContext (trace "X" (a)) (trace "X" (b)) (trace "X" (c))))))))))))) (trace "X" ((RCossa (trace "X" ((T_Branch (trace "X" (a)) (trace "X" (c))))) (trace "X" (b)) (trace "X" (b)))))))) (trace "X" ((RLeft (trace "X" ((T_Branch (trace "X" (b)) (trace "X" (b))))) (trace "X" (b)) (trace "X" ((T_Branch (trace "X" (a)) (trace "X" (c))))) (trace "X" ((RCont (trace "X" (b)))))))))) + +dropVar :: (EqDecidable a1) -> (([]) a1) -> a1 -> Prelude.Maybe a1 +dropVar eqd_vv lv v = + (trace "X" (case (trace "X" (lv)) of { + ([]) -> (trace "X" (Prelude.Just (trace "X" (v)))); + (:) v' lv' -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (eqd_vv)) (trace "X" (v)) (trace "X" (v')))))) of { + Prelude.True -> (trace "X" (Prelude.Nothing)); + Prelude.False -> (trace "X" ((trace "X" (dropVar (trace "X" (eqd_vv)) (trace "X" (lv')) (trace "X" (v))))))}))})) + +mapOptionTree' :: (a1 -> Prelude.Maybe a2) -> (Tree (Prelude.Maybe a1)) -> Tree (Prelude.Maybe a2) +mapOptionTree' 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" ((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" ((mapOptionTree' (trace "X" (f)) (trace "X" (l))))))) (trace "X" ((trace "X" ((mapOptionTree' (trace "X" (f)) (trace "X" (r)))))))))})) + +stripOutVars :: (EqDecidable a1) -> (([]) a1) -> (Tree (Prelude.Maybe a1)) -> Tree (Prelude.Maybe a1) +stripOutVars eqd_vv lv = + (trace "X" ((trace "X" (mapOptionTree' (trace "X" ((trace "X" ((dropVar (trace "X" (eqd_vv)) (trace "X" (lv))))))))))) + +expr2antecedent :: (EqDecidable a1) -> TypeEnv -> CoercionEnv -> (a1 -> LeveledHaskType) -> LeveledHaskType -> (Expr a1) -> Tree (Prelude.Maybe a1) +expr2antecedent eqd_vv = + (trace "X" (let { + expr2antecedent0 __U0393_' __U0394_' __U03be_' __U03c4_' exp = + (trace "X" (case (trace "X" (exp)) of { + EVar __U0393_0 __U0394_0 __U03be_0 ev -> (trace "X" (T_Leaf (trace "X" ((Prelude.Just (trace "X" (ev))))))); + EApp __U0393_0 __U0394_0 __U03be_0 t1 t2 lev e1 e2 -> (trace "X" (T_Branch (trace "X" ((trace "X" ((expr2antecedent0 (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" ((MkLeveledHaskType (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" ((t2 (trace "X" (__)) (trace "X" (env)))))))))) (trace "X" ((trace "X" ((t1 (trace "X" (__)) (trace "X" (env)))))))))))) (trace "X" (lev))))) (trace "X" (e1))))))) (trace "X" ((trace "X" ((expr2antecedent0 (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" ((MkLeveledHaskType (trace "X" (t2)) (trace "X" (lev))))) (trace "X" (e2))))))))); + ELam __U0393_0 __U0394_0 __U03be_0 t1 t2 lev v e -> (trace "X" ((trace "X" (stripOutVars (trace "X" (eqd_vv)) (trace "X" (((:) (trace "X" (v)) (trace "X" (([])))))) (trace "X" ((trace "X" ((expr2antecedent0 (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update___U03be_ (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" (((:) (trace "X" (((,) (trace "X" (v)) (trace "X" (t1))))) (trace "X" (([]))))))))))) (trace "X" ((MkLeveledHaskType (trace "X" (t2)) (trace "X" (lev))))) (trace "X" (e))))))))))); + ELet __U0393_0 __U0394_0 __U03be_0 tv t lev v ev ebody -> (trace "X" (T_Branch (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" (((:) (trace "X" (v)) (trace "X" (([])))))) (trace "X" ((trace "X" ((expr2antecedent0 (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update___U03be_ (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" (((:) (trace "X" (((,) (trace "X" (v)) (trace "X" (tv))))) (trace "X" (([]))))))))))) (trace "X" ((MkLeveledHaskType (trace "X" (t)) (trace "X" (lev))))) (trace "X" (ebody)))))))))))) (trace "X" ((trace "X" ((expr2antecedent0 (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" ((MkLeveledHaskType (trace "X" (tv)) (trace "X" (lev))))) (trace "X" (ev))))))))); + EEsc __U0393_0 __U0394_0 __U03be_0 ec t lev e -> (trace "X" ((trace "X" (expr2antecedent0 (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (haskBrak (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (t))))))))) (trace "X" (lev))))) (trace "X" (e)))))); + EBrak __U0393_0 __U0394_0 __U03be_0 ec t lev e -> (trace "X" ((trace "X" (expr2antecedent0 (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" ((MkLeveledHaskType (trace "X" (t)) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev)))))))) (trace "X" (e)))))); + ECast __U0393_0 __U0394_0 __U03be_0 __U03b3_ t1 lev e -> (trace "X" ((trace "X" (expr2antecedent0 (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" ((MkLeveledHaskType (trace "X" (__U03b3_)) (trace "X" (lev))))) (trace "X" (e)))))); + ENote __U0393_0 __U0394_0 __U03be_0 t n e -> (trace "X" ((trace "X" (expr2antecedent0 (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (t)) (trace "X" (e)))))); + ETyApp __U0393_0 __U0394_0 __U03ba_ __U03c3_ __U03c4_ __U03be_0 l e -> (trace "X" ((trace "X" (expr2antecedent0 (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (haskTAll (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (__U03c3_))))))))) (trace "X" (l))))) (trace "X" (e)))))); + ECoLam __U0393_0 __U0394_0 __U03ba_ __U03c3_ __U03c3___U2081_ __U03c3___U2082_ __U03be_0 l e -> (trace "X" ((trace "X" (expr2antecedent0 (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" ((\_ -> (trace "X" ((trace "X" (mkHaskCoercionKind (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (__U03c3___U2081_)) (trace "X" (__U03c3___U2082_))))))))) (trace "X" (__U0394_0))))) (trace "X" (__U03be_0)) (trace "X" ((MkLeveledHaskType (trace "X" (__U03c3_)) (trace "X" (l))))) (trace "X" (e)))))); + ECoApp __U0393_0 __U0394_0 __U03ba_ __U03b3_ __U03c3___U2081_ __U03c3_ __U03be_0 l e -> (trace "X" ((trace "X" (expr2antecedent0 (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" ((MkLeveledHaskType (trace "X" ((\_ env -> (trace "X" (TCoerc (trace "X" (__U03ba_)) (trace "X" ((trace "X" ((__U03b3_ (trace "X" (__)) (trace "X" (env))))))) (trace "X" ((trace "X" ((__U03c3___U2081_ (trace "X" (__)) (trace "X" (env))))))) (trace "X" ((trace "X" ((__U03c3_ (trace "X" (__)) (trace "X" (env)))))))))))) (trace "X" (l))))) (trace "X" (e)))))); + ETyLam __U0393_0 __U0394_0 __U03be_0 __U03ba_ __U03c3_ l e -> (trace "X" ((trace "X" (expr2antecedent0 (trace "X" (((:) (trace "X" (__U03ba_)) (trace "X" (__U0393_0))))) (trace "X" ((trace "X" ((weakCE (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (__U0394_0))))))) (trace "X" ((\x -> (trace "X" ((trace "X" (weakLT (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (KindStar)) (trace "X" ((trace "X" ((__U03be_0 (trace "X" (x)))))))))))))) (trace "X" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (haskTApp (trace "X" (((:) (trace "X" (__U03ba_)) (trace "X" (__U0393_0))))) (trace "X" (__U03ba_)) (trace "X" ((\_ -> (trace "X" ((trace "X" (weakF (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (KindStar)) (trace "X" (__U03c3_))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (freshHaskTyVar (trace "X" (__U0393_0)) (trace "X" (__U03ba_)))))))))))))))) (trace "X" ((trace "X" ((weakL (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (l)))))))))) (trace "X" (e)))))); + ECase __U0393_0 __U0394_0 __U03be_0 l tc tbranches atypes e' alts -> (trace "X" (T_Branch + (trace "X" ((trace "X" ((let { + varsfromalts alts0 = + (trace "X" (case (trace "X" (alts0)) of { + T_Leaf o -> + (trace "X" (case (trace "X" (o)) of { + Prelude.Just h -> (trace "X" ((trace "X" (stripOutVars (trace "X" (eqd_vv)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExprVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" ((trace "X" ((projT1 (trace "X" (h)))))))))))) (trace "X" ((trace "X" ((scbwv_exprvars (trace "X" (eqd_vv)) (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (atypes)) (trace "X" ((trace "X" ((projT1 (trace "X" (h))))))) (trace "X" ((trace "X" ((projT1 (trace "X" ((trace "X" ((projT2 (trace "X" (h)))))))))))))))))))))) (trace "X" ((trace "X" ((expr2antecedent0 (trace "X" ((trace "X" ((sac___U0393_ (trace "X" (tc)) (trace "X" ((trace "X" ((projT1 (trace "X" (h))))))) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((sac___U0394_ (trace "X" (tc)) (trace "X" ((trace "X" ((projT1 (trace "X" (h))))))) (trace "X" (__U0393_0)) (trace "X" (atypes)) (trace "X" ((trace "X" ((weakCK'' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" ((trace "X" ((projT1 (trace "X" (h)))))))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" ((trace "X" ((projT1 (trace "X" (h))))))))))))))))) (trace "X" (__U0394_0)))))))))))) (trace "X" ((trace "X" ((scbwv___U03be_ (trace "X" (eqd_vv)) (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (atypes)) (trace "X" ((trace "X" ((projT1 (trace "X" (h))))))) (trace "X" ((trace "X" ((projT1 (trace "X" ((trace "X" ((projT2 (trace "X" (h)))))))))))) (trace "X" (__U03be_0)) (trace "X" (l))))))) (trace "X" ((trace "X" ((weakLT' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" ((trace "X" ((projT1 (trace "X" (h)))))))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" ((trace "X" ((projT1 (trace "X" (h))))))))))))))))) (trace "X" (KindStar)) (trace "X" ((MkLeveledHaskType (trace "X" (tbranches)) (trace "X" (l)))))))))) (trace "X" ((trace "X" ((projT2 (trace "X" ((trace "X" ((projT2 (trace "X" (h))))))))))))))))))))); + Prelude.Nothing -> (trace "X" (T_Leaf (trace "X" (Prelude.Nothing))))})); + T_Branch b1 b2 -> (trace "X" (T_Branch (trace "X" ((trace "X" ((varsfromalts (trace "X" (b1))))))) (trace "X" ((trace "X" ((varsfromalts (trace "X" (b2)))))))))}))} + in varsfromalts (trace "X" (alts))))))) (trace "X" ((trace "X" ((expr2antecedent0 (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (caseType (trace "X" (__U0393_0)) (trace "X" (tc)) (trace "X" (atypes))))))))) (trace "X" (l))))) (trace "X" (e'))))))))); + ELetRec __U0393_0 __U0394_0 __U03be_0 l __U03c4_ vars x x0 -> (trace "X" (let {__U03be_'0 = (trace "X" ((trace "X" (update___U03be_ (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (l)) (trace "X" ((trace "X" ((leaves (trace "X" (vars)))))))))))} in (trace "X" (let {branch_context = (trace "X" ((trace "X" (eLetRecContext0 (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_'0)) (trace "X" (l)) (trace "X" (vars)) (trace "X" (x))))))} in (trace "X" (let {all_contexts = (trace "X" (T_Branch (trace "X" ((trace "X" ((expr2antecedent0 (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_'0)) (trace "X" ((MkLeveledHaskType (trace "X" (__U03c4_)) (trace "X" (l))))) (trace "X" (x0))))))) (trace "X" (branch_context))))} in (trace "X" ((trace "X" (stripOutVars (trace "X" (eqd_vv)) (trace "X" ((trace "X" ((leaves (trace "X" ((trace "X" ((mapOptionTree (trace "X" (fst)) (trace "X" (vars)))))))))))) (trace "X" (all_contexts)))))))))))); + _ -> (trace "X" (T_Leaf (trace "X" (Prelude.Nothing))))})); + eLetRecContext0 __U0393_0 __U0394_0 __U03be_0 lev tree elrb = + (trace "X" (case (trace "X" (elrb)) of { + ELR_nil __U0393_1 __U0394_1 __U03be_1 lev0 -> (trace "X" (T_Leaf (trace "X" (Prelude.Nothing)))); + ELR_leaf __U0393_1 __U0394_1 __U03be_1 lev0 v t e -> (trace "X" ((trace "X" (expr2antecedent0 (trace "X" (__U0393_1)) (trace "X" (__U0394_1)) (trace "X" (__U03be_1)) (trace "X" ((MkLeveledHaskType (trace "X" (t)) (trace "X" (lev0))))) (trace "X" (e)))))); + ELR_branch __U0393_1 __U0394_1 __U03be_1 lev0 t1 t2 b1 b2 -> (trace "X" (T_Branch (trace "X" ((trace "X" ((eLetRecContext0 (trace "X" (__U0393_1)) (trace "X" (__U0394_1)) (trace "X" (__U03be_1)) (trace "X" (lev0)) (trace "X" (t1)) (trace "X" (b1))))))) (trace "X" ((trace "X" ((eLetRecContext0 (trace "X" (__U0393_1)) (trace "X" (__U0394_1)) (trace "X" (__U03be_1)) (trace "X" (lev0)) (trace "X" (t2)) (trace "X" (b2)))))))))}))} + in expr2antecedent0)) + +eLetRecContext :: (EqDecidable a1) -> TypeEnv -> CoercionEnv -> (a1 -> LeveledHaskType) -> HaskLevel -> (Tree (Prelude.Maybe ((,) a1 HaskType))) -> (ELetRecBindings a1) -> Tree (Prelude.Maybe a1) +eLetRecContext eqd_vv = + (trace "X" (let { + expr2antecedent0 __U0393_' __U0394_' __U03be_' __U03c4_' exp = + (trace "X" (case (trace "X" (exp)) of { + EGlobal __U0393_0 __U0394_0 __U03be_0 t w -> (trace "X" (T_Leaf (trace "X" (Prelude.Nothing)))); + EVar __U0393_0 __U0394_0 __U03be_0 ev -> (trace "X" (T_Leaf (trace "X" ((Prelude.Just (trace "X" (ev))))))); + ELit __U0393_0 __U0394_0 __U03be_0 lit lev -> (trace "X" (T_Leaf (trace "X" (Prelude.Nothing)))); + EApp __U0393_0 __U0394_0 __U03be_0 t1 t2 lev e1 e2 -> (trace "X" (T_Branch (trace "X" ((trace "X" ((unsafeCoerce (trace "X" (expr2antecedent0)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" ((MkLeveledHaskType (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" ((t2 (trace "X" (__)) (trace "X" (env)))))))))) (trace "X" ((trace "X" ((t1 (trace "X" (__)) (trace "X" (env)))))))))))) (trace "X" (lev))))) (trace "X" (e1))))))) (trace "X" ((trace "X" ((unsafeCoerce (trace "X" (expr2antecedent0)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" ((MkLeveledHaskType (trace "X" (t2)) (trace "X" (lev))))) (trace "X" (e2))))))))); + ELam __U0393_0 __U0394_0 __U03be_0 t1 t2 lev v e -> (trace "X" ((trace "X" (stripOutVars (trace "X" (eqd_vv)) (trace "X" (((:) (trace "X" (v)) (trace "X" (([])))))) (trace "X" ((trace "X" ((expr2antecedent0 (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update___U03be_ (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" ((unsafeCoerce (trace "X" (__U03be_0))))) (trace "X" (lev)) (trace "X" (((:) (trace "X" (((,) (trace "X" (v)) (trace "X" (t1))))) (trace "X" (([]))))))))))) (trace "X" ((MkLeveledHaskType (trace "X" (t2)) (trace "X" (lev))))) (trace "X" (e))))))))))); + ELet __U0393_0 __U0394_0 __U03be_0 tv t lev v ev ebody -> (trace "X" (T_Branch (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" (((:) (trace "X" (v)) (trace "X" (([])))))) (trace "X" ((trace "X" ((expr2antecedent0 (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update___U03be_ (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" (((:) (trace "X" (((,) (trace "X" (v)) (trace "X" (tv))))) (trace "X" (([]))))))))))) (trace "X" ((MkLeveledHaskType (trace "X" (t)) (trace "X" (lev))))) (trace "X" (ebody)))))))))))) (trace "X" ((trace "X" ((expr2antecedent0 (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" ((MkLeveledHaskType (trace "X" (tv)) (trace "X" (lev))))) (trace "X" (ev))))))))); + EEsc __U0393_0 __U0394_0 __U03be_0 ec t lev e -> (trace "X" ((trace "X" (expr2antecedent0 (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (haskBrak (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (t))))))))) (trace "X" (lev))))) (trace "X" (e)))))); + EBrak __U0393_0 __U0394_0 __U03be_0 ec t lev e -> (trace "X" ((trace "X" (expr2antecedent0 (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" ((MkLeveledHaskType (trace "X" (t)) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev)))))))) (trace "X" (e)))))); + ECast __U0393_0 __U0394_0 __U03be_0 __U03b3_ t1 lev e -> (trace "X" ((trace "X" (expr2antecedent0 (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" ((MkLeveledHaskType (trace "X" (__U03b3_)) (trace "X" (lev))))) (trace "X" (e)))))); + ENote __U0393_0 __U0394_0 __U03be_0 t n e -> (trace "X" ((trace "X" (expr2antecedent0 (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (t)) (trace "X" (e)))))); + ETyApp __U0393_0 __U0394_0 __U03ba_ __U03c3_ __U03c4_ __U03be_0 l e -> (trace "X" ((trace "X" (expr2antecedent0 (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (haskTAll (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (__U03c3_))))))))) (trace "X" (l))))) (trace "X" (e)))))); + ECoLam __U0393_0 __U0394_0 __U03ba_ __U03c3_ __U03c3___U2081_ __U03c3___U2082_ __U03be_0 l e -> (trace "X" ((trace "X" (expr2antecedent0 (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" ((\_ -> (trace "X" ((trace "X" (mkHaskCoercionKind (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (__U03c3___U2081_)) (trace "X" (__U03c3___U2082_))))))))) (trace "X" (__U0394_0))))) (trace "X" (__U03be_0)) (trace "X" ((MkLeveledHaskType (trace "X" (__U03c3_)) (trace "X" (l))))) (trace "X" (e)))))); + ECoApp __U0393_0 __U0394_0 __U03ba_ __U03b3_ __U03c3___U2081_ __U03c3_ __U03be_0 l e -> (trace "X" ((trace "X" (expr2antecedent0 (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" ((MkLeveledHaskType (trace "X" ((\_ env -> (trace "X" (TCoerc (trace "X" (__U03ba_)) (trace "X" ((trace "X" ((__U03b3_ (trace "X" (__)) (trace "X" (env))))))) (trace "X" ((trace "X" ((__U03c3___U2081_ (trace "X" (__)) (trace "X" (env))))))) (trace "X" ((trace "X" ((__U03c3_ (trace "X" (__)) (trace "X" (env)))))))))))) (trace "X" (l))))) (trace "X" (e)))))); + ETyLam __U0393_0 __U0394_0 __U03be_0 __U03ba_ __U03c3_ l e -> (trace "X" ((trace "X" (expr2antecedent0 (trace "X" (((:) (trace "X" (__U03ba_)) (trace "X" (__U0393_0))))) (trace "X" ((trace "X" ((weakCE (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (__U0394_0))))))) (trace "X" ((\x -> (trace "X" ((trace "X" (weakLT (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (KindStar)) (trace "X" ((trace "X" ((__U03be_0 (trace "X" (x)))))))))))))) (trace "X" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (haskTApp (trace "X" (((:) (trace "X" (__U03ba_)) (trace "X" (__U0393_0))))) (trace "X" (__U03ba_)) (trace "X" ((\_ -> (trace "X" ((trace "X" (weakF (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (KindStar)) (trace "X" (__U03c3_))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (freshHaskTyVar (trace "X" (__U0393_0)) (trace "X" (__U03ba_)))))))))))))))) (trace "X" ((trace "X" ((weakL (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (l)))))))))) (trace "X" (e)))))); + ECase __U0393_0 __U0394_0 __U03be_0 l tc tbranches atypes e' alts -> (trace "X" (T_Branch + (trace "X" ((trace "X" ((let { + varsfromalts alts0 = + (trace "X" (case (trace "X" (alts0)) of { + T_Leaf o -> + (trace "X" (case (trace "X" (o)) of { + Prelude.Just h -> (trace "X" ((trace "X" (stripOutVars (trace "X" (eqd_vv)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExprVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" ((trace "X" ((projT1 (trace "X" (h)))))))))))) (trace "X" ((trace "X" ((scbwv_exprvars (trace "X" (eqd_vv)) (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (atypes)) (trace "X" ((trace "X" ((projT1 (trace "X" (h))))))) (trace "X" ((trace "X" ((projT1 (trace "X" ((trace "X" ((projT2 (trace "X" (h)))))))))))))))))))))) (trace "X" ((trace "X" ((expr2antecedent0 (trace "X" ((trace "X" ((sac___U0393_ (trace "X" (tc)) (trace "X" ((trace "X" ((projT1 (trace "X" (h))))))) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((sac___U0394_ (trace "X" (tc)) (trace "X" ((trace "X" ((projT1 (trace "X" (h))))))) (trace "X" (__U0393_0)) (trace "X" (atypes)) (trace "X" ((trace "X" ((weakCK'' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" ((trace "X" ((projT1 (trace "X" (h)))))))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" ((trace "X" ((projT1 (trace "X" (h))))))))))))))))) (trace "X" (__U0394_0)))))))))))) (trace "X" ((trace "X" ((scbwv___U03be_ (trace "X" (eqd_vv)) (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (atypes)) (trace "X" ((trace "X" ((projT1 (trace "X" (h))))))) (trace "X" ((trace "X" ((projT1 (trace "X" ((trace "X" ((projT2 (trace "X" (h)))))))))))) (trace "X" (__U03be_0)) (trace "X" (l))))))) (trace "X" ((trace "X" ((weakLT' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" ((trace "X" ((projT1 (trace "X" (h)))))))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" ((trace "X" ((projT1 (trace "X" (h))))))))))))))))) (trace "X" (KindStar)) (trace "X" ((MkLeveledHaskType (trace "X" (tbranches)) (trace "X" (l)))))))))) (trace "X" ((trace "X" ((projT2 (trace "X" ((trace "X" ((projT2 (trace "X" (h))))))))))))))))))))); + Prelude.Nothing -> (trace "X" (T_Leaf (trace "X" (Prelude.Nothing))))})); + T_Branch b1 b2 -> (trace "X" (T_Branch (trace "X" ((trace "X" ((varsfromalts (trace "X" (b1))))))) (trace "X" ((trace "X" ((varsfromalts (trace "X" (b2)))))))))}))} + in varsfromalts (trace "X" (alts))))))) (trace "X" ((trace "X" ((expr2antecedent0 (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (caseType (trace "X" (__U0393_0)) (trace "X" (tc)) (trace "X" (atypes))))))))) (trace "X" (l))))) (trace "X" (e'))))))))); + ELetRec __U0393_0 __U0394_0 __U03be_0 l __U03c4_ vars x x0 -> (trace "X" (let {__U03be_'0 = (trace "X" ((trace "X" (update___U03be_ (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (l)) (trace "X" ((trace "X" ((leaves (trace "X" (vars)))))))))))} in (trace "X" (let {branch_context = (trace "X" ((trace "X" (eLetRecContext0 (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_'0)) (trace "X" (l)) (trace "X" (vars)) (trace "X" (x))))))} in (trace "X" (let {all_contexts = (trace "X" (T_Branch (trace "X" ((trace "X" ((expr2antecedent0 (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_'0)) (trace "X" ((MkLeveledHaskType (trace "X" (__U03c4_)) (trace "X" (l))))) (trace "X" (x0))))))) (trace "X" (branch_context))))} in (trace "X" ((trace "X" (stripOutVars (trace "X" (eqd_vv)) (trace "X" ((trace "X" ((leaves (trace "X" ((trace "X" ((mapOptionTree (trace "X" (fst)) (trace "X" (vars)))))))))))) (trace "X" (all_contexts))))))))))))})); + eLetRecContext0 __U0393_0 __U0394_0 __U03be_0 lev tree elrb = + (trace "X" (case (trace "X" (elrb)) of { + ELR_nil __U0393_1 __U0394_1 __U03be_1 lev0 -> (trace "X" (T_Leaf (trace "X" (Prelude.Nothing)))); + ELR_leaf __U0393_1 __U0394_1 __U03be_1 lev0 v t e -> (trace "X" ((trace "X" (expr2antecedent0 (trace "X" (__U0393_1)) (trace "X" (__U0394_1)) (trace "X" (__U03be_1)) (trace "X" ((MkLeveledHaskType (trace "X" (t)) (trace "X" (lev0))))) (trace "X" (e)))))); + ELR_branch __U0393_1 __U0394_1 __U03be_1 lev0 t1 t2 b1 b2 -> (trace "X" (T_Branch (trace "X" ((trace "X" ((eLetRecContext0 (trace "X" (__U0393_1)) (trace "X" (__U0394_1)) (trace "X" (__U03be_1)) (trace "X" (lev0)) (trace "X" (t1)) (trace "X" (b1))))))) (trace "X" ((trace "X" ((eLetRecContext0 (trace "X" (__U0393_1)) (trace "X" (__U0394_1)) (trace "X" (__U03be_1)) (trace "X" (lev0)) (trace "X" (t2)) (trace "X" (b2)))))))))}))} + in eLetRecContext0)) + +mkProofCaseBranch :: (EqDecidable a1) -> (([]) Kind) -> (([]) HaskCoercionKind) -> (a1 -> LeveledHaskType) -> HaskLevel -> TyCon.TyCon -> HaskType -> (IList Kind HaskType) -> (SigT StrongAltCon (SigT (StrongCaseBranchWithVVs a1) (Expr a1))) -> SigT StrongAltCon ProofCaseBranch +mkProofCaseBranch eqd_vv __U0393_0 __U0394_0 __U03be_0 l tc tbranches atypes alt = + (trace "X" (case (trace "X" (alt)) of { + ExistT x s -> (trace "X" (ExistT (trace "X" (x)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExprVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (x))))))) (trace "X" ((trace "X" ((scbwv_exprvars (trace "X" (eqd_vv)) (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (atypes)) (trace "X" (x)) (trace "X" ((trace "X" ((projT1 (trace "X" (s))))))))))))))))) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" ((trace "X" ((sac___U0393_ (trace "X" (tc)) (trace "X" (x)) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((sac___U0394_ (trace "X" (tc)) (trace "X" (x)) (trace "X" (__U0393_0)) (trace "X" (atypes)) (trace "X" ((trace "X" ((weakCK'' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (x))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (x)))))))))))) (trace "X" (__U0394_0)))))))))))) (trace "X" ((trace "X" ((scbwv___U03be_ (trace "X" (eqd_vv)) (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (atypes)) (trace "X" (x)) (trace "X" ((trace "X" ((projT1 (trace "X" (s))))))) (trace "X" (__U03be_0)) (trace "X" (l))))))) (trace "X" ((trace "X" ((weakLT' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (x))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (x)))))))))))) (trace "X" (KindStar)) (trace "X" ((MkLeveledHaskType (trace "X" (tbranches)) (trace "X" (l)))))))))) (trace "X" ((trace "X" ((projT2 (trace "X" (s))))))))))))))))))))))))})) + +arrangeContext :: (EqDecidable a1) -> TypeEnv -> CoercionEnv -> a1 -> (Tree (Prelude.Maybe a1)) -> (a1 -> LeveledHaskType) -> Prelude.Either (Arrange LeveledHaskType) (Arrange LeveledHaskType) +arrangeContext eqd_vv __U0393_0 __U0394_0 v ctx __U03be_0 = + (trace "X" ((trace "X" (tree_rect (trace "X" ((\a -> + (trace "X" (case (trace "X" (a)) of { + Prelude.Just v' -> + (trace "X" (let {s = (trace "X" ((trace "X" (eqd_dec (trace "X" (eqd_vv)) (trace "X" (v')) (trace "X" (v))))))} in + (trace "X" (case (trace "X" (s)) of { + Prelude.True -> (trace "X" ((trace "X" (eq_rect_r (trace "X" (v)) (trace "X" ((Prelude.Right (trace "X" ((RuCanL (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((trace "X" ((__U03be_0 (trace "X" (v))))))))))))))))))) (trace "X" (v')))))); + Prelude.False -> (trace "X" (Prelude.Left (trace "X" ((RuCanR (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((trace "X" ((__U03be_0 (trace "X" (v'))))))))))))))))))})))); + Prelude.Nothing -> (trace "X" (Prelude.Left (trace "X" ((RuCanR (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing))))))))))}))))) (trace "X" ((\ctx1 iHctx1 ctx2 iHctx2 -> + (trace "X" (case (trace "X" (iHctx1)) of { + Prelude.Left lpf -> + (trace "X" (case (trace "X" (iHctx2)) of { + Prelude.Left rpf -> (trace "X" (Prelude.Left (trace "X" ((RComp (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" ((T_Branch (trace "X" (ctx1)) (trace "X" (ctx2)))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" (((:) (trace "X" (v)) (trace "X" (([])))))) (trace "X" ((T_Branch (trace "X" (ctx1)) (trace "X" (ctx2))))))))))))))) (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" (v)) (trace "X" (([])))))) (trace "X" ((T_Branch (trace "X" (ctx1)) (trace "X" (ctx2))))))))))))))) (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing)))))))) (trace "X" ((RComp (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" (ctx1))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" (ctx2)))))))))) (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" (v)) (trace "X" (([])))))) (trace "X" (ctx1)))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" (ctx2)))))))))) (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" (v)) (trace "X" (([])))))) (trace "X" (ctx1)))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" (((:) (trace "X" (v)) (trace "X" (([])))))) (trace "X" (ctx2))))))))))))))) (trace "X" ((RRight (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" (ctx1))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" (((:) (trace "X" (v)) (trace "X" (([])))))) (trace "X" (ctx1)))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" (ctx2))))))) (trace "X" ((RComp (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" (ctx1))))))) (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" (v)) (trace "X" (([])))))) (trace "X" (ctx1)))))))))))) (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing)))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" (((:) (trace "X" (v)) (trace "X" (([])))))) (trace "X" (ctx1)))))))))))) (trace "X" (lpf)) (trace "X" ((RCanR (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" (((:) (trace "X" (v)) (trace "X" (([])))))) (trace "X" (ctx1))))))))))))))))))))) (trace "X" ((RLeft (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" (ctx2))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" (((:) (trace "X" (v)) (trace "X" (([])))))) (trace "X" (ctx2)))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" (((:) (trace "X" (v)) (trace "X" (([])))))) (trace "X" (ctx1)))))))))))) (trace "X" ((RComp (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" (ctx2))))))) (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" (v)) (trace "X" (([])))))) (trace "X" (ctx2)))))))))))) (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing)))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" (((:) (trace "X" (v)) (trace "X" (([])))))) (trace "X" (ctx2)))))))))))) (trace "X" (rpf)) (trace "X" ((RCanR (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" (((:) (trace "X" (v)) (trace "X" (([])))))) (trace "X" (ctx2)))))))))))))))))))))))) (trace "X" ((RuCanR (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" (((:) (trace "X" (v)) (trace "X" (([])))))) (trace "X" ((T_Branch (trace "X" (ctx1)) (trace "X" (ctx2))))))))))))))))))))))); + Prelude.Right rpf -> (trace "X" (Prelude.Right + (trace "X" ((let {q = (trace "X" (RRight (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" (ctx1))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" (((:) (trace "X" (v)) (trace "X" (([])))))) (trace "X" (ctx1)))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" (ctx2))))))) (trace "X" ((RComp (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" (ctx1))))))) (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" (v)) (trace "X" (([])))))) (trace "X" (ctx1)))))))))))) (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing)))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" (((:) (trace "X" (v)) (trace "X" (([])))))) (trace "X" (ctx1)))))))))))) (trace "X" (lpf)) (trace "X" ((RCanR (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" (((:) (trace "X" (v)) (trace "X" (([])))))) (trace "X" (ctx1))))))))))))))))))))} in + (trace "X" (RComp (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" (ctx1))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" (ctx2)))))))))) (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" (v)) (trace "X" (([])))))) (trace "X" (ctx1)))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" (ctx2)))))))))) (trace "X" ((T_Branch (trace "X" ((T_Branch + (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) + (trace "X" ((trace "X" ((mapOptionTree' (trace "X" ((\v0 -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (eqd_vv)) (trace "X" (v0)) (trace "X" (v)))))) of { + Prelude.True -> (trace "X" (Prelude.Nothing)); + Prelude.False -> (trace "X" (Prelude.Just (trace "X" (v0))))}))))) (trace "X" (ctx1)))))))))))) + (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) + (trace "X" ((trace "X" ((mapOptionTree' (trace "X" ((\v0 -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (eqd_vv)) (trace "X" (v0)) (trace "X" (v)))))) of { + Prelude.True -> (trace "X" (Prelude.Nothing)); + Prelude.False -> (trace "X" (Prelude.Just (trace "X" (v0))))}))))) (trace "X" (ctx2))))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((trace "X" ((__U03be_0 (trace "X" (v)))))))))))))))) (trace "X" (q)) (trace "X" ((RComp (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" (v)) (trace "X" (([])))))) (trace "X" (ctx1)))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" (ctx2)))))))))) (trace "X" ((T_Branch + (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) + (trace "X" ((trace "X" ((mapOptionTree' (trace "X" ((\v0 -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (eqd_vv)) (trace "X" (v0)) (trace "X" (v)))))) of { + Prelude.True -> (trace "X" (Prelude.Nothing)); + Prelude.False -> (trace "X" (Prelude.Just (trace "X" (v0))))}))))) (trace "X" (ctx1)))))))))))) (trace "X" ((T_Branch + (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) + (trace "X" ((trace "X" ((mapOptionTree' (trace "X" ((\v0 -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (eqd_vv)) (trace "X" (v0)) (trace "X" (v)))))) of { + Prelude.True -> (trace "X" (Prelude.Nothing)); + Prelude.False -> (trace "X" (Prelude.Just (trace "X" (v0))))}))))) (trace "X" (ctx2)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((trace "X" ((__U03be_0 (trace "X" (v))))))))))))))))))) (trace "X" ((T_Branch (trace "X" ((T_Branch + (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) + (trace "X" ((trace "X" ((mapOptionTree' (trace "X" ((\v0 -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (eqd_vv)) (trace "X" (v0)) (trace "X" (v)))))) of { + Prelude.True -> (trace "X" (Prelude.Nothing)); + Prelude.False -> (trace "X" (Prelude.Just (trace "X" (v0))))}))))) (trace "X" (ctx1)))))))))))) + (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) + (trace "X" ((trace "X" ((mapOptionTree' (trace "X" ((\v0 -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (eqd_vv)) (trace "X" (v0)) (trace "X" (v)))))) of { + Prelude.True -> (trace "X" (Prelude.Nothing)); + Prelude.False -> (trace "X" (Prelude.Just (trace "X" (v0))))}))))) (trace "X" (ctx2))))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((trace "X" ((__U03be_0 (trace "X" (v)))))))))))))))) (trace "X" ((RLeft (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" (ctx2))))))) (trace "X" ((T_Branch + (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) + (trace "X" ((trace "X" ((mapOptionTree' (trace "X" ((\v0 -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (eqd_vv)) (trace "X" (v0)) (trace "X" (v)))))) of { + Prelude.True -> (trace "X" (Prelude.Nothing)); + Prelude.False -> (trace "X" (Prelude.Just (trace "X" (v0))))}))))) (trace "X" (ctx2)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((trace "X" ((__U03be_0 (trace "X" (v)))))))))))))))) + (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) + (trace "X" ((trace "X" ((mapOptionTree' (trace "X" ((\v0 -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (eqd_vv)) (trace "X" (v0)) (trace "X" (v)))))) of { + Prelude.True -> (trace "X" (Prelude.Nothing)); + Prelude.False -> (trace "X" (Prelude.Just (trace "X" (v0))))}))))) (trace "X" (ctx1)))))))))))) (trace "X" (rpf))))) (trace "X" ((RAssoc + (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) + (trace "X" ((trace "X" ((mapOptionTree' (trace "X" ((\v0 -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (eqd_vv)) (trace "X" (v0)) (trace "X" (v)))))) of { + Prelude.True -> (trace "X" (Prelude.Nothing)); + Prelude.False -> (trace "X" (Prelude.Just (trace "X" (v0))))}))))) (trace "X" (ctx1)))))))))))) + (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) + (trace "X" ((trace "X" ((mapOptionTree' (trace "X" ((\v0 -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (eqd_vv)) (trace "X" (v0)) (trace "X" (v)))))) of { + Prelude.True -> (trace "X" (Prelude.Nothing)); + Prelude.False -> (trace "X" (Prelude.Just (trace "X" (v0))))}))))) (trace "X" (ctx2)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((trace "X" ((__U03be_0 (trace "X" (v))))))))))))))))))))))))))})); + Prelude.Right lpf -> + (trace "X" (case (trace "X" (iHctx2)) of { + Prelude.Left rpf -> (trace "X" (Prelude.Right (trace "X" ((RComp (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" (ctx1))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" (ctx2)))))))))) (trace "X" ((T_Branch (trace "X" ((T_Branch + (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) + (trace "X" ((trace "X" ((mapOptionTree' (trace "X" ((\v0 -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (eqd_vv)) (trace "X" (v0)) (trace "X" (v)))))) of { + Prelude.True -> (trace "X" (Prelude.Nothing)); + Prelude.False -> (trace "X" (Prelude.Just (trace "X" (v0))))}))))) (trace "X" (ctx1)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((trace "X" ((__U03be_0 (trace "X" (v)))))))))))))))) + (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) + (trace "X" ((trace "X" ((mapOptionTree' (trace "X" ((\v0 -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (eqd_vv)) (trace "X" (v0)) (trace "X" (v)))))) of { + Prelude.True -> (trace "X" (Prelude.Nothing)); + Prelude.False -> (trace "X" (Prelude.Just (trace "X" (v0))))}))))) (trace "X" (ctx2))))))))))))))) (trace "X" ((T_Branch (trace "X" ((T_Branch + (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) + (trace "X" ((trace "X" ((mapOptionTree' (trace "X" ((\v0 -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (eqd_vv)) (trace "X" (v0)) (trace "X" (v)))))) of { + Prelude.True -> (trace "X" (Prelude.Nothing)); + Prelude.False -> (trace "X" (Prelude.Just (trace "X" (v0))))}))))) (trace "X" (ctx1)))))))))))) + (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) + (trace "X" ((trace "X" ((mapOptionTree' (trace "X" ((\v0 -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (eqd_vv)) (trace "X" (v0)) (trace "X" (v)))))) of { + Prelude.True -> (trace "X" (Prelude.Nothing)); + Prelude.False -> (trace "X" (Prelude.Just (trace "X" (v0))))}))))) (trace "X" (ctx2))))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((trace "X" ((__U03be_0 (trace "X" (v)))))))))))))))) + (trace "X" ((let {rpf' = (trace "X" (RComp (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" (ctx2))))))) (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" (v)) (trace "X" (([])))))) (trace "X" (ctx2)))))))))))) (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing)))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" (((:) (trace "X" (v)) (trace "X" (([])))))) (trace "X" (ctx2)))))))))))) (trace "X" (rpf)) (trace "X" ((RCanR (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" (((:) (trace "X" (v)) (trace "X" (([])))))) (trace "X" (ctx2)))))))))))))))))} in + (trace "X" (let {qq = (trace "X" (RLeft (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" (ctx2))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" (((:) (trace "X" (v)) (trace "X" (([])))))) (trace "X" (ctx2)))))))))))) (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" (v)) (trace "X" (([])))))) (trace "X" (ctx1)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((trace "X" ((__U03be_0 (trace "X" (v)))))))))))))))) (trace "X" (rpf'))))} in + (trace "X" (RComp (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" (ctx1))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" (ctx2)))))))))) (trace "X" ((T_Branch (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" (v)) (trace "X" (([])))))) (trace "X" (ctx1)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((trace "X" ((__U03be_0 (trace "X" (v)))))))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" (ctx2)))))))))) (trace "X" ((T_Branch (trace "X" ((T_Branch + (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) + (trace "X" ((trace "X" ((mapOptionTree' (trace "X" ((\v0 -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (eqd_vv)) (trace "X" (v0)) (trace "X" (v)))))) of { + Prelude.True -> (trace "X" (Prelude.Nothing)); + Prelude.False -> (trace "X" (Prelude.Just (trace "X" (v0))))}))))) (trace "X" (ctx1)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((trace "X" ((__U03be_0 (trace "X" (v)))))))))))))))) + (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) + (trace "X" ((trace "X" ((mapOptionTree' (trace "X" ((\v0 -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (eqd_vv)) (trace "X" (v0)) (trace "X" (v)))))) of { + Prelude.True -> (trace "X" (Prelude.Nothing)); + Prelude.False -> (trace "X" (Prelude.Just (trace "X" (v0))))}))))) (trace "X" (ctx2))))))))))))))) (trace "X" ((RRight (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" (ctx1))))))) (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" (v)) (trace "X" (([])))))) (trace "X" (ctx1)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((trace "X" ((__U03be_0 (trace "X" (v)))))))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" (ctx2))))))) (trace "X" (lpf))))) (trace "X" (qq))))))))) + (trace "X" ((trace "X" ((pivotContext + (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) + (trace "X" ((trace "X" ((mapOptionTree' (trace "X" ((\v0 -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (eqd_vv)) (trace "X" (v0)) (trace "X" (v)))))) of { + Prelude.True -> (trace "X" (Prelude.Nothing)); + Prelude.False -> (trace "X" (Prelude.Just (trace "X" (v0))))}))))) (trace "X" (ctx1)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((trace "X" ((__U03be_0 (trace "X" (v))))))))))))) + (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) + (trace "X" ((trace "X" ((mapOptionTree' (trace "X" ((\v0 -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (eqd_vv)) (trace "X" (v0)) (trace "X" (v)))))) of { + Prelude.True -> (trace "X" (Prelude.Nothing)); + Prelude.False -> (trace "X" (Prelude.Just (trace "X" (v0))))}))))) (trace "X" (ctx2)))))))))))))))))))))); + Prelude.Right rpf -> (trace "X" (Prelude.Right (trace "X" ((RComp (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" (ctx1))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" (ctx2)))))))))) (trace "X" ((T_Branch (trace "X" ((T_Branch + (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) + (trace "X" ((trace "X" ((mapOptionTree' (trace "X" ((\v0 -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (eqd_vv)) (trace "X" (v0)) (trace "X" (v)))))) of { + Prelude.True -> (trace "X" (Prelude.Nothing)); + Prelude.False -> (trace "X" (Prelude.Just (trace "X" (v0))))}))))) (trace "X" (ctx1)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((trace "X" ((__U03be_0 (trace "X" (v)))))))))))))))) (trace "X" ((T_Branch + (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) + (trace "X" ((trace "X" ((mapOptionTree' (trace "X" ((\v0 -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (eqd_vv)) (trace "X" (v0)) (trace "X" (v)))))) of { + Prelude.True -> (trace "X" (Prelude.Nothing)); + Prelude.False -> (trace "X" (Prelude.Just (trace "X" (v0))))}))))) (trace "X" (ctx2)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((trace "X" ((__U03be_0 (trace "X" (v))))))))))))))))))) (trace "X" ((T_Branch (trace "X" ((T_Branch + (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) + (trace "X" ((trace "X" ((mapOptionTree' (trace "X" ((\v0 -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (eqd_vv)) (trace "X" (v0)) (trace "X" (v)))))) of { + Prelude.True -> (trace "X" (Prelude.Nothing)); + Prelude.False -> (trace "X" (Prelude.Just (trace "X" (v0))))}))))) (trace "X" (ctx1)))))))))))) + (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) + (trace "X" ((trace "X" ((mapOptionTree' (trace "X" ((\v0 -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (eqd_vv)) (trace "X" (v0)) (trace "X" (v)))))) of { + Prelude.True -> (trace "X" (Prelude.Nothing)); + Prelude.False -> (trace "X" (Prelude.Just (trace "X" (v0))))}))))) (trace "X" (ctx2))))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((trace "X" ((__U03be_0 (trace "X" (v)))))))))))))))) (trace "X" ((RComp (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" (ctx1))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" (ctx2)))))))))) (trace "X" ((T_Branch (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" (v)) (trace "X" (([])))))) (trace "X" (ctx1)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((trace "X" ((__U03be_0 (trace "X" (v)))))))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" (ctx2)))))))))) (trace "X" ((T_Branch (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" (v)) (trace "X" (([])))))) (trace "X" (ctx1)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((trace "X" ((__U03be_0 (trace "X" (v)))))))))))))))) (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" (v)) (trace "X" (([])))))) (trace "X" (ctx2)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((trace "X" ((__U03be_0 (trace "X" (v))))))))))))))))))) (trace "X" ((RRight (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" (ctx1))))))) (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" (v)) (trace "X" (([])))))) (trace "X" (ctx1)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((trace "X" ((__U03be_0 (trace "X" (v)))))))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" (ctx2))))))) (trace "X" (lpf))))) (trace "X" ((RLeft (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" (ctx2))))))) (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" (v)) (trace "X" (([])))))) (trace "X" (ctx2)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((trace "X" ((__U03be_0 (trace "X" (v)))))))))))))))) (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" (v)) (trace "X" (([])))))) (trace "X" (ctx1)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((trace "X" ((__U03be_0 (trace "X" (v)))))))))))))))) (trace "X" (rpf)))))))) + (trace "X" ((trace "X" ((copyAndPivotContext + (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) + (trace "X" ((trace "X" ((mapOptionTree' (trace "X" ((\v0 -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (eqd_vv)) (trace "X" (v0)) (trace "X" (v)))))) of { + Prelude.True -> (trace "X" (Prelude.Nothing)); + Prelude.False -> (trace "X" (Prelude.Just (trace "X" (v0))))}))))) (trace "X" (ctx1)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((trace "X" ((__U03be_0 (trace "X" (v))))))))))))) + (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) + (trace "X" ((trace "X" ((mapOptionTree' (trace "X" ((\v0 -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (eqd_vv)) (trace "X" (v0)) (trace "X" (v)))))) of { + Prelude.True -> (trace "X" (Prelude.Nothing)); + Prelude.False -> (trace "X" (Prelude.Just (trace "X" (v0))))}))))) (trace "X" (ctx2))))))))))))))))))))))}))}))))) (trace "X" (ctx)))))) + +arrangeContextAndWeaken :: (EqDecidable a1) -> TypeEnv -> CoercionEnv -> a1 -> (Tree (Prelude.Maybe a1)) -> (a1 -> LeveledHaskType) -> Arrange LeveledHaskType +arrangeContextAndWeaken eqd_vv __U0393_0 __U0394_0 v ctx __U03be_0 = + (trace "X" (let {q = (trace "X" ((trace "X" (arrangeContext (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (v)) (trace "X" (ctx)) (trace "X" (__U03be_0))))))} in + (trace "X" (case (trace "X" (q)) of { + Prelude.Left a -> (trace "X" (RComp (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" (ctx))))))) (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" (v)) (trace "X" (([])))))) (trace "X" (ctx)))))))))))) (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing)))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" ((T_Branch (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" (((:) (trace "X" (v)) (trace "X" (([])))))) (trace "X" (ctx))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (v)))))))))))))))) (trace "X" (a)) (trace "X" ((RLeft (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((trace "X" ((__U03be_0 (trace "X" (v))))))))))))) (trace "X" ((trace "X" ((mapOptionTree (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" ((RWeak (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((trace "X" ((__U03be_0 (trace "X" (v))))))))))))))))))))); + Prelude.Right a -> (trace "X" (a))})))) + +arrangeContextAndWeaken'' :: (EqDecidable a1) -> TypeEnv -> CoercionEnv -> (Tree (Prelude.Maybe a1)) -> (a1 -> LeveledHaskType) -> (Tree (Prelude.Maybe a1)) -> Arrange LeveledHaskType +arrangeContextAndWeaken'' 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" (arrangeContextAndWeaken (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" ((RuCanR + (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 {x = (trace "X" ((trace "X" (mapOptionTree (trace "X" (__U03be_0))))))} in (trace "X" (let {iHv2' = (trace "X" ((trace "X" (iHv2 (trace "X" ((T_Branch (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" ((trace "X" ((leaves (trace "X" (v1))))))) (trace "X" (ctx0))))))) (trace "X" (v1)))))))))} in (trace "X" (let {qq = (trace "X" (RComp (trace "X" ((trace "X" ((x (trace "X" (ctx0))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((x (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" ((trace "X" ((leaves (trace "X" (v1))))))) (trace "X" (ctx0)))))))))))) (trace "X" ((trace "X" ((x (trace "X" (v1)))))))))) (trace "X" ((T_Branch (trace "X" ((T_Branch (trace "X" ((trace "X" ((x (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" ((trace "X" ((leaves (trace "X" (v2))))))) (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" ((trace "X" ((leaves (trace "X" (v1))))))) (trace "X" (ctx0))))))))))))))))) (trace "X" ((trace "X" ((x (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" ((trace "X" ((leaves (trace "X" (v2))))))) (trace "X" (v1))))))))))))))) (trace "X" ((trace "X" ((x (trace "X" (v2)))))))))) (trace "X" ((trace "X" ((iHv1 (trace "X" (ctx0)) (trace "X" (__))))))) (trace "X" ((trace "X" ((iHv2' (trace "X" (__)))))))))} in (trace "X" (RComp (trace "X" ((trace "X" ((x (trace "X" (ctx0))))))) (trace "X" ((T_Branch (trace "X" ((T_Branch (trace "X" ((trace "X" ((x (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" ((trace "X" ((leaves (trace "X" (v2))))))) (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" ((trace "X" ((leaves (trace "X" (v1))))))) (trace "X" (ctx0))))))))))))))))) (trace "X" ((trace "X" ((x (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" ((trace "X" ((leaves (trace "X" (v2))))))) (trace "X" (v1))))))))))))))) (trace "X" ((trace "X" ((x (trace "X" (v2)))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((x (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" ((T_Branch (trace "X" ((trace "X" ((x (trace "X" (v1))))))) (trace "X" ((trace "X" ((x (trace "X" (v2))))))))))))) (trace "X" (qq)) (trace "X" ((trace "X" ((eq_rect_r (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" ((trace "X" ((eq_rect_r (trace "X" (v1)) (trace "X" ((RCossa (trace "X" ((trace "X" ((x (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" ((trace "X" ((x (trace "X" (v1))))))) (trace "X" ((trace "X" ((x (trace "X" (v2)))))))))) (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" ((trace "X" ((leaves (trace "X" (v2))))))) (trace "X" (v1)))))))))))) (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" ((trace "X" ((leaves (trace "X" (v2))))))) (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" ((trace "X" ((leaves (trace "X" (v1))))))) (trace "X" (ctx0)))))))))))))))))))))))))))) (trace "X" (v)) (trace "X" (ctx)) (trace "X" (__)))))) + +data LetRecSubproofs vV = + Lrsp_nil + | Lrsp_leaf vV HaskType (Expr vV) (ND Judg Rule) + | Lrsp_cons (Tree (Prelude.Maybe ((,) vV HaskType))) (Tree (Prelude.Maybe ((,) vV HaskType))) (ELetRecBindings vV) (ELetRecBindings vV) (LetRecSubproofs vV) (LetRecSubproofs vV) + +letRecSubproofs_rect :: (EqDecidable a1) -> TypeEnv -> CoercionEnv -> (a1 -> LeveledHaskType) -> HaskLevel -> a2 -> (a1 -> HaskType -> (Expr a1) -> (ND Judg Rule) -> a2) -> ((Tree (Prelude.Maybe ((,) a1 HaskType))) -> (Tree (Prelude.Maybe ((,) a1 HaskType))) -> (ELetRecBindings a1) -> (ELetRecBindings a1) -> (LetRecSubproofs a1) -> a2 -> (LetRecSubproofs a1) -> a2 -> a2) -> (Tree (Prelude.Maybe ((,) a1 HaskType))) -> (ELetRecBindings a1) -> (LetRecSubproofs a1) -> a2 +letRecSubproofs_rect eqd_vv __U0393_0 __U0394_0 __U03be_0 lev f f0 f1 tree e l = + (trace "X" (case (trace "X" (l)) of { + Lrsp_nil -> (trace "X" (f)); + Lrsp_leaf v t e0 n -> (trace "X" ((trace "X" (f0 (trace "X" (v)) (trace "X" (t)) (trace "X" (e0)) (trace "X" (n)))))); + Lrsp_cons t1 t2 b1 b2 l0 l1 -> (trace "X" ((trace "X" (f1 (trace "X" (t1)) (trace "X" (t2)) (trace "X" (b1)) (trace "X" (b2)) (trace "X" (l0)) (trace "X" ((trace "X" ((letRecSubproofs_rect (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" (f)) (trace "X" (f0)) (trace "X" (f1)) (trace "X" (t1)) (trace "X" (b1)) (trace "X" (l0))))))) (trace "X" (l1)) (trace "X" ((trace "X" ((letRecSubproofs_rect (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" (f)) (trace "X" (f0)) (trace "X" (f1)) (trace "X" (t2)) (trace "X" (b2)) (trace "X" (l1)))))))))))})) + +letRecSubproofsToND :: (EqDecidable a1) -> TypeEnv -> CoercionEnv -> (a1 -> LeveledHaskType) -> HaskLevel -> (Tree (Prelude.Maybe ((,) a1 HaskType))) -> (ELetRecBindings a1) -> (LetRecSubproofs a1) -> ND Judg Rule +letRecSubproofsToND eqd_vv __U0393_0 __U0394_0 __U03be_0 lev tree branches x = + (trace "X" ((trace "X" (letRecSubproofs_rect (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (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" ((RVoid (trace "X" (__U0393_0)) (trace "X" (__U0394_0)))))))) (trace "X" ((\v t e n -> (trace "X" (n))))) (trace "X" ((\t1 t2 b1 b2 x1 iHX1 x2 iHX2 -> (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" (__U03be_0)) (trace "X" ((trace "X" ((eLetRecContext (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" (t1)) (trace "X" (b1)))))))))))) (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" (t1))))))))))))))))))))) (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" ((eLetRecContext (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" (t2)) (trace "X" (b2)))))))))))) (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" (t2)))))))))))))))))))))))) (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" ((eLetRecContext (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" (t1)) (trace "X" (b1)))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" ((trace "X" ((eLetRecContext (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" (t2)) (trace "X" (b2))))))))))))))) (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" (t1)))))))))))) (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" (t2)))))))))))))))))))))))) (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" (__U03be_0)) (trace "X" ((trace "X" ((eLetRecContext (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" (t1)) (trace "X" (b1)))))))))))) (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" (t1))))))))))))))))))))) (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" ((eLetRecContext (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" (t2)) (trace "X" (b2)))))))))))) (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" (t2)))))))))))))))))))))))) (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" (__U03be_0)) (trace "X" ((trace "X" ((eLetRecContext (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" (t1)) (trace "X" (b1)))))))))))) (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" (t1))))))))))))))))))))) (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" ((eLetRecContext (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" (t2)) (trace "X" (b2)))))))))))) (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" (t2))))))))))))))))))))) (trace "X" (iHX1)) (trace "X" (iHX2)))))))) (trace "X" ((Nd_rule (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" (__U03be_0)) (trace "X" ((trace "X" ((eLetRecContext (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" (t1)) (trace "X" (b1)))))))))))) (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" (t1))))))))))))))))))))) (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" ((eLetRecContext (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" (t2)) (trace "X" (b2)))))))))))) (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" (t2)))))))))))))))))))))))) (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" ((eLetRecContext (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" (t1)) (trace "X" (b1)))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" ((trace "X" ((eLetRecContext (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" (t2)) (trace "X" (b2))))))))))))))) (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" (t1)))))))))))) (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" (t2)))))))))))))))))))))))) (trace "X" ((RJoin (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" ((trace "X" ((eLetRecContext (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" (t1)) (trace "X" (b1)))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" ((trace "X" ((eLetRecContext (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" (t2)) (trace "X" (b2)))))))))))) (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" (t1)))))))))))) (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" (t2))))))))))))))))))))))) (trace "X" (tree)) (trace "X" (branches)) (trace "X" (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___U03be_ (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" ((MkLeveledHaskType (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" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (lev))))))) (trace "X" ((T_Branch (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (__U03c4_)))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (snd)) (trace "X" (tree)))))))))))))))))))))))) (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" ((MkLeveledHaskType (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" ((MkLeveledHaskType (trace "X" (__U03c4_)) (trace "X" (lev)))))))))))))))))))) (trace "X" ((let {q' = (trace "X" (\_ -> (trace "X" ((trace "X" (arrangeContextAndWeaken'' (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" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_')) (trace "X" ((MkLeveledHaskType (trace "X" (__U03c4_)) (trace "X" (lev))))) (trace "X" (body))))))) (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))))))))))))))))} 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___U03be_ (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" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update___U03be_ (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" ((MkLeveledHaskType (trace "X" (__U03c4_)) (trace "X" (lev))))) (trace "X" (body))))))) (trace "X" ((trace "X" ((eLetRecContext (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update___U03be_ (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" (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" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update___U03be_ (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" ((MkLeveledHaskType (trace "X" (__U03c4_)) (trace "X" (lev))))) (trace "X" (body))))))) (trace "X" ((trace "X" ((eLetRecContext (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update___U03be_ (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))))))))))))))))))))))))} in (trace "X" (let {q''1 = (trace "X" ((trace "X" (eq_rect_r (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((update___U03be_ (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___U03be_ (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___U03be_ (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___U03be_ (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" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update___U03be_ (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" ((MkLeveledHaskType (trace "X" (__U03c4_)) (trace "X" (lev))))) (trace "X" (body))))))) (trace "X" ((trace "X" ((eLetRecContext (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update___U03be_ (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" ((T_Branch (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (__U03c4_)) (trace "X" (lev))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x -> (trace "X" ((trace "X" (update___U03be_ (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_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" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update___U03be_ (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" ((MkLeveledHaskType (trace "X" (__U03c4_)) (trace "X" (lev))))) (trace "X" (body))))))) (trace "X" ((trace "X" ((eLetRecContext (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update___U03be_ (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" ((\x -> (trace "X" ((trace "X" (update___U03be_ (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" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (__U03c4_)) (trace "X" (lev))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x -> (trace "X" ((trace "X" (update___U03be_ (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" ((let {q = (trace "X" ((trace "X" (letRecSubproofsToND (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update___U03be_ (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___U03be_ (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___U03be_ (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" ((MkLeveledHaskType (trace "X" (__U03c4_)) (trace "X" (lev))))) (trace "X" (body)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (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" ((trace "X" ((update___U03be_ (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___U03be_ (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" ((\x -> (trace "X" ((trace "X" (update___U03be_ (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_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___U03be_ (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___U03be_ (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" ((MkLeveledHaskType (trace "X" (__U03c4_)) (trace "X" (lev))))) (trace "X" (body)))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((update___U03be_ (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___U03be_ (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" ((T_Branch (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (__U03c4_)) (trace "X" (lev))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x -> (trace "X" ((trace "X" (update___U03be_ (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_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___U03be_ (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___U03be_ (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" ((MkLeveledHaskType (trace "X" (__U03c4_)) (trace "X" (lev))))) (trace "X" (body)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (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" ((trace "X" ((update___U03be_ (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___U03be_ (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" ((\x -> (trace "X" ((trace "X" (update___U03be_ (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_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___U03be_ (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___U03be_ (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" ((MkLeveledHaskType (trace "X" (__U03c4_)) (trace "X" (lev))))) (trace "X" (body)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (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" ((trace "X" ((update___U03be_ (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___U03be_ (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" ((\x -> (trace "X" ((trace "X" (update___U03be_ (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" (pf)) (trace "X" ((trace "X" ((eq_rect_r (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" (q)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x -> (trace "X" ((trace "X" (update___U03be_ (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_rule (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___U03be_ (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___U03be_ (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" ((MkLeveledHaskType (trace "X" (__U03c4_)) (trace "X" (lev))))) (trace "X" (body)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (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" ((trace "X" ((update___U03be_ (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___U03be_ (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" ((\x -> (trace "X" ((trace "X" (update___U03be_ (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_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___U03be_ (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___U03be_ (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" ((MkLeveledHaskType (trace "X" (__U03c4_)) (trace "X" (lev))))) (trace "X" (body)))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((update___U03be_ (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___U03be_ (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" ((T_Branch (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (__U03c4_)) (trace "X" (lev))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x -> (trace "X" ((trace "X" (update___U03be_ (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" ((RJoin (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((update___U03be_ (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___U03be_ (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" ((MkLeveledHaskType (trace "X" (__U03c4_)) (trace "X" (lev))))) (trace "X" (body)))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((update___U03be_ (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___U03be_ (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" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (__U03c4_)) (trace "X" (lev))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x -> (trace "X" ((trace "X" (update___U03be_ (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_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___U03be_ (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" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update___U03be_ (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" ((MkLeveledHaskType (trace "X" (__U03c4_)) (trace "X" (lev))))) (trace "X" (body))))))) (trace "X" ((trace "X" ((eLetRecContext (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update___U03be_ (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" ((T_Branch (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (__U03c4_)) (trace "X" (lev))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x -> (trace "X" ((trace "X" (update___U03be_ (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_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" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update___U03be_ (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" ((MkLeveledHaskType (trace "X" (__U03c4_)) (trace "X" (lev))))) (trace "X" (body))))))) (trace "X" ((trace "X" ((eLetRecContext (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update___U03be_ (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" ((\x -> (trace "X" ((trace "X" (update___U03be_ (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" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (__U03c4_)) (trace "X" (lev))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x -> (trace "X" ((trace "X" (update___U03be_ (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" ((RArrange (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((update___U03be_ (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" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update___U03be_ (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" ((MkLeveledHaskType (trace "X" (__U03c4_)) (trace "X" (lev))))) (trace "X" (body))))))) (trace "X" ((trace "X" ((eLetRecContext (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update___U03be_ (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" ((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" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update___U03be_ (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" ((MkLeveledHaskType (trace "X" (__U03c4_)) (trace "X" (lev))))) (trace "X" (body))))))) (trace "X" ((trace "X" ((eLetRecContext (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update___U03be_ (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" ((\x -> (trace "X" ((trace "X" (update___U03be_ (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" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (__U03c4_)) (trace "X" (lev))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x -> (trace "X" ((trace "X" (update___U03be_ (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" (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" ((MkLeveledHaskType (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" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (lev))))))) (trace "X" ((T_Branch (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (__U03c4_)))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (snd)) (trace "X" (tree)))))))))))))))))))))))) (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" ((MkLeveledHaskType (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" ((MkLeveledHaskType (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" ((MkLeveledHaskType (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) -> LeveledHaskType -> (Expr a1) -> ND Judg Rule +expr2proof eqd_vv __U0393_' __U0394_' __U03be_' __U03c4_' exp = + (trace "X" (case (trace "X" (exp)) of { + EGlobal __U0393_0 __U0394_0 __U03be_0 t wev -> (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" ((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" (t)) (trace "X" ((EGlobal (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (t)) (trace "X" (wev))))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (t))))))))))))))))) (trace "X" ((case (trace "X" (t)) of { + MkLeveledHaskType t0 lev -> (trace "X" (RGlobal (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (t0)) (trace "X" (lev)) (trace "X" (wev))))}))))); + EVar __U0393_0 __U0394_0 __U03be_0 ev -> (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" ((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" ((trace "X" ((__U03be_0 (trace "X" (ev))))))) (trace "X" ((EVar (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (ev))))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((trace "X" ((__U03be_0 (trace "X" (ev)))))))))))))))))))))) (trace "X" ((let {l = (trace "X" ((trace "X" (__U03be_0 (trace "X" (ev))))))} in (trace "X" (case (trace "X" (l)) of { + MkLeveledHaskType h h0 -> (trace "X" (RVar (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (h)) (trace "X" (h0))))}))))))); + ELit __U0393_0 __U0394_0 __U03be_0 lit lev -> (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" ((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" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (literalType (trace "X" (lit)) (trace "X" (__U0393_0))))))))) (trace "X" (lev))))) (trace "X" ((ELit (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (lit)) (trace "X" (lev))))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (literalType (trace "X" (lit)) (trace "X" (__U0393_0))))))))) (trace "X" (lev)))))))))))))))))))) (trace "X" ((RLit (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (lit)) (trace "X" (lev))))))); + EApp __U0393_0 __U0394_0 __U03be_0 t1 t2 lev e1 e2 -> (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" (__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" ((MkLeveledHaskType (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" ((t2 (trace "X" (__)) (trace "X" (env)))))))))) (trace "X" ((trace "X" ((t1 (trace "X" (__)) (trace "X" (env)))))))))))) (trace "X" (lev))))) (trace "X" (e1)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (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" ((t2 (trace "X" (__)) (trace "X" (env)))))))))) (trace "X" ((trace "X" ((t1 (trace "X" (__)) (trace "X" (env)))))))))))) (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" ((MkLeveledHaskType (trace "X" (t2)) (trace "X" (lev))))) (trace "X" (e2)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (t2)) (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" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" ((MkLeveledHaskType (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" ((t2 (trace "X" (__)) (trace "X" (env)))))))))) (trace "X" ((trace "X" ((t1 (trace "X" (__)) (trace "X" (env)))))))))))) (trace "X" (lev))))) (trace "X" (e1)))))))))))) (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" ((MkLeveledHaskType (trace "X" (t2)) (trace "X" (lev))))) (trace "X" (e2))))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (t1)) (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" (__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" ((MkLeveledHaskType (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" ((t2 (trace "X" (__)) (trace "X" (env)))))))))) (trace "X" ((trace "X" ((t1 (trace "X" (__)) (trace "X" (env)))))))))))) (trace "X" (lev))))) (trace "X" (e1)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (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" ((t2 (trace "X" (__)) (trace "X" (env)))))))))) (trace "X" ((trace "X" ((t1 (trace "X" (__)) (trace "X" (env)))))))))))) (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" ((MkLeveledHaskType (trace "X" (t2)) (trace "X" (lev))))) (trace "X" (e2)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (t2)) (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" (__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" ((MkLeveledHaskType (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" ((t2 (trace "X" (__)) (trace "X" (env)))))))))) (trace "X" ((trace "X" ((t1 (trace "X" (__)) (trace "X" (env)))))))))))) (trace "X" (lev))))) (trace "X" (e1)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (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" ((t2 (trace "X" (__)) (trace "X" (env)))))))))) (trace "X" ((trace "X" ((t1 (trace "X" (__)) (trace "X" (env)))))))))))) (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" ((MkLeveledHaskType (trace "X" (t2)) (trace "X" (lev))))) (trace "X" (e2)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (t2)) (trace "X" (lev)))))))))))))))))))) (trace "X" ((trace "X" ((expr2proof (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" ((MkLeveledHaskType (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" ((t2 (trace "X" (__)) (trace "X" (env)))))))))) (trace "X" ((trace "X" ((t1 (trace "X" (__)) (trace "X" (env)))))))))))) (trace "X" (lev))))) (trace "X" (e1))))))) (trace "X" ((trace "X" ((expr2proof (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" ((MkLeveledHaskType (trace "X" (t2)) (trace "X" (lev))))) (trace "X" (e2))))))))))))) (trace "X" ((Nd_rule (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" (__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" ((MkLeveledHaskType (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" ((t2 (trace "X" (__)) (trace "X" (env)))))))))) (trace "X" ((trace "X" ((t1 (trace "X" (__)) (trace "X" (env)))))))))))) (trace "X" (lev))))) (trace "X" (e1)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (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" ((t2 (trace "X" (__)) (trace "X" (env)))))))))) (trace "X" ((trace "X" ((t1 (trace "X" (__)) (trace "X" (env)))))))))))) (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" ((MkLeveledHaskType (trace "X" (t2)) (trace "X" (lev))))) (trace "X" (e2)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (t2)) (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" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" ((MkLeveledHaskType (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" ((t2 (trace "X" (__)) (trace "X" (env)))))))))) (trace "X" ((trace "X" ((t1 (trace "X" (__)) (trace "X" (env)))))))))))) (trace "X" (lev))))) (trace "X" (e1)))))))))))) (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" ((MkLeveledHaskType (trace "X" (t2)) (trace "X" (lev))))) (trace "X" (e2))))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (t1)) (trace "X" (lev)))))))))))))))))))) (trace "X" ((RApp (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" ((MkLeveledHaskType (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" ((t2 (trace "X" (__)) (trace "X" (env)))))))))) (trace "X" ((trace "X" ((t1 (trace "X" (__)) (trace "X" (env)))))))))))) (trace "X" (lev))))) (trace "X" (e1)))))))))))) (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" ((MkLeveledHaskType (trace "X" (t2)) (trace "X" (lev))))) (trace "X" (e2)))))))))))) (trace "X" (t2)) (trace "X" (t1)) (trace "X" (lev)))))))))); + ELam __U0393_0 __U0394_0 __U03be_0 t1 t2 lev v e -> (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" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" (((:) (trace "X" (v)) (trace "X" (([])))))) + (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((\v' -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (eqd_vv)) (trace "X" (v)) (trace "X" (v')))))) of { + Prelude.True -> (trace "X" (MkLeveledHaskType (trace "X" (t1)) (trace "X" (lev)))); + Prelude.False -> (trace "X" ((trace "X" (__U03be_0 (trace "X" (v'))))))}))))) (trace "X" ((MkLeveledHaskType (trace "X" (t2)) (trace "X" (lev))))) (trace "X" (e))))))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (t1)) (trace "X" (lev)))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (t2)) (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" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" (((:) (trace "X" (v)) (trace "X" (([])))))) + (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((\v' -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (eqd_vv)) (trace "X" (v)) (trace "X" (v')))))) of { + Prelude.True -> (trace "X" (MkLeveledHaskType (trace "X" (t1)) (trace "X" (lev)))); + Prelude.False -> (trace "X" ((trace "X" (__U03be_0 (trace "X" (v'))))))}))))) (trace "X" ((MkLeveledHaskType (trace "X" (t2)) (trace "X" (lev))))) (trace "X" (e))))))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (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" ((t1 (trace "X" (__)) (trace "X" (env)))))))))) (trace "X" ((trace "X" ((t2 (trace "X" (__)) (trace "X" (env)))))))))))) (trace "X" (lev)))))))))))))))))))) + (trace "X" ((let {__U03be_'0 = (trace "X" ((trace "X" (update___U03be_ (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" (((:) (trace "X" (((,) (trace "X" (v)) (trace "X" (t1))))) (trace "X" (([]))))))))))} in + (trace "X" (let {pfx = (trace "X" ((trace "X" (arrangeContextAndWeaken (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (v)) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update___U03be_ (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" (((:) (trace "X" (((,) (trace "X" (v)) (trace "X" (t1))))) (trace "X" (([]))))))))))) (trace "X" ((MkLeveledHaskType (trace "X" (t2)) (trace "X" (lev))))) (trace "X" (e))))))) (trace "X" (__U03be_'0))))))} in + (trace "X" (let {pfx0 = (trace "X" (RArrange (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" ((trace "X" ((update___U03be_ (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" (((:) (trace "X" (((,) (trace "X" (v)) (trace "X" (t1))))) (trace "X" (([]))))))))))) (trace "X" ((MkLeveledHaskType (trace "X" (t2)) (trace "X" (lev))))) (trace "X" (e)))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_'0)) (trace "X" ((T_Branch (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" (((:) (trace "X" (v)) (trace "X" (([])))))) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update___U03be_ (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" (((:) (trace "X" (((,) (trace "X" (v)) (trace "X" (t1))))) (trace "X" (([]))))))))))) (trace "X" ((MkLeveledHaskType (trace "X" (t2)) (trace "X" (lev))))) (trace "X" (e)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (v)))))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (t2)) (trace "X" (lev))))))))))) (trace "X" (pfx))))} in + (trace "X" (let { + pfx1 = (trace "X" ((trace "X" (eq_rect + (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((update___U03be_ (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" (((:) (trace "X" (((,) (trace "X" (v)) (trace "X" (t1))))) (trace "X" (([]))))))))))) + (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" (((:) (trace "X" (v)) (trace "X" (([])))))) + (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((\v' -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (eqd_vv)) (trace "X" (v)) (trace "X" (v')))))) of { + Prelude.True -> (trace "X" (MkLeveledHaskType (trace "X" (t1)) (trace "X" (lev)))); + Prelude.False -> (trace "X" ((trace "X" (__U03be_0 (trace "X" (v'))))))}))))) (trace "X" ((MkLeveledHaskType (trace "X" (t2)) (trace "X" (lev))))) (trace "X" (e))))))))))))))))) (trace "X" (pfx0)) + (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) + (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" (((:) (trace "X" (v)) (trace "X" (([])))))) + (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((\v' -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (eqd_vv)) (trace "X" (v)) (trace "X" (v')))))) of { + Prelude.True -> (trace "X" (MkLeveledHaskType (trace "X" (t1)) (trace "X" (lev)))); + Prelude.False -> (trace "X" ((trace "X" (__U03be_0 (trace "X" (v'))))))}))))) (trace "X" ((MkLeveledHaskType (trace "X" (t2)) (trace "X" (lev))))) (trace "X" (e)))))))))))))))))))))} + in + (trace "X" (let {s = (trace "X" ((trace "X" (eqd_dec (trace "X" (eqd_vv)) (trace "X" (v)) (trace "X" (v))))))} in + (trace "X" (case (trace "X" (s)) of { + Prelude.True -> (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" ((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" ((\v' -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (eqd_vv)) (trace "X" (v)) (trace "X" (v')))))) of { + Prelude.True -> (trace "X" (MkLeveledHaskType (trace "X" (t1)) (trace "X" (lev)))); + Prelude.False -> (trace "X" ((trace "X" (__U03be_0 (trace "X" (v'))))))}))))) + (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((\v' -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (eqd_vv)) (trace "X" (v)) (trace "X" (v')))))) of { + Prelude.True -> (trace "X" (MkLeveledHaskType (trace "X" (t1)) (trace "X" (lev)))); + Prelude.False -> (trace "X" ((trace "X" (__U03be_0 (trace "X" (v'))))))}))))) (trace "X" ((MkLeveledHaskType (trace "X" (t2)) (trace "X" (lev))))) (trace "X" (e)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (t2)) (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" (v)) (trace "X" (([])))))) + (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((\v' -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (eqd_vv)) (trace "X" (v)) (trace "X" (v')))))) of { + Prelude.True -> (trace "X" (MkLeveledHaskType (trace "X" (t1)) (trace "X" (lev)))); + Prelude.False -> (trace "X" ((trace "X" (__U03be_0 (trace "X" (v'))))))}))))) (trace "X" ((MkLeveledHaskType (trace "X" (t2)) (trace "X" (lev))))) (trace "X" (e))))))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (t1)) (trace "X" (lev)))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (t2)) (trace "X" (lev)))))))))))))))))))) (trace "X" ((trace "X" ((expr2proof (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update___U03be_ (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" (((:) (trace "X" (((,) (trace "X" (v)) (trace "X" (t1))))) (trace "X" (([]))))))))))) (trace "X" ((MkLeveledHaskType (trace "X" (t2)) (trace "X" (lev))))) (trace "X" (e))))))) (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" ((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" ((\v' -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (eqd_vv)) (trace "X" (v)) (trace "X" (v')))))) of { + Prelude.True -> (trace "X" (MkLeveledHaskType (trace "X" (t1)) (trace "X" (lev)))); + Prelude.False -> (trace "X" ((trace "X" (__U03be_0 (trace "X" (v'))))))}))))) + (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((\v' -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (eqd_vv)) (trace "X" (v)) (trace "X" (v')))))) of { + Prelude.True -> (trace "X" (MkLeveledHaskType (trace "X" (t1)) (trace "X" (lev)))); + Prelude.False -> (trace "X" ((trace "X" (__U03be_0 (trace "X" (v'))))))}))))) (trace "X" ((MkLeveledHaskType (trace "X" (t2)) (trace "X" (lev))))) (trace "X" (e)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (t2)) (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" (v)) (trace "X" (([])))))) + (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((\v' -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (eqd_vv)) (trace "X" (v)) (trace "X" (v')))))) of { + Prelude.True -> (trace "X" (MkLeveledHaskType (trace "X" (t1)) (trace "X" (lev)))); + Prelude.False -> (trace "X" ((trace "X" (__U03be_0 (trace "X" (v'))))))}))))) (trace "X" ((MkLeveledHaskType (trace "X" (t2)) (trace "X" (lev))))) (trace "X" (e))))))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (t1)) (trace "X" (lev)))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (t2)) (trace "X" (lev)))))))))))))))))))) (trace "X" (pfx1))))))); + Prelude.False -> (trace "X" (Prelude.error "absurd case"))}))))))))))))) (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" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" (((:) (trace "X" (v)) (trace "X" (([])))))) + (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((\v' -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (eqd_vv)) (trace "X" (v)) (trace "X" (v')))))) of { + Prelude.True -> (trace "X" (MkLeveledHaskType (trace "X" (t1)) (trace "X" (lev)))); + Prelude.False -> (trace "X" ((trace "X" (__U03be_0 (trace "X" (v'))))))}))))) (trace "X" ((MkLeveledHaskType (trace "X" (t2)) (trace "X" (lev))))) (trace "X" (e))))))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (t1)) (trace "X" (lev)))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (t2)) (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" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" (((:) (trace "X" (v)) (trace "X" (([])))))) + (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((\v' -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (eqd_vv)) (trace "X" (v)) (trace "X" (v')))))) of { + Prelude.True -> (trace "X" (MkLeveledHaskType (trace "X" (t1)) (trace "X" (lev)))); + Prelude.False -> (trace "X" ((trace "X" (__U03be_0 (trace "X" (v'))))))}))))) (trace "X" ((MkLeveledHaskType (trace "X" (t2)) (trace "X" (lev))))) (trace "X" (e))))))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (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" ((t1 (trace "X" (__)) (trace "X" (env)))))))))) (trace "X" ((trace "X" ((t2 (trace "X" (__)) (trace "X" (env)))))))))))) (trace "X" (lev)))))))))))))))))))) (trace "X" ((RLam (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) + (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) + (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" (((:) (trace "X" (v)) (trace "X" (([])))))) + (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((\v' -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (eqd_vv)) (trace "X" (v)) (trace "X" (v')))))) of { + Prelude.True -> (trace "X" (MkLeveledHaskType (trace "X" (t1)) (trace "X" (lev)))); + Prelude.False -> (trace "X" ((trace "X" (__U03be_0 (trace "X" (v'))))))}))))) (trace "X" ((MkLeveledHaskType (trace "X" (t2)) (trace "X" (lev))))) (trace "X" (e))))))))))))))))) (trace "X" (t1)) (trace "X" (t2)) (trace "X" (lev)))))))))); + ELet __U0393_0 __U0394_0 __U03be_0 tv t v lev ev ebody -> (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" (__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" ((MkLeveledHaskType (trace "X" (tv)) (trace "X" (v))))) (trace "X" (ev)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (tv)) (trace "X" (v)))))))))))))))))))) (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" (lev)) (trace "X" (([])))))) + (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((\v' -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (eqd_vv)) (trace "X" (lev)) (trace "X" (v')))))) of { + Prelude.True -> (trace "X" (MkLeveledHaskType (trace "X" (tv)) (trace "X" (v)))); + Prelude.False -> (trace "X" ((trace "X" (__U03be_0 (trace "X" (v'))))))}))))) (trace "X" ((MkLeveledHaskType (trace "X" (t)) (trace "X" (v))))) (trace "X" (ebody))))))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (tv)) (trace "X" (v)))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (t)) (trace "X" (v))))))))))))))))))))))) (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" (lev)) (trace "X" (([])))))) + (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((\v' -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (eqd_vv)) (trace "X" (lev)) (trace "X" (v')))))) of { + Prelude.True -> (trace "X" (MkLeveledHaskType (trace "X" (tv)) (trace "X" (v)))); + Prelude.False -> (trace "X" ((trace "X" (__U03be_0 (trace "X" (v'))))))}))))) (trace "X" ((MkLeveledHaskType (trace "X" (t)) (trace "X" (v))))) (trace "X" (ebody))))))))))))))))) (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" ((MkLeveledHaskType (trace "X" (tv)) (trace "X" (v))))) (trace "X" (ev))))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (t)) (trace "X" (v)))))))))))))))))))) (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" (__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" ((MkLeveledHaskType (trace "X" (tv)) (trace "X" (v))))) (trace "X" (ev)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (tv)) (trace "X" (v)))))))))))))))))))) (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" (lev)) (trace "X" (([])))))) + (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((\v' -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (eqd_vv)) (trace "X" (lev)) (trace "X" (v')))))) of { + Prelude.True -> (trace "X" (MkLeveledHaskType (trace "X" (tv)) (trace "X" (v)))); + Prelude.False -> (trace "X" ((trace "X" (__U03be_0 (trace "X" (v'))))))}))))) (trace "X" ((MkLeveledHaskType (trace "X" (t)) (trace "X" (v))))) (trace "X" (ebody))))))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (tv)) (trace "X" (v)))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (t)) (trace "X" (v))))))))))))))))))))))) (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" (__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" ((MkLeveledHaskType (trace "X" (tv)) (trace "X" (v))))) (trace "X" (ev)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (tv)) (trace "X" (v)))))))))))))))))))) (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" (lev)) (trace "X" (([])))))) + (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((\v' -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (eqd_vv)) (trace "X" (lev)) (trace "X" (v')))))) of { + Prelude.True -> (trace "X" (MkLeveledHaskType (trace "X" (tv)) (trace "X" (v)))); + Prelude.False -> (trace "X" ((trace "X" (__U03be_0 (trace "X" (v'))))))}))))) (trace "X" ((MkLeveledHaskType (trace "X" (t)) (trace "X" (v))))) (trace "X" (ebody))))))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (tv)) (trace "X" (v)))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (t)) (trace "X" (v)))))))))))))))))))) (trace "X" ((trace "X" ((expr2proof (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" ((MkLeveledHaskType (trace "X" (tv)) (trace "X" (v))))) (trace "X" (ev))))))) (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" ((\v' -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (eqd_vv)) (trace "X" (lev)) (trace "X" (v')))))) of { + Prelude.True -> (trace "X" (MkLeveledHaskType (trace "X" (tv)) (trace "X" (v)))); + Prelude.False -> (trace "X" ((trace "X" (__U03be_0 (trace "X" (v'))))))}))))) + (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((\v' -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (eqd_vv)) (trace "X" (lev)) (trace "X" (v')))))) of { + Prelude.True -> (trace "X" (MkLeveledHaskType (trace "X" (tv)) (trace "X" (v)))); + Prelude.False -> (trace "X" ((trace "X" (__U03be_0 (trace "X" (v'))))))}))))) (trace "X" ((MkLeveledHaskType (trace "X" (t)) (trace "X" (v))))) (trace "X" (ebody)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (t)) (trace "X" (v)))))))))))))))))))) (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" (lev)) (trace "X" (([])))))) + (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((\v' -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (eqd_vv)) (trace "X" (lev)) (trace "X" (v')))))) of { + Prelude.True -> (trace "X" (MkLeveledHaskType (trace "X" (tv)) (trace "X" (v)))); + Prelude.False -> (trace "X" ((trace "X" (__U03be_0 (trace "X" (v'))))))}))))) (trace "X" ((MkLeveledHaskType (trace "X" (t)) (trace "X" (v))))) (trace "X" (ebody))))))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (tv)) (trace "X" (v)))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (t)) (trace "X" (v)))))))))))))))))))) (trace "X" ((trace "X" ((expr2proof (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((trace "X" ((update___U03be_ (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (v)) (trace "X" (((:) (trace "X" (((,) (trace "X" (lev)) (trace "X" (tv))))) (trace "X" (([]))))))))))) (trace "X" ((MkLeveledHaskType (trace "X" (t)) (trace "X" (v))))) (trace "X" (ebody))))))) + (trace "X" ((let {__U03be_'0 = (trace "X" ((trace "X" (update___U03be_ (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (v)) (trace "X" (((:) (trace "X" (((,) (trace "X" (lev)) (trace "X" (tv))))) (trace "X" (([]))))))))))} in + (trace "X" (let { + n = (trace "X" ((trace "X" (arrangeContextAndWeaken (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (lev)) + (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((\v' -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (eqd_vv)) (trace "X" (lev)) (trace "X" (v')))))) of { + Prelude.True -> (trace "X" (MkLeveledHaskType (trace "X" (tv)) (trace "X" (v)))); + Prelude.False -> (trace "X" ((trace "X" (__U03be_0 (trace "X" (v'))))))}))))) (trace "X" ((MkLeveledHaskType (trace "X" (t)) (trace "X" (v))))) (trace "X" (ebody))))))) (trace "X" (__U03be_'0))))))} + in + (trace "X" (let { + n0 = (trace "X" ((trace "X" (eq_rect + (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((update___U03be_ (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (v)) (trace "X" (((:) (trace "X" (((,) (trace "X" (lev)) (trace "X" (tv))))) (trace "X" (([]))))))))))) + (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" (((:) (trace "X" (lev)) (trace "X" (([])))))) + (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((\v' -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (eqd_vv)) (trace "X" (lev)) (trace "X" (v')))))) of { + Prelude.True -> (trace "X" (MkLeveledHaskType (trace "X" (tv)) (trace "X" (v)))); + Prelude.False -> (trace "X" ((trace "X" (__U03be_0 (trace "X" (v'))))))}))))) (trace "X" ((MkLeveledHaskType (trace "X" (t)) (trace "X" (v))))) (trace "X" (ebody))))))))))))))))) (trace "X" (n)) + (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) + (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" (((:) (trace "X" (lev)) (trace "X" (([])))))) + (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((\v' -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (eqd_vv)) (trace "X" (lev)) (trace "X" (v')))))) of { + Prelude.True -> (trace "X" (MkLeveledHaskType (trace "X" (tv)) (trace "X" (v)))); + Prelude.False -> (trace "X" ((trace "X" (__U03be_0 (trace "X" (v'))))))}))))) (trace "X" ((MkLeveledHaskType (trace "X" (t)) (trace "X" (v))))) (trace "X" (ebody)))))))))))))))))))))} + in + (trace "X" (let {s = (trace "X" ((trace "X" (eqd_dec (trace "X" (eqd_vv)) (trace "X" (lev)) (trace "X" (lev))))))} in + (trace "X" (case (trace "X" (s)) of { + Prelude.True -> + (trace "X" (let { + n1 = (trace "X" (RArrange (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) + (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\v' -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (eqd_vv)) (trace "X" (lev)) (trace "X" (v')))))) of { + Prelude.True -> (trace "X" (MkLeveledHaskType (trace "X" (tv)) (trace "X" (v)))); + Prelude.False -> (trace "X" ((trace "X" (__U03be_0 (trace "X" (v'))))))}))))) + (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((\v' -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (eqd_vv)) (trace "X" (lev)) (trace "X" (v')))))) of { + Prelude.True -> (trace "X" (MkLeveledHaskType (trace "X" (tv)) (trace "X" (v)))); + Prelude.False -> (trace "X" ((trace "X" (__U03be_0 (trace "X" (v'))))))}))))) (trace "X" ((MkLeveledHaskType (trace "X" (t)) (trace "X" (v))))) (trace "X" (ebody)))))))))))) (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" (lev)) (trace "X" (([])))))) + (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((\v' -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (eqd_vv)) (trace "X" (lev)) (trace "X" (v')))))) of { + Prelude.True -> (trace "X" (MkLeveledHaskType (trace "X" (tv)) (trace "X" (v)))); + Prelude.False -> (trace "X" ((trace "X" (__U03be_0 (trace "X" (v'))))))}))))) (trace "X" ((MkLeveledHaskType (trace "X" (t)) (trace "X" (v))))) (trace "X" (ebody))))))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (tv)) (trace "X" (v)))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (t)) (trace "X" (v))))))))))) (trace "X" (n0))))} + in + (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" ((\v' -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (eqd_vv)) (trace "X" (lev)) (trace "X" (v')))))) of { + Prelude.True -> (trace "X" (MkLeveledHaskType (trace "X" (tv)) (trace "X" (v)))); + Prelude.False -> (trace "X" ((trace "X" (__U03be_0 (trace "X" (v'))))))}))))) + (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((\v' -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (eqd_vv)) (trace "X" (lev)) (trace "X" (v')))))) of { + Prelude.True -> (trace "X" (MkLeveledHaskType (trace "X" (tv)) (trace "X" (v)))); + Prelude.False -> (trace "X" ((trace "X" (__U03be_0 (trace "X" (v'))))))}))))) (trace "X" ((MkLeveledHaskType (trace "X" (t)) (trace "X" (v))))) (trace "X" (ebody)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (t)) (trace "X" (v)))))))))))))))))))) (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" (lev)) (trace "X" (([])))))) + (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((\v' -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (eqd_vv)) (trace "X" (lev)) (trace "X" (v')))))) of { + Prelude.True -> (trace "X" (MkLeveledHaskType (trace "X" (tv)) (trace "X" (v)))); + Prelude.False -> (trace "X" ((trace "X" (__U03be_0 (trace "X" (v'))))))}))))) (trace "X" ((MkLeveledHaskType (trace "X" (t)) (trace "X" (v))))) (trace "X" (ebody))))))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (tv)) (trace "X" (v)))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (t)) (trace "X" (v)))))))))))))))))))) (trace "X" (n1)))))); + Prelude.False -> (trace "X" (Prelude.error "absurd case"))})))))))))))))))))))) (trace "X" ((Nd_rule (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" (__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" ((MkLeveledHaskType (trace "X" (tv)) (trace "X" (v))))) (trace "X" (ev)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (tv)) (trace "X" (v)))))))))))))))))))) (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" (lev)) (trace "X" (([])))))) + (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((\v' -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (eqd_vv)) (trace "X" (lev)) (trace "X" (v')))))) of { + Prelude.True -> (trace "X" (MkLeveledHaskType (trace "X" (tv)) (trace "X" (v)))); + Prelude.False -> (trace "X" ((trace "X" (__U03be_0 (trace "X" (v'))))))}))))) (trace "X" ((MkLeveledHaskType (trace "X" (t)) (trace "X" (v))))) (trace "X" (ebody))))))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (tv)) (trace "X" (v)))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (t)) (trace "X" (v))))))))))))))))))))))) (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" (lev)) (trace "X" (([])))))) + (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((\v' -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (eqd_vv)) (trace "X" (lev)) (trace "X" (v')))))) of { + Prelude.True -> (trace "X" (MkLeveledHaskType (trace "X" (tv)) (trace "X" (v)))); + Prelude.False -> (trace "X" ((trace "X" (__U03be_0 (trace "X" (v'))))))}))))) (trace "X" ((MkLeveledHaskType (trace "X" (t)) (trace "X" (v))))) (trace "X" (ebody))))))))))))))))) (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" ((MkLeveledHaskType (trace "X" (tv)) (trace "X" (v))))) (trace "X" (ev))))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (t)) (trace "X" (v)))))))))))))))))))) (trace "X" ((RLet (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) + (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) + (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" (((:) (trace "X" (lev)) (trace "X" (([])))))) + (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((\v' -> + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (eqd_vv)) (trace "X" (lev)) (trace "X" (v')))))) of { + Prelude.True -> (trace "X" (MkLeveledHaskType (trace "X" (tv)) (trace "X" (v)))); + Prelude.False -> (trace "X" ((trace "X" (__U03be_0 (trace "X" (v'))))))}))))) (trace "X" ((MkLeveledHaskType (trace "X" (t)) (trace "X" (v))))) (trace "X" (ebody))))))))))))))))) (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" ((MkLeveledHaskType (trace "X" (tv)) (trace "X" (v))))) (trace "X" (ev)))))))))))) (trace "X" (t)) (trace "X" (tv)) (trace "X" (v)))))))))); + EEsc __U0393_0 __U0394_0 __U03be_0 ec t lev e -> (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" (__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" ((MkLeveledHaskType (trace "X" (t)) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev)))))))) (trace "X" ((EEsc (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (ec)) (trace "X" (t)) (trace "X" (lev)) (trace "X" (e))))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (haskBrak (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (t))))))))) (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" ((MkLeveledHaskType (trace "X" (t)) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev)))))))) (trace "X" ((EEsc (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (ec)) (trace "X" (t)) (trace "X" (lev)) (trace "X" (e))))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (t)) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev))))))))))))))))))))))) (trace "X" ((trace "X" ((expr2proof (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (haskBrak (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (t))))))))) (trace "X" (lev))))) (trace "X" (e))))))) (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" (__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" ((MkLeveledHaskType (trace "X" (t)) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev)))))))) (trace "X" ((EEsc (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (ec)) (trace "X" (t)) (trace "X" (lev)) (trace "X" (e))))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (haskBrak (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (t))))))))) (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" ((MkLeveledHaskType (trace "X" (t)) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev)))))))) (trace "X" ((EEsc (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (ec)) (trace "X" (t)) (trace "X" (lev)) (trace "X" (e))))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (t)) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev))))))))))))))))))))))) (trace "X" ((REsc (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (t)) (trace "X" (ec)) (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" ((MkLeveledHaskType (trace "X" (t)) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev)))))))) (trace "X" ((EEsc (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (ec)) (trace "X" (t)) (trace "X" (lev)) (trace "X" (e))))))))))))))) (trace "X" (lev)))))))))); + EBrak __U0393_0 __U0394_0 __U03be_0 ec t lev e -> (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" (__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" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (haskBrak (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (t))))))))) (trace "X" (lev))))) (trace "X" ((EBrak (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (ec)) (trace "X" (t)) (trace "X" (lev)) (trace "X" (e))))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (t)) (trace "X" (((:) (trace "X" (ec)) (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" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (haskBrak (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (t))))))))) (trace "X" (lev))))) (trace "X" ((EBrak (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (ec)) (trace "X" (t)) (trace "X" (lev)) (trace "X" (e))))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (haskBrak (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (t))))))))) (trace "X" (lev)))))))))))))))))))) (trace "X" ((trace "X" ((expr2proof (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" ((MkLeveledHaskType (trace "X" (t)) (trace "X" (((:) (trace "X" (ec)) (trace "X" (lev)))))))) (trace "X" (e))))))) (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" (__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" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (haskBrak (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (t))))))))) (trace "X" (lev))))) (trace "X" ((EBrak (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (ec)) (trace "X" (t)) (trace "X" (lev)) (trace "X" (e))))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (t)) (trace "X" (((:) (trace "X" (ec)) (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" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (haskBrak (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (t))))))))) (trace "X" (lev))))) (trace "X" ((EBrak (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (ec)) (trace "X" (t)) (trace "X" (lev)) (trace "X" (e))))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (haskBrak (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (t))))))))) (trace "X" (lev)))))))))))))))))))) (trace "X" ((RBrak (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (t)) (trace "X" (ec)) (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" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (haskBrak (trace "X" (__U0393_0)) (trace "X" (ec)) (trace "X" (t))))))))) (trace "X" (lev))))) (trace "X" ((EBrak (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (ec)) (trace "X" (t)) (trace "X" (lev)) (trace "X" (e))))))))))))))) (trace "X" (lev)))))))))); + ECast __U0393_0 __U0394_0 __U03be_0 __U03b3_ t1 lev e -> (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" (__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" ((MkLeveledHaskType (trace "X" (t1)) (trace "X" (lev))))) (trace "X" ((ECast (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (__U03b3_)) (trace "X" (t1)) (trace "X" (lev)) (trace "X" (e))))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (__U03b3_)) (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" ((MkLeveledHaskType (trace "X" (t1)) (trace "X" (lev))))) (trace "X" ((ECast (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (__U03b3_)) (trace "X" (t1)) (trace "X" (lev)) (trace "X" (e))))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (t1)) (trace "X" (lev)))))))))))))))))))) (trace "X" ((trace "X" ((expr2proof (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" ((MkLeveledHaskType (trace "X" (__U03b3_)) (trace "X" (lev))))) (trace "X" (e))))))) (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" (__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" ((MkLeveledHaskType (trace "X" (t1)) (trace "X" (lev))))) (trace "X" ((ECast (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (__U03b3_)) (trace "X" (t1)) (trace "X" (lev)) (trace "X" (e))))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (__U03b3_)) (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" ((MkLeveledHaskType (trace "X" (t1)) (trace "X" (lev))))) (trace "X" ((ECast (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (__U03b3_)) (trace "X" (t1)) (trace "X" (lev)) (trace "X" (e))))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (t1)) (trace "X" (lev)))))))))))))))))))) (trace "X" ((RCast (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" ((MkLeveledHaskType (trace "X" (t1)) (trace "X" (lev))))) (trace "X" ((ECast (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (__U03b3_)) (trace "X" (t1)) (trace "X" (lev)) (trace "X" (e))))))))))))))) (trace "X" (__U03b3_)) (trace "X" (t1)) (trace "X" (lev)))))))))); + ENote __U0393_0 __U0394_0 __U03be_0 t n e -> (trace "X" (let {e' = (trace "X" ((trace "X" (expr2proof (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (t)) (trace "X" (e))))))} in (trace "X" (case (trace "X" (t)) of { + MkLeveledHaskType h h0 -> (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" (__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" ((MkLeveledHaskType (trace "X" (h)) (trace "X" (h0))))) (trace "X" ((ENote (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" ((MkLeveledHaskType (trace "X" (h)) (trace "X" (h0))))) (trace "X" (n)) (trace "X" (e))))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (h)) (trace "X" (h0)))))))))))))))))))) (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" ((MkLeveledHaskType (trace "X" (h)) (trace "X" (h0))))) (trace "X" ((ENote (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" ((MkLeveledHaskType (trace "X" (h)) (trace "X" (h0))))) (trace "X" (n)) (trace "X" (e))))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (h)) (trace "X" (h0)))))))))))))))))))) (trace "X" (e')) (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" (__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" ((MkLeveledHaskType (trace "X" (h)) (trace "X" (h0))))) (trace "X" ((ENote (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" ((MkLeveledHaskType (trace "X" (h)) (trace "X" (h0))))) (trace "X" (n)) (trace "X" (e))))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (h)) (trace "X" (h0)))))))))))))))))))) (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" ((MkLeveledHaskType (trace "X" (h)) (trace "X" (h0))))) (trace "X" ((ENote (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" ((MkLeveledHaskType (trace "X" (h)) (trace "X" (h0))))) (trace "X" (n)) (trace "X" (e))))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (h)) (trace "X" (h0)))))))))))))))))))) (trace "X" ((RNote (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" ((MkLeveledHaskType (trace "X" (h)) (trace "X" (h0))))) (trace "X" ((ENote (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" ((MkLeveledHaskType (trace "X" (h)) (trace "X" (h0))))) (trace "X" (n)) (trace "X" (e))))))))))))))) (trace "X" (h)) (trace "X" (h0)) (trace "X" (n))))))))))})))); + ETyApp __U0393_0 __U0394_0 __U03ba_ __U03c3_ __U03c4_ __U03be_0 l e -> (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" (__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" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (haskTAll (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (__U03c3_))))))))) (trace "X" (l))))) (trace "X" (e)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (haskTAll (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (__U03c3_))))))))) (trace "X" (l)))))))))))))))))))) (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" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (haskTAll (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (__U03c3_))))))))) (trace "X" (l))))) (trace "X" (e)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (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" (l)))))))))))))))))))) (trace "X" ((trace "X" ((expr2proof (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (haskTAll (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (__U03c3_))))))))) (trace "X" (l))))) (trace "X" (e))))))) (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" (__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" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (haskTAll (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (__U03c3_))))))))) (trace "X" (l))))) (trace "X" (e)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (haskTAll (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (__U03c3_))))))))) (trace "X" (l)))))))))))))))))))) (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" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (haskTAll (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (__U03c3_))))))))) (trace "X" (l))))) (trace "X" (e)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (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" (l)))))))))))))))))))) (trace "X" ((RAppT (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" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (haskTAll (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (__U03c3_))))))))) (trace "X" (l))))) (trace "X" (e)))))))))))) (trace "X" (__U03ba_)) (trace "X" (__U03c3_)) (trace "X" (__U03c4_)) (trace "X" (l)))))))))); + ECoLam __U0393_0 __U0394_0 __U03ba_ __U03c3_ __U03c3___U2081_ __U03c3___U2082_ __U03be_0 l e -> (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" (((:) (trace "X" ((\_ -> (trace "X" ((trace "X" (mkHaskCoercionKind (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (__U03c3___U2081_)) (trace "X" (__U03c3___U2082_))))))))) (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" (((:) (trace "X" ((\_ -> (trace "X" ((trace "X" (mkHaskCoercionKind (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (__U03c3___U2081_)) (trace "X" (__U03c3___U2082_))))))))) (trace "X" (__U0394_0))))) (trace "X" (__U03be_0)) (trace "X" ((MkLeveledHaskType (trace "X" (__U03c3_)) (trace "X" (l))))) (trace "X" (e)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (__U03c3_)) (trace "X" (l)))))))))))))))))))) (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" (((:) (trace "X" ((\_ -> (trace "X" ((trace "X" (mkHaskCoercionKind (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (__U03c3___U2081_)) (trace "X" (__U03c3___U2082_))))))))) (trace "X" (__U0394_0))))) (trace "X" (__U03be_0)) (trace "X" ((MkLeveledHaskType (trace "X" (__U03c3_)) (trace "X" (l))))) (trace "X" (e)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (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" ((trace "X" ((expr2proof (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (((:) (trace "X" ((\_ -> (trace "X" ((trace "X" (mkHaskCoercionKind (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (__U03c3___U2081_)) (trace "X" (__U03c3___U2082_))))))))) (trace "X" (__U0394_0))))) (trace "X" (__U03be_0)) (trace "X" ((MkLeveledHaskType (trace "X" (__U03c3_)) (trace "X" (l))))) (trace "X" (e))))))) (trace "X" ((Nd_rule (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (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___U2081_)) (trace "X" (__U03c3___U2082_))))))))) (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" (((:) (trace "X" ((\_ -> (trace "X" ((trace "X" (mkHaskCoercionKind (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (__U03c3___U2081_)) (trace "X" (__U03c3___U2082_))))))))) (trace "X" (__U0394_0))))) (trace "X" (__U03be_0)) (trace "X" ((MkLeveledHaskType (trace "X" (__U03c3_)) (trace "X" (l))))) (trace "X" (e)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (__U03c3_)) (trace "X" (l)))))))))))))))))))) (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" (((:) (trace "X" ((\_ -> (trace "X" ((trace "X" (mkHaskCoercionKind (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (__U03c3___U2081_)) (trace "X" (__U03c3___U2082_))))))))) (trace "X" (__U0394_0))))) (trace "X" (__U03be_0)) (trace "X" ((MkLeveledHaskType (trace "X" (__U03c3_)) (trace "X" (l))))) (trace "X" (e)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (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" ((RAbsCo (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" (((:) (trace "X" ((\_ -> (trace "X" ((trace "X" (mkHaskCoercionKind (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (__U03c3___U2081_)) (trace "X" (__U03c3___U2082_))))))))) (trace "X" (__U0394_0))))) (trace "X" (__U03be_0)) (trace "X" ((MkLeveledHaskType (trace "X" (__U03c3_)) (trace "X" (l))))) (trace "X" (e)))))))))))) (trace "X" (__U03ba_)) (trace "X" (__U03c3___U2081_)) (trace "X" (__U03c3___U2082_)) (trace "X" (__U03c3_)) (trace "X" (l)))))))))); + ECoApp __U0393_0 __U0394_0 __U03ba_ __U03c3___U2081_ __U03c3___U2082_ __U03b3_ __U03be_0 l e -> (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" (__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" ((MkLeveledHaskType (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" ((__U03b3_ (trace "X" (__)) (trace "X" (env)))))))))))) (trace "X" (l))))) (trace "X" (e)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (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" ((__U03b3_ (trace "X" (__)) (trace "X" (env)))))))))))) (trace "X" (l)))))))))))))))))))) (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" ((MkLeveledHaskType (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" ((__U03b3_ (trace "X" (__)) (trace "X" (env)))))))))))) (trace "X" (l))))) (trace "X" (e)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (__U03b3_)) (trace "X" (l)))))))))))))))))))) (trace "X" ((trace "X" ((expr2proof (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" ((MkLeveledHaskType (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" ((__U03b3_ (trace "X" (__)) (trace "X" (env)))))))))))) (trace "X" (l))))) (trace "X" (e))))))) (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" (__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" ((MkLeveledHaskType (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" ((__U03b3_ (trace "X" (__)) (trace "X" (env)))))))))))) (trace "X" (l))))) (trace "X" (e)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (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" ((__U03b3_ (trace "X" (__)) (trace "X" (env)))))))))))) (trace "X" (l)))))))))))))))))))) (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" ((MkLeveledHaskType (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" ((__U03b3_ (trace "X" (__)) (trace "X" (env)))))))))))) (trace "X" (l))))) (trace "X" (e)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (__U03b3_)) (trace "X" (l)))))))))))))))))))) (trace "X" ((RAppCo (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" ((MkLeveledHaskType (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" ((__U03b3_ (trace "X" (__)) (trace "X" (env)))))))))))) (trace "X" (l))))) (trace "X" (e)))))))))))) (trace "X" (__U03ba_)) (trace "X" (__U03c3___U2081_)) (trace "X" (__U03c3___U2082_)) (trace "X" (__U03b3_)) (trace "X" (l)))))))))); + ETyLam __U0393_0 __U0394_0 __U03be_0 __U03ba_ __U03c3_ l e -> (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" (((:) (trace "X" (__U03ba_)) (trace "X" (__U0393_0))))) (trace "X" ((trace "X" ((weakCE (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (__U0394_0))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((weakLT (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (KindStar))))))) (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" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (haskTAll (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (__U03c3_))))))))) (trace "X" (l))))) (trace "X" ((ETyLam (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (__U03ba_)) (trace "X" (__U03c3_)) (trace "X" (l)) (trace "X" (e)))))))))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (haskTApp (trace "X" (((:) (trace "X" (__U03ba_)) (trace "X" (__U0393_0))))) (trace "X" (__U03ba_)) (trace "X" ((\_ -> (trace "X" ((trace "X" (weakF (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (KindStar)) (trace "X" (__U03c3_))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (freshHaskTyVar (trace "X" (__U0393_0)) (trace "X" (__U03ba_)))))))))))))))) (trace "X" ((trace "X" ((weakL (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (l))))))))))))))))))))))))) (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" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (haskTAll (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (__U03c3_))))))))) (trace "X" (l))))) (trace "X" ((ETyLam (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (__U03ba_)) (trace "X" (__U03c3_)) (trace "X" (l)) (trace "X" (e))))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (haskTAll (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (__U03c3_))))))))) (trace "X" (l)))))))))))))))))))) (trace "X" ((trace "X" ((eq_rect (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x -> (trace "X" ((trace "X" (weakLT (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (KindStar)) (trace "X" ((trace "X" ((__U03be_0 (trace "X" (x)))))))))))))) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (((:) (trace "X" (__U03ba_)) (trace "X" (__U0393_0))))) (trace "X" ((trace "X" ((weakCE (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (__U0394_0))))))) (trace "X" ((\x -> (trace "X" ((trace "X" (weakLT (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (KindStar)) (trace "X" ((trace "X" ((__U03be_0 (trace "X" (x)))))))))))))) (trace "X" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (haskTApp (trace "X" (((:) (trace "X" (__U03ba_)) (trace "X" (__U0393_0))))) (trace "X" (__U03ba_)) (trace "X" ((\_ -> (trace "X" ((trace "X" (weakF (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (KindStar)) (trace "X" (__U03c3_))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (freshHaskTyVar (trace "X" (__U0393_0)) (trace "X" (__U03ba_)))))))))))))))) (trace "X" ((trace "X" ((weakL (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (l)))))))))) (trace "X" (e)))))))))))) (trace "X" ((trace "X" ((expr2proof (trace "X" (eqd_vv)) (trace "X" (((:) (trace "X" (__U03ba_)) (trace "X" (__U0393_0))))) (trace "X" ((trace "X" ((weakCE (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (__U0394_0))))))) (trace "X" ((\x -> (trace "X" ((trace "X" (weakLT (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (KindStar)) (trace "X" ((trace "X" ((__U03be_0 (trace "X" (x)))))))))))))) (trace "X" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (haskTApp (trace "X" (((:) (trace "X" (__U03ba_)) (trace "X" (__U0393_0))))) (trace "X" (__U03ba_)) (trace "X" ((\_ -> (trace "X" ((trace "X" (weakF (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (KindStar)) (trace "X" (__U03c3_))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (freshHaskTyVar (trace "X" (__U0393_0)) (trace "X" (__U03ba_)))))))))))))))) (trace "X" ((trace "X" ((weakL (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (l)))))))))) (trace "X" (e))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((weakLT (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (KindStar))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" (((:) (trace "X" (__U03ba_)) (trace "X" (__U0393_0))))) (trace "X" ((trace "X" ((weakCE (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (__U0394_0))))))) (trace "X" ((\x -> (trace "X" ((trace "X" (weakLT (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (KindStar)) (trace "X" ((trace "X" ((__U03be_0 (trace "X" (x)))))))))))))) (trace "X" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (haskTApp (trace "X" (((:) (trace "X" (__U03ba_)) (trace "X" (__U0393_0))))) (trace "X" (__U03ba_)) (trace "X" ((\_ -> (trace "X" ((trace "X" (weakF (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (KindStar)) (trace "X" (__U03c3_))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (freshHaskTyVar (trace "X" (__U0393_0)) (trace "X" (__U03ba_)))))))))))))))) (trace "X" ((trace "X" ((weakL (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (l)))))))))) (trace "X" (e)))))))))))))))))))))) (trace "X" ((Nd_rule (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (((:) (trace "X" (__U03ba_)) (trace "X" (__U0393_0))))) (trace "X" ((trace "X" ((weakCE (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (__U0394_0))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((weakLT (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (KindStar))))))) (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" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (haskTAll (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (__U03c3_))))))))) (trace "X" (l))))) (trace "X" ((ETyLam (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (__U03ba_)) (trace "X" (__U03c3_)) (trace "X" (l)) (trace "X" (e)))))))))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (haskTApp (trace "X" (((:) (trace "X" (__U03ba_)) (trace "X" (__U0393_0))))) (trace "X" (__U03ba_)) (trace "X" ((\_ -> (trace "X" ((trace "X" (weakF (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (KindStar)) (trace "X" (__U03c3_))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (freshHaskTyVar (trace "X" (__U0393_0)) (trace "X" (__U03ba_)))))))))))))))) (trace "X" ((trace "X" ((weakL (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (l))))))))))))))))))))))))) (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" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (haskTAll (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (__U03c3_))))))))) (trace "X" (l))))) (trace "X" ((ETyLam (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (__U03ba_)) (trace "X" (__U03c3_)) (trace "X" (l)) (trace "X" (e))))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (haskTAll (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (__U03c3_))))))))) (trace "X" (l)))))))))))))))))))) (trace "X" ((RAbsT (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" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (haskTAll (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (__U03c3_))))))))) (trace "X" (l))))) (trace "X" ((ETyLam (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (__U03ba_)) (trace "X" (__U03c3_)) (trace "X" (l)) (trace "X" (e))))))))))))))) (trace "X" (__U03ba_)) (trace "X" (__U03c3_)) (trace "X" (l)))))))))); + ECase __U0393_0 __U0394_0 __U03be_0 l tc tbranches atypes e alts' -> + (trace "X" (let { + dcsp = (trace "X" ((trace "X" (let { + mkdcsp alts = + (trace "X" (case (trace "X" (alts)) of { + T_Leaf o -> + (trace "X" (case (trace "X" (o)) of { + Prelude.Just x -> + (trace "X" (case (trace "X" (x)) of { + ExistT sac s -> (trace "X" (case (trace "X" (s)) of { + ExistT scbx ex -> (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" ((trace "X" ((sac___U0393_ (trace "X" (tc)) (trace "X" (sac)) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((sac___U0394_ (trace "X" (tc)) (trace "X" (sac)) (trace "X" (__U0393_0)) (trace "X" (atypes)) (trace "X" ((trace "X" ((weakCK'' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (__U0394_0)))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((scbwv___U03be_ (trace "X" (eqd_vv)) (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (atypes)) (trace "X" (sac)) (trace "X" (scbx)) (trace "X" (__U03be_0)) (trace "X" (l))))))) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" ((trace "X" ((sac___U0393_ (trace "X" (tc)) (trace "X" (sac)) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((sac___U0394_ (trace "X" (tc)) (trace "X" (sac)) (trace "X" (__U0393_0)) (trace "X" (atypes)) (trace "X" ((trace "X" ((weakCK'' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (__U0394_0)))))))))))) (trace "X" ((trace "X" ((scbwv___U03be_ (trace "X" (eqd_vv)) (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (atypes)) (trace "X" (sac)) (trace "X" (scbx)) (trace "X" (__U03be_0)) (trace "X" (l))))))) (trace "X" ((trace "X" ((weakLT' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (KindStar)) (trace "X" ((MkLeveledHaskType (trace "X" (tbranches)) (trace "X" (l)))))))))) (trace "X" (ex)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((trace "X" ((weakLT' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (KindStar)) (trace "X" ((MkLeveledHaskType (trace "X" (tbranches)) (trace "X" (l))))))))))))))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((trace "X" ((pcb_judg (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (l)) (trace "X" (tbranches)) (trace "X" (atypes)) (trace "X" ((trace "X" ((projT1 (trace "X" ((trace "X" ((mkProofCaseBranch (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (l)) (trace "X" (tc)) (trace "X" (tbranches)) (trace "X" (atypes)) (trace "X" ((ExistT (trace "X" (sac)) (trace "X" ((ExistT (trace "X" (scbx)) (trace "X" (ex)))))))))))))))))) (trace "X" ((trace "X" ((projT2 (trace "X" ((trace "X" ((mkProofCaseBranch (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (l)) (trace "X" (tc)) (trace "X" (tbranches)) (trace "X" (atypes)) (trace "X" ((ExistT (trace "X" (sac)) (trace "X" ((ExistT (trace "X" (scbx)) (trace "X" (ex))))))))))))))))))))))))))))) (trace "X" ((trace "X" ((expr2proof (trace "X" (eqd_vv)) (trace "X" ((trace "X" ((sac___U0393_ (trace "X" (tc)) (trace "X" (sac)) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((sac___U0394_ (trace "X" (tc)) (trace "X" (sac)) (trace "X" (__U0393_0)) (trace "X" (atypes)) (trace "X" ((trace "X" ((weakCK'' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (__U0394_0)))))))))))) (trace "X" ((trace "X" ((scbwv___U03be_ (trace "X" (eqd_vv)) (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (atypes)) (trace "X" (sac)) (trace "X" (scbx)) (trace "X" (__U03be_0)) (trace "X" (l))))))) (trace "X" ((trace "X" ((weakLT' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (KindStar)) (trace "X" ((MkLeveledHaskType (trace "X" (tbranches)) (trace "X" (l)))))))))) (trace "X" (ex))))))) (trace "X" ((Nd_rule (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" ((trace "X" ((sac___U0393_ (trace "X" (tc)) (trace "X" (sac)) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((sac___U0394_ (trace "X" (tc)) (trace "X" (sac)) (trace "X" (__U0393_0)) (trace "X" (atypes)) (trace "X" ((trace "X" ((weakCK'' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (__U0394_0)))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((scbwv___U03be_ (trace "X" (eqd_vv)) (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (atypes)) (trace "X" (sac)) (trace "X" (scbx)) (trace "X" (__U03be_0)) (trace "X" (l))))))) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" ((trace "X" ((sac___U0393_ (trace "X" (tc)) (trace "X" (sac)) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((sac___U0394_ (trace "X" (tc)) (trace "X" (sac)) (trace "X" (__U0393_0)) (trace "X" (atypes)) (trace "X" ((trace "X" ((weakCK'' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (__U0394_0)))))))))))) (trace "X" ((trace "X" ((scbwv___U03be_ (trace "X" (eqd_vv)) (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (atypes)) (trace "X" (sac)) (trace "X" (scbx)) (trace "X" (__U03be_0)) (trace "X" (l))))))) (trace "X" ((trace "X" ((weakLT' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (KindStar)) (trace "X" ((MkLeveledHaskType (trace "X" (tbranches)) (trace "X" (l)))))))))) (trace "X" (ex)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((trace "X" ((weakLT' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (KindStar)) (trace "X" ((MkLeveledHaskType (trace "X" (tbranches)) (trace "X" (l))))))))))))))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((trace "X" ((pcb_judg (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (l)) (trace "X" (tbranches)) (trace "X" (atypes)) (trace "X" ((trace "X" ((projT1 (trace "X" ((trace "X" ((mkProofCaseBranch (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (l)) (trace "X" (tc)) (trace "X" (tbranches)) (trace "X" (atypes)) (trace "X" ((ExistT (trace "X" (sac)) (trace "X" ((ExistT (trace "X" (scbx)) (trace "X" (ex)))))))))))))))))) (trace "X" ((trace "X" ((projT2 (trace "X" ((trace "X" ((mkProofCaseBranch (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (l)) (trace "X" (tc)) (trace "X" (tbranches)) (trace "X" (atypes)) (trace "X" ((ExistT (trace "X" (sac)) (trace "X" ((ExistT (trace "X" (scbx)) (trace "X" (ex))))))))))))))))))))))))))))) (trace "X" ((RArrange (trace "X" ((trace "X" ((sac___U0393_ (trace "X" (tc)) (trace "X" ((trace "X" ((projT1 (trace "X" ((trace "X" ((mkProofCaseBranch (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (l)) (trace "X" (tc)) (trace "X" (tbranches)) (trace "X" (atypes)) (trace "X" ((ExistT (trace "X" (sac)) (trace "X" ((ExistT (trace "X" (scbx)) (trace "X" (ex)))))))))))))))))) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((sac___U0394_ (trace "X" (tc)) (trace "X" ((trace "X" ((projT1 (trace "X" ((trace "X" ((mkProofCaseBranch (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (l)) (trace "X" (tc)) (trace "X" (tbranches)) (trace "X" (atypes)) (trace "X" ((ExistT (trace "X" (sac)) (trace "X" ((ExistT (trace "X" (scbx)) (trace "X" (ex)))))))))))))))))) (trace "X" (__U0393_0)) (trace "X" (atypes)) (trace "X" ((trace "X" ((map (trace "X" ((\x0 _ -> (trace "X" ((trace "X" (weakCK' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" ((trace "X" ((projT1 (trace "X" ((trace "X" ((mkProofCaseBranch (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (l)) (trace "X" (tc)) (trace "X" (tbranches)) (trace "X" (atypes)) (trace "X" ((ExistT (trace "X" (sac)) (trace "X" ((ExistT (trace "X" (scbx)) (trace "X" (ex))))))))))))))))))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" ((trace "X" ((projT1 (trace "X" ((trace "X" ((mkProofCaseBranch (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (l)) (trace "X" (tc)) (trace "X" (tbranches)) (trace "X" (atypes)) (trace "X" ((ExistT (trace "X" (sac)) (trace "X" ((ExistT (trace "X" (scbx)) (trace "X" (ex)))))))))))))))))))))))))))) (trace "X" (x0))))))))) (trace "X" (__U0394_0)))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((scbwv___U03be_ (trace "X" (eqd_vv)) (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (atypes)) (trace "X" (sac)) (trace "X" (scbx)) (trace "X" (__U03be_0)) (trace "X" (l))))))) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" ((trace "X" ((sac___U0393_ (trace "X" (tc)) (trace "X" (sac)) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((sac___U0394_ (trace "X" (tc)) (trace "X" (sac)) (trace "X" (__U0393_0)) (trace "X" (atypes)) (trace "X" ((trace "X" ((weakCK'' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (__U0394_0)))))))))))) (trace "X" ((trace "X" ((scbwv___U03be_ (trace "X" (eqd_vv)) (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (atypes)) (trace "X" (sac)) (trace "X" (scbx)) (trace "X" (__U03be_0)) (trace "X" (l))))))) (trace "X" ((trace "X" ((weakLT' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (KindStar)) (trace "X" ((MkLeveledHaskType (trace "X" (tbranches)) (trace "X" (l)))))))))) (trace "X" (ex)))))))))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((weakLT' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" ((trace "X" ((projT1 (trace "X" ((trace "X" ((mkProofCaseBranch (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (l)) (trace "X" (tc)) (trace "X" (tbranches)) (trace "X" (atypes)) (trace "X" ((ExistT (trace "X" (sac)) (trace "X" ((ExistT (trace "X" (scbx)) (trace "X" (ex))))))))))))))))))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" ((trace "X" ((projT1 (trace "X" ((trace "X" ((mkProofCaseBranch (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (l)) (trace "X" (tc)) (trace "X" (tbranches)) (trace "X" (atypes)) (trace "X" ((ExistT (trace "X" (sac)) (trace "X" ((ExistT (trace "X" (scbx)) (trace "X" (ex)))))))))))))))))))))))))))) (trace "X" (KindStar))))))) (trace "X" ((trace "X" ((pcb_freevars (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (l)) (trace "X" (tbranches)) (trace "X" (atypes)) (trace "X" ((trace "X" ((projT1 (trace "X" ((trace "X" ((mkProofCaseBranch (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (l)) (trace "X" (tc)) (trace "X" (tbranches)) (trace "X" (atypes)) (trace "X" ((ExistT (trace "X" (sac)) (trace "X" ((ExistT (trace "X" (scbx)) (trace "X" (ex)))))))))))))))))) (trace "X" ((trace "X" ((projT2 (trace "X" ((trace "X" ((mkProofCaseBranch (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (l)) (trace "X" (tc)) (trace "X" (tbranches)) (trace "X" (atypes)) (trace "X" ((ExistT (trace "X" (sac)) (trace "X" ((ExistT (trace "X" (scbx)) (trace "X" (ex)))))))))))))))))))))))))))) (trace "X" ((trace "X" ((unleaves (trace "X" ((trace "X" ((map (trace "X" ((\t -> (trace "X" (MkLeveledHaskType (trace "X" (t)) (trace "X" ((trace "X" ((weakL' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" ((trace "X" ((projT1 (trace "X" ((trace "X" ((mkProofCaseBranch (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (l)) (trace "X" (tc)) (trace "X" (tbranches)) (trace "X" (atypes)) (trace "X" ((ExistT (trace "X" (sac)) (trace "X" ((ExistT (trace "X" (scbx)) (trace "X" (ex))))))))))))))))))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" ((trace "X" ((projT1 (trace "X" ((trace "X" ((mkProofCaseBranch (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (l)) (trace "X" (tc)) (trace "X" (tbranches)) (trace "X" (atypes)) (trace "X" ((ExistT (trace "X" (sac)) (trace "X" ((ExistT (trace "X" (scbx)) (trace "X" (ex)))))))))))))))))))))))))))) (trace "X" (l)))))))))))) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExprVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" ((trace "X" ((projT1 (trace "X" ((trace "X" ((mkProofCaseBranch (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (l)) (trace "X" (tc)) (trace "X" (tbranches)) (trace "X" (atypes)) (trace "X" ((ExistT (trace "X" (sac)) (trace "X" ((ExistT (trace "X" (scbx)) (trace "X" (ex))))))))))))))))))))))) (trace "X" ((trace "X" ((sac_types (trace "X" ((Prelude.error "Proj Args"))) (trace "X" ((trace "X" ((projT1 (trace "X" ((trace "X" ((mkProofCaseBranch (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (l)) (trace "X" (tc)) (trace "X" (tbranches)) (trace "X" (atypes)) (trace "X" ((ExistT (trace "X" (sac)) (trace "X" ((ExistT (trace "X" (scbx)) (trace "X" (ex)))))))))))))))))) (trace "X" (__U0393_0)) (trace "X" (atypes))))))))))))))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((trace "X" ((weakLT' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" ((trace "X" ((projT1 (trace "X" ((trace "X" ((mkProofCaseBranch (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (l)) (trace "X" (tc)) (trace "X" (tbranches)) (trace "X" (atypes)) (trace "X" ((ExistT (trace "X" (sac)) (trace "X" ((ExistT (trace "X" (scbx)) (trace "X" (ex))))))))))))))))))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" ((trace "X" ((projT1 (trace "X" ((trace "X" ((mkProofCaseBranch (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (l)) (trace "X" (tc)) (trace "X" (tbranches)) (trace "X" (atypes)) (trace "X" ((ExistT (trace "X" (sac)) (trace "X" ((ExistT (trace "X" (scbx)) (trace "X" (ex)))))))))))))))))))))))))))) (trace "X" (KindStar)) (trace "X" ((MkLeveledHaskType (trace "X" (tbranches)) (trace "X" (l)))))))))))))))) (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" ((weakL' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (l)))))))))))) (trace "X" ((trace "X" ((unleaves (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExprVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_types (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)) (trace "X" (__U0393_0)) (trace "X" (atypes)))))))))))))))))))))) (trace "X" ((trace "X" ((eq_rect (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x0 -> (trace "X" ((trace "X" (weakLT' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (KindStar)) (trace "X" ((trace "X" ((__U03be_0 (trace "X" (x0)))))))))))))) (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExprVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((scbwv_exprvars (trace "X" (eqd_vv)) (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (atypes)) (trace "X" (sac)) (trace "X" (scbx)))))))))))) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" ((trace "X" ((sac___U0393_ (trace "X" (tc)) (trace "X" (sac)) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((sac___U0394_ (trace "X" (tc)) (trace "X" (sac)) (trace "X" (__U0393_0)) (trace "X" (atypes)) (trace "X" ((trace "X" ((weakCK'' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (__U0394_0)))))))))))) (trace "X" ((trace "X" ((scbwv___U03be_ (trace "X" (eqd_vv)) (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (atypes)) (trace "X" (sac)) (trace "X" (scbx)) (trace "X" (__U03be_0)) (trace "X" (l))))))) (trace "X" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (weakT' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (KindStar)) (trace "X" (tbranches))))))))) (trace "X" ((trace "X" ((weakL' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (l)))))))))) (trace "X" (ex))))))))))))))))) (trace "X" ((trace "X" ((eq_rect (trace "X" ((trace "X" ((unleaves (trace "X" ((trace "X" ((map (trace "X" ((\t -> (trace "X" (MkLeveledHaskType (trace "X" (t)) (trace "X" ((trace "X" ((weakL' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (l)))))))))))) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExprVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_types (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)) (trace "X" (__U0393_0)) (trace "X" (atypes)))))))))))))))))))))) (trace "X" ((trace "X" ((eq_rect_r (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExprVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((vec_map (trace "X" ((trace "X" ((sac_numExprVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((\t -> (trace "X" (MkLeveledHaskType (trace "X" (t)) (trace "X" ((trace "X" ((weakL' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (l)))))))))))) (trace "X" ((trace "X" ((sac_types (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)) (trace "X" (__U0393_0)) (trace "X" (atypes))))))))))))))))) (trace "X" ((trace "X" ((eq_rect (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExprVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((vec_map (trace "X" ((trace "X" ((sac_numExprVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((scbwv___U03be_ (trace "X" (eqd_vv)) (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (atypes)) (trace "X" (sac)) (trace "X" (scbx)) (trace "X" (__U03be_0)) (trace "X" (l))))))) (trace "X" ((trace "X" ((scbwv_exprvars (trace "X" (eqd_vv)) (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (atypes)) (trace "X" (sac)) (trace "X" (scbx))))))))))))))))) (trace "X" ((trace "X" ((eq_rect (trace "X" ((trace "X" ((map (trace "X" ((trace "X" ((scbwv___U03be_ (trace "X" (eqd_vv)) (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (atypes)) (trace "X" (sac)) (trace "X" (scbx)) (trace "X" (__U03be_0)) (trace "X" (l))))))) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExprVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((scbwv_exprvars (trace "X" (eqd_vv)) (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (atypes)) (trace "X" (sac)) (trace "X" (scbx))))))))))))))))) (trace "X" ((trace "X" ((eq_rect_r (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((scbwv___U03be_ (trace "X" (eqd_vv)) (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (atypes)) (trace "X" (sac)) (trace "X" (scbx)) (trace "X" (__U03be_0)) (trace "X" (l))))))) (trace "X" ((trace "X" ((unleaves (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExprVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((scbwv_exprvars (trace "X" (eqd_vv)) (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (atypes)) (trace "X" (sac)) (trace "X" (scbx)))))))))))))))))))))) (trace "X" ((let {q = (trace "X" ((trace "X" (arrangeContextAndWeaken'' (trace "X" (eqd_vv))))))} in (trace "X" ((trace "X" (eq_rect (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((update___U03be_ (trace "X" (eqd_vv)) (trace "X" ((trace "X" ((app (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (__U0393_0))))))) (trace "X" ((\x0 -> (trace "X" ((trace "X" (weakLT' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (KindStar)) (trace "X" ((trace "X" ((__U03be_0 (trace "X" (x0)))))))))))))) (trace "X" ((trace "X" ((weakL' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (l))))))) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExprVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((vec_zip (trace "X" ((trace "X" ((sac_numExprVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((scbwv_exprvars (trace "X" (eqd_vv)) (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (atypes)) (trace "X" (sac)) (trace "X" (scbx))))))) (trace "X" ((trace "X" ((sac_types (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)) (trace "X" (__U0393_0)) (trace "X" (atypes)))))))))))))))))))))) (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExprVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((scbwv_exprvars (trace "X" (eqd_vv)) (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (atypes)) (trace "X" (sac)) (trace "X" (scbx)))))))))))) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" ((trace "X" ((app (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((sac___U0394_ (trace "X" (tc)) (trace "X" (sac)) (trace "X" (__U0393_0)) (trace "X" (atypes)) (trace "X" ((trace "X" ((weakCK'' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (__U0394_0)))))))))))) (trace "X" ((trace "X" ((update___U03be_ (trace "X" (eqd_vv)) (trace "X" ((trace "X" ((app (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (__U0393_0))))))) (trace "X" ((\x0 -> (trace "X" ((trace "X" (weakLT' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (KindStar)) (trace "X" ((trace "X" ((__U03be_0 (trace "X" (x0)))))))))))))) (trace "X" ((trace "X" ((weakL' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (l))))))) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExprVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((scbwv_varstypes (trace "X" (eqd_vv)) (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (atypes)) (trace "X" (sac)) (trace "X" (scbx))))))))))))))))) (trace "X" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (weakT' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (KindStar)) (trace "X" (tbranches))))))))) (trace "X" ((trace "X" ((weakL' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (l)))))))))) (trace "X" (ex))))))))))))))))) (trace "X" ((trace "X" ((eq_rect (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" ((trace "X" ((leaves (trace "X" ((trace "X" ((unleaves (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExprVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((scbwv_exprvars (trace "X" (eqd_vv)) (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (atypes)) (trace "X" (sac)) (trace "X" (scbx))))))))))))))))))))))))))) (trace "X" ((trace "X" ((q (trace "X" ((trace "X" ((app (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((sac___U0394_ (trace "X" (tc)) (trace "X" (sac)) (trace "X" (__U0393_0)) (trace "X" (atypes)) (trace "X" ((trace "X" ((weakCK'' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (__U0394_0)))))))))))) (trace "X" ((trace "X" ((unleaves (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExprVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((scbwv_exprvars (trace "X" (eqd_vv)) (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (atypes)) (trace "X" (sac)) (trace "X" (scbx))))))))))))))))) (trace "X" ((trace "X" ((update___U03be_ (trace "X" (eqd_vv)) (trace "X" ((trace "X" ((app (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (__U0393_0))))))) (trace "X" ((\x0 -> (trace "X" ((trace "X" (weakLT' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (KindStar)) (trace "X" ((trace "X" ((__U03be_0 (trace "X" (x0)))))))))))))) (trace "X" ((trace "X" ((weakL' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (l))))))) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExprVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((scbwv_varstypes (trace "X" (eqd_vv)) (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (atypes)) (trace "X" (sac)) (trace "X" (scbx))))))))))))))))) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" ((trace "X" ((app (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((sac___U0394_ (trace "X" (tc)) (trace "X" (sac)) (trace "X" (__U0393_0)) (trace "X" (atypes)) (trace "X" ((trace "X" ((weakCK'' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (__U0394_0)))))))))))) (trace "X" ((trace "X" ((update___U03be_ (trace "X" (eqd_vv)) (trace "X" ((trace "X" ((app (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (__U0393_0))))))) (trace "X" ((\x0 -> (trace "X" ((trace "X" (weakLT' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (KindStar)) (trace "X" ((trace "X" ((__U03be_0 (trace "X" (x0)))))))))))))) (trace "X" ((trace "X" ((weakL' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (l))))))) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExprVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((scbwv_varstypes (trace "X" (eqd_vv)) (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (atypes)) (trace "X" (sac)) (trace "X" (scbx))))))))))))))))) (trace "X" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (weakT' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (KindStar)) (trace "X" (tbranches))))))))) (trace "X" ((trace "X" ((weakL' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (l)))))))))) (trace "X" (ex)))))))))))) (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExprVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((scbwv_exprvars (trace "X" (eqd_vv)) (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (atypes)) (trace "X" (sac)) (trace "X" (scbx)))))))))))))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x0 -> (trace "X" ((trace "X" (weakLT' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (KindStar)) (trace "X" ((trace "X" ((__U03be_0 (trace "X" (x0)))))))))))))) (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExprVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((scbwv_exprvars (trace "X" (eqd_vv)) (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (atypes)) (trace "X" (sac)) (trace "X" (scbx)))))))))))) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" ((trace "X" ((app (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((sac___U0394_ (trace "X" (tc)) (trace "X" (sac)) (trace "X" (__U0393_0)) (trace "X" (atypes)) (trace "X" ((trace "X" ((weakCK'' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (__U0394_0)))))))))))) (trace "X" ((trace "X" ((update___U03be_ (trace "X" (eqd_vv)) (trace "X" ((trace "X" ((app (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (__U0393_0))))))) (trace "X" ((\x0 -> (trace "X" ((trace "X" (weakLT' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (KindStar)) (trace "X" ((trace "X" ((__U03be_0 (trace "X" (x0)))))))))))))) (trace "X" ((trace "X" ((weakL' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (l))))))) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExprVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((scbwv_varstypes (trace "X" (eqd_vv)) (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (atypes)) (trace "X" (sac)) (trace "X" (scbx))))))))))))))))) (trace "X" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (weakT' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (KindStar)) (trace "X" (tbranches))))))))) (trace "X" ((trace "X" ((weakL' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (l)))))))))) (trace "X" (ex)))))))))))))))))))))))) (trace "X" ((trace "X" ((unleaves (trace "X" ((trace "X" ((map (trace "X" ((trace "X" ((scbwv___U03be_ (trace "X" (eqd_vv)) (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (atypes)) (trace "X" (sac)) (trace "X" (scbx)) (trace "X" (__U03be_0)) (trace "X" (l))))))) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExprVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((scbwv_exprvars (trace "X" (eqd_vv)) (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (atypes)) (trace "X" (sac)) (trace "X" (scbx))))))))))))))))))))))))))) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExprVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((vec_map (trace "X" ((trace "X" ((sac_numExprVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((scbwv___U03be_ (trace "X" (eqd_vv)) (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (atypes)) (trace "X" (sac)) (trace "X" (scbx)) (trace "X" (__U03be_0)) (trace "X" (l))))))) (trace "X" ((trace "X" ((scbwv_exprvars (trace "X" (eqd_vv)) (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (atypes)) (trace "X" (sac)) (trace "X" (scbx)))))))))))))))))))))) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExprVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((vec_map (trace "X" ((trace "X" ((sac_numExprVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((\t -> (trace "X" (MkLeveledHaskType (trace "X" (t)) (trace "X" ((trace "X" ((weakL' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (l)))))))))))) (trace "X" ((trace "X" ((sac_types (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)) (trace "X" (__U0393_0)) (trace "X" (atypes)))))))))))))))))))))) (trace "X" ((trace "X" ((map (trace "X" ((\t -> (trace "X" (MkLeveledHaskType (trace "X" (t)) (trace "X" ((trace "X" ((weakL' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (l)))))))))))) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExprVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_types (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)) (trace "X" (__U0393_0)) (trace "X" (atypes)))))))))))))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t -> (trace "X" (MkLeveledHaskType (trace "X" (t)) (trace "X" ((trace "X" ((weakL' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (l)))))))))))) (trace "X" ((trace "X" ((unleaves (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExprVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_types (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)) (trace "X" (__U0393_0)) (trace "X" (atypes))))))))))))))))))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((weakLT' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (KindStar))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" ((trace "X" ((stripOutVars (trace "X" (eqd_vv)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExprVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((scbwv_exprvars (trace "X" (eqd_vv)) (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (atypes)) (trace "X" (sac)) (trace "X" (scbx)))))))))))) (trace "X" ((trace "X" ((expr2antecedent (trace "X" (eqd_vv)) (trace "X" ((trace "X" ((sac___U0393_ (trace "X" (tc)) (trace "X" (sac)) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((sac___U0394_ (trace "X" (tc)) (trace "X" (sac)) (trace "X" (__U0393_0)) (trace "X" (atypes)) (trace "X" ((trace "X" ((weakCK'' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (__U0394_0)))))))))))) (trace "X" ((trace "X" ((scbwv___U03be_ (trace "X" (eqd_vv)) (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (atypes)) (trace "X" (sac)) (trace "X" (scbx)) (trace "X" (__U03be_0)) (trace "X" (l))))))) (trace "X" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (weakT' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (KindStar)) (trace "X" (tbranches))))))))) (trace "X" ((trace "X" ((weakL' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (l)))))))))) (trace "X" (ex))))))))))))))))))))))))))) (trace "X" ((trace "X" ((unleaves (trace "X" ((trace "X" ((map (trace "X" ((\t -> (trace "X" (MkLeveledHaskType (trace "X" (t)) (trace "X" ((trace "X" ((weakL' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (l)))))))))))) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExprVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_types (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)) (trace "X" (__U0393_0)) (trace "X" (atypes)))))))))))))))))))))))))))))))))))}))})); + Prelude.Nothing -> (trace "X" (Nd_id0))})); + T_Branch b1 b2 -> (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" ((trace "X" ((mapOptionTree (trace "X" ((\x -> (trace "X" ((trace "X" (pcb_judg (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (l)) (trace "X" (tbranches)) (trace "X" (atypes)) (trace "X" ((trace "X" ((projT1 (trace "X" ((trace "X" ((mkProofCaseBranch (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (l)) (trace "X" (tc)) (trace "X" (tbranches)) (trace "X" (atypes)) (trace "X" (x)))))))))))) (trace "X" ((trace "X" ((projT2 (trace "X" ((trace "X" ((mkProofCaseBranch (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (l)) (trace "X" (tc)) (trace "X" (tbranches)) (trace "X" (atypes)) (trace "X" (x))))))))))))))))))) (trace "X" (b1))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x -> (trace "X" ((trace "X" (pcb_judg (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (l)) (trace "X" (tbranches)) (trace "X" (atypes)) (trace "X" ((trace "X" ((projT1 (trace "X" ((trace "X" ((mkProofCaseBranch (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (l)) (trace "X" (tc)) (trace "X" (tbranches)) (trace "X" (atypes)) (trace "X" (x)))))))))))) (trace "X" ((trace "X" ((projT2 (trace "X" ((trace "X" ((mkProofCaseBranch (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (l)) (trace "X" (tc)) (trace "X" (tbranches)) (trace "X" (atypes)) (trace "X" (x))))))))))))))))))) (trace "X" (b2)))))))))) (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" ((trace "X" ((mapOptionTree (trace "X" ((\x -> (trace "X" ((trace "X" (pcb_judg (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (l)) (trace "X" (tbranches)) (trace "X" (atypes)) (trace "X" ((trace "X" ((projT1 (trace "X" ((trace "X" ((mkProofCaseBranch (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (l)) (trace "X" (tc)) (trace "X" (tbranches)) (trace "X" (atypes)) (trace "X" (x)))))))))))) (trace "X" ((trace "X" ((projT2 (trace "X" ((trace "X" ((mkProofCaseBranch (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (l)) (trace "X" (tc)) (trace "X" (tbranches)) (trace "X" (atypes)) (trace "X" (x))))))))))))))))))) (trace "X" (b1))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x -> (trace "X" ((trace "X" (pcb_judg (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (l)) (trace "X" (tbranches)) (trace "X" (atypes)) (trace "X" ((trace "X" ((projT1 (trace "X" ((trace "X" ((mkProofCaseBranch (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (l)) (trace "X" (tc)) (trace "X" (tbranches)) (trace "X" (atypes)) (trace "X" (x)))))))))))) (trace "X" ((trace "X" ((projT2 (trace "X" ((trace "X" ((mkProofCaseBranch (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (l)) (trace "X" (tc)) (trace "X" (tbranches)) (trace "X" (atypes)) (trace "X" (x))))))))))))))))))) (trace "X" (b2))))))) (trace "X" ((trace "X" ((mkdcsp (trace "X" (b1))))))) (trace "X" ((trace "X" ((mkdcsp (trace "X" (b2))))))))))))}))} + in mkdcsp (trace "X" (alts'))))))} + in + (trace "X" ((trace "X" (eq_rect (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTreeAndFlatten (trace "X" ((\x -> (trace "X" ((trace "X" (pcb_freevars (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (l)) (trace "X" (tbranches)) (trace "X" (atypes)) (trace "X" ((trace "X" ((projT1 (trace "X" (x))))))) (trace "X" ((trace "X" ((projT2 (trace "X" (x)))))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((mkProofCaseBranch (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (l)) (trace "X" (tc)) (trace "X" (tbranches)) (trace "X" (atypes))))))) (trace "X" (alts')))))))))))) (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" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (caseType (trace "X" (__U0393_0)) (trace "X" (tc)) (trace "X" (atypes))))))))) (trace "X" (l))))) (trace "X" (e))))))))))))))) (trace "X" ((Nd_comp (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing))))) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x -> (trace "X" ((trace "X" (pcb_judg (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (l)) (trace "X" (tbranches)) (trace "X" (atypes)) (trace "X" ((trace "X" ((projT1 (trace "X" (x))))))) (trace "X" ((trace "X" ((projT2 (trace "X" (x)))))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((mkProofCaseBranch (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (l)) (trace "X" (tc)) (trace "X" (tbranches)) (trace "X" (atypes))))))) (trace "X" (alts')))))))))))) (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" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (caseType (trace "X" (__U0393_0)) (trace "X" (tc)) (trace "X" (atypes))))))))) (trace "X" (l))))) (trace "X" (e)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (caseType (trace "X" (__U0393_0)) (trace "X" (tc)) (trace "X" (atypes))))))))) (trace "X" (l))))))))))))))))))))))) (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" ((mapOptionTreeAndFlatten (trace "X" ((\x -> (trace "X" ((trace "X" (pcb_freevars (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (l)) (trace "X" (tbranches)) (trace "X" (atypes)) (trace "X" ((trace "X" ((projT1 (trace "X" (x))))))) (trace "X" ((trace "X" ((projT2 (trace "X" (x)))))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((mkProofCaseBranch (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (l)) (trace "X" (tc)) (trace "X" (tbranches)) (trace "X" (atypes))))))) (trace "X" (alts')))))))))))) (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" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (caseType (trace "X" (__U0393_0)) (trace "X" (tc)) (trace "X" (atypes))))))))) (trace "X" (l))))) (trace "X" (e))))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (tbranches)) (trace "X" (l)))))))))))))))))))) (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" ((trace "X" ((mapOptionTree (trace "X" ((\x -> (trace "X" ((trace "X" (pcb_judg (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (l)) (trace "X" (tbranches)) (trace "X" (atypes)) (trace "X" ((trace "X" ((projT1 (trace "X" (x))))))) (trace "X" ((trace "X" ((projT2 (trace "X" (x)))))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((mkProofCaseBranch (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (l)) (trace "X" (tc)) (trace "X" (tbranches)) (trace "X" (atypes))))))) (trace "X" (alts')))))))))))) (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" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (caseType (trace "X" (__U0393_0)) (trace "X" (tc)) (trace "X" (atypes))))))))) (trace "X" (l))))) (trace "X" (e)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (caseType (trace "X" (__U0393_0)) (trace "X" (tc)) (trace "X" (atypes))))))))) (trace "X" (l))))))))))))))))))))))) (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" ((trace "X" ((mapOptionTree (trace "X" ((\x -> (trace "X" ((trace "X" (pcb_judg (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (l)) (trace "X" (tbranches)) (trace "X" (atypes)) (trace "X" ((trace "X" ((projT1 (trace "X" (x))))))) (trace "X" ((trace "X" ((projT2 (trace "X" (x)))))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((mkProofCaseBranch (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (l)) (trace "X" (tc)) (trace "X" (tbranches)) (trace "X" (atypes))))))) (trace "X" (alts')))))))))))) (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" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (caseType (trace "X" (__U0393_0)) (trace "X" (tc)) (trace "X" (atypes))))))))) (trace "X" (l))))) (trace "X" (e)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (caseType (trace "X" (__U0393_0)) (trace "X" (tc)) (trace "X" (atypes))))))))) (trace "X" (l)))))))))))))))))))) (trace "X" ((trace "X" ((eq_rect (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x -> (trace "X" ((trace "X" (pcb_judg (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (l)) (trace "X" (tbranches)) (trace "X" (atypes)) (trace "X" ((trace "X" ((projT1 (trace "X" ((trace "X" ((mkProofCaseBranch (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (l)) (trace "X" (tc)) (trace "X" (tbranches)) (trace "X" (atypes)) (trace "X" (x)))))))))))) (trace "X" ((trace "X" ((projT2 (trace "X" ((trace "X" ((mkProofCaseBranch (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (l)) (trace "X" (tc)) (trace "X" (tbranches)) (trace "X" (atypes)) (trace "X" (x))))))))))))))))))) (trace "X" (alts'))))))) (trace "X" (dcsp)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x -> (trace "X" ((trace "X" (pcb_judg (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (l)) (trace "X" (tbranches)) (trace "X" (atypes)) (trace "X" ((trace "X" ((projT1 (trace "X" (x))))))) (trace "X" ((trace "X" ((projT2 (trace "X" (x)))))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((mkProofCaseBranch (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (l)) (trace "X" (tc)) (trace "X" (tbranches)) (trace "X" (atypes))))))) (trace "X" (alts'))))))))))))))))) (trace "X" ((trace "X" ((expr2proof (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (caseType (trace "X" (__U0393_0)) (trace "X" (tc)) (trace "X" (atypes))))))))) (trace "X" (l))))) (trace "X" (e))))))))))))) (trace "X" ((Nd_rule (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x -> (trace "X" ((trace "X" (pcb_judg (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (l)) (trace "X" (tbranches)) (trace "X" (atypes)) (trace "X" ((trace "X" ((projT1 (trace "X" (x))))))) (trace "X" ((trace "X" ((projT2 (trace "X" (x)))))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((mkProofCaseBranch (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (l)) (trace "X" (tc)) (trace "X" (tbranches)) (trace "X" (atypes))))))) (trace "X" (alts')))))))))))) (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" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (caseType (trace "X" (__U0393_0)) (trace "X" (tc)) (trace "X" (atypes))))))))) (trace "X" (l))))) (trace "X" (e)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (caseType (trace "X" (__U0393_0)) (trace "X" (tc)) (trace "X" (atypes))))))))) (trace "X" (l))))))))))))))))))))))) (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" ((mapOptionTreeAndFlatten (trace "X" ((\x -> (trace "X" ((trace "X" (pcb_freevars (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (l)) (trace "X" (tbranches)) (trace "X" (atypes)) (trace "X" ((trace "X" ((projT1 (trace "X" (x))))))) (trace "X" ((trace "X" ((projT2 (trace "X" (x)))))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((mkProofCaseBranch (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (l)) (trace "X" (tc)) (trace "X" (tbranches)) (trace "X" (atypes))))))) (trace "X" (alts')))))))))))) (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" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (caseType (trace "X" (__U0393_0)) (trace "X" (tc)) (trace "X" (atypes))))))))) (trace "X" (l))))) (trace "X" (e))))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (tbranches)) (trace "X" (l)))))))))))))))))))) (trace "X" ((RCase (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (l)) (trace "X" (tc)) (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" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (caseType (trace "X" (__U0393_0)) (trace "X" (tc)) (trace "X" (atypes))))))))) (trace "X" (l))))) (trace "X" (e)))))))))))) (trace "X" (atypes)) (trace "X" (tbranches)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((mkProofCaseBranch (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (l)) (trace "X" (tc)) (trace "X" (tbranches)) (trace "X" (atypes))))))) (trace "X" (alts')))))))))))))))) (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" ((MkLeveledHaskType (trace "X" (tbranches)) (trace "X" (l))))) (trace "X" ((ECase (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (l)) (trace "X" (tc)) (trace "X" (tbranches)) (trace "X" (atypes)) (trace "X" (e)) (trace "X" (alts'))))))))))))))))))))); + ELetRec __U0393_0 __U0394_0 __U03be_0 lev t tree x x0 -> + (trace "X" (let {__U03be_'0 = (trace "X" ((trace "X" (update___U03be_ (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" ((trace "X" (letRecSubproofsToND' (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" (t)) (trace "X" (tree)) (trace "X" (x)) (trace "X" (x0)) (trace "X" ((trace "X" ((expr2proof (trace "X" (eqd_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_'0)) (trace "X" ((MkLeveledHaskType (trace "X" (t)) (trace "X" (lev))))) (trace "X" (x0))))))) + (trace "X" ((trace "X" ((let { + subproofs __U0393_'' __U0394_'' __U03be_'' lev'' tree' branches' = + (trace "X" (case (trace "X" (branches')) of { + ELR_nil __U0393_1 __U0394_1 __U03be_1 lev0 -> (trace "X" (Lrsp_nil)); + ELR_leaf __U0393_1 __U0394_1 __U03be_1 l v t0 e -> (trace "X" (Lrsp_leaf (trace "X" (v)) (trace "X" (t0)) (trace "X" (e)) (trace "X" ((trace "X" ((expr2proof (trace "X" (eqd_vv)) (trace "X" (__U0393_1)) (trace "X" (__U0394_1)) (trace "X" (__U03be_1)) (trace "X" ((MkLeveledHaskType (trace "X" (t0)) (trace "X" (l))))) (trace "X" (e))))))))); + ELR_branch __U0393_1 __U0394_1 __U03be_1 lev0 t1 t2 b1 b2 -> (trace "X" (Lrsp_cons (trace "X" (t1)) (trace "X" (t2)) (trace "X" (b1)) (trace "X" (b2)) (trace "X" ((trace "X" ((subproofs (trace "X" (__U0393_1)) (trace "X" (__U0394_1)) (trace "X" (__U03be_1)) (trace "X" (lev0)) (trace "X" (t1)) (trace "X" (b1))))))) (trace "X" ((trace "X" ((subproofs (trace "X" (__U0393_1)) (trace "X" (__U0394_1)) (trace "X" (__U03be_1)) (trace "X" (lev0)) (trace "X" (t2)) (trace "X" (b2)))))))))}))} + in subproofs (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_'0)) (trace "X" (lev)) (trace "X" (tree)) (trace "X" (x)))))))))))))})) + +data VarNameStore0 = + VarNameStore Nat Nat Nat + +type VarNameStoreM t = + VarNameStore0 -> (,) t VarNameStore0 + -- singleton inductive, whose constructor was varNameStoreM + +varNameMonad :: Monad (VarNameStoreM ()) +varNameMonad = + (trace "X" (Build_Monad (trace "X" ((\_ x v -> (trace "X" ((,) (trace "X" (x)) (trace "X" (v))))))) (trace "X" ((\_ _ x f vns -> (trace "X" (case (trace "X" ((trace "X" (x (trace "X" (vns)))))) of { + (,) x' vns' -> (trace "X" ((trace "X" (f (trace "X" (x')) (trace "X" (vns'))))))}))))))) + +freshTyVarName :: Kind -> VarNameStoreM LatexMath +freshTyVarName __U03ba_ vns = + (trace "X" (case (trace "X" (vns)) of { + VarNameStore n1 n2 n3 -> (trace "X" (let {name = (trace "X" ((trace "X" (concatenate (trace "X" (concatenableLatexMath)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableLatexMath)) (trace "X" (((:) (trace "X" ('\\')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('h')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('_')) (trace "X" (((:) (trace "X" ('{')) (trace "X" ([])))))))))))))))))))))))))) (trace "X" ((trace "X" ((toLatexMath (trace "X" (stringToLatexMath)) (trace "X" ((trace "X" ((toString (trace "X" (natToStringInstance)) (trace "X" (n1))))))))))))))))) (trace "X" (((:) (trace "X" ('}')) (trace "X" ([])))))))))} in (trace "X" ((,) (trace "X" (name)) (trace "X" ((VarNameStore (trace "X" ((S (trace "X" (n1))))) (trace "X" (n2)) (trace "X" (n3)))))))))})) + +typeToLatexMath :: Prelude.Bool -> Kind -> (RawHaskType LatexMath) -> VarNameStoreM LatexMath +typeToLatexMath needparens __U03ba_ t = + (trace "X" (case (trace "X" (t)) of { + TVar __U03ba_0 v -> (trace "X" ((trace "X" (returnM (trace "X" ((unsafeCoerce (trace "X" (varNameMonad))))) (trace "X" ((trace "X" ((toLatexMath (trace "X" (latexMathToLatexMath)) (trace "X" (v))))))))))); + TCon tc -> (trace "X" ((trace "X" (returnM (trace "X" ((unsafeCoerce (trace "X" (varNameMonad))))) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableLatexMath)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableLatexMath)) (trace "X" (((:) (trace "X" ('\\')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('x')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('{')) (trace "X" (((:) (trace "X" ('\\')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('{')) (trace "X" ([])))))))))))))))))))))))))))))))) (trace "X" ((trace "X" ((toLatexMath (trace "X" (stringToLatexMath)) (trace "X" ((trace "X" ((toString (trace "X" (tyConToString)) (trace "X" (tc))))))))))))))))) (trace "X" (((:) (trace "X" ('}')) (trace "X" (((:) (trace "X" ('}')) (trace "X" ([]))))))))))))))))); + TArrow -> (trace "X" ((trace "X" (returnM (trace "X" ((unsafeCoerce (trace "X" (varNameMonad))))) (trace "X" (((:) (trace "X" ('\\')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('x')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('{')) (trace "X" (((:) (trace "X" ('\\')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('{')) (trace "X" (((:) (trace "X" ('(')) (trace "X" (((:) (trace "X" ('-')) (trace "X" (((:) (trace "X" ('>')) (trace "X" (((:) (trace "X" (')')) (trace "X" (((:) (trace "X" ('}')) (trace "X" (((:) (trace "X" ('}')) (trace "X" ([])))))))))))))))))))))))))))))))))))))))))))))))))))))); + TCoerc __U03ba_0 t1 t2 t0 -> (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (varNameMonad))))) (trace "X" ((trace "X" ((typeToLatexMath (trace "X" (Prelude.False)) (trace "X" (__U03ba_0)) (trace "X" (t1))))))) (trace "X" ((\t1' -> (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (varNameMonad))))) (trace "X" ((trace "X" ((typeToLatexMath (trace "X" (Prelude.False)) (trace "X" (__U03ba_0)) (trace "X" (t2))))))) (trace "X" ((\t2' -> (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (varNameMonad))))) (trace "X" ((trace "X" ((typeToLatexMath (trace "X" (needparens)) (trace "X" (KindStar)) (trace "X" (t0))))))) (trace "X" ((\t' -> (trace "X" ((trace "X" (returnM (trace "X" ((unsafeCoerce (trace "X" (varNameMonad))))) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableLatexMath)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableLatexMath)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableLatexMath)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableLatexMath)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableLatexMath)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableLatexMath)) (trace "X" (((:) (trace "X" ('{')) (trace "X" (((:) (trace "X" ('(')) (trace "X" ([])))))))) (trace "X" (t1'))))))) (trace "X" (((:) (trace "X" ('{')) (trace "X" (((:) (trace "X" ('\\')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('m')) (trace "X" (((:) (trace "X" ('}')) (trace "X" ([]))))))))))))))))))))))))) (trace "X" (t2'))))))) (trace "X" (((:) (trace "X" (')')) (trace "X" (((:) (trace "X" ('}')) (trace "X" (((:) (trace "X" ('\\')) (trace "X" (((:) (trace "X" ('R')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('g')) (trace "X" (((:) (trace "X" ('h')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('w')) (trace "X" (((:) (trace "X" ('{')) (trace "X" ([]))))))))))))))))))))))))))))))))))))))))))))))))) (trace "X" (t'))))))) (trace "X" (((:) (trace "X" ('}')) (trace "X" ([]))))))))))))))))))))))))))))))))))); + TApp __U03ba___U2081_ __U03ba___U2082_ t1 t2 -> + (trace "X" (case (trace "X" (t1)) of { + TApp __U03ba___U2081_0 __U03ba___U2082_0 r tx -> + (trace "X" (case (trace "X" (r)) of { + TArrow -> + (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (varNameMonad))))) (trace "X" ((trace "X" ((typeToLatexMath (trace "X" (Prelude.True)) (trace "X" (__U03ba___U2082_0)) (trace "X" (tx))))))) (trace "X" ((\t1' -> + (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (varNameMonad))))) (trace "X" ((trace "X" ((typeToLatexMath (trace "X" (Prelude.True)) (trace "X" (__U03ba___U2082_)) (trace "X" (t2))))))) (trace "X" ((\t2' -> + (trace "X" (let {body = (trace "X" ((trace "X" (concatenate (trace "X" (concatenableLatexMath)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableLatexMath)) (trace "X" (t1')) (trace "X" (((:) (trace "X" ('{')) (trace "X" (((:) (trace "X" ('\\')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('g')) (trace "X" (((:) (trace "X" ('h')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('w')) (trace "X" (((:) (trace "X" ('}')) (trace "X" ([])))))))))))))))))))))))))))))))))))))))))))))) (trace "X" (t2'))))))} in + (trace "X" ((trace "X" (returnM (trace "X" ((unsafeCoerce (trace "X" (varNameMonad))))) + (trace "X" ((case (trace "X" (needparens)) of { + Prelude.True -> (trace "X" ((trace "X" (concatenate (trace "X" (concatenableLatexMath)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableLatexMath)) (trace "X" (((:) (trace "X" ('(')) (trace "X" ([]))))) (trace "X" (body))))))) (trace "X" (((:) (trace "X" (')')) (trace "X" ([]))))))))); + Prelude.False -> (trace "X" (body))}))))))))))))))))))))))); + _ -> + (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (varNameMonad))))) (trace "X" ((trace "X" ((typeToLatexMath (trace "X" (Prelude.True)) (trace "X" ((KindArrow (trace "X" (__U03ba___U2082_)) (trace "X" (__U03ba___U2081_))))) (trace "X" (t1))))))) (trace "X" ((\t1' -> + (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (varNameMonad))))) (trace "X" ((trace "X" ((typeToLatexMath (trace "X" (Prelude.True)) (trace "X" (__U03ba___U2082_)) (trace "X" (t2))))))) (trace "X" ((\t2' -> + (trace "X" (let {body = (trace "X" ((trace "X" (concatenate (trace "X" (concatenableLatexMath)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableLatexMath)) (trace "X" (t1')) (trace "X" (((:) (trace "X" (' ')) (trace "X" ([])))))))))) (trace "X" (t2'))))))} in + (trace "X" ((trace "X" (returnM (trace "X" ((unsafeCoerce (trace "X" (varNameMonad))))) + (trace "X" ((case (trace "X" (needparens)) of { + Prelude.True -> (trace "X" ((trace "X" (concatenate (trace "X" (concatenableLatexMath)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableLatexMath)) (trace "X" (((:) (trace "X" ('(')) (trace "X" ([]))))) (trace "X" (body))))))) (trace "X" (((:) (trace "X" (')')) (trace "X" ([]))))))))); + Prelude.False -> (trace "X" (body))})))))))))))))))))))))))})); + _ -> + (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (varNameMonad))))) (trace "X" ((trace "X" ((typeToLatexMath (trace "X" (Prelude.True)) (trace "X" ((KindArrow (trace "X" (__U03ba___U2082_)) (trace "X" (__U03ba___U2081_))))) (trace "X" (t1))))))) (trace "X" ((\t1' -> + (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (varNameMonad))))) (trace "X" ((trace "X" ((typeToLatexMath (trace "X" (Prelude.True)) (trace "X" (__U03ba___U2082_)) (trace "X" (t2))))))) (trace "X" ((\t2' -> + (trace "X" (let {body = (trace "X" ((trace "X" (concatenate (trace "X" (concatenableLatexMath)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableLatexMath)) (trace "X" (t1')) (trace "X" (((:) (trace "X" (' ')) (trace "X" ([])))))))))) (trace "X" (t2'))))))} in + (trace "X" ((trace "X" (returnM (trace "X" ((unsafeCoerce (trace "X" (varNameMonad))))) + (trace "X" ((case (trace "X" (needparens)) of { + Prelude.True -> (trace "X" ((trace "X" (concatenate (trace "X" (concatenableLatexMath)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableLatexMath)) (trace "X" (((:) (trace "X" ('(')) (trace "X" ([]))))) (trace "X" (body))))))) (trace "X" (((:) (trace "X" (')')) (trace "X" ([]))))))))); + Prelude.False -> (trace "X" (body))})))))))))))))))))))))))})); + TAll k f -> (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (varNameMonad))))) (trace "X" ((trace "X" ((freshTyVarName (trace "X" (k))))))) (trace "X" ((\alpha -> (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (varNameMonad))))) (trace "X" ((trace "X" ((typeToLatexMath (trace "X" (Prelude.False)) (trace "X" (KindStar)) (trace "X" ((trace "X" ((f (trace "X" (alpha)))))))))))) (trace "X" ((\t' -> (trace "X" ((trace "X" (returnM (trace "X" ((unsafeCoerce (trace "X" (varNameMonad))))) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableLatexMath)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableLatexMath)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableLatexMath)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableLatexMath)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableLatexMath)) (trace "X" (((:) (trace "X" ('(')) (trace "X" (((:) (trace "X" ('\\')) (trace "X" (((:) (trace "X" ('f')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" (' ')) (trace "X" ([]))))))))))))))))))))))))))))) (trace "X" (alpha))))))) (trace "X" (((:) (trace "X" ('{')) (trace "X" (((:) (trace "X" (':')) (trace "X" (((:) (trace "X" ('}')) (trace "X" ([])))))))))))))))) (trace "X" ((trace "X" ((kindToLatexMath (trace "X" (k)))))))))))) (trace "X" (((:) (trace "X" (')')) (trace "X" ([])))))))))) (trace "X" (t'))))))))))))))))))))))))); + TCode ec t0 -> (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (varNameMonad))))) (trace "X" ((trace "X" ((typeToLatexMath (trace "X" (Prelude.True)) (trace "X" (KindStar)) (trace "X" (ec))))))) (trace "X" ((\ec' -> (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (varNameMonad))))) (trace "X" ((trace "X" ((typeToLatexMath (trace "X" (Prelude.False)) (trace "X" (KindStar)) (trace "X" (t0))))))) (trace "X" ((\t' -> (trace "X" ((trace "X" (returnM (trace "X" ((unsafeCoerce (trace "X" (varNameMonad))))) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableLatexMath)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableLatexMath)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableLatexMath)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableLatexMath)) (trace "X" (((:) (trace "X" ('\\')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('{')) (trace "X" ([])))))))))))))))))))) (trace "X" (ec'))))))) (trace "X" (((:) (trace "X" ('}')) (trace "X" (((:) (trace "X" ('{')) (trace "X" ([]))))))))))))) (trace "X" (t'))))))) (trace "X" (((:) (trace "X" ('}')) (trace "X" ([])))))))))))))))))))))))))))); + TyFunApp tfc lt -> (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (varNameMonad))))) (trace "X" ((unsafeCoerce (trace "X" ((trace "X" ((typeListToRawLatexMath (trace "X" (Prelude.False)) (trace "X" ((trace "X" ((fst (trace "X" ((trace "X" ((tyFunKind (trace "X" (tfc)))))))))))) (trace "X" (lt)))))))))) (trace "X" ((\rest -> (trace "X" ((trace "X" (returnM (trace "X" ((unsafeCoerce (trace "X" (varNameMonad))))) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableLatexMath)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableLatexMath)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableLatexMath)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableLatexMath)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableLatexMath)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableLatexMath)) (trace "X" (((:) (trace "X" ('{')) (trace "X" (((:) (trace "X" ('\\')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('x')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('{')) (trace "X" (((:) (trace "X" ('\\')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('{')) (trace "X" ([]))))))))))))))))))))))))))))))))))) (trace "X" ((trace "X" ((toLatexMath (trace "X" (stringToLatexMath)) (trace "X" ((trace "X" ((toString (trace "X" (tyFunToString)) (trace "X" (tfc))))))))))))))))) (trace "X" (((:) (trace "X" ('}')) (trace "X" (((:) (trace "X" ('}')) (trace "X" (((:) (trace "X" ('}')) (trace "X" ([])))))))))))))))) (trace "X" (((:) (trace "X" ('_')) (trace "X" (((:) (trace "X" ('{')) (trace "X" ([]))))))))))))) (trace "X" ((trace "X" ((toString (trace "X" (natToStringInstance)) (trace "X" ((trace "X" ((length (trace "X" ((trace "X" ((fst (trace "X" ((trace "X" ((tyFunKind (trace "X" (tfc))))))))))))))))))))))))))) (trace "X" (((:) (trace "X" ('}')) (trace "X" ([])))))))))) (trace "X" ((trace "X" ((fold_left (trace "X" ((\x y -> (trace "X" ((trace "X" (concatenate (trace "X" (concatenableLatexMath)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableLatexMath)) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('\\')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" (' ')) (trace "X" ([])))))))))))))) (trace "X" (x))))))) (trace "X" (y))))))))) (trace "X" (rest)) (trace "X" ([])))))))))))))))))))))))})) + +typeListToRawLatexMath :: Prelude.Bool -> (([]) Kind) -> (RawHaskTypeList LatexMath) -> VarNameStoreM (([]) LatexMath) +typeListToRawLatexMath needparens __U03ba_ t = + (trace "X" (case (trace "X" (t)) of { + TyFunApp_nil -> (trace "X" ((trace "X" (returnM (trace "X" ((unsafeCoerce (trace "X" (varNameMonad))))) (trace "X" (([]))))))); + TyFunApp_cons __U03ba_0 kl rhk rhkl -> (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (varNameMonad))))) (trace "X" ((unsafeCoerce (trace "X" ((trace "X" ((typeToLatexMath (trace "X" (needparens)) (trace "X" (__U03ba_0)) (trace "X" (rhk)))))))))) (trace "X" ((\r -> (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (varNameMonad))))) (trace "X" ((trace "X" ((typeListToRawLatexMath (trace "X" (needparens)) (trace "X" (kl)) (trace "X" (rhkl))))))) (trace "X" ((\rl -> (trace "X" ((trace "X" (returnM (trace "X" ((unsafeCoerce (trace "X" (varNameMonad))))) (trace "X" (((:) (trace "X" (r)) (trace "X" (rl)))))))))))))))))))))))})) + +ltypeToLatexMath :: TypeEnv -> Kind -> LeveledHaskType -> VarNameStoreM LatexMath +ltypeToLatexMath __U0393_0 __U03ba_ t = + (trace "X" (case (trace "X" (t)) of { + MkLeveledHaskType t' lev -> + (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (varNameMonad))))) (trace "X" ((trace "X" ((list_rect (trace "X" ((trace "X" ((returnM (trace "X" ((unsafeCoerce (trace "X" (varNameMonad))))) (trace "X" (INil))))))) (trace "X" ((\a __U0393_1 iH__U0393_ -> (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (varNameMonad))))) (trace "X" ((trace "X" ((freshTyVarName (trace "X" (a))))))) (trace "X" ((\tv' -> (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (varNameMonad))))) (trace "X" (iH__U0393_)) (trace "X" ((\iH__U0393_' -> (trace "X" ((trace "X" (returnM (trace "X" ((unsafeCoerce (trace "X" (varNameMonad))))) (trace "X" ((ICons (trace "X" (a)) (trace "X" (__U0393_1)) (trace "X" (tv')) (trace "X" (iH__U0393_')))))))))))))))))))))))))) (trace "X" (__U0393_0))))))) (trace "X" ((\ite -> + (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (varNameMonad))))) (trace "X" ((trace "X" ((typeToLatexMath (trace "X" (Prelude.False)) (trace "X" (__U03ba_)) (trace "X" ((trace "X" ((unsafeCoerce (trace "X" (t')) (trace "X" (__)) (trace "X" (ite)))))))))))) (trace "X" ((\t'' -> + (trace "X" ((trace "X" (returnM (trace "X" ((unsafeCoerce (trace "X" (varNameMonad))))) + (trace "X" ((case (trace "X" (lev)) of { + ([]) -> (trace "X" (t'')); + (:) h l -> (trace "X" ((trace "X" (concatenate (trace "X" (concatenableLatexMath)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableLatexMath)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableLatexMath)) (trace "X" (((:) (trace "X" (' ')) (trace "X" ([]))))) (trace "X" (t''))))))) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('@')) (trace "X" (((:) (trace "X" (' ')) (trace "X" ([])))))))))))))))) (trace "X" ((trace "X" ((fold_left (trace "X" ((\x y -> (trace "X" ((trace "X" (concatenate (trace "X" (concatenableLatexMath)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableLatexMath)) (trace "X" (x)) (trace "X" (((:) (trace "X" (':')) (trace "X" ([])))))))))) (trace "X" ((unsafeCoerce (trace "X" (y)))))))))))) (trace "X" ((trace "X" ((map (trace "X" ((\l0 -> (trace "X" ((trace "X" (l0 (trace "X" (__)) (trace "X" (ite))))))))) (trace "X" (lev))))))) (trace "X" ([])))))))))))})))))))))))))))))))))})) + +judgmentToRawLatexMath :: Judg -> LatexMath +judgmentToRawLatexMath j = + (trace "X" ((trace "X" (fst (trace "X" ((trace "X" ((unsafeCoerce (trace "X" ((case (trace "X" (j)) of { + MkJudg __U0393_0 __U0394_0 __U03a3___U2081_ __U03a3___U2082_ -> (trace "X" ((trace "X" (bindM (trace "X" (varNameMonad)) (trace "X" ((trace "X" ((treeM (trace "X" (varNameMonad)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((unsafeCoerce (trace "X" ((trace "X" ((ltypeToLatexMath (trace "X" (__U0393_0)) (trace "X" (KindStar)))))))))) (trace "X" (__U03a3___U2081_)))))))))))) (trace "X" ((\__U03a3___U2081_' -> (trace "X" ((trace "X" (bindM (trace "X" (varNameMonad)) (trace "X" ((trace "X" ((treeM (trace "X" (varNameMonad)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((unsafeCoerce (trace "X" ((trace "X" ((ltypeToLatexMath (trace "X" (__U0393_0)) (trace "X" (KindStar)))))))))) (trace "X" (__U03a3___U2082_)))))))))))) (trace "X" ((\__U03a3___U2082_' -> (trace "X" ((trace "X" (returnM (trace "X" (varNameMonad)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableLatexMath)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableLatexMath)) (trace "X" ((trace "X" ((treeToLatexMath (trace "X" (latexMathToLatexMath)) (trace "X" (__U03a3___U2081_'))))))) (trace "X" (((:) (trace "X" ('\\')) (trace "X" (((:) (trace "X" ('v')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('h')) (trace "X" ([]))))))))))))))))))))))))) (trace "X" ((trace "X" ((treeToLatexMath (trace "X" (latexMathToLatexMath)) (trace "X" (__U03a3___U2082_'))))))))))))))))))))))))))))))}))) (trace "X" ((VarNameStore (trace "X" (O)) (trace "X" (O)) (trace "X" (O)))))))))))))) + +toLatexMathJudgment :: ToLatexMath Judg +toLatexMathJudgment = + (trace "X" (judgmentToRawLatexMath)) + +nd_uruleToRawLatexMath :: (Tree (Prelude.Maybe a1)) -> (Tree (Prelude.Maybe a1)) -> (Arrange a1) -> Prelude.String +nd_uruleToRawLatexMath h c r = + (trace "X" (case (trace "X" (r)) of { + RCanL a -> (trace "X" ((:) (trace "X" ('C')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('L')) (trace "X" ([]))))))))))))); + RCanR a -> (trace "X" ((:) (trace "X" ('C')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('R')) (trace "X" ([]))))))))))))); + RuCanL a -> (trace "X" ((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('C')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('L')) (trace "X" ([])))))))))))))))); + RuCanR a -> (trace "X" ((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('C')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('R')) (trace "X" ([])))))))))))))))); + RAssoc a b c0 -> (trace "X" ((:) (trace "X" ('A')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('c')) (trace "X" ([])))))))))))))))); + RCossa a b c0 -> (trace "X" ((:) (trace "X" ('C')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('a')) (trace "X" ([])))))))))))))))); + RExch a b -> (trace "X" ((:) (trace "X" ('E')) (trace "X" (((:) (trace "X" ('x')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('h')) (trace "X" ([]))))))))))))); + RWeak a -> (trace "X" ((:) (trace "X" ('W')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('k')) (trace "X" ([]))))))))))))); + RCont a -> (trace "X" ((:) (trace "X" ('C')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('t')) (trace "X" ([]))))))))))))); + RLeft h0 c0 x r0 -> (trace "X" ((trace "X" (nd_uruleToRawLatexMath (trace "X" (h0)) (trace "X" (c0)) (trace "X" (r0)))))); + RRight h0 c0 x r0 -> (trace "X" ((trace "X" (nd_uruleToRawLatexMath (trace "X" (h0)) (trace "X" (c0)) (trace "X" (r0)))))); + RComp a b c0 a0 a1 -> (trace "X" ((:) (trace "X" ('C')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('m')) (trace "X" (((:) (trace "X" ('p')) (trace "X" ([])))))))))))))})) + +nd_ruleToRawLatexMath :: (Tree (Prelude.Maybe Judg)) -> (Tree (Prelude.Maybe Judg)) -> Rule -> Prelude.String +nd_ruleToRawLatexMath h c r = + (trace "X" (case (trace "X" (r)) of { + RArrange __U0393_0 __U0394_0 __U03a3___U2081_ __U03a3___U2082_ __U03a3_ r0 -> (trace "X" ((trace "X" (nd_uruleToRawLatexMath (trace "X" (__U03a3___U2081_)) (trace "X" (__U03a3___U2082_)) (trace "X" (r0)))))); + RBrak __U0393_0 __U0394_0 t v __U03a3_ l -> (trace "X" ((:) (trace "X" ('B')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('k')) (trace "X" ([]))))))))))))); + REsc __U0393_0 __U0394_0 t v __U03a3_ l -> (trace "X" ((:) (trace "X" ('E')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('c')) (trace "X" ([])))))))))); + RNote __U0393_0 __U0394_0 __U03a3_ __U03c4_ l n -> (trace "X" ((:) (trace "X" ('N')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('e')) (trace "X" ([]))))))))))))); + RLit __U0393_0 __U0394_0 v l -> (trace "X" ((:) (trace "X" ('L')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('t')) (trace "X" ([])))))))))); + RVar __U0393_0 __U0394_0 __U03c3_ l -> (trace "X" ((:) (trace "X" ('V')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('r')) (trace "X" ([])))))))))); + RGlobal __U0393_0 __U0394_0 __U03c4_ l w -> (trace "X" ((:) (trace "X" ('G')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('b')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('l')) (trace "X" ([]))))))))))))))))))); + RLam __U0393_0 __U0394_0 __U03a3_ tx te l -> (trace "X" ((:) (trace "X" ('A')) (trace "X" (((:) (trace "X" ('b')) (trace "X" (((:) (trace "X" ('s')) (trace "X" ([])))))))))); + RCast __U0393_0 __U0394_0 __U03a3_ __U03c3___U2081_ __U03c3___U2082_ l -> (trace "X" ((:) (trace "X" ('C')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('t')) (trace "X" ([]))))))))))))); + RJoin __U0393_0 __U0394_0 __U03a3___U2081_ __U03a3___U2082_ __U03c4___U2081_ __U03c4___U2082_ -> (trace "X" ((:) (trace "X" ('R')) (trace "X" (((:) (trace "X" ('J')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('n')) (trace "X" ([])))))))))))))))); + RApp __U0393_0 __U0394_0 __U03a3___U2081_ __U03a3___U2082_ tx te l -> (trace "X" ((:) (trace "X" ('A')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('p')) (trace "X" ([])))))))))); + RLet __U0393_0 __U0394_0 __U03a3___U2081_ __U03a3___U2082_ __U03c3___U2081_ __U03c3___U2082_ l -> (trace "X" ((:) (trace "X" ('L')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('t')) (trace "X" ([])))))))))); + RVoid __U0393_0 __U0394_0 -> (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" ([])))))))))))))))); + RAppT __U0393_0 __U0394_0 __U03a3_ __U03ba_ __U03c3_ __U03c4_ l -> (trace "X" ((:) (trace "X" ('A')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('T')) (trace "X" ([]))))))))))))); + RAbsT __U0393_0 __U0394_0 __U03a3_ __U03ba_ __U03c3_ l -> (trace "X" ((:) (trace "X" ('A')) (trace "X" (((:) (trace "X" ('b')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('T')) (trace "X" ([]))))))))))))); + RAppCo __U0393_0 __U0394_0 __U03a3_ __U03ba_ __U03c3___U2081_ __U03c3___U2082_ __U03c3_ l -> (trace "X" ((:) (trace "X" ('A')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('C')) (trace "X" (((:) (trace "X" ('o')) (trace "X" ([])))))))))))))))); + RAbsCo __U0393_0 __U0394_0 __U03a3_ __U03ba_ __U03c3___U2081_ __U03c3___U2082_ __U03c3_ l -> (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" ([])))))))))))))))); + RLetRec __U0393_0 __U0394_0 __U03a3___U2081_ __U03c4___U2081_ __U03c4___U2082_ lev -> (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" ([]))))))))))))))))))); + RCase __U0393_0 __U0394_0 lev tc __U03a3_ avars tbranches alts -> (trace "X" ((:) (trace "X" ('C')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('e')) (trace "X" ([])))))))))))))})) + +nd_hideURule :: (Tree (Prelude.Maybe a1)) -> (Tree (Prelude.Maybe a1)) -> (Arrange a1) -> Prelude.Bool +nd_hideURule h c r = + (trace "X" (case (trace "X" (r)) of { + RExch a b -> + (trace "X" (case (trace "X" (a)) of { + T_Leaf o -> + (trace "X" (case (trace "X" (o)) of { + Prelude.Just t -> + (trace "X" (case (trace "X" (b)) of { + T_Leaf o0 -> + (trace "X" (case (trace "X" (o0)) of { + Prelude.Just t0 -> (trace "X" (Prelude.False)); + Prelude.Nothing -> (trace "X" (Prelude.True))})); + T_Branch t0 t1 -> (trace "X" (Prelude.False))})); + Prelude.Nothing -> (trace "X" (Prelude.True))})); + T_Branch t t0 -> + (trace "X" (case (trace "X" (b)) of { + T_Leaf o -> + (trace "X" (case (trace "X" (o)) of { + Prelude.Just t1 -> (trace "X" (Prelude.False)); + Prelude.Nothing -> (trace "X" (Prelude.True))})); + T_Branch t1 t2 -> (trace "X" (Prelude.False))}))})); + RWeak a -> + (trace "X" (case (trace "X" (a)) of { + T_Leaf o -> + (trace "X" (case (trace "X" (o)) of { + Prelude.Just t -> (trace "X" (Prelude.False)); + Prelude.Nothing -> (trace "X" (Prelude.True))})); + T_Branch t t0 -> (trace "X" (Prelude.False))})); + RCont a -> + (trace "X" (case (trace "X" (a)) of { + T_Leaf o -> + (trace "X" (case (trace "X" (o)) of { + Prelude.Just t -> (trace "X" (Prelude.False)); + Prelude.Nothing -> (trace "X" (Prelude.True))})); + T_Branch t t0 -> (trace "X" (Prelude.False))})); + RLeft h0 c0 x r0 -> (trace "X" ((trace "X" (nd_hideURule (trace "X" (h0)) (trace "X" (c0)) (trace "X" (r0)))))); + RRight h0 c0 x r0 -> (trace "X" ((trace "X" (nd_hideURule (trace "X" (h0)) (trace "X" (c0)) (trace "X" (r0)))))); + RComp a b c0 a0 a1 -> (trace "X" (Prelude.False)); + _ -> (trace "X" (Prelude.True))})) + +nd_hideRule :: (Tree (Prelude.Maybe Judg)) -> (Tree (Prelude.Maybe Judg)) -> Rule -> Prelude.Bool +nd_hideRule h c r = + (trace "X" (case (trace "X" (r)) of { + RArrange __U0393_0 __U0394_0 __U03a3___U2081_ __U03a3___U2082_ __U03a3_ r0 -> (trace "X" ((trace "X" (nd_hideURule (trace "X" (__U03a3___U2081_)) (trace "X" (__U03a3___U2082_)) (trace "X" (r0)))))); + RJoin __U0393_0 __U0394_0 __U03a3___U2081_ __U03a3___U2082_ __U03c4___U2081_ __U03c4___U2082_ -> (trace "X" (Prelude.True)); + RVoid __U0393_0 __U0394_0 -> (trace "X" (Prelude.True)); + _ -> (trace "X" (Prelude.False))})) + +toLatexMathRule :: (Tree (Prelude.Maybe Judg)) -> (Tree (Prelude.Maybe Judg)) -> ToLatexMath Rule +toLatexMathRule h c r = + (trace "X" ((trace "X" (nd_ruleToRawLatexMath (trace "X" (h)) (trace "X" (c)) (trace "X" (r)))))) + +nd_ml_toLatexMath :: (Tree (Prelude.Maybe Judg)) -> (ND Judg Rule) -> LatexMath +nd_ml_toLatexMath c pf = + (trace "X" ((trace "X" (sIND_toLatexMath (trace "X" (toLatexMathJudgment)) (trace "X" (toLatexMathRule)) (trace "X" (nd_hideRule)) (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing))))) (trace "X" (c)) (trace "X" ((trace "X" ((mkSIND (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing))))) (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing))))) (trace "X" (c)) (trace "X" (pf)) (trace "X" ((Scnd_weak (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing))))))))))))))))) + +mkWeakTypeVar :: (Unique.Unique -> Kind -> WeakTypeVar0) -> Kind -> UniqM WeakTypeVar0 +mkWeakTypeVar mkWeakTypeVar_ k = + (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((unsafeCoerce (trace "X" (getU))))) (trace "X" ((\u -> (trace "X" ((trace "X" (returnM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((trace "X" ((mkWeakTypeVar_ (trace "X" (u)) (trace "X" (k)))))))))))))))))) + +mkWeakCoerVar :: (Unique.Unique -> Kind -> WeakType -> WeakType -> WeakCoerVar0) -> Kind -> WeakType -> WeakType -> UniqM WeakCoerVar0 +mkWeakCoerVar mkWeakCoerVar_ k t1 t2 = + (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((unsafeCoerce (trace "X" (getU))))) (trace "X" ((\u -> (trace "X" ((trace "X" (returnM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((trace "X" ((mkWeakCoerVar_ (trace "X" (u)) (trace "X" (k)) (trace "X" (t1)) (trace "X" (t2)))))))))))))))))) + +mkWeakExprVar :: (Unique.Unique -> WeakType -> WeakExprVar0) -> WeakType -> UniqM WeakExprVar0 +mkWeakExprVar mkWeakExprVar_ t = + (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((unsafeCoerce (trace "X" (getU))))) (trace "X" ((\u -> (trace "X" ((trace "X" (returnM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((trace "X" ((mkWeakExprVar_ (trace "X" (u)) (trace "X" (t)))))))))))))))))) + +mfresh :: (Unique.Unique -> Kind -> WeakTypeVar0) -> (([]) Kind) -> (([]) Kind) -> (IList Kind WeakTypeVar0) -> UniqM ((,) (Vec WeakTypeVar0) (IList Kind WeakTypeVar0)) +mfresh mkWeakTypeVar_ lk __U0393_0 ite = + (trace "X" (case (trace "X" (lk)) of { + ([]) -> (trace "X" ((trace "X" (returnM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" (((,) (trace "X" (Vec_nil)) (trace "X" (ite))))))))); + (:) k lk' -> (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((unsafeCoerce (trace "X" ((trace "X" ((mkWeakTypeVar (trace "X" (mkWeakTypeVar_)) (trace "X" (k)))))))))) (trace "X" ((\v -> (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((trace "X" ((mfresh (trace "X" (mkWeakTypeVar_)) (trace "X" (lk')) (trace "X" (__U0393_0)) (trace "X" (ite))))))) (trace "X" ((\vars_ite' -> (trace "X" ((trace "X" (returnM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" (((,) (trace "X" ((Vec_cons (trace "X" ((trace "X" ((length (trace "X" (lk'))))))) (trace "X" (v)) (trace "X" ((trace "X" ((fst (trace "X" (vars_ite')))))))))) (trace "X" ((ICons (trace "X" (k)) (trace "X" ((trace "X" ((app (trace "X" (lk')) (trace "X" (__U0393_0))))))) (trace "X" (v)) (trace "X" ((trace "X" ((snd (trace "X" (vars_ite')))))))))))))))))))))))))))))))})) + +rawHaskTypeToWeakType :: (Unique.Unique -> Kind -> WeakTypeVar0) -> Kind -> (RawHaskType WeakTypeVar0) -> UniqM WeakType +rawHaskTypeToWeakType mkWeakTypeVar_ = + (trace "X" (let { + rawHaskTypeToWeakType0 __U03ba_ rht = + (trace "X" (case (trace "X" (rht)) of { + TVar __U03ba_0 v -> (trace "X" ((trace "X" (returnM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((WTyVarTy (trace "X" (v))))))))); + TCon tc -> (trace "X" ((trace "X" (returnM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((WTyCon (trace "X" (tc))))))))); + TArrow -> (trace "X" ((trace "X" (returnM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" (WFunTyCon)))))); + TCoerc __U03ba_0 t1 t2 t3 -> (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((trace "X" ((rawHaskTypeToWeakType0 (trace "X" (__U03ba_0)) (trace "X" (t1))))))) (trace "X" ((\t1' -> (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((trace "X" ((rawHaskTypeToWeakType0 (trace "X" (__U03ba_0)) (trace "X" (t2))))))) (trace "X" ((\t2' -> (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((trace "X" ((rawHaskTypeToWeakType0 (trace "X" (KindStar)) (trace "X" (t3))))))) (trace "X" ((\t3' -> (trace "X" ((trace "X" (returnM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((WCoFunTy (trace "X" (t1')) (trace "X" (t2')) (trace "X" (t3')))))))))))))))))))))))))))))); + TApp __U03ba___U2081_ __U03ba___U2082_ t1 t2 -> (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((trace "X" ((rawHaskTypeToWeakType0 (trace "X" ((KindArrow (trace "X" (__U03ba___U2082_)) (trace "X" (__U03ba___U2081_))))) (trace "X" (t1))))))) (trace "X" ((\t1' -> (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((trace "X" ((rawHaskTypeToWeakType0 (trace "X" (__U03ba___U2082_)) (trace "X" (t2))))))) (trace "X" ((\t2' -> (trace "X" ((trace "X" (returnM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((WAppTy (trace "X" (t1')) (trace "X" (t2'))))))))))))))))))))))); + TAll k rht' -> (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((unsafeCoerce (trace "X" ((trace "X" ((mkWeakTypeVar (trace "X" (mkWeakTypeVar_)) (trace "X" (k)))))))))) (trace "X" ((\tv -> (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((trace "X" ((rawHaskTypeToWeakType0 (trace "X" (KindStar)) (trace "X" ((trace "X" ((rht' (trace "X" (tv)))))))))))) (trace "X" ((\t' -> (trace "X" ((trace "X" (returnM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((WForAllTy (trace "X" (tv)) (trace "X" (t'))))))))))))))))))))))); + TCode t1 t2 -> + (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((trace "X" ((rawHaskTypeToWeakType0 (trace "X" (KindStar)) (trace "X" (t1))))))) (trace "X" ((\t1' -> + (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((trace "X" ((rawHaskTypeToWeakType0 (trace "X" (KindStar)) (trace "X" (t2))))))) (trace "X" ((\t2' -> + (trace "X" (case (trace "X" (t1')) of { + WTyVarTy ec -> (trace "X" ((trace "X" (returnM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((WCodeTy (trace "X" (ec)) (trace "X" (t2'))))))))); + _ -> (trace "X" ((\x -> (trace "X" (Error (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('m')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('b')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('e')) (trace "X" ([])))))))))))))))))))))))))))))))))))))})))))))))))))))); + TyFunApp tfc tls -> (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((trace "X" ((rawHaskTypeListToWeakType (trace "X" ((trace "X" ((fst (trace "X" ((trace "X" ((tyFunKind (trace "X" (tfc)))))))))))) (trace "X" (tls))))))) (trace "X" ((\tls' -> (trace "X" ((trace "X" (returnM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((WTyFunApp (trace "X" (tfc)) (trace "X" (tls'))))))))))))))))})); + rawHaskTypeListToWeakType __U03ba_ rht = + (trace "X" (case (trace "X" (rht)) of { + TyFunApp_nil -> (trace "X" ((trace "X" (returnM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" (([]))))))); + TyFunApp_cons __U03ba_0 kl rht' rhtl' -> (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((trace "X" ((rawHaskTypeToWeakType0 (trace "X" (__U03ba_0)) (trace "X" (rht'))))))) (trace "X" ((\t -> (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((trace "X" ((rawHaskTypeListToWeakType (trace "X" (kl)) (trace "X" (rhtl'))))))) (trace "X" ((\tl -> (trace "X" ((trace "X" (returnM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" (((:) (trace "X" (t)) (trace "X" (tl)))))))))))))))))))))))}))} + in rawHaskTypeToWeakType0)) + +typeToWeakType :: (Unique.Unique -> Kind -> WeakTypeVar0) -> TypeEnv -> Kind -> HaskType -> (InstantiatedTypeEnv WeakTypeVar0) -> UniqM WeakType +typeToWeakType mkWeakTypeVar_ __U0393_0 __U03ba_ __U03c4_ __U03c6_0 = + (trace "X" ((trace "X" (rawHaskTypeToWeakType (trace "X" (mkWeakTypeVar_)) (trace "X" (__U03ba_)) (trace "X" ((trace "X" ((unsafeCoerce (trace "X" (__U03c4_)) (trace "X" (__)) (trace "X" (__U03c6_0))))))))))) + +updateITE :: TypeEnv -> Kind -> a1 -> (InstantiatedTypeEnv a1) -> InstantiatedTypeEnv a1 +updateITE __U0393_0 __U03ba_ tv ite = + (trace "X" (ICons (trace "X" (__U03ba_)) (trace "X" (__U0393_0)) (trace "X" (tv)) (trace "X" (ite)))) + +coercionToWeakCoercion :: (Unique.Unique -> Kind -> WeakTypeVar0) -> TypeEnv -> CoercionEnv -> Kind -> HaskType -> HaskType -> (InstantiatedTypeEnv WeakTypeVar0) -> UniqM WeakCoercion +coercionToWeakCoercion mkWeakTypeVar_ __U0393_0 __U0394_0 __U03ba_ t1 t2 ite = + (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((unsafeCoerce (trace "X" ((trace "X" ((typeToWeakType (trace "X" (mkWeakTypeVar_)) (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (t1)) (trace "X" (ite)))))))))) (trace "X" ((\t1' -> (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((unsafeCoerce (trace "X" ((trace "X" ((typeToWeakType (trace "X" (mkWeakTypeVar_)) (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (t2)) (trace "X" (ite)))))))))) (trace "X" ((\t2' -> (trace "X" ((trace "X" (returnM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((WCoUnsafe (trace "X" (t1')) (trace "X" (t2'))))))))))))))))))))))) + +seqM :: (([]) (UniqM a1)) -> UniqM (([]) a1) +seqM l = + (trace "X" (case (trace "X" (l)) of { + ([]) -> (trace "X" ((trace "X" (returnM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" (([]))))))); + (:) x y -> (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((unsafeCoerce (trace "X" (x))))) (trace "X" ((\x' -> (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((trace "X" ((seqM (trace "X" (y))))))) (trace "X" ((\y' -> (trace "X" ((trace "X" (returnM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" (((:) (trace "X" (x')) (trace "X" (y')))))))))))))))))))))))})) + +update___U03c7_ :: (EqDecidable a1) -> (a1 -> OrError WeakExprVar0) -> a1 -> WeakExprVar0 -> a1 -> OrError WeakExprVar0 +update___U03c7_ eqVV __U03c7_ vv ev' vv' = + (trace "X" (case (trace "X" ((trace "X" (eqd_dec (trace "X" (eqVV)) (trace "X" (vv)) (trace "X" (vv')))))) of { + Prelude.True -> (trace "X" (OK (trace "X" (ev')))); + Prelude.False -> (trace "X" ((trace "X" (__U03c7_ (trace "X" (vv'))))))})) + +update___U03c7_' :: (EqDecidable a1) -> (a1 -> OrError WeakExprVar0) -> (([]) ((,) a1 WeakExprVar0)) -> a1 -> OrError WeakExprVar0 +update___U03c7_' eqVV __U03c7_ varsexprs = + (trace "X" (case (trace "X" (varsexprs)) of { + ([]) -> (trace "X" (__U03c7_)); + (:) p rest -> (trace "X" (case (trace "X" (p)) of { + (,) vv wev -> (trace "X" ((trace "X" (update___U03c7_ (trace "X" (eqVV)) (trace "X" ((trace "X" ((update___U03c7_' (trace "X" (eqVV)) (trace "X" (__U03c7_)) (trace "X" (rest))))))) (trace "X" (vv)) (trace "X" (wev))))))}))})) + +exprToWeakExpr :: WeakExprVar0 -> WeakExprVar0 -> (Unique.Unique -> Kind -> WeakTypeVar0) -> (Unique.Unique -> Kind -> WeakType -> WeakType -> WeakCoerVar0) -> (Unique.Unique -> WeakType -> WeakExprVar0) -> (EqDecidable a1) -> TypeEnv -> CoercionEnv -> (a1 -> LeveledHaskType) -> LeveledHaskType -> (a1 -> OrError WeakExprVar0) -> (Expr a1) -> (InstantiatedTypeEnv WeakTypeVar0) -> UniqM WeakExpr +exprToWeakExpr hetmet_brak hetmet_esc mkWeakTypeVar_ mkWeakCoerVar_ mkWeakExprVar_ eqVV = + (trace "X" (let { + exprToWeakExpr0 __U0393_0 __U0394_0 __U03be_0 __U03c4_ __U03c7_ exp = + (trace "X" (case (trace "X" (exp)) of { + EGlobal __U0393_' __U0394_1 __U03be_' t wev -> (trace "X" ((\ite -> (trace "X" ((trace "X" (returnM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((WEVar (trace "X" (wev)))))))))))); + EVar __U0393_' __U0394_1 __U03be_' ev -> (trace "X" ((\ite -> + (trace "X" (case (trace "X" ((trace "X" (__U03c7_ (trace "X" (ev)))))) of { + Error s -> (trace "X" ((\x -> (trace "X" (Error (trace "X" (s))))))); + OK v -> (trace "X" ((trace "X" (returnM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((WEVar (trace "X" (v)))))))))}))))); + ELit __U0393_1 __U0394_1 __U03be_1 lit l -> (trace "X" ((\ite -> (trace "X" ((trace "X" (returnM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((WELit (trace "X" (lit)))))))))))); + EApp __U0393_' __U0394_1 __U03be_1 t1 t2 l e1 e2 -> (trace "X" ((\ite -> (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((trace "X" ((exprToWeakExpr0 (trace "X" (__U0393_')) (trace "X" (__U0394_1)) (trace "X" (__U03be_1)) (trace "X" ((MkLeveledHaskType (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" ((t2 (trace "X" (__)) (trace "X" (env)))))))))) (trace "X" ((trace "X" ((t1 (trace "X" (__)) (trace "X" (env)))))))))))) (trace "X" (l))))) (trace "X" (__U03c7_)) (trace "X" (e1)) (trace "X" (ite))))))) (trace "X" ((\e1' -> (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((trace "X" ((exprToWeakExpr0 (trace "X" (__U0393_')) (trace "X" (__U0394_1)) (trace "X" (__U03be_1)) (trace "X" ((MkLeveledHaskType (trace "X" (t2)) (trace "X" (l))))) (trace "X" (__U03c7_)) (trace "X" (e2)) (trace "X" (ite))))))) (trace "X" ((\e2' -> (trace "X" ((trace "X" (returnM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((WEApp (trace "X" (e1')) (trace "X" (e2')))))))))))))))))))))))))); + ELam __U0393_' __U0394_1 __U03be_1 tv t2 l cv e -> (trace "X" ((\ite -> (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((unsafeCoerce (trace "X" ((trace "X" ((typeToWeakType (trace "X" (mkWeakTypeVar_)) (trace "X" (__U0393_')) (trace "X" (KindStar)) (trace "X" (tv)) (trace "X" (ite)))))))))) (trace "X" ((\tv' -> (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((unsafeCoerce (trace "X" ((trace "X" ((mkWeakExprVar (trace "X" (mkWeakExprVar_)) (trace "X" (tv')))))))))) (trace "X" ((\ev' -> (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((trace "X" ((exprToWeakExpr0 (trace "X" (__U0393_')) (trace "X" (__U0394_1)) (trace "X" ((trace "X" ((update___U03be_ (trace "X" (eqVV)) (trace "X" (__U0393_')) (trace "X" (__U03be_1)) (trace "X" (l)) (trace "X" (((:) (trace "X" (((,) (trace "X" (cv)) (trace "X" (tv))))) (trace "X" (([]))))))))))) (trace "X" ((MkLeveledHaskType (trace "X" (t2)) (trace "X" (l))))) (trace "X" ((trace "X" ((update___U03c7_ (trace "X" (eqVV)) (trace "X" (__U03c7_)) (trace "X" (cv)) (trace "X" (ev'))))))) (trace "X" (e)) (trace "X" (ite))))))) (trace "X" ((\e' -> (trace "X" ((trace "X" (returnM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((WELam (trace "X" (ev')) (trace "X" (e'))))))))))))))))))))))))))))))))); + ELet __U0393_' __U0394_1 __U03be_1 t t0 l ev e1 e2 -> (trace "X" ((\ite -> (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((unsafeCoerce (trace "X" ((trace "X" ((typeToWeakType (trace "X" (mkWeakTypeVar_)) (trace "X" (__U0393_')) (trace "X" (KindStar)) (trace "X" (t)) (trace "X" (ite)))))))))) (trace "X" ((\tv' -> (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((trace "X" ((exprToWeakExpr0 (trace "X" (__U0393_')) (trace "X" (__U0394_1)) (trace "X" (__U03be_1)) (trace "X" ((MkLeveledHaskType (trace "X" (t)) (trace "X" (l))))) (trace "X" (__U03c7_)) (trace "X" (e1)) (trace "X" (ite))))))) (trace "X" ((\e1' -> (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((unsafeCoerce (trace "X" ((trace "X" ((mkWeakExprVar (trace "X" (mkWeakExprVar_)) (trace "X" (tv')))))))))) (trace "X" ((\ev' -> (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((trace "X" ((exprToWeakExpr0 (trace "X" (__U0393_')) (trace "X" (__U0394_1)) (trace "X" ((trace "X" ((update___U03be_ (trace "X" (eqVV)) (trace "X" (__U0393_')) (trace "X" (__U03be_1)) (trace "X" (l)) (trace "X" (((:) (trace "X" (((,) (trace "X" (ev)) (trace "X" (t))))) (trace "X" (([]))))))))))) (trace "X" ((MkLeveledHaskType (trace "X" (t0)) (trace "X" (l))))) (trace "X" ((trace "X" ((update___U03c7_ (trace "X" (eqVV)) (trace "X" (__U03c7_)) (trace "X" (ev)) (trace "X" (ev'))))))) (trace "X" (e2)) (trace "X" (ite))))))) (trace "X" ((\e2' -> (trace "X" ((trace "X" (returnM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((WELet (trace "X" (ev')) (trace "X" (e1')) (trace "X" (e2')))))))))))))))))))))))))))))))))))))))); + EEsc __U0393_' __U0394_1 __U03be_1 ec t l e -> (trace "X" ((\ite -> (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((unsafeCoerce (trace "X" ((trace "X" ((typeToWeakType (trace "X" (mkWeakTypeVar_)) (trace "X" (__U0393_')) (trace "X" (KindStar)) (trace "X" (t)) (trace "X" (ite)))))))))) (trace "X" ((\t' -> (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((trace "X" ((exprToWeakExpr0 (trace "X" (__U0393_')) (trace "X" (__U0394_1)) (trace "X" (__U03be_1)) (trace "X" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (haskBrak (trace "X" (__U0393_')) (trace "X" (ec)) (trace "X" (t))))))))) (trace "X" (l))))) (trace "X" (__U03c7_)) (trace "X" (e)) (trace "X" (ite))))))) (trace "X" ((\e' -> (trace "X" ((trace "X" (returnM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((WEEsc (trace "X" (hetmet_esc)) (trace "X" ((trace "X" ((unsafeCoerce (trace "X" (ec)) (trace "X" (__)) (trace "X" (ite))))))) (trace "X" (e')) (trace "X" (t')))))))))))))))))))))))))); + EBrak __U0393_' __U0394_1 __U03be_1 ec t l e -> (trace "X" ((\ite -> (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((unsafeCoerce (trace "X" ((trace "X" ((typeToWeakType (trace "X" (mkWeakTypeVar_)) (trace "X" (__U0393_')) (trace "X" (KindStar)) (trace "X" (t)) (trace "X" (ite)))))))))) (trace "X" ((\t' -> (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((trace "X" ((exprToWeakExpr0 (trace "X" (__U0393_')) (trace "X" (__U0394_1)) (trace "X" (__U03be_1)) (trace "X" ((MkLeveledHaskType (trace "X" (t)) (trace "X" (((:) (trace "X" (ec)) (trace "X" (l)))))))) (trace "X" (__U03c7_)) (trace "X" (e)) (trace "X" (ite))))))) (trace "X" ((\e' -> (trace "X" ((trace "X" (returnM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((WEBrak (trace "X" (hetmet_brak)) (trace "X" ((trace "X" ((unsafeCoerce (trace "X" (ec)) (trace "X" (__)) (trace "X" (ite))))))) (trace "X" (e')) (trace "X" (t')))))))))))))))))))))))))); + ECast __U0393_1 __U0394_1 __U03be_1 t1 t2 l e -> (trace "X" ((\ite -> (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((trace "X" ((exprToWeakExpr0 (trace "X" (__U0393_1)) (trace "X" (__U0394_1)) (trace "X" (__U03be_1)) (trace "X" ((MkLeveledHaskType (trace "X" (t1)) (trace "X" (l))))) (trace "X" (__U03c7_)) (trace "X" (e)) (trace "X" (ite))))))) (trace "X" ((\e' -> (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((unsafeCoerce (trace "X" ((trace "X" ((coercionToWeakCoercion (trace "X" (mkWeakTypeVar_)) (trace "X" (__U0393_1)) (trace "X" (__U0394_1)) (trace "X" (KindStar)) (trace "X" (t1)) (trace "X" (t2)) (trace "X" (ite)))))))))) (trace "X" ((\c' -> (trace "X" ((trace "X" (returnM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((WECast (trace "X" (e')) (trace "X" (c')))))))))))))))))))))))))); + ENote __U0393_1 __U0394_1 __U03be_1 t n e -> (trace "X" ((\ite -> (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((trace "X" ((exprToWeakExpr0 (trace "X" (__U0393_1)) (trace "X" (__U0394_1)) (trace "X" (__U03be_1)) (trace "X" (t)) (trace "X" (__U03c7_)) (trace "X" (e)) (trace "X" (ite))))))) (trace "X" ((\e' -> (trace "X" ((trace "X" (returnM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((WENote (trace "X" (n)) (trace "X" (e'))))))))))))))))))); + ETyApp __U0393_1 __U0394_1 __U03ba_ __U03c3_ __U03c4_0 __U03be_1 l e -> (trace "X" ((\ite -> (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((unsafeCoerce (trace "X" ((trace "X" ((typeToWeakType (trace "X" (mkWeakTypeVar_)) (trace "X" (__U0393_1)) (trace "X" (__U03ba_)) (trace "X" (__U03c4_0)) (trace "X" (ite)))))))))) (trace "X" ((\t' -> (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((trace "X" ((exprToWeakExpr0 (trace "X" (__U0393_1)) (trace "X" (__U0394_1)) (trace "X" (__U03be_1)) (trace "X" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (haskTAll (trace "X" (__U0393_1)) (trace "X" (__U03ba_)) (trace "X" (__U03c3_))))))))) (trace "X" (l))))) (trace "X" (__U03c7_)) (trace "X" (e)) (trace "X" (ite))))))) (trace "X" ((\e' -> (trace "X" ((trace "X" (returnM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((WETyApp (trace "X" (e')) (trace "X" (t')))))))))))))))))))))))))); + ECoLam __U0393_1 __U0394_1 __U03ba_ __U03c3_ __U03c3___U2081_ __U03c3___U2082_ __U03be_1 l e -> (trace "X" ((\ite -> (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((unsafeCoerce (trace "X" ((trace "X" ((typeToWeakType (trace "X" (mkWeakTypeVar_)) (trace "X" (__U0393_1)) (trace "X" (__U03ba_)) (trace "X" (__U03c3___U2081_)) (trace "X" (ite)))))))))) (trace "X" ((\t1' -> (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((unsafeCoerce (trace "X" ((trace "X" ((typeToWeakType (trace "X" (mkWeakTypeVar_)) (trace "X" (__U0393_1)) (trace "X" (__U03ba_)) (trace "X" (__U03c3___U2082_)) (trace "X" (ite)))))))))) (trace "X" ((\t2' -> (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((unsafeCoerce (trace "X" ((trace "X" ((mkWeakCoerVar (trace "X" (mkWeakCoerVar_)) (trace "X" (__U03ba_)) (trace "X" (t1')) (trace "X" (t2')))))))))) (trace "X" ((\cv -> (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((trace "X" ((exprToWeakExpr0 (trace "X" (__U0393_1)) (trace "X" (((:) (trace "X" ((\_ -> (trace "X" ((trace "X" (mkHaskCoercionKind (trace "X" (__U0393_1)) (trace "X" (__U03ba_)) (trace "X" (__U03c3___U2081_)) (trace "X" (__U03c3___U2082_))))))))) (trace "X" (__U0394_1))))) (trace "X" (__U03be_1)) (trace "X" ((MkLeveledHaskType (trace "X" (__U03c3_)) (trace "X" (l))))) (trace "X" (__U03c7_)) (trace "X" (e)) (trace "X" (ite))))))) (trace "X" ((\e' -> (trace "X" ((trace "X" (returnM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((WECoLam (trace "X" (cv)) (trace "X" (e')))))))))))))))))))))))))))))))))))))))); + ECoApp __U0393_1 __U0394_1 __U03ba_ __U03c3___U2081_ __U03c3___U2082_ __U03c3_ __U03be_1 l e -> (trace "X" ((\ite -> (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((trace "X" ((exprToWeakExpr0 (trace "X" (__U0393_1)) (trace "X" (__U0394_1)) (trace "X" (__U03be_1)) (trace "X" ((MkLeveledHaskType (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" (__U03c7_)) (trace "X" (e)) (trace "X" (ite))))))) (trace "X" ((\e' -> (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((unsafeCoerce (trace "X" ((trace "X" ((coercionToWeakCoercion (trace "X" (mkWeakTypeVar_)) (trace "X" (__U0393_1)) (trace "X" (__U0394_1)) (trace "X" (__U03ba_)) (trace "X" (__U03c3___U2081_)) (trace "X" (__U03c3___U2082_)) (trace "X" (ite)))))))))) (trace "X" ((\c' -> (trace "X" ((trace "X" (returnM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((WECoApp (trace "X" (e')) (trace "X" (c')))))))))))))))))))))))))); + ETyLam __U0393_1 __U0394_1 __U03be_1 k __U03c3_ l e -> (trace "X" ((\ite -> (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((unsafeCoerce (trace "X" ((trace "X" ((mkWeakTypeVar (trace "X" (mkWeakTypeVar_)) (trace "X" (k)))))))))) (trace "X" ((\tv -> (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((trace "X" ((exprToWeakExpr0 (trace "X" (((:) (trace "X" (k)) (trace "X" (__U0393_1))))) (trace "X" ((trace "X" ((weakCE (trace "X" (__U0393_1)) (trace "X" (k)) (trace "X" (__U0394_1))))))) (trace "X" ((\x -> (trace "X" ((trace "X" (weakLT (trace "X" (__U0393_1)) (trace "X" (k)) (trace "X" (KindStar)) (trace "X" ((trace "X" ((__U03be_1 (trace "X" (x)))))))))))))) (trace "X" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (haskTApp (trace "X" (((:) (trace "X" (k)) (trace "X" (__U0393_1))))) (trace "X" (k)) (trace "X" ((\_ -> (trace "X" ((trace "X" (weakF (trace "X" (__U0393_1)) (trace "X" (k)) (trace "X" (KindStar)) (trace "X" (__U03c3_))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (freshHaskTyVar (trace "X" (__U0393_1)) (trace "X" (k)))))))))))))))) (trace "X" ((trace "X" ((weakL (trace "X" (__U0393_1)) (trace "X" (k)) (trace "X" (l)))))))))) (trace "X" (__U03c7_)) (trace "X" (e)) (trace "X" ((trace "X" ((updateITE (trace "X" (__U0393_1)) (trace "X" (k)) (trace "X" (tv)) (trace "X" (ite)))))))))))) (trace "X" ((\e' -> (trace "X" ((trace "X" (returnM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((WETyLam (trace "X" (tv)) (trace "X" (e')))))))))))))))))))))))))); + ECase __U0393_1 __U0394_1 __U03be_1 l tc tbranches atypes escrut alts -> (trace "X" ((\ite -> + (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((unsafeCoerce (trace "X" ((trace "X" ((typeToWeakType (trace "X" (mkWeakTypeVar_)) (trace "X" (__U0393_1)) (trace "X" (KindStar)) (trace "X" ((\_ -> (trace "X" ((trace "X" (caseType (trace "X" (__U0393_1)) (trace "X" (tc)) (trace "X" (atypes))))))))) (trace "X" (ite)))))))))) (trace "X" ((\tscrut' -> + (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((unsafeCoerce (trace "X" ((trace "X" ((mkWeakExprVar (trace "X" (mkWeakExprVar_)) (trace "X" (tscrut')))))))))) (trace "X" ((\vscrut' -> + (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((unsafeCoerce (trace "X" ((trace "X" ((typeToWeakType (trace "X" (mkWeakTypeVar_)) (trace "X" (__U0393_1)) (trace "X" (KindStar)) (trace "X" (tbranches)) (trace "X" (ite)))))))))) (trace "X" ((\tbranches' -> + (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((trace "X" ((exprToWeakExpr0 (trace "X" (__U0393_1)) (trace "X" (__U0394_1)) (trace "X" (__U03be_1)) (trace "X" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (caseType (trace "X" (__U0393_1)) (trace "X" (tc)) (trace "X" (atypes))))))))) (trace "X" (l))))) (trace "X" (__U03c7_)) (trace "X" (escrut)) (trace "X" (ite))))))) (trace "X" ((\escrut' -> + (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) + (trace "X" ((trace "X" ((let { + caseBranches tree = + (trace "X" (case (trace "X" (tree)) of { + T_Leaf o -> + (trace "X" (case (trace "X" (o)) of { + Prelude.Just x -> + (trace "X" (case (trace "X" (x)) of { + ExistT sac scb_e -> (trace "X" (case (trace "X" (scb_e)) of { + ExistT scb e -> (trace "X" (let {varstypes = (trace "X" ((trace "X" (vec2list (trace "X" ((trace "X" ((sac_numExprVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((scbwv_varstypes (trace "X" (eqVV)) (trace "X" (tc)) (trace "X" (__U0393_1)) (trace "X" (atypes)) (trace "X" (sac)) (trace "X" (scb)))))))))))} in (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((unsafeCoerce (trace "X" ((trace "X" ((mfresh (trace "X" (mkWeakTypeVar_)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (__U0393_1)) (trace "X" (ite)))))))))) (trace "X" ((\evars_ite -> (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((unsafeCoerce (trace "X" ((trace "X" ((seqM (trace "X" ((trace "X" ((map (trace "X" ((\vt -> (trace "X" ((trace "X" (bindM (trace "X" (uniqMonad)) (trace "X" ((unsafeCoerce (trace "X" ((trace "X" ((typeToWeakType (trace "X" (mkWeakTypeVar_)) (trace "X" ((trace "X" ((sac___U0393_ (trace "X" (tc)) (trace "X" (sac)) (trace "X" (__U0393_1))))))) (trace "X" (KindStar)) (trace "X" ((trace "X" ((snd (trace "X" (vt))))))) (trace "X" ((trace "X" ((snd (trace "X" (evars_ite))))))))))))))) (trace "X" ((\tleaf -> (trace "X" ((trace "X" (bindM (trace "X" (uniqMonad)) (trace "X" ((unsafeCoerce (trace "X" ((trace "X" ((mkWeakExprVar (trace "X" (mkWeakExprVar_)) (trace "X" (tleaf)))))))))) (trace "X" ((\v' -> (trace "X" ((trace "X" (returnM (trace "X" (uniqMonad)) (trace "X" (((,) (trace "X" ((trace "X" ((fst (trace "X" (vt))))))) (trace "X" (v')))))))))))))))))))))))))) (trace "X" (varstypes))))))))))))))) (trace "X" ((\exprvars -> (trace "X" (let {__U03c7_' = (trace "X" ((trace "X" (update___U03c7_' (trace "X" (eqVV)) (trace "X" (__U03c7_)) (trace "X" (exprvars))))))} in (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((trace "X" ((exprToWeakExpr0 (trace "X" ((trace "X" ((sac___U0393_ (trace "X" (tc)) (trace "X" (sac)) (trace "X" (__U0393_1))))))) (trace "X" ((trace "X" ((sac___U0394_ (trace "X" (tc)) (trace "X" (sac)) (trace "X" (__U0393_1)) (trace "X" (atypes)) (trace "X" ((trace "X" ((weakCK'' (trace "X" (__U0393_1)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (__U0394_1)))))))))))) (trace "X" ((trace "X" ((scbwv___U03be_ (trace "X" (eqVV)) (trace "X" (tc)) (trace "X" (__U0393_1)) (trace "X" (atypes)) (trace "X" (sac)) (trace "X" (scb)) (trace "X" (__U03be_1)) (trace "X" (l))))))) (trace "X" ((trace "X" ((weakLT' (trace "X" (__U0393_1)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (KindStar)) (trace "X" ((MkLeveledHaskType (trace "X" (tbranches)) (trace "X" (l)))))))))) (trace "X" (__U03c7_')) (trace "X" (e)) (trace "X" ((trace "X" ((snd (trace "X" (evars_ite)))))))))))) (trace "X" ((\e'' -> (trace "X" ((trace "X" (returnM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (((,) (trace "X" (((,) (trace "X" (((,) (trace "X" (((,) (trace "X" ((trace "X" ((sac_altcon (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((length (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))))))))))))) (trace "X" ((trace "X" ((fst (trace "X" (evars_ite))))))))))))))) (trace "X" (([])))))) (trace "X" ((trace "X" ((map (trace "X" (snd)) (trace "X" (exprvars)))))))))) (trace "X" (e''))))))))))))))))))))))))))))))))))))))))}))})); + Prelude.Nothing -> (trace "X" ((trace "X" (returnM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing)))))))))})); + T_Branch b1 b2 -> (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((trace "X" ((caseBranches (trace "X" (b1))))))) (trace "X" ((\b1' -> (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((trace "X" ((caseBranches (trace "X" (b2))))))) (trace "X" ((\b2' -> (trace "X" ((trace "X" (returnM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((T_Branch (trace "X" (b1')) (trace "X" (b2')))))))))))))))))))))))}))} + in caseBranches (trace "X" (alts))))))) (trace "X" ((\branches' -> (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((unsafeCoerce (trace "X" ((trace "X" ((seqM (trace "X" ((trace "X" ((ilist_to_list (trace "X" ((trace "X" ((tyConKind (trace "X" (tc))))))) (trace "X" ((trace "X" ((ilmap (trace "X" ((trace "X" ((tyConKind (trace "X" (tc))))))) (trace "X" ((\i t -> (trace "X" ((trace "X" (typeToWeakType (trace "X" (mkWeakTypeVar_)) (trace "X" (__U0393_1)) (trace "X" (i)) (trace "X" (t)) (trace "X" (ite))))))))) (trace "X" (atypes)))))))))))))))))))) (trace "X" ((\tys -> (trace "X" ((trace "X" (returnM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((WECase (trace "X" (vscrut')) (trace "X" (escrut')) (trace "X" (tbranches')) (trace "X" (tc)) (trace "X" (tys)) (trace "X" (branches')))))))))))))))))))))))))))))))))))))))))))))))))))))); + ELetRec __U0393_1 __U0394_1 __U03be_1 l __U03c4_0 vars x x0 -> (trace "X" (let {__U03be_' = (trace "X" ((trace "X" (update___U03be_ (trace "X" (eqVV)) (trace "X" (__U0393_1)) (trace "X" (__U03be_1)) (trace "X" (l)) (trace "X" ((trace "X" ((leaves (trace "X" (vars)))))))))))} in (trace "X" ((\ite -> (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((unsafeCoerce (trace "X" ((trace "X" ((seqM (trace "X" ((trace "X" ((map (trace "X" ((\vt -> (trace "X" ((trace "X" (bindM (trace "X" (uniqMonad)) (trace "X" ((unsafeCoerce (trace "X" ((trace "X" ((typeToWeakType (trace "X" (mkWeakTypeVar_)) (trace "X" (__U0393_1)) (trace "X" (KindStar)) (trace "X" ((trace "X" ((snd (trace "X" (vt))))))) (trace "X" (ite)))))))))) (trace "X" ((\tleaf -> (trace "X" ((trace "X" (bindM (trace "X" (uniqMonad)) (trace "X" ((unsafeCoerce (trace "X" ((trace "X" ((mkWeakExprVar (trace "X" (mkWeakExprVar_)) (trace "X" (tleaf)))))))))) (trace "X" ((\v' -> (trace "X" ((trace "X" (returnM (trace "X" (uniqMonad)) (trace "X" (((,) (trace "X" ((trace "X" ((fst (trace "X" (vt))))))) (trace "X" (v')))))))))))))))))))))))))) (trace "X" ((trace "X" ((leaves (trace "X" (vars)))))))))))))))))))) (trace "X" ((\vars' -> (trace "X" (let {__U03c7_' = (trace "X" ((trace "X" (update___U03c7_' (trace "X" (eqVV)) (trace "X" (__U03c7_)) (trace "X" (vars'))))))} in (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((trace "X" ((exprLetRec2WeakExprLetRec (trace "X" (__U0393_1)) (trace "X" (__U0394_1)) (trace "X" (__U03be_')) (trace "X" (l)) (trace "X" (__U03c7_')) (trace "X" (vars)) (trace "X" (x)) (trace "X" (ite))))))) (trace "X" ((\elrb' -> (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((trace "X" ((exprToWeakExpr0 (trace "X" (__U0393_1)) (trace "X" (__U0394_1)) (trace "X" (__U03be_')) (trace "X" ((MkLeveledHaskType (trace "X" (__U03c4_0)) (trace "X" (l))))) (trace "X" (__U03c7_')) (trace "X" (x0)) (trace "X" (ite))))))) (trace "X" ((\e' -> (trace "X" ((trace "X" (returnM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((WELetRec (trace "X" (elrb')) (trace "X" (e')))))))))))))))))))))))))))))))))))))})); + exprLetRec2WeakExprLetRec __U0393_0 __U0394_0 __U03be_0 __U03c4_ __U03c7_ vars elrb ite = + (trace "X" (case (trace "X" (elrb)) of { + ELR_nil __U0393_1 __U0394_1 __U03be_1 l -> (trace "X" ((trace "X" (returnM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing))))))))); + ELR_leaf __U0393_1 __U0394_1 __U03be_' cv v t e -> + (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((unsafeCoerce (trace "X" ((trace "X" ((typeToWeakType (trace "X" (mkWeakTypeVar_)) (trace "X" (__U0393_1)) (trace "X" (KindStar)) (trace "X" (t)) (trace "X" (ite)))))))))) (trace "X" ((\t' -> + (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((trace "X" ((exprToWeakExpr0 (trace "X" (__U0393_1)) (trace "X" (__U0394_1)) (trace "X" (__U03be_')) (trace "X" ((MkLeveledHaskType (trace "X" (t)) (trace "X" (cv))))) (trace "X" (__U03c7_)) (trace "X" (e)) (trace "X" (ite))))))) (trace "X" ((\e' -> + (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) + (trace "X" ((case (trace "X" ((trace "X" (__U03c7_ (trace "X" (v)))))) of { + Error s -> (trace "X" ((\x -> (trace "X" (Error (trace "X" (s))))))); + OK y -> (trace "X" ((trace "X" (returnM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" (y))))))}))) (trace "X" ((\v' -> (trace "X" ((trace "X" (returnM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (((,) (trace "X" (v')) (trace "X" (e')))))))))))))))))))))))))))))))))))); + ELR_branch __U0393_1 __U0394_1 __U03be_1 l t1 t2 b1 b2 -> (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((trace "X" ((exprLetRec2WeakExprLetRec (trace "X" (__U0393_1)) (trace "X" (__U0394_1)) (trace "X" (__U03be_1)) (trace "X" (l)) (trace "X" (__U03c7_)) (trace "X" (t1)) (trace "X" (b1)) (trace "X" (ite))))))) (trace "X" ((\b1' -> (trace "X" ((trace "X" (bindM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((trace "X" ((exprLetRec2WeakExprLetRec (trace "X" (__U0393_1)) (trace "X" (__U0394_1)) (trace "X" (__U03be_1)) (trace "X" (l)) (trace "X" (__U03c7_)) (trace "X" (t2)) (trace "X" (b2)) (trace "X" (ite))))))) (trace "X" ((\b2' -> (trace "X" ((trace "X" (returnM (trace "X" ((unsafeCoerce (trace "X" (uniqMonad))))) (trace "X" ((T_Branch (trace "X" (b1')) (trace "X" (b2')))))))))))))))))))))))}))} + in exprToWeakExpr0)) + +strongExprToWeakExpr :: WeakExprVar0 -> WeakExprVar0 -> (Unique.Unique -> Kind -> WeakTypeVar0) -> (Unique.Unique -> Kind -> WeakType -> WeakType -> WeakCoerVar0) -> (Unique.Unique -> WeakType -> WeakExprVar0) -> (EqDecidable a1) -> (ToString a1) -> UniqSupply.UniqSupply -> TypeEnv -> CoercionEnv -> (a1 -> LeveledHaskType) -> LeveledHaskType -> (Expr a1) -> (InstantiatedTypeEnv WeakTypeVar0) -> OrError WeakExpr +strongExprToWeakExpr hetmet_brak hetmet_esc mkWeakTypeVar_ mkWeakCoerVar_ mkWeakExprVar_ eqVV toStringVV us __U0393_0 __U0394_0 __U03be_0 __U03c4_ exp ite = + (trace "X" ((trace "X" (orErrorBind (trace "X" ((trace "X" ((exprToWeakExpr (trace "X" (hetmet_brak)) (trace "X" (hetmet_esc)) (trace "X" (mkWeakTypeVar_)) (trace "X" (mkWeakCoerVar_)) (trace "X" (mkWeakExprVar_)) (trace "X" (eqVV)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (__U03c4_)) (trace "X" ((\v -> (trace "X" (Error (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (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" ('v')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('b')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" (' ')) (trace "X" ([]))))))))))))))))))))))))))))))))))))))))))))))))))))) (trace "X" ((trace "X" ((toString (trace "X" (toStringVV)) (trace "X" (v))))))))))))))))) (trace "X" (exp)) (trace "X" (ite)) (trace "X" (us))))))) (trace "X" ((\x -> (trace "X" (OK (trace "X" ((trace "X" ((snd (trace "X" (x)))))))))))))))) + +fresh :: (FreshMonad a1) -> (([]) a1) -> FMT a1 (SigT a1 ()) +fresh freshM = + (trace "X" ((trace "X" (fMT_fresh (trace "X" (freshM)))))) + +type FreshM vV x = FMT vV x + +freshMon :: (FreshMonad a1) -> Monad (FMT a1 ()) +freshMon freshM = + (trace "X" ((trace "X" (fMT_Monad (trace "X" (freshM)))))) + +type Judg2exprType vV = () + +ileaf :: a1 -> (ITree a1 a2) -> a2 +ileaf t it = + (trace "X" (case (trace "X" (it)) of { + INone -> (trace "X" (false_rect)); + ILeaf i x0 -> (trace "X" ((trace "X" (eq_rect (trace "X" (t)) (trace "X" ((\x1 -> (trace "X" (x1))))) (trace "X" (i)) (trace "X" (x0)))))); + IBranch it1 it2 x0 x1 -> (trace "X" ((trace "X" (false_rect (trace "X" (x0)) (trace "X" (x1))))))})) + +fresh_lemma' :: (EqDecidable a1) -> (FreshMonad a1) -> TypeEnv -> (Tree (Prelude.Maybe HaskType)) -> (Tree (Prelude.Maybe a1)) -> (Tree (Prelude.Maybe LeveledHaskType)) -> (a1 -> LeveledHaskType) -> HaskLevel -> FreshM a1 (Tree (Prelude.Maybe ((,) a1 HaskType))) +fresh_lemma' eqdec_vv freshM __U0393_0 types vars __U03a3_ __U03be_0 lev = + (trace "X" ((trace "X" (tree_rect (trace "X" ((\a vars0 __U03a3_0 __U03be_1 lev0 _ -> + (trace "X" (case (trace "X" (a)) of { + Prelude.Just h -> (trace "X" ((trace "X" (bindM (trace "X" ((trace "X" ((freshMon (trace "X" (freshM))))))) (trace "X" ((trace "X" ((fresh (trace "X" (freshM)) (trace "X" ((trace "X" ((leaves (trace "X" (vars0)))))))))))) (trace "X" ((\vf -> (trace "X" ((trace "X" (returnM (trace "X" ((trace "X" ((freshMon (trace "X" (freshM))))))) (trace "X" ((case (trace "X" (vf)) of { + ExistT vf0 _ -> (trace "X" (T_Leaf (trace "X" ((Prelude.Just (trace "X" (((,) (trace "X" (vf0)) (trace "X" (h))))))))))})))))))))))))); + Prelude.Nothing -> (trace "X" ((trace "X" (returnM (trace "X" ((trace "X" ((freshMon (trace "X" (freshM))))))) (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing)))))))))}))))) (trace "X" ((\types1 iHtypes1 types2 iHtypes2 vars0 __U03a3_0 __U03be_1 lev0 _ -> (trace "X" ((trace "X" (bindM (trace "X" ((trace "X" ((freshMon (trace "X" (freshM))))))) (trace "X" ((trace "X" ((iHtypes2 (trace "X" (vars0)) (trace "X" (__U03a3_0)) (trace "X" (__U03be_1)) (trace "X" (lev0)) (trace "X" (__))))))) (trace "X" ((\x2 -> (trace "X" ((trace "X" (bindM (trace "X" ((trace "X" ((freshMon (trace "X" (freshM))))))) (trace "X" ((trace "X" ((iHtypes1 (trace "X" ((T_Branch (trace "X" (vars0)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (fst)) (trace "X" (x2)))))))))) (trace "X" ((T_Branch (trace "X" (__U03a3_0)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (lev0))))))) (trace "X" (types2)))))))))) (trace "X" ((trace "X" ((update___U03be_ (trace "X" (eqdec_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_1)) (trace "X" (lev0)) (trace "X" ((trace "X" ((leaves (trace "X" (x2)))))))))))) (trace "X" (lev0)) (trace "X" (__))))))) (trace "X" ((\x1 -> (trace "X" ((trace "X" (returnM (trace "X" ((trace "X" ((freshMon (trace "X" (freshM))))))) (trace "X" ((T_Branch (trace "X" (x1)) (trace "X" (x2)))))))))))))))))))))))))) (trace "X" (types)) (trace "X" (vars)) (trace "X" (__U03a3_)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" (__)))))) + +fresh_lemma :: (EqDecidable a1) -> (FreshMonad a1) -> TypeEnv -> (a1 -> LeveledHaskType) -> (Tree (Prelude.Maybe a1)) -> (Tree (Prelude.Maybe LeveledHaskType)) -> HaskType -> HaskLevel -> FreshM a1 a1 +fresh_lemma eqdec_vv freshM __U0393_0 __U03be_0 vars __U03a3_ __U03a3_' lev = + (trace "X" (let {q = (trace "X" ((trace "X" (fresh_lemma' (trace "X" (eqdec_vv)) (trace "X" (freshM)) (trace "X" (__U0393_0)) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (__U03a3_')))))))) (trace "X" (vars)) (trace "X" (__U03a3_)) (trace "X" (__U03be_0)) (trace "X" (lev))))))} in + (trace "X" ((trace "X" (bindM (trace "X" ((trace "X" ((freshMon (trace "X" (freshM))))))) (trace "X" (q)) (trace "X" ((\q' -> + (trace "X" ((trace "X" (returnM (trace "X" ((trace "X" ((freshMon (trace "X" (freshM))))))) + (trace "X" ((case (trace "X" (q')) of { + T_Leaf o -> + (trace "X" (case (trace "X" (o)) of { + Prelude.Just p -> + (trace "X" (case (trace "X" (p)) of { + (,) v h -> + (trace "X" (let {s = (trace "X" ((trace "X" (eqd_dec (trace "X" (eqdec_vv)) (trace "X" ((unsafeCoerce (trace "X" (v))))) (trace "X" (v))))))} in + (trace "X" (case (trace "X" (s)) of { + Prelude.True -> (trace "X" ((trace "X" (eq_rect_r (trace "X" (__U03a3_')) (trace "X" ((\_ _ -> (trace "X" ((trace "X" (eq_rect_r (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" (vars))))))) (trace "X" ((\_ -> (trace "X" (v))))) (trace "X" (__U03a3_)) (trace "X" (__))))))))) (trace "X" (h)) (trace "X" (__)) (trace "X" (__)))))); + Prelude.False -> (trace "X" (Prelude.error "absurd case"))}))))})); + Prelude.Nothing -> (trace "X" (false_rect))})); + T_Branch varstypes1 varstypes2 -> (trace "X" (false_rect))})))))))))))))))) + +type Ujudg2exprType vV = (Tree (Prelude.Maybe vV)) -> () -> FreshM vV (ITree LeveledHaskType (Expr vV)) + +urule2expr :: (EqDecidable a1) -> (FreshMonad a1) -> TypeEnv -> CoercionEnv -> (Tree (Prelude.Maybe LeveledHaskType)) -> (Tree (Prelude.Maybe LeveledHaskType)) -> (Tree (Prelude.Maybe LeveledHaskType)) -> (Arrange LeveledHaskType) -> (a1 -> LeveledHaskType) -> (Ujudg2exprType a1) -> (Tree (Prelude.Maybe a1)) -> FreshM a1 (ITree LeveledHaskType (Expr a1)) +urule2expr eqdec_vv freshM __U0393_0 __U0394_0 h j t r __U03be_0 x vars = + (trace "X" ((trace "X" (let { + urule2expr0 h0 j0 t0 r0 __U03be_1 x0 = + (trace "X" (case (trace "X" (r0)) of { + RCanL a -> (trace "X" ((\vars0 _ -> (trace "X" ((trace "X" (x0 (trace "X" ((T_Branch (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing))))) (trace "X" (vars0))))) (trace "X" (__))))))))); + RCanR a -> (trace "X" ((\vars0 _ -> (trace "X" ((trace "X" (x0 (trace "X" ((T_Branch (trace "X" (vars0)) (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing)))))))) (trace "X" (__))))))))); + RuCanL a -> (trace "X" ((\vars0 _ -> + (trace "X" (case (trace "X" (vars0)) of { + T_Leaf o -> (trace "X" (false_rect)); + T_Branch vars1 vars2 -> (trace "X" ((trace "X" (x0 (trace "X" (vars2)) (trace "X" (__))))))}))))); + RuCanR a -> (trace "X" ((\vars0 _ -> + (trace "X" (case (trace "X" (vars0)) of { + T_Leaf o -> (trace "X" (false_rect)); + T_Branch vars1 vars2 -> (trace "X" ((trace "X" (x0 (trace "X" (vars1)) (trace "X" (__))))))}))))); + RAssoc a b c -> (trace "X" ((\vars0 _ -> + (trace "X" (case (trace "X" (vars0)) of { + T_Leaf o -> (trace "X" (false_rect)); + T_Branch vars1 vars2 -> + (trace "X" (case (trace "X" (vars1)) of { + T_Leaf o -> (trace "X" (false_rect)); + T_Branch vars1_1 vars1_2 -> (trace "X" ((trace "X" (x0 (trace "X" ((T_Branch (trace "X" (vars1_1)) (trace "X" ((T_Branch (trace "X" (vars1_2)) (trace "X" (vars2)))))))) (trace "X" (__))))))}))}))))); + RCossa a b c -> (trace "X" ((\vars0 _ -> + (trace "X" (case (trace "X" (vars0)) of { + T_Leaf o -> (trace "X" (false_rect)); + T_Branch vars1 vars2 -> + (trace "X" (case (trace "X" (vars2)) of { + T_Leaf o -> (trace "X" (false_rect)); + T_Branch vars2_1 vars2_2 -> (trace "X" ((trace "X" (x0 (trace "X" ((T_Branch (trace "X" ((T_Branch (trace "X" (vars1)) (trace "X" (vars2_1))))) (trace "X" (vars2_2))))) (trace "X" (__))))))}))}))))); + RExch a b -> (trace "X" ((\vars0 _ -> + (trace "X" (case (trace "X" (vars0)) of { + T_Leaf o -> (trace "X" (false_rect)); + T_Branch vars1 vars2 -> (trace "X" ((trace "X" (x0 (trace "X" ((T_Branch (trace "X" (vars2)) (trace "X" (vars1))))) (trace "X" (__))))))}))))); + RWeak a -> (trace "X" ((\vars0 _ -> (trace "X" ((trace "X" (x0 (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing))))) (trace "X" (__))))))))); + RCont a -> (trace "X" ((\vars0 _ -> (trace "X" ((trace "X" (x0 (trace "X" ((T_Branch (trace "X" (vars0)) (trace "X" (vars0))))) (trace "X" (__))))))))); + RLeft h1 c ctx r1 -> + (trace "X" (let {e = (trace "X" ((trace "X" (urule2expr0 (trace "X" (h1)) (trace "X" (c)) (trace "X" (t0)) (trace "X" (r1))))))} in + (trace "X" ((\vars0 _ -> + (trace "X" (case (trace "X" (vars0)) of { + T_Leaf o -> (trace "X" (false_rect)); + T_Branch vars1 vars2 -> (trace "X" ((trace "X" (e (trace "X" (__U03be_1)) (trace "X" ((\vars3 _ -> (trace "X" ((trace "X" (x0 (trace "X" ((T_Branch (trace "X" (vars1)) (trace "X" (vars3))))) (trace "X" (__))))))))) (trace "X" (vars2)) (trace "X" (__))))))}))))))); + RRight h1 c ctx r1 -> + (trace "X" (let {e = (trace "X" ((trace "X" (urule2expr0 (trace "X" (h1)) (trace "X" (c)) (trace "X" (t0)) (trace "X" (r1))))))} in + (trace "X" ((\vars0 _ -> + (trace "X" (case (trace "X" (vars0)) of { + T_Leaf o -> (trace "X" (false_rect)); + T_Branch vars1 vars2 -> (trace "X" ((trace "X" (e (trace "X" (__U03be_1)) (trace "X" ((\vars3 _ -> (trace "X" ((trace "X" (x0 (trace "X" ((T_Branch (trace "X" (vars3)) (trace "X" (vars2))))) (trace "X" (__))))))))) (trace "X" (vars1)) (trace "X" (__))))))}))))))); + RComp a b c f g -> (trace "X" (let {e1 = (trace "X" ((trace "X" (urule2expr0 (trace "X" (a)) (trace "X" (b)) (trace "X" (t0)) (trace "X" (f))))))} in (trace "X" ((trace "X" (urule2expr0 (trace "X" (b)) (trace "X" (c)) (trace "X" (t0)) (trace "X" (g)) (trace "X" (__U03be_1)) (trace "X" ((trace "X" ((e1 (trace "X" (__U03be_1)) (trace "X" (x0)))))))))))))}))} + in urule2expr0 (trace "X" (h)) (trace "X" (j)) (trace "X" (t)) (trace "X" (r)) (trace "X" (__U03be_0)) (trace "X" (x)) (trace "X" (vars)) (trace "X" (__)))))) + +letrec_helper :: (EqDecidable a1) -> TypeEnv -> CoercionEnv -> HaskLevel -> (Tree (Prelude.Maybe ((,) a1 HaskType))) -> (a1 -> LeveledHaskType) -> (ITree LeveledHaskType (Expr a1)) -> ELetRecBindings a1 +letrec_helper eqdec_vv __U0393_0 __U0394_0 l varstypes __U03be_' x = + (trace "X" ((trace "X" (tree_rect (trace "X" ((\a x0 -> + (trace "X" (case (trace "X" (a)) of { + Prelude.Just p -> + (trace "X" (case (trace "X" (p)) of { + (,) v h -> + (trace "X" (let {x1 = (trace "X" ((trace "X" (ileaf (trace "X" ((trace "X" ((__U03be_' (trace "X" ((trace "X" ((fst (trace "X" (((,) (trace "X" (v)) (trace "X" (h))))))))))))))) (trace "X" (x0))))))} in + (trace "X" (ELR_leaf (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_')) (trace "X" (l)) (trace "X" (v)) (trace "X" (h)) + (trace "X" ((let {s = (trace "X" ((trace "X" (eqd_dec (trace "X" ((trace "X" ((haskTypeEqDecidable (trace "X" (__U0393_0)) (trace "X" (KindStar))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (unlev (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" ((trace "X" ((__U03be_' (trace "X" (v)))))))))))))) (trace "X" (h))))))} in + (trace "X" (case (trace "X" (s)) of { + Prelude.True -> + (trace "X" ((trace "X" (eq_rect (trace "X" ((\_ -> (trace "X" ((trace "X" (unlev (trace "X" (__U0393_0)) (trace "X" (KindStar)) (trace "X" ((trace "X" ((__U03be_' (trace "X" (v)))))))))))))) + (trace "X" ((let {l0 = (trace "X" ((trace "X" (__U03be_' (trace "X" (v))))))} in + (trace "X" (case (trace "X" (l0)) of { + MkLeveledHaskType h0 h1 -> + (trace "X" (let {s0 = (trace "X" ((trace "X" (eqd_dec (trace "X" ((trace "X" ((haskLevelEqDecidable (trace "X" (__U0393_0))))))) (trace "X" (h1)) (trace "X" (l))))))} in + (trace "X" (case (trace "X" (s0)) of { + Prelude.True -> (trace "X" ((trace "X" (eq_rect (trace "X" (h1)) (trace "X" (x1)) (trace "X" (l)))))); + Prelude.False -> (trace "X" ((trace "X" (Prelude.error (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" ('m')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('m')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('h')) (trace "X" (((:) (trace "X" (';')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('h')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('v')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('h')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('n')) (trace "X" ([])))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))}))))}))))) (trace "X" (h)))))); + Prelude.False -> (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" ('t')) (trace "X" (((:) (trace "X" ('y')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('m')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('m')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('h')) (trace "X" (((:) (trace "X" (';')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('h')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('v')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('h')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('n')) (trace "X" ([])))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))})))))))))})); + Prelude.Nothing -> (trace "X" (ELR_nil (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_')) (trace "X" (l))))}))))) (trace "X" ((\varstypes1 iHvarstypes1 varstypes2 iHvarstypes2 x0 -> (trace "X" (ELR_branch (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_')) (trace "X" (l)) (trace "X" (varstypes1)) (trace "X" (varstypes2)) + (trace "X" ((trace "X" ((iHvarstypes1 + (trace "X" ((case (trace "X" (x0)) of { + INone -> (trace "X" (false_rect)); + ILeaf i x1 -> (trace "X" ((trace "X" (false_rect (trace "X" (x1)))))); + IBranch it1 it2 x1 x2 -> (trace "X" ((trace "X" (eq_rect (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x3 -> (trace "X" ((trace "X" (__U03be_' (trace "X" ((trace "X" ((fst (trace "X" (x3)))))))))))))) (trace "X" (varstypes1))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (eq_rect (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x3 -> (trace "X" ((trace "X" (__U03be_' (trace "X" ((trace "X" ((fst (trace "X" (x3)))))))))))))) (trace "X" (varstypes2))))))) (trace "X" ((\x3 x4 -> (trace "X" (x3))))) (trace "X" (it2))))))))) (trace "X" (it1)) (trace "X" (__)) (trace "X" (x1)) (trace "X" (x2))))))})))))))) + (trace "X" ((trace "X" ((iHvarstypes2 + (trace "X" ((case (trace "X" (x0)) of { + INone -> (trace "X" (false_rect)); + ILeaf i x1 -> (trace "X" ((trace "X" (false_rect (trace "X" (x1)))))); + IBranch it1 it2 x1 x2 -> (trace "X" ((trace "X" (eq_rect (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x3 -> (trace "X" ((trace "X" (__U03be_' (trace "X" ((trace "X" ((fst (trace "X" (x3)))))))))))))) (trace "X" (varstypes1))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (eq_rect (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x3 -> (trace "X" ((trace "X" (__U03be_' (trace "X" ((trace "X" ((fst (trace "X" (x3)))))))))))))) (trace "X" (varstypes2))))))) (trace "X" ((\x3 x4 -> (trace "X" (x4))))) (trace "X" (it2))))))))) (trace "X" (it1)) (trace "X" (__)) (trace "X" (x1)) (trace "X" (x2))))))}))))))))))))) (trace "X" (varstypes)) (trace "X" (x)))))) + +unindex_tree :: (Tree (Prelude.Maybe a1)) -> (ITree a1 a2) -> Tree (Prelude.Maybe (SigT a1 a2)) +unindex_tree t it = + (trace "X" (case (trace "X" (it)) of { + INone -> (trace "X" (T_Leaf (trace "X" (Prelude.Nothing)))); + ILeaf x y -> (trace "X" (T_Leaf (trace "X" ((Prelude.Just (trace "X" ((ExistT (trace "X" (x)) (trace "X" (y)))))))))); + IBranch it1 it2 b1 b2 -> (trace "X" (T_Branch (trace "X" ((trace "X" ((unindex_tree (trace "X" (it1)) (trace "X" (b1))))))) (trace "X" ((trace "X" ((unindex_tree (trace "X" (it2)) (trace "X" (b2)))))))))})) + +fix_indexing :: (Tree (Prelude.Maybe (SigT a1 a2))) -> (ITree (SigT a1 a2) a3) -> ITree a1 a3 +fix_indexing t it = + (trace "X" ((trace "X" (iTree_rect (trace "X" (INone)) (trace "X" ((\i f -> (trace "X" (ILeaf (trace "X" ((trace "X" ((projT1 (trace "X" (i))))))) (trace "X" (f))))))) (trace "X" ((\it1 it2 it3 iHit1 it4 iHit2 -> (trace "X" (IBranch (trace "X" ((trace "X" ((mapOptionTree (trace "X" (projT1)) (trace "X" (it1))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (projT1)) (trace "X" (it2))))))) (trace "X" (iHit1)) (trace "X" (iHit2))))))) (trace "X" (t)) (trace "X" (it)))))) + +fix2 :: (FreshMonad a1) -> (Tree (Prelude.Maybe (SigT a2 (FreshM a1 a3)))) -> Tree (Prelude.Maybe (FreshM a1 (SigT a2 a3))) +fix2 freshM t = + (trace "X" (case (trace "X" (t)) of { + T_Leaf y -> + (trace "X" (case (trace "X" (y)) of { + Prelude.Just x -> (trace "X" (T_Leaf (trace "X" ((Prelude.Just (trace "X" ((case (trace "X" (x)) of { + ExistT x0 fx -> (trace "X" ((trace "X" (bindM (trace "X" ((trace "X" ((freshMon (trace "X" (freshM))))))) (trace "X" (fx)) (trace "X" ((\fx' -> (trace "X" ((trace "X" (returnM (trace "X" ((trace "X" ((freshMon (trace "X" (freshM))))))) (trace "X" ((ExistT (trace "X" (x0)) (trace "X" (fx'))))))))))))))))})))))))); + Prelude.Nothing -> (trace "X" (T_Leaf (trace "X" (Prelude.Nothing))))})); + T_Branch b1 b2 -> (trace "X" (T_Branch (trace "X" ((trace "X" ((fix2 (trace "X" (freshM)) (trace "X" (b1))))))) (trace "X" ((trace "X" ((fix2 (trace "X" (freshM)) (trace "X" (b2)))))))))})) + +case_helper :: (EqDecidable a1) -> (FreshMonad a1) -> TyCon.TyCon -> TypeEnv -> (([]) HaskCoercionKind) -> HaskLevel -> HaskType -> (IList Kind HaskType) -> (a1 -> LeveledHaskType) -> (SigT StrongAltCon ProofCaseBranch) -> ((,) (Judg2exprType a1) (SigT (Tree (Prelude.Maybe a1)) ())) -> FreshM a1 (SigT (StrongCaseBranchWithVVs a1) (Expr a1)) +case_helper eqdec_vv freshM tc __U0393_0 __U0394_0 lev tbranches avars __U03be_0 pcb x = + (trace "X" (case (trace "X" (pcb)) of { + ExistT sac pcb0 -> + (trace "X" (case (trace "X" (x)) of { + (,) f s -> (trace "X" (case (trace "X" (s)) of { + ExistT 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" ((trace "X" ((sac___U0393_ (trace "X" (tc)) (trace "X" (sac)) (trace "X" (__U0393_0))))))) (trace "X" ((trace "X" ((unleaves (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExprVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_types (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)) (trace "X" (__U0393_0)) (trace "X" (avars))))))))))))))))) (trace "X" (vars)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((weakLT' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (KindStar))))))) (trace "X" ((trace "X" ((pcb_freevars (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (lev)) (trace "X" (tbranches)) (trace "X" (avars)) (trace "X" (sac)) (trace "X" (pcb0)))))))))))) (trace "X" ((\x0 -> (trace "X" ((trace "X" (weakLT' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (KindStar)) (trace "X" ((trace "X" ((__U03be_0 (trace "X" (x0)))))))))))))) (trace "X" ((trace "X" ((weakL' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (lev)))))))))))) (trace "X" ((\localvars -> (trace "X" (let {localvars' = (trace "X" ((trace "X" (mapOptionTree (trace "X" (fst)) (trace "X" (localvars))))))} in (trace "X" (let {localvars'' = (trace "X" ((trace "X" (list2vec (trace "X" ((trace "X" ((leaves (trace "X" (localvars')))))))))))} in (trace "X" (let {localvars''0 = (trace "X" ((trace "X" (eq_rect (trace "X" ((trace "X" ((length (trace "X" ((trace "X" ((leaves (trace "X" (localvars')))))))))))) (trace "X" (localvars'')) (trace "X" ((trace "X" ((sac_numExprVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))} in (trace "X" ((trace "X" (bindM (trace "X" ((trace "X" ((freshMon (trace "X" (freshM))))))) (trace "X" ((trace "X" ((unsafeCoerce (trace "X" (f)) (trace "X" ((trace "X" ((scbwv___U03be_ (trace "X" (eqdec_vv)) (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (avars)) (trace "X" (sac)) (trace "X" (localvars''0)) (trace "X" (__U03be_0)) (trace "X" (lev))))))) (trace "X" ((T_Branch (trace "X" (vars)) (trace "X" ((trace "X" ((unleaves (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExprVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((scbwv_exprvars (trace "X" (eqdec_vv)) (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (avars)) (trace "X" (sac)) (trace "X" (localvars''0)))))))))))))))))))) (trace "X" (__))))))) (trace "X" ((\q -> (trace "X" ((trace "X" (returnM (trace "X" ((trace "X" ((freshMon (trace "X" (freshM))))))) (trace "X" ((ExistT (trace "X" (localvars''0)) (trace "X" ((trace "X" ((ileaf (trace "X" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (weakT' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (KindStar)) (trace "X" (tbranches))))))))) (trace "X" ((trace "X" ((weakL' (trace "X" (__U0393_0)) (trace "X" ((trace "X" ((vec2list (trace "X" ((trace "X" ((sac_numExTyVars (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac))))))) (trace "X" ((trace "X" ((sac_ekinds (trace "X" ((Prelude.error "Proj Args"))) (trace "X" (sac)))))))))))) (trace "X" (lev)))))))))) (trace "X" (q))))))))))))))))))))))))))))))))))}))}))})) + +gather_branch_variables :: (EqDecidable a1) -> (FreshMonad a1) -> TypeEnv -> (([]) HaskCoercionKind) -> (a1 -> LeveledHaskType) -> TyCon.TyCon -> (IList Kind HaskType) -> HaskType -> HaskLevel -> (Tree (Prelude.Maybe (SigT StrongAltCon ProofCaseBranch))) -> (Tree (Prelude.Maybe a1)) -> (ITree Judg (Judg2exprType a1)) -> ITree (SigT StrongAltCon ProofCaseBranch) ((,) (Judg2exprType a1) (SigT (Tree (Prelude.Maybe a1)) ())) +gather_branch_variables eqdec_vv freshM __U0393_0 __U0394_0 __U03be_0 tc avars tbranches lev alts vars x = + (trace "X" ((trace "X" (tree_rect (trace "X" ((\a vars0 _ source -> + (trace "X" (case (trace "X" (a)) of { + Prelude.Just s -> (trace "X" (let {source0 = (trace "X" ((trace "X" (ileaf (trace "X" ((trace "X" ((pcb_judg (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (lev)) (trace "X" (tbranches)) (trace "X" (avars)) (trace "X" ((trace "X" ((projT1 (trace "X" (s))))))) (trace "X" ((trace "X" ((projT2 (trace "X" (s)))))))))))) (trace "X" (source))))))} in (trace "X" (ILeaf (trace "X" (s)) (trace "X" (((,) (trace "X" ((unsafeCoerce (trace "X" ((\__U03be_1 vars1 _ -> (trace "X" ((trace "X" (unsafeCoerce (trace "X" (source0)) (trace "X" (__U03be_1)) (trace "X" (vars1)) (trace "X" (__)))))))))))) (trace "X" ((ExistT (trace "X" (vars0)) (trace "X" (__)))))))))))); + Prelude.Nothing -> (trace "X" (INone))}))))) (trace "X" ((\alts1 iHalts1 alts2 iHalts2 vars0 _ source -> + (trace "X" (case (trace "X" (vars0)) of { + T_Leaf o -> (trace "X" (false_rect)); + T_Branch vars1 vars2 -> + (trace "X" (case (trace "X" (source)) of { + INone -> (trace "X" (false_rect)); + ILeaf i x0 -> (trace "X" ((trace "X" (false_rect (trace "X" (x0)))))); + IBranch it1 it2 x0 x1 -> (trace "X" ((trace "X" (eq_rect (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x2 -> (trace "X" ((trace "X" (pcb_judg (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (lev)) (trace "X" (tbranches)) (trace "X" (avars)) (trace "X" ((trace "X" ((projT1 (trace "X" (x2))))))) (trace "X" ((trace "X" ((projT2 (trace "X" (x2)))))))))))))) (trace "X" (alts1))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (eq_rect (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x2 -> (trace "X" ((trace "X" (pcb_judg (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (lev)) (trace "X" (tbranches)) (trace "X" (avars)) (trace "X" ((trace "X" ((projT1 (trace "X" (x2))))))) (trace "X" ((trace "X" ((projT2 (trace "X" (x2)))))))))))))) (trace "X" (alts2))))))) (trace "X" ((\x2 x3 -> (trace "X" (IBranch (trace "X" (alts1)) (trace "X" (alts2)) (trace "X" ((trace "X" ((iHalts1 (trace "X" (vars1)) (trace "X" (__)) (trace "X" (x2))))))) (trace "X" ((trace "X" ((iHalts2 (trace "X" (vars2)) (trace "X" (__)) (trace "X" (x3)))))))))))) (trace "X" (it2))))))))) (trace "X" (it1)) (trace "X" (__)) (trace "X" (x0)) (trace "X" (x1))))))}))}))))) (trace "X" (alts)) (trace "X" (vars)) (trace "X" (__)) (trace "X" (x)))))) + +rule2expr :: (EqDecidable a1) -> (FreshMonad a1) -> (Tree (Prelude.Maybe Judg)) -> (Tree (Prelude.Maybe Judg)) -> Rule -> (ITree Judg (Judg2exprType a1)) -> ITree Judg (Judg2exprType a1) +rule2expr eqdec_vv freshM h j r x_ = + (trace "X" (case (trace "X" (r)) of { + RArrange a b c d e r0 -> (trace "X" (let {x_0 = (trace "X" ((trace "X" (ileaf (trace "X" ((MkJudg (trace "X" (a)) (trace "X" (b)) (trace "X" (c)) (trace "X" (e))))) (trace "X" (x_))))))} in (trace "X" (ILeaf (trace "X" ((MkJudg (trace "X" (a)) (trace "X" (b)) (trace "X" (d)) (trace "X" (e))))) (trace "X" ((unsafeCoerce (trace "X" ((\__U03be_0 vars _ -> (trace "X" (let {q = (trace "X" ((trace "X" (urule2expr (trace "X" (eqdec_vv)) (trace "X" (freshM)) (trace "X" (a)) (trace "X" (b)) (trace "X" (c)) (trace "X" (d)) (trace "X" (e)) (trace "X" (r0)) (trace "X" (__U03be_0))))))} in (trace "X" (let {z = (trace "X" (\vars0 -> (trace "X" ((trace "X" (unsafeCoerce (trace "X" (x_0)) (trace "X" (__U03be_0)) (trace "X" (vars0)) (trace "X" (__))))))))} in (trace "X" ((trace "X" (q (trace "X" ((\vars0 _ -> (trace "X" ((trace "X" (z (trace "X" (vars0))))))))) (trace "X" (vars)))))))))))))))))))); + RBrak __U03a3_ a b c n m -> (trace "X" (let {x_0 = (trace "X" ((trace "X" (ileaf (trace "X" ((MkJudg (trace "X" (__U03a3_)) (trace "X" (a)) (trace "X" (n)) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (b)) (trace "X" (((:) (trace "X" (c)) (trace "X" (m))))))))))))))))) (trace "X" (x_))))))} in (trace "X" (ILeaf (trace "X" ((MkJudg (trace "X" (__U03a3_)) (trace "X" (a)) (trace "X" (n)) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (haskBrak (trace "X" (__U03a3_)) (trace "X" (c)) (trace "X" (b))))))))) (trace "X" (m)))))))))))))) (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" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (haskBrak (trace "X" (__U03a3_)) (trace "X" (c)) (trace "X" (b))))))))) (trace "X" (m))))) (trace "X" ((EBrak (trace "X" (__U03a3_)) (trace "X" (a)) (trace "X" (__U03be_0)) (trace "X" (c)) (trace "X" (b)) (trace "X" (m)) (trace "X" ((trace "X" ((ileaf (trace "X" ((MkLeveledHaskType (trace "X" (b)) (trace "X" (((:) (trace "X" (c)) (trace "X" (m)))))))) (trace "X" (x)))))))))))))))))))))))))))))))))); + REsc __U03a3_ a b c n m -> (trace "X" (let {x_0 = (trace "X" ((trace "X" (ileaf (trace "X" ((MkJudg (trace "X" (__U03a3_)) (trace "X" (a)) (trace "X" (n)) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (haskBrak (trace "X" (__U03a3_)) (trace "X" (c)) (trace "X" (b))))))))) (trace "X" (m)))))))))))))) (trace "X" (x_))))))} in (trace "X" (ILeaf (trace "X" ((MkJudg (trace "X" (__U03a3_)) (trace "X" (a)) (trace "X" (n)) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (b)) (trace "X" (((:) (trace "X" (c)) (trace "X" (m))))))))))))))))) (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" ((MkLeveledHaskType (trace "X" (b)) (trace "X" (((:) (trace "X" (c)) (trace "X" (m)))))))) (trace "X" ((EEsc (trace "X" (__U03a3_)) (trace "X" (a)) (trace "X" (__U03be_0)) (trace "X" (c)) (trace "X" (b)) (trace "X" (m)) (trace "X" ((trace "X" ((ileaf (trace "X" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (haskBrak (trace "X" (__U03a3_)) (trace "X" (c)) (trace "X" (b))))))))) (trace "X" (m))))) (trace "X" (x)))))))))))))))))))))))))))))))))); + RNote __U0393_0 __U0394_0 __U03a3_ __U03c4_ l n -> (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" ((MkLeveledHaskType (trace "X" (__U03c4_)) (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" ((MkLeveledHaskType (trace "X" (__U03c4_)) (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" ((MkLeveledHaskType (trace "X" (__U03c4_)) (trace "X" (l))))) (trace "X" ((ENote (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" ((MkLeveledHaskType (trace "X" (__U03c4_)) (trace "X" (l))))) (trace "X" (n)) (trace "X" ((trace "X" ((ileaf (trace "X" ((MkLeveledHaskType (trace "X" (__U03c4_)) (trace "X" (l))))) (trace "X" (x)))))))))))))))))))))))))))))))))); + RLit __U0393_0 __U0394_0 l l0 -> (trace "X" (ILeaf (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.Just (trace "X" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (literalType (trace "X" (l)) (trace "X" (__U0393_0))))))))) (trace "X" (l0)))))))))))))) (trace "X" ((unsafeCoerce (trace "X" ((\__U03be_0 vars _ -> (trace "X" ((trace "X" (returnM (trace "X" ((trace "X" ((freshMon (trace "X" (freshM))))))) (trace "X" ((ILeaf (trace "X" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (literalType (trace "X" (l)) (trace "X" (__U0393_0))))))))) (trace "X" (l0))))) (trace "X" ((ELit (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (l)) (trace "X" (l0)))))))))))))))))))); + RVar __U0393_0 __U0394_0 __U03c3_ p -> (trace "X" (ILeaf (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (__U03c3_)) (trace "X" (p))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (__U03c3_)) (trace "X" (p)))))))))))))) + (trace "X" ((unsafeCoerce (trace "X" ((\__U03be_0 vars _ -> + (trace "X" ((trace "X" (returnM (trace "X" ((trace "X" ((freshMon (trace "X" (freshM))))))) (trace "X" ((ILeaf (trace "X" ((MkLeveledHaskType (trace "X" (__U03c3_)) (trace "X" (p))))) + (trace "X" ((case (trace "X" (vars)) of { + T_Leaf o -> + (trace "X" (case (trace "X" (o)) of { + Prelude.Just v -> (trace "X" ((trace "X" (eq_rect_r (trace "X" ((trace "X" ((unsafeCoerce (trace "X" (__U03be_0)) (trace "X" (v))))))) (trace "X" ((EVar (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (v))))) (trace "X" ((MkLeveledHaskType (trace "X" (__U03c3_)) (trace "X" (p))))))))); + Prelude.Nothing -> (trace "X" (false_rect))})); + T_Branch vars1 vars2 -> (trace "X" (false_rect))})))))))))))))))))); + RGlobal __U0393_0 __U0394_0 __U03c3_ l wev -> (trace "X" (ILeaf (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.Just (trace "X" ((MkLeveledHaskType (trace "X" (__U03c3_)) (trace "X" (l)))))))))))))) (trace "X" ((unsafeCoerce (trace "X" ((\__U03be_0 vars _ -> (trace "X" ((trace "X" (returnM (trace "X" ((trace "X" ((freshMon (trace "X" (freshM))))))) (trace "X" ((ILeaf (trace "X" ((MkLeveledHaskType (trace "X" (__U03c3_)) (trace "X" (l))))) (trace "X" ((EGlobal (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" ((MkLeveledHaskType (trace "X" (__U03c3_)) (trace "X" (l))))) (trace "X" (wev)))))))))))))))))))); + RLam __U0393_0 __U0394_0 __U03a3_ tx te x -> (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" (__U03a3_)) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (tx)) (trace "X" (x)))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (te)) (trace "X" (x)))))))))))))) (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" ((MkLeveledHaskType (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" ((tx (trace "X" (__)) (trace "X" (env)))))))))) (trace "X" ((trace "X" ((te (trace "X" (__)) (trace "X" (env)))))))))))) (trace "X" (x)))))))))))))) (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" (__U03be_0)) (trace "X" (vars)) (trace "X" (__U03a3_)) (trace "X" (tx)) (trace "X" (x))))))) (trace "X" ((\pf -> (trace "X" (let {__U03be_' = (trace "X" ((trace "X" (update___U03be_ (trace "X" (eqdec_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (x)) (trace "X" (((:) (trace "X" (((,) (trace "X" (pf)) (trace "X" (tx))))) (trace "X" (([]))))))))))} in (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_')) (trace "X" ((T_Branch (trace "X" (vars)) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (pf))))))))))) (trace "X" (__))))))) (trace "X" ((\hyp -> (trace "X" ((trace "X" (returnM (trace "X" ((trace "X" ((freshMon (trace "X" (freshM))))))) (trace "X" ((ILeaf (trace "X" ((MkLeveledHaskType (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" ((tx (trace "X" (__)) (trace "X" (env)))))))))) (trace "X" ((trace "X" ((te (trace "X" (__)) (trace "X" (env)))))))))))) (trace "X" (x))))) (trace "X" ((ELam (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (tx)) (trace "X" (te)) (trace "X" (x)) (trace "X" (pf)) (trace "X" ((trace "X" ((ileaf (trace "X" ((MkLeveledHaskType (trace "X" (te)) (trace "X" (x))))) (trace "X" (hyp))))))))))))))))))))))))))))))))))))))))))); + RCast __U0393_0 __U0394_0 __U03a3_ __U03c3_ __U03c4_ __U03b3_ -> (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" ((MkLeveledHaskType (trace "X" (__U03c3_)) (trace "X" (__U03b3_)))))))))))))) (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" ((MkLeveledHaskType (trace "X" (__U03c4_)) (trace "X" (__U03b3_)))))))))))))) (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" ((MkLeveledHaskType (trace "X" (__U03c4_)) (trace "X" (__U03b3_))))) (trace "X" ((ECast (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (__U03c3_)) (trace "X" (__U03c4_)) (trace "X" (__U03b3_)) (trace "X" ((trace "X" ((ileaf (trace "X" ((MkLeveledHaskType (trace "X" (__U03c3_)) (trace "X" (__U03b3_))))) (trace "X" (x)))))))))))))))))))))))))))))))))); + RJoin __U0393_0 p lri m x q -> (trace "X" (ILeaf (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (p)) (trace "X" ((T_Branch (trace "X" (lri)) (trace "X" (m))))) (trace "X" ((T_Branch (trace "X" (x)) (trace "X" (q)))))))) + (trace "X" ((unsafeCoerce (trace "X" ((\__U03be_0 vars _ -> + (trace "X" (case (trace "X" (x_)) of { + INone -> (trace "X" (false_rect)); + ILeaf i x0 -> (trace "X" ((trace "X" (false_rect (trace "X" (x0)))))); + IBranch it1 it2 x0 x1 -> + (trace "X" (let { + h0 = (trace "X" ((trace "X" (eq_rect (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (p)) (trace "X" (lri)) (trace "X" (x))))))))))) (trace "X" ((\_ -> + (trace "X" ((trace "X" (eq_rect (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (p)) (trace "X" (m)) (trace "X" (q))))))))))) (trace "X" ((\x2 x3 -> + (trace "X" (let {x4 = (trace "X" ((trace "X" (ileaf (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (p)) (trace "X" (lri)) (trace "X" (x))))) (trace "X" (x2))))))} in + (trace "X" (let {x5 = (trace "X" ((trace "X" (ileaf (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (p)) (trace "X" (m)) (trace "X" (q))))) (trace "X" (x3))))))} in + (trace "X" (case (trace "X" (vars)) of { + T_Leaf o -> (trace "X" (false_rect)); + T_Branch vars1 vars2 -> (trace "X" ((trace "X" (bindM (trace "X" ((trace "X" ((freshMon (trace "X" (freshM))))))) (trace "X" ((trace "X" ((x4 (trace "X" (__U03be_0)) (trace "X" (vars1)) (trace "X" (__))))))) (trace "X" ((\x' -> (trace "X" ((trace "X" (bindM (trace "X" ((trace "X" ((freshMon (trace "X" (freshM))))))) (trace "X" ((trace "X" ((x5 (trace "X" (__U03be_0)) (trace "X" (vars2)) (trace "X" (__))))))) (trace "X" ((\x0' -> (trace "X" ((trace "X" (returnM (trace "X" ((trace "X" ((freshMon (trace "X" (freshM))))))) (trace "X" ((IBranch (trace "X" (x)) (trace "X" (q)) (trace "X" (x')) (trace "X" (x0')))))))))))))))))))))))}))))))))) (trace "X" (it2))))))))) (trace "X" (it1)) (trace "X" (__))))))} + in + (trace "X" ((trace "X" (unsafeCoerce (trace "X" (h0)) (trace "X" (x0)) (trace "X" (x1))))))))})))))))))); + RApp __U0393_0 __U0394_0 __U03a3___U2081_ __U03a3___U2082_ tx te p -> (trace "X" (ILeaf (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Branch (trace "X" (__U03a3___U2081_)) (trace "X" (__U03a3___U2082_))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (te)) (trace "X" (p)))))))))))))) + (trace "X" ((case (trace "X" (x_)) of { + INone -> (trace "X" (false_rect)); + ILeaf i x -> (trace "X" ((trace "X" (false_rect (trace "X" (x)))))); + IBranch it1 it2 x x0 -> + (trace "X" (let { + h0 = (trace "X" ((trace "X" (eq_rect (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03a3___U2081_)) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (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" ((tx (trace "X" (__)) (trace "X" (env)))))))))) (trace "X" ((trace "X" ((te (trace "X" (__)) (trace "X" (env)))))))))))) (trace "X" (p)))))))))))))))))))) (trace "X" ((\_ -> + (trace "X" ((trace "X" (eq_rect (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03a3___U2082_)) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (tx)) (trace "X" (p)))))))))))))))))))) (trace "X" ((\x1 x2 -> + (trace "X" (case (trace "X" (x1)) of { + INone -> (trace "X" (false_rect)); + ILeaf i x3 -> + (trace "X" ((trace "X" (eq_rect (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03a3___U2081_)) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (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" ((tx (trace "X" (__)) (trace "X" (env)))))))))) (trace "X" ((trace "X" ((te (trace "X" (__)) (trace "X" (env)))))))))))) (trace "X" (p)))))))))))))) (trace "X" ((\x4 -> + (trace "X" (case (trace "X" (x2)) of { + INone -> (trace "X" (false_rect)); + ILeaf i0 x5 -> + (trace "X" ((trace "X" (eq_rect (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03a3___U2082_)) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (tx)) (trace "X" (p)))))))))))))) (trace "X" ((\x6 __U03be_0 vars _ -> + (trace "X" (case (trace "X" (vars)) of { + T_Leaf o -> (trace "X" (false_rect)); + T_Branch vars1 vars2 -> (trace "X" (let {q1 = (trace "X" ((trace "X" (x4 (trace "X" (__U03be_0)) (trace "X" (vars1)) (trace "X" (__))))))} in (trace "X" (let {q2 = (trace "X" ((trace "X" (x6 (trace "X" (__U03be_0)) (trace "X" (vars2)) (trace "X" (__))))))} in (trace "X" ((trace "X" (bindM (trace "X" ((trace "X" ((freshMon (trace "X" (freshM))))))) (trace "X" (q1)) (trace "X" ((\q1' -> (trace "X" ((trace "X" (bindM (trace "X" ((trace "X" ((freshMon (trace "X" (freshM))))))) (trace "X" (q2)) (trace "X" ((\q2' -> (trace "X" ((trace "X" (returnM (trace "X" ((trace "X" ((freshMon (trace "X" (freshM))))))) (trace "X" ((ILeaf (trace "X" ((MkLeveledHaskType (trace "X" (te)) (trace "X" (p))))) (trace "X" ((let {q1'0 = (trace "X" ((trace "X" (ileaf (trace "X" ((MkLeveledHaskType (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" ((tx (trace "X" (__)) (trace "X" (env)))))))))) (trace "X" ((trace "X" ((te (trace "X" (__)) (trace "X" (env)))))))))))) (trace "X" (p))))) (trace "X" (q1'))))))} in (trace "X" (let {q2'0 = (trace "X" ((trace "X" (ileaf (trace "X" ((MkLeveledHaskType (trace "X" (tx)) (trace "X" (p))))) (trace "X" (q2'))))))} in (trace "X" (EApp (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (te)) (trace "X" (tx)) (trace "X" (p)) (trace "X" (q1'0)) (trace "X" (q2'0))))))))))))))))))))))))))))))))))}))))) (trace "X" (i0)) (trace "X" (x5)))))); + IBranch it0 it3 x5 x6 -> (trace "X" ((trace "X" (false_rect (trace "X" (x5)) (trace "X" (x6))))))}))))) (trace "X" (i)) (trace "X" (x3)))))); + IBranch it0 it3 x3 x4 -> (trace "X" ((trace "X" (false_rect (trace "X" (x3)) (trace "X" (x4))))))}))))) (trace "X" (it2))))))))) (trace "X" (it1)) (trace "X" (__))))))} + in + (trace "X" ((trace "X" (unsafeCoerce (trace "X" (h0)) (trace "X" (x)) (trace "X" (x0))))))))}))))); + RLet __U0393_0 __U0394_0 __U03a3___U2081_ __U03a3___U2082_ __U03c3___U2081_ __U03c3___U2082_ p -> (trace "X" (ILeaf (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Branch (trace "X" (__U03a3___U2081_)) (trace "X" (__U03a3___U2082_))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (__U03c3___U2081_)) (trace "X" (p)))))))))))))) + (trace "X" ((unsafeCoerce (trace "X" ((\__U03be_0 vars _ -> + (trace "X" (case (trace "X" (vars)) of { + T_Leaf o -> (trace "X" (false_rect)); + T_Branch vars1 vars2 -> + (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" (__U03be_0)) (trace "X" (vars1)) (trace "X" (__U03a3___U2081_)) (trace "X" (__U03c3___U2082_)) (trace "X" (p))))))) (trace "X" ((\pf -> + (trace "X" (let {__U03be_' = (trace "X" ((trace "X" (update___U03be_ (trace "X" (eqdec_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (p)) (trace "X" (((:) (trace "X" (((,) (trace "X" (pf)) (trace "X" (__U03c3___U2082_))))) (trace "X" (([]))))))))))} in + (trace "X" (case (trace "X" (x_)) of { + INone -> (trace "X" (false_rect)); + ILeaf i x -> (trace "X" ((trace "X" (false_rect (trace "X" (x)))))); + IBranch it1 it2 x x0 -> (trace "X" (let {h0 = (trace "X" ((trace "X" (eq_rect (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03a3___U2082_)) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (__U03c3___U2082_)) (trace "X" (p)))))))))))))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (eq_rect (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" (__U03a3___U2081_)) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (__U03c3___U2082_)) (trace "X" (p)))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (__U03c3___U2081_)) (trace "X" (p)))))))))))))))))))) (trace "X" ((\x1 x2 -> (trace "X" (let {x3 = (trace "X" ((trace "X" (ileaf (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03a3___U2082_)) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (__U03c3___U2082_)) (trace "X" (p)))))))))))))) (trace "X" (x1))))))} in (trace "X" (let {x4 = (trace "X" ((trace "X" (ileaf (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Branch (trace "X" (__U03a3___U2081_)) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (__U03c3___U2082_)) (trace "X" (p)))))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (__U03c3___U2081_)) (trace "X" (p)))))))))))))) (trace "X" (x2))))))} in (trace "X" ((trace "X" (bindM (trace "X" ((trace "X" ((freshMon (trace "X" (freshM))))))) (trace "X" ((trace "X" ((x3 (trace "X" (__U03be_0)) (trace "X" (vars2)) (trace "X" (__))))))) (trace "X" ((\x0' -> (trace "X" ((trace "X" (bindM (trace "X" ((trace "X" ((freshMon (trace "X" (freshM))))))) (trace "X" ((trace "X" ((x4 (trace "X" (__U03be_')) (trace "X" ((T_Branch (trace "X" (vars1)) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (pf))))))))))) (trace "X" (__))))))) (trace "X" ((\x1' -> (trace "X" ((trace "X" (returnM (trace "X" ((trace "X" ((freshMon (trace "X" (freshM))))))) (trace "X" ((ILeaf (trace "X" ((MkLeveledHaskType (trace "X" (__U03c3___U2081_)) (trace "X" (p))))) (trace "X" ((let {x0'0 = (trace "X" ((trace "X" (ileaf (trace "X" ((MkLeveledHaskType (trace "X" (__U03c3___U2082_)) (trace "X" (p))))) (trace "X" (x0'))))))} in (trace "X" (let {x1'0 = (trace "X" ((trace "X" (ileaf (trace "X" ((MkLeveledHaskType (trace "X" (__U03c3___U2081_)) (trace "X" (p))))) (trace "X" (x1'))))))} in (trace "X" (ELet (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (__U03c3___U2082_)) (trace "X" (__U03c3___U2081_)) (trace "X" (p)) (trace "X" (pf)) (trace "X" (x0'0)) (trace "X" (x1'0))))))))))))))))))))))))))))))))))))) (trace "X" (it2))))))))) (trace "X" (it1)) (trace "X" (__))))))} in (trace "X" ((trace "X" (unsafeCoerce (trace "X" (h0)) (trace "X" (x)) (trace "X" (x0))))))))})))))))))))})))))))))); + RVoid __U0393_0 __U0394_0 -> (trace "X" (ILeaf (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" ((unsafeCoerce (trace "X" ((\__U03be_0 vars _ -> (trace "X" ((trace "X" (returnM (trace "X" ((trace "X" ((freshMon (trace "X" (freshM))))))) (trace "X" (INone)))))))))))))); + RAppT __U0393_0 __U0394_0 __U03a3_ __U03ba_ __U03c3_ __U03c4_ y -> (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" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (haskTAll (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (__U03c3_))))))))) (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" ((MkLeveledHaskType (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" (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" ((MkLeveledHaskType (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" (y))))) (trace "X" ((ETyApp (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03ba_)) (trace "X" (__U03c3_)) (trace "X" (__U03c4_)) (trace "X" (__U03be_0)) (trace "X" (y)) (trace "X" ((trace "X" ((ileaf (trace "X" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (haskTAll (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (__U03c3_))))))))) (trace "X" (y))))) (trace "X" (x)))))))))))))))))))))))))))))))))); + RAbsT __U0393_0 __U0394_0 __U03a3_ __U03ba_ __U03c3_ a -> (trace "X" (let {x_0 = (trace "X" ((trace "X" (ileaf (trace "X" ((MkJudg (trace "X" (((:) (trace "X" (__U03ba_)) (trace "X" (__U0393_0))))) (trace "X" ((trace "X" ((weakCE (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (__U0394_0))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((weakLT (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (KindStar))))))) (trace "X" (__U03a3_))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (haskTApp (trace "X" (((:) (trace "X" (__U03ba_)) (trace "X" (__U0393_0))))) (trace "X" (__U03ba_)) (trace "X" ((\_ -> (trace "X" ((trace "X" (weakF (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (KindStar)) (trace "X" (__U03c3_))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (freshHaskTyVar (trace "X" (__U0393_0)) (trace "X" (__U03ba_)))))))))))))))) (trace "X" ((trace "X" ((weakL (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (a))))))))))))))))))) (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" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (haskTAll (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (__U03c3_))))))))) (trace "X" (a)))))))))))))) (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" ((\x -> (trace "X" ((trace "X" (weakLT (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (KindStar)) (trace "X" ((trace "X" ((__U03be_0 (trace "X" (x)))))))))))))) (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" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (haskTAll (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (__U03c3_))))))))) (trace "X" (a))))) (trace "X" ((let {x0 = (trace "X" ((trace "X" (ileaf (trace "X" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (haskTApp (trace "X" (((:) (trace "X" (__U03ba_)) (trace "X" (__U0393_0))))) (trace "X" (__U03ba_)) (trace "X" ((\_ -> (trace "X" ((trace "X" (weakF (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (KindStar)) (trace "X" (__U03c3_))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (freshHaskTyVar (trace "X" (__U0393_0)) (trace "X" (__U03ba_)))))))))))))))) (trace "X" ((trace "X" ((weakL (trace "X" (__U0393_0)) (trace "X" (__U03ba_)) (trace "X" (a)))))))))) (trace "X" (x))))))} in (trace "X" (ETyLam (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (__U03ba_)) (trace "X" (__U03c3_)) (trace "X" (a)) (trace "X" (x0))))))))))))))))))))))))))))))); + 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" ((MkLeveledHaskType (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" ((MkLeveledHaskType (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" ((MkLeveledHaskType (trace "X" (__U03c3_)) (trace "X" (l))))) (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" ((MkLeveledHaskType (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)))))))))))))))))))))))))))))))))); + 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" ((MkLeveledHaskType (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" ((MkLeveledHaskType (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" ((MkLeveledHaskType (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" ((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" ((MkLeveledHaskType (trace "X" (__U03c3___U2082_)) (trace "X" (y))))) (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" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (t))))))) (trace "X" ((T_Branch (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (x)))))))) (trace "X" (y))))))))))))) (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" ((MkLeveledHaskType (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___U03be_ (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" (returnM (trace "X" ((trace "X" ((freshMon (trace "X" (freshM))))))) (trace "X" ((ILeaf (trace "X" ((MkLeveledHaskType (trace "X" (x)) (trace "X" (t))))) + (trace "X" ((case (trace "X" (x0)) of { + INone -> (trace "X" (false_rect)); + ILeaf i x1 -> (trace "X" ((trace "X" (false_rect (trace "X" (x1)))))); + IBranch it1 it2 x1 x2 -> (trace "X" ((trace "X" (eq_rect (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (x)) (trace "X" (t))))))))))) (trace "X" ((\_ -> (trace "X" ((trace "X" (eq_rect (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (t))))))) (trace "X" (y))))))) (trace "X" ((\x3 x4 -> (trace "X" ((trace "X" (eq_rect_r (trace "X" ((trace "X" ((mapOptionTree (trace "X" (__U03be_0)) (trace "X" (vars))))))) (trace "X" ((\_ -> (trace "X" (ELetRec (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (t)) (trace "X" (x)) (trace "X" (__U03be_vars)) (trace "X" ((trace "X" ((letrec_helper (trace "X" (eqdec_vv)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (t)) (trace "X" (__U03be_vars)) (trace "X" ((trace "X" ((update___U03be_ (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" ((let {x5 = (trace "X" ((trace "X" (eq_rect_r (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\t' -> (trace "X" (MkLeveledHaskType (trace "X" (t')) (trace "X" (t))))))) (trace "X" (y))))))) (trace "X" (x4)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((update___U03be_ (trace "X" (eqdec_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (t)) (trace "X" ((trace "X" ((leaves (trace "X" ((unsafeCoerce (trace "X" (__U03be_vars))))))))))))))) (trace "X" ((trace "X" ((mapOptionTree (trace "X" (fst)) (trace "X" (__U03be_vars))))))))))))))))} in (trace "X" ((trace "X" (eq_rect_r (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((trace "X" ((update___U03be_ (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" ((trace "X" ((mapOptionTree (trace "X" (fst)) (trace "X" (__U03be_vars)))))))))))) (trace "X" (x5)) (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x6 -> (trace "X" ((trace "X" (update___U03be_ (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" ((trace "X" ((fst (trace "X" (x6)))))))))))))) (trace "X" (__U03be_vars))))))))))))))))))) (trace "X" ((trace "X" ((ileaf (trace "X" ((MkLeveledHaskType (trace "X" (x)) (trace "X" (t))))) (trace "X" (x3)))))))))))) (trace "X" (lri)) (trace "X" (__))))))))) (trace "X" (it2))))))))) (trace "X" (it1)) (trace "X" (__)) (trace "X" (x1)) (trace "X" (x2))))))})))))))))))))))))))))))))))))))))); + RCase __U0393_0 __U0394_0 lev tc __U03a3_ avars tbranches alts -> (trace "X" (ILeaf (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" ((T_Branch (trace "X" ((trace "X" ((mapOptionTreeAndFlatten (trace "X" ((\x -> (trace "X" ((trace "X" (pcb_freevars (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (lev)) (trace "X" (tbranches)) (trace "X" (avars)) (trace "X" ((trace "X" ((projT1 (trace "X" (x))))))) (trace "X" ((trace "X" ((projT2 (trace "X" (x)))))))))))))) (trace "X" (alts))))))) (trace "X" (__U03a3_))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (tbranches)) (trace "X" (lev)))))))))))))) + (trace "X" ((unsafeCoerce (trace "X" ((\__U03be_0 vars _ -> + (trace "X" (case (trace "X" (x_)) of { + INone -> (trace "X" (false_rect)); + ILeaf i x -> (trace "X" ((trace "X" (false_rect (trace "X" (x)))))); + IBranch it1 it2 x x0 -> + (trace "X" (let { + h0 = (trace "X" ((trace "X" (eq_rect (trace "X" ((trace "X" ((mapOptionTree (trace "X" ((\x1 -> (trace "X" ((trace "X" (pcb_judg (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (lev)) (trace "X" (tbranches)) (trace "X" (avars)) (trace "X" ((trace "X" ((projT1 (trace "X" (x1))))))) (trace "X" ((trace "X" ((projT2 (trace "X" (x1)))))))))))))) (trace "X" (alts))))))) (trace "X" ((\_ -> + (trace "X" ((trace "X" (eq_rect (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03a3_)) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (caseType (trace "X" (__U0393_0)) (trace "X" (tc)) (trace "X" (avars))))))))) (trace "X" (lev)))))))))))))))))))) (trace "X" ((\x1 x2 -> + (trace "X" (let {x3 = (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" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (caseType (trace "X" (__U0393_0)) (trace "X" (tc)) (trace "X" (avars))))))))) (trace "X" (lev)))))))))))))) (trace "X" (x2))))))} in + (trace "X" (case (trace "X" (vars)) of { + T_Leaf o -> (trace "X" (false_rect)); + T_Branch all_freevars1 all_freevars2 -> (trace "X" (let {q = (trace "X" ((trace "X" (gather_branch_variables (trace "X" (eqdec_vv)) (trace "X" (freshM)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (tc)) (trace "X" (avars)) (trace "X" (tbranches)) (trace "X" (lev)) (trace "X" (alts)) (trace "X" (all_freevars1)) (trace "X" (x1))))))} in (trace "X" (let {alts_exprs' = (trace "X" ((trace "X" (itmap (trace "X" (alts)) (trace "X" ((\pcb alt_expr -> (trace "X" ((trace "X" (case_helper (trace "X" (eqdec_vv)) (trace "X" (freshM)) (trace "X" (tc)) (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (lev)) (trace "X" (tbranches)) (trace "X" (avars)) (trace "X" (__U03be_0)) (trace "X" (pcb)) (trace "X" (alt_expr))))))))) (trace "X" (q))))))} in (trace "X" (let {alts_exprs'0 = (trace "X" ((trace "X" (fix_indexing (trace "X" (alts)) (trace "X" (alts_exprs'))))))} in (trace "X" (let {alts_exprs'1 = (trace "X" ((trace "X" (unindex_tree (trace "X" ((trace "X" ((mapOptionTree (trace "X" (projT1)) (trace "X" (alts))))))) (trace "X" (alts_exprs'0))))))} in (trace "X" (let {alts_exprs'2 = (trace "X" ((trace "X" (fix2 (trace "X" (freshM)) (trace "X" (alts_exprs'1))))))} in (trace "X" (let {alts_exprs'3 = (trace "X" ((trace "X" (treeM (trace "X" ((trace "X" ((freshMon (trace "X" (freshM))))))) (trace "X" (alts_exprs'2))))))} in (trace "X" ((trace "X" (bindM (trace "X" ((trace "X" ((freshMon (trace "X" (freshM))))))) (trace "X" (alts_exprs'3)) (trace "X" ((\y -> (trace "X" ((trace "X" (bindM (trace "X" ((trace "X" ((freshMon (trace "X" (freshM))))))) (trace "X" ((trace "X" ((x3 (trace "X" (__U03be_0)) (trace "X" (all_freevars2)) (trace "X" (__))))))) (trace "X" ((\x4 -> (trace "X" ((trace "X" (returnM (trace "X" ((trace "X" ((freshMon (trace "X" (freshM))))))) (trace "X" ((ILeaf (trace "X" ((MkLeveledHaskType (trace "X" (tbranches)) (trace "X" (lev))))) (trace "X" ((ECase (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03be_0)) (trace "X" (lev)) (trace "X" (tc)) (trace "X" (tbranches)) (trace "X" (avars)) (trace "X" ((trace "X" ((ileaf (trace "X" ((MkLeveledHaskType (trace "X" ((\_ -> (trace "X" ((trace "X" (caseType (trace "X" (__U0393_0)) (trace "X" (tc)) (trace "X" (avars))))))))) (trace "X" (lev))))) (trace "X" (x4))))))) (trace "X" (y))))))))))))))))))))))))))))))))))))))}))))))) (trace "X" (it2))))))))) (trace "X" (it1)) (trace "X" (__))))))} + in + (trace "X" ((trace "X" (unsafeCoerce (trace "X" (h0)) (trace "X" (x)) (trace "X" (x0))))))))}))))))))))})) + +closed2expr :: (EqDecidable a1) -> (FreshMonad a1) -> (Tree (Prelude.Maybe Judg)) -> (ClosedSIND Judg Rule) -> ITree Judg (Judg2exprType a1) +closed2expr eqdec_vv freshM j pn = + (trace "X" (case (trace "X" (pn)) of { + Cnd_weak -> (trace "X" (INone)); + Cnd_rule h c cnd' r -> (trace "X" ((trace "X" (rule2expr (trace "X" (eqdec_vv)) (trace "X" (freshM)) (trace "X" (h)) (trace "X" (c)) (trace "X" (r)) (trace "X" ((trace "X" ((closed2expr (trace "X" (eqdec_vv)) (trace "X" (freshM)) (trace "X" (h)) (trace "X" (cnd'))))))))))); + Cnd_branch c0 c3 c1 c2 -> (trace "X" (IBranch (trace "X" (c0)) (trace "X" (c3)) (trace "X" ((trace "X" ((closed2expr (trace "X" (eqdec_vv)) (trace "X" (freshM)) (trace "X" (c0)) (trace "X" (c1))))))) (trace "X" ((trace "X" ((closed2expr (trace "X" (eqdec_vv)) (trace "X" (freshM)) (trace "X" (c3)) (trace "X" (c2)))))))))})) + +manyFresh :: (EqDecidable a1) -> (FreshMonad a1) -> TypeEnv -> (Tree (Prelude.Maybe LeveledHaskType)) -> (a1 -> LeveledHaskType) -> FreshM a1 (SigT (Tree (Prelude.Maybe a1)) (SigT (a1 -> LeveledHaskType) ())) +manyFresh eqdec_vv freshM __U0393_0 __U03a3_ = + (trace "X" ((trace "X" (tree_rect (trace "X" ((\a __U03be_0 -> + (trace "X" (case (trace "X" (a)) of { + Prelude.Just l -> (trace "X" (case (trace "X" (l)) of { + MkLeveledHaskType __U03c4_ l0 -> (trace "X" (let {q = (trace "X" ((trace "X" (fresh_lemma' (trace "X" (eqdec_vv)) (trace "X" (freshM)) (trace "X" (__U0393_0)) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (__U03c4_)))))))) (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing))))) (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing))))) (trace "X" (__U03be_0)) (trace "X" (l0))))))} in (trace "X" ((trace "X" (bindM (trace "X" ((trace "X" ((freshMon (trace "X" (freshM))))))) (trace "X" (q)) (trace "X" ((\q' -> (trace "X" ((trace "X" (returnM (trace "X" ((trace "X" ((freshMon (trace "X" (freshM))))))) (trace "X" ((ExistT (trace "X" ((trace "X" ((mapOptionTree (trace "X" (fst)) (trace "X" (q'))))))) (trace "X" ((ExistT (trace "X" ((trace "X" ((update___U03be_ (trace "X" (eqdec_vv)) (trace "X" (__U0393_0)) (trace "X" (__U03be_0)) (trace "X" (l0)) (trace "X" ((trace "X" ((leaves (trace "X" (q')))))))))))) (trace "X" (__)))))))))))))))))))))})); + Prelude.Nothing -> (trace "X" ((trace "X" (returnM (trace "X" ((trace "X" ((freshMon (trace "X" (freshM))))))) (trace "X" ((ExistT (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing))))) (trace "X" ((ExistT (trace "X" (__U03be_0)) (trace "X" (__))))))))))))}))))) (trace "X" ((\__U03a3_1 iH__U03a3_1 __U03a3_2 iH__U03a3_2 __U03be_0 -> + (trace "X" ((trace "X" (bindM (trace "X" ((trace "X" ((freshMon (trace "X" (freshM))))))) (trace "X" ((trace "X" ((iH__U03a3_1 (trace "X" (__U03be_0))))))) (trace "X" ((\f1 -> + (trace "X" (case (trace "X" (f1)) of { + ExistT vars1 s -> + (trace "X" (case (trace "X" (s)) of { + ExistT __U03be_1 _ -> + (trace "X" ((trace "X" (bindM (trace "X" ((trace "X" ((freshMon (trace "X" (freshM))))))) (trace "X" ((trace "X" ((iH__U03a3_2 (trace "X" (__U03be_1))))))) (trace "X" ((\f2 -> + (trace "X" (case (trace "X" (f2)) of { + ExistT vars2 s0 -> (trace "X" (case (trace "X" (s0)) of { + ExistT __U03be_2 _ -> (trace "X" ((trace "X" (returnM (trace "X" ((trace "X" ((freshMon (trace "X" (freshM))))))) (trace "X" ((ExistT (trace "X" ((T_Branch (trace "X" (vars1)) (trace "X" (vars2))))) (trace "X" ((ExistT (trace "X" (__U03be_2)) (trace "X" (__))))))))))))}))})))))))))}))})))))))))))) (trace "X" (__U03a3_)))))) + +proof2expr :: (EqDecidable a1) -> (FreshMonad a1) -> TypeEnv -> CoercionEnv -> LeveledHaskType -> (Tree (Prelude.Maybe LeveledHaskType)) -> (a1 -> LeveledHaskType) -> (ToString a1) -> (ND Judg Rule) -> FreshM a1 (OrError (SigT (a1 -> LeveledHaskType) (Expr a1))) +proof2expr eqdec_vv freshM __U0393_0 __U0394_0 __U03c4_ __U03a3_ __U03be_0 zz pf = + (trace "X" (let {cnd = (trace "X" ((trace "X" (closedFromSIND (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" (__U03a3_)) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (__U03c4_))))))))))))))))) (trace "X" ((trace "X" ((mkSIND (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" (__U03a3_)) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (__U03c4_))))))))))))))))) (trace "X" (pf)) (trace "X" ((Scnd_weak (trace "X" ((T_Leaf (trace "X" (Prelude.Nothing))))))))))))) (trace "X" (Cnd_weak))))))} in + (trace "X" (let {cnd0 = (trace "X" ((trace "X" (closed2expr (trace "X" (eqdec_vv)) (trace "X" (freshM)) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkJudg (trace "X" (__U0393_0)) (trace "X" (__U0394_0)) (trace "X" (__U03a3_)) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" (__U03c4_))))))))))))))))) (trace "X" (cnd))))))} in + (trace "X" (let {cnd1 = (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" (__U03c4_))))))))))) (trace "X" (cnd0))))))} in + (trace "X" ((trace "X" (bindM (trace "X" ((trace "X" ((freshMon (trace "X" (freshM))))))) (trace "X" ((trace "X" ((manyFresh (trace "X" (eqdec_vv)) (trace "X" (freshM)) (trace "X" (__U0393_0)) (trace "X" (__U03a3_)) (trace "X" (__U03be_0))))))) (trace "X" ((\__U03be_vars -> + (trace "X" (case (trace "X" (__U03be_vars)) of { + ExistT vars __U03be_pf -> (trace "X" (case (trace "X" (__U03be_pf)) of { + ExistT __U03be_1 _ -> (trace "X" ((trace "X" (bindM (trace "X" ((trace "X" ((freshMon (trace "X" (freshM))))))) (trace "X" ((trace "X" ((unsafeCoerce (trace "X" (cnd1)) (trace "X" (__U03be_1)) (trace "X" (vars)) (trace "X" (__))))))) (trace "X" ((\it -> (trace "X" ((trace "X" (returnM (trace "X" ((trace "X" ((freshMon (trace "X" (freshM))))))) (trace "X" ((OK (trace "X" ((ExistT (trace "X" (__U03be_1)) (trace "X" ((trace "X" ((ileaf (trace "X" (__U03c4_)) (trace "X" (it))))))))))))))))))))))))}))}))))))))))))))) + +__U0393_ :: TypeEnv +__U0393_ = + (trace "X" (([]))) + +__U0394_ :: CoercionEnv +__U0394_ = + (trace "X" (([]))) + +__U03c6_ :: TyVarResolver +__U03c6_ cv = + (trace "X" (Error (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (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" ('t')) (trace "X" (((:) (trace "X" ('y')) (trace "X" (((:) (trace "X" ('v')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" (':')) (trace "X" (((:) (trace "X" (' ')) (trace "X" ([]))))))))))))))))))))))))))))))))))))))))))))))) (trace "X" ((trace "X" ((toString (trace "X" (coreVarToString)) (trace "X" ((trace "X" ((weakVarToCoreVar (trace "X" ((WTypeVar (trace "X" (cv)))))))))))))))))))))) + +__U03c8_ :: CoVarResolver +__U03c8_ cv = + (trace "X" (Error (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('g')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('h')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('v')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('f')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" (' ')) (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" ('c')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('v')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('!')) (trace "X" ([])))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) + +__U03be_ :: Var.Var -> LeveledHaskType +__U03be_ cv = + (trace "X" (case (trace "X" ((trace "X" (coreVarToWeakVar (trace "X" (cv)))))) of { + WExprVar wev -> + (trace "X" (case (trace "X" ((trace "X" (weakTypeToTypeOfKind (trace "X" (__U0393_)) (trace "X" (__U03c6_)) (trace "X" ((trace "X" ((weakExprVarToWeakType (trace "X" (wev))))))) (trace "X" (KindStar)))))) of { + Error s -> (trace "X" ((trace "X" (Prelude.error (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" (((:) (trace "X" ('E')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('v')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('g')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('w')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('k')) (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" ('o')) (trace "X" (((:) (trace "X" ('f')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('p')) (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" ('v')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('b')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" (' ')) (trace "X" ([])))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) (trace "X" ((trace "X" ((toString (trace "X" (coreVarToString)) (trace "X" (cv)))))))))))) (trace "X" (((:) (trace "X" (':')) (trace "X" (((:) (trace "X" (' ')) (trace "X" ([]))))))))))))) (trace "X" (s))))))))))); + OK t -> (trace "X" (MkLeveledHaskType (trace "X" (t)) (trace "X" (([])))))})); + WTypeVar w -> (trace "X" ((trace "X" (Prelude.error (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('p')) (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" ('x')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('g')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('a')) (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" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('v')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('b')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('e')) (trace "X" ([])))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))); + WCoerVar w -> (trace "X" ((trace "X" (Prelude.error (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('p')) (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" ('x')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('g')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('a')) (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" ('v')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('b')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('e')) (trace "X" ([]))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))})) + +header :: Prelude.String +header = + (trace "X" ((trace "X" (concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" (((:) (trace "X" ('\\')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('m')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('{')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('}')) (trace "X" ([]))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) (trace "X" (eol))))))) (trace "X" (((:) (trace "X" ('\\')) (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('k')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('g')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('{')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('m')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('m')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('h')) (trace "X" (((:) (trace "X" ('}')) (trace "X" ([]))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) (trace "X" (eol))))))) (trace "X" (((:) (trace "X" ('\\')) (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('k')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('g')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('{')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('m')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('y')) (trace "X" (((:) (trace "X" ('m')) (trace "X" (((:) (trace "X" ('b')) (trace "X" (((:) (trace "X" ('}')) (trace "X" ([]))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) (trace "X" (eol))))))) (trace "X" (((:) (trace "X" ('\\')) (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('k')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('g')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('{')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('f')) (trace "X" (((:) (trace "X" ('}')) (trace "X" ([]))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) (trace "X" (eol))))))) (trace "X" (((:) (trace "X" ('\\')) (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('k')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('g')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('{')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('f')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('}')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('%')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('h')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" (':')) (trace "X" (((:) (trace "X" ('/')) (trace "X" (((:) (trace "X" ('/')) (trace "X" (((:) (trace "X" ('w')) (trace "X" (((:) (trace "X" ('w')) (trace "X" (((:) (trace "X" ('w')) (trace "X" (((:) (trace "X" ('.')) (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('.')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('/')) (trace "X" (((:) (trace "X" ('~')) (trace "X" (((:) (trace "X" ('h')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('m')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('/')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('f')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('.')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('y')) (trace "X" ([]))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) (trace "X" (eol))))))) (trace "X" (((:) (trace "X" ('\\')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('f')) (trace "X" (((:) (trace "X" ('\\')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('#')) (trace "X" (((:) (trace "X" ('1')) (trace "X" (((:) (trace "X" ('#')) (trace "X" (((:) (trace "X" ('2')) (trace "X" (((:) (trace "X" ('{')) (trace "X" (((:) (trace "X" ('\\')) (trace "X" (((:) (trace "X" ('B')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('x')) (trace "X" (((:) (trace "X" ('_')) (trace "X" (((:) (trace "X" ('{')) (trace "X" (((:) (trace "X" ('#')) (trace "X" (((:) (trace "X" ('1')) (trace "X" (((:) (trace "X" ('}')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('#')) (trace "X" (((:) (trace "X" ('2')) (trace "X" (((:) (trace "X" ('}')) (trace "X" ([])))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) (trace "X" (eol))))))) (trace "X" (((:) (trace "X" ('\\')) (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('k')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('g')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('[')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('w')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('h')) (trace "X" (((:) (trace "X" ('=')) (trace "X" (((:) (trace "X" ('\\')) (trace "X" (((:) (trace "X" ('m')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('x')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('m')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" (',')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('h')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('g')) (trace "X" (((:) (trace "X" ('h')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('=')) (trace "X" (((:) (trace "X" ('\\')) (trace "X" (((:) (trace "X" ('m')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('x')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('m')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" (']')) (trace "X" (((:) (trace "X" ('{')) (trace "X" (((:) (trace "X" ('g')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('m')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('y')) (trace "X" (((:) (trace "X" ('}')) (trace "X" ([])))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) (trace "X" (eol))))))) (trace "X" (((:) (trace "X" ('\\')) (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('k')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('g')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('[')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('g')) (trace "X" (((:) (trace "X" ('h')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('g')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" (',')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('v')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" (']')) (trace "X" (((:) (trace "X" ('{')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('v')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('w')) (trace "X" (((:) (trace "X" ('}')) (trace "X" ([]))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) (trace "X" (eol))))))) (trace "X" (((:) (trace "X" ('\\')) (trace "X" (((:) (trace "X" ('b')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('g')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('{')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('m')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('}')) (trace "X" ([]))))))))))))))))))))))))))))))))))))))))))))))))))))))) (trace "X" (eol))))))) (trace "X" (((:) (trace "X" ('\\')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('g')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('h')) (trace "X" (((:) (trace "X" ('\\')) (trace "X" (((:) (trace "X" ('P')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('v')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('w')) (trace "X" (((:) (trace "X" ('B')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('{')) (trace "X" (((:) (trace "X" ('5')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('}')) (trace "X" ([])))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) (trace "X" (eol)))))) + +footer :: Prelude.String +footer = + (trace "X" ((trace "X" (concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" (eol)) (trace "X" (((:) (trace "X" ('\\')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" ('{')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" ('o')) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('u')) (trace "X" (((:) (trace "X" ('m')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('}')) (trace "X" ([]))))))))))))))))))))))))))))))))))))))))))))))))) (trace "X" (eol)))))) + +coreToStringExpr' :: (CoreSyn.Expr Var.Var) -> OrError Prelude.String +coreToStringExpr' ce = + (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" (ce)))))))))))) (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" (ce))))))))))))))))) (trace "X" ((trace "X" ((orErrorBind (trace "X" ((trace "X" ((coreExprToWeakExpr (trace "X" (ce))))))) (trace "X" ((\we -> (trace "X" ((trace "X" (addErrorMessage (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" (((:) (trace "X" ('W')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('k')) (trace "X" (((:) (trace "X" ('E')) (trace "X" (((:) (trace "X" ('x')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" (':')) (trace "X" (((:) (trace "X" (' ')) (trace "X" ([])))))))))))))))))))))))))))))))) (trace "X" ((trace "X" ((toString (trace "X" (weakExprToString)) (trace "X" (we)))))))))))) (trace "X" ((trace "X" ((addErrorMessage (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (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" ('o')) (trace "X" (((:) (trace "X" ('f')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('W')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('k')) (trace "X" (((:) (trace "X" ('E')) (trace "X" (((:) (trace "X" ('x')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('r')) (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" ((trace "X" ((weakExprToCoreExpr (trace "X" (we)))))))))))))))))))))) (trace "X" ((trace "X" ((orErrorBind (trace "X" ((trace "X" ((weakTypeOfWeakExpr (trace "X" (we))))))) (trace "X" ((\t -> (trace "X" ((trace "X" (addErrorMessage (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" (((:) (trace "X" ('W')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('k')) (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" (weakTypeToString)) (trace "X" (t)))))))))))) (trace "X" ((trace "X" ((orErrorBind (trace "X" ((trace "X" ((weakTypeToTypeOfKind (trace "X" (__U0393_)) (trace "X" (__U03c6_)) (trace "X" (t)) (trace "X" (KindStar))))))) (trace "X" ((\__U03c4_ -> (trace "X" ((trace "X" (addErrorMessage (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" (((:) (trace "X" ('H')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('k')) (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" ((trace "X" ((typeToStringInstance (trace "X" (__U0393_)) (trace "X" (KindStar))))))) (trace "X" (__U03c4_)))))))))))) (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.False))))) (trace "X" (__U03c4_)) (trace "X" (([]))) (trace "X" (we))))))) (trace "X" ((\e -> (trace "X" (OK (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" (eol)) (trace "X" (eol))))))) (trace "X" (eol))))))) (trace "X" (((:) (trace "X" ('\\')) (trace "X" (((:) (trace "X" ('b')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('g')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('{')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('v')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('w')) (trace "X" (((:) (trace "X" ('}')) (trace "X" ([])))))))))))))))))))))))))))))))))))))))))))))))))))) (trace "X" (eol))))))) (trace "X" (((:) (trace "X" ('$')) (trace "X" (((:) (trace "X" ('\\')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('y')) (trace "X" (((:) (trace "X" ('s')) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('y')) (trace "X" (((:) (trace "X" ('l')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" (' ')) (trace "X" ([])))))))))))))))))))))))))))))))))))))))))))))))))))) (trace "X" ((trace "X" ((toString (trace "X" (latexMathToString)) (trace "X" ((trace "X" ((nd_ml_toLatexMath (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" ((MkLeveledHaskType (trace "X" (__U03c4_)) (trace "X" (([])))))) (trace "X" (e)))))))))))) (trace "X" ((T_Leaf (trace "X" ((Prelude.Just (trace "X" ((MkLeveledHaskType (trace "X" (__U03c4_)) (trace "X" (([]))))))))))))))))))))) (trace "X" ((trace "X" ((expr2proof (trace "X" (coreVarEqDecidable)) (trace "X" (__U0393_)) (trace "X" (__U0394_)) (trace "X" (__U03be_)) (trace "X" ((MkLeveledHaskType (trace "X" (__U03c4_)) (trace "X" (([])))))) (trace "X" (e)))))))))))))))))))))) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('$')) (trace "X" ([]))))))))))))) (trace "X" (eol))))))) (trace "X" (((:) (trace "X" ('\\')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('n')) (trace "X" (((:) (trace "X" ('d')) (trace "X" (((:) (trace "X" ('{')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('v')) (trace "X" (((:) (trace "X" ('i')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('w')) (trace "X" (((:) (trace "X" ('}')) (trace "X" ([])))))))))))))))))))))))))))))))))))))))))))))) (trace "X" (eol))))))) (trace "X" (eol))))))) (trace "X" (eol))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) + +coreToStringExpr :: (CoreSyn.Expr Var.Var) -> Prelude.String +coreToStringExpr ce = + (trace "X" (case (trace "X" ((trace "X" (coreToStringExpr' (trace "X" (ce)))))) of { + Error s -> (trace "X" ((trace "X" (Prelude.error (trace "X" (s)))))); + OK x -> (trace "X" (x))})) + +coreToStringBind :: (CoreSyn.Bind Var.Var) -> Prelude.String +coreToStringBind binds = + (trace "X" (case (trace "X" (binds)) of { + CoreSyn.NonRec c e -> (trace "X" ((trace "X" (coreToStringExpr (trace "X" (e)))))); + CoreSyn.Rec lbe -> (trace "X" ((trace "X" (fold_left (trace "X" ((\x y -> (trace "X" ((trace "X" (concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" (x)) (trace "X" (eol))))))) (trace "X" (eol))))))) (trace "X" (y))))))))) (trace "X" ((trace "X" ((map (trace "X" ((\x -> (trace "X" ((trace "X" (coreToStringExpr (trace "X" ((trace "X" ((snd (trace "X" (x)))))))))))))) (trace "X" (lbe))))))) (trace "X" ([]))))))})) + +coqPassCoreToString :: (([]) (CoreSyn.Bind Var.Var)) -> Prelude.String +coqPassCoreToString lbinds = + (trace "X" ((trace "X" (concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" (header)) (trace "X" ((trace "X" ((fold_left (trace "X" ((\x y -> (trace "X" ((trace "X" (concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" (x)) (trace "X" (eol))))))) (trace "X" (eol))))))) (trace "X" (y))))))))) (trace "X" ((trace "X" ((map (trace "X" (coreToStringBind)) (trace "X" (lbinds))))))) (trace "X" ([])))))))))))) (trace "X" (footer)))))) + +mkWeakTypeVar0 :: Unique.Unique -> Kind -> WeakTypeVar0 +mkWeakTypeVar0 u k = + (trace "X" (WeakTypeVar (trace "X" ((trace "X" (((\n k -> Var.mkTyVar n (kindToCoreKind k)) (trace "X" ((trace "X" (((\u s d -> Name.mkSystemName u (OccName.mkOccName (OccName.varNameDepth (nat2int d)) s)) (trace "X" (u)) (trace "X" (((:) (trace "X" ('t')) (trace "X" (((:) (trace "X" ('v')) (trace "X" ([])))))))) (trace "X" (O))))))) (trace "X" (k))))))) (trace "X" (k)))) + +mkWeakCoerVar0 :: Unique.Unique -> Kind -> WeakType -> WeakType -> WeakCoerVar0 +mkWeakCoerVar0 u k t1 t2 = + (trace "X" (WeakCoerVar (trace "X" ((trace "X" (((\n t1 t2 -> Var.mkCoVar n (Coercion.mkCoKind t1 t2)) (trace "X" ((trace "X" (((\u s d -> Name.mkSystemName u (OccName.mkOccName (OccName.varNameDepth (nat2int d)) s)) (trace "X" (u)) (trace "X" (((:) (trace "X" ('c')) (trace "X" (((:) (trace "X" ('v')) (trace "X" ([])))))))) (trace "X" (O))))))) (trace "X" ((trace "X" ((weakTypeToCoreType (trace "X" (t1))))))) (trace "X" ((trace "X" ((weakTypeToCoreType (trace "X" (t2)))))))))))) (trace "X" (k)) (trace "X" (t1)) (trace "X" (t2)))) + +mkWeakExprVar0 :: Unique.Unique -> WeakType -> WeakExprVar0 +mkWeakExprVar0 u t = + (trace "X" (WeakExprVar (trace "X" ((trace "X" ((Id.mkLocalId (trace "X" ((trace "X" (((\u s d -> Name.mkSystemName u (OccName.mkOccName (OccName.varNameDepth (nat2int d)) s)) (trace "X" (u)) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('v')) (trace "X" ([])))))))) (trace "X" (O))))))) (trace "X" ((trace "X" ((weakTypeToCoreType (trace "X" (t)))))))))))) (trace "X" (t)))) + +larger :: (([]) Nat) -> SigT Nat () +larger ln = + (trace "X" ((trace "X" (list_rec (trace "X" ((ExistT (trace "X" (O)) (trace "X" (__))))) (trace "X" ((\a ln0 iHln -> (trace "X" (case (trace "X" (iHln)) of { + ExistT n _ -> (trace "X" (ExistT (trace "X" ((trace "X" ((plus (trace "X" ((S (trace "X" (n))))) (trace "X" (a))))))) (trace "X" (__))))}))))) (trace "X" (ln)))))) + +freshNat :: FreshMonad Nat +freshNat = + (trace "X" (Build_FreshMonad (trace "X" ((Build_Monad (trace "X" ((\_ v -> (trace "X" (unsafeCoerce (trace "X" ((\n -> (trace "X" ((,) (trace "X" (n)) (trace "X" (v)))))))))))) (trace "X" ((\_ _ x x0 -> (trace "X" (unsafeCoerce (trace "X" ((\h -> (trace "X" (let {q = (trace "X" ((trace "X" (unsafeCoerce (trace "X" (x)) (trace "X" (h))))))} in (trace "X" (case (trace "X" (q)) of { + (,) n' v -> (trace "X" ((trace "X" (unsafeCoerce (trace "X" (x0)) (trace "X" (v)) (trace "X" (n'))))))}))))))))))))))) (trace "X" ((\tl -> (trace "X" (unsafeCoerce (trace "X" ((\h -> (trace "X" ((,) (trace "X" ((S (trace "X" (h))))) (trace "X" ((let {q = (trace "X" ((trace "X" (larger (trace "X" (tl))))))} in (trace "X" (case (trace "X" (q)) of { + ExistT n' _ -> (trace "X" (ExistT (trace "X" (n')) (trace "X" (__))))}))))))))))))))))) + +coreToCoreExpr' :: WeakExprVar0 -> WeakExprVar0 -> UniqSupply.UniqSupply -> (CoreSyn.Expr Var.Var) -> OrError (CoreSyn.Expr Var.Var) +coreToCoreExpr' hetmet_brak hetmet_esc uniqueSupply ce = + (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" (ce)))))))))))) (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" (ce))))))))))))))))) (trace "X" ((trace "X" ((orErrorBind (trace "X" ((trace "X" ((coreExprToWeakExpr (trace "X" (ce))))))) (trace "X" ((\we -> (trace "X" ((trace "X" (addErrorMessage (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" (((:) (trace "X" ('W')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('k')) (trace "X" (((:) (trace "X" ('E')) (trace "X" (((:) (trace "X" ('x')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('r')) (trace "X" (((:) (trace "X" (':')) (trace "X" (((:) (trace "X" (' ')) (trace "X" ([])))))))))))))))))))))))))))))))) (trace "X" ((trace "X" ((toString (trace "X" (weakExprToString)) (trace "X" (we)))))))))))) (trace "X" ((trace "X" ((addErrorMessage (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (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" ('o')) (trace "X" (((:) (trace "X" ('f')) (trace "X" (((:) (trace "X" (' ')) (trace "X" (((:) (trace "X" ('W')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('k')) (trace "X" (((:) (trace "X" ('E')) (trace "X" (((:) (trace "X" ('x')) (trace "X" (((:) (trace "X" ('p')) (trace "X" (((:) (trace "X" ('r')) (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" ((trace "X" ((weakExprToCoreExpr (trace "X" (we)))))))))))))))))))))) (trace "X" ((trace "X" ((orErrorBind (trace "X" ((trace "X" ((weakTypeOfWeakExpr (trace "X" (we))))))) (trace "X" ((\t -> (trace "X" ((trace "X" (addErrorMessage (trace "X" ((trace "X" ((concatenate (trace "X" (concatenableString)) (trace "X" (((:) (trace "X" ('W')) (trace "X" (((:) (trace "X" ('e')) (trace "X" (((:) (trace "X" ('a')) (trace "X" (((:) (trace "X" ('k')) (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" (weakTypeToString)) (trace "X" (t)))))))))))) (trace "X" ((trace "X" ((orErrorBind (trace "X" ((trace "X" ((weakTypeToTypeOfKind (trace "X" (__U0393_)) (trace "X" (__U03c6_)) (trace "X" (t)) (trace "X" (KindStar))))))) (trace "X" ((\__U03c4_ -> (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" ((let {haskProof = (trace "X" ((trace "X" (expr2proof (trace "X" (coreVarEqDecidable)) (trace "X" (__U0393_)) (trace "X" (__U0394_)) (trace "X" (__U03be_)) (trace "X" ((MkLeveledHaskType (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" ((MkLeveledHaskType (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" ((MkLeveledHaskType (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" (hetmet_brak)) (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" ((MkLeveledHaskType (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 :: WeakExprVar0 -> WeakExprVar0 -> UniqSupply.UniqSupply -> (CoreSyn.Expr Var.Var) -> CoreSyn.Expr Var.Var +coreToCoreExpr hetmet_brak hetmet_esc uniqueSupply ce = + (trace "X" (case (trace "X" ((trace "X" (coreToCoreExpr' (trace "X" (hetmet_brak)) (trace "X" (hetmet_esc)) (trace "X" (uniqueSupply)) (trace "X" (ce)))))) of { + Error s -> (trace "X" ((trace "X" (Prelude.error (trace "X" (s)))))); + OK x -> (trace "X" (x))})) + +coreToCoreBind :: WeakExprVar0 -> WeakExprVar0 -> UniqSupply.UniqSupply -> (CoreSyn.Bind Var.Var) -> CoreSyn.Bind Var.Var +coreToCoreBind hetmet_brak hetmet_esc uniqueSupply binds = + (trace "X" (case (trace "X" (binds)) of { + CoreSyn.NonRec v e -> (trace "X" (CoreSyn.NonRec (trace "X" (v)) (trace "X" ((trace "X" ((coreToCoreExpr (trace "X" (hetmet_brak)) (trace "X" (hetmet_esc)) (trace "X" (uniqueSupply)) (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" (hetmet_brak)) (trace "X" (hetmet_esc)) (trace "X" (uniqueSupply)) (trace "X" (e)))))))))}))))) (trace "X" (lbe)))))))))})) + +coqPassCoreToCore' :: WeakExprVar0 -> WeakExprVar0 -> UniqSupply.UniqSupply -> (([]) (CoreSyn.Bind Var.Var)) -> ([]) (CoreSyn.Bind Var.Var) +coqPassCoreToCore' hetmet_brak hetmet_esc uniqueSupply lbinds = + (trace "X" ((trace "X" (map (trace "X" ((trace "X" ((coreToCoreBind (trace "X" (hetmet_brak)) (trace "X" (hetmet_esc)) (trace "X" (uniqueSupply))))))) (trace "X" (lbinds)))))) + +coqPassCoreToCore :: Var.Var -> Var.Var -> UniqSupply.UniqSupply -> (([]) (CoreSyn.Bind Var.Var)) -> ([]) (CoreSyn.Bind Var.Var) +coqPassCoreToCore hetmet_brak hetmet_esc uniqueSupply lbinds = + (trace "X" (case (trace "X" ((trace "X" (coreVarToWeakVar (trace "X" (hetmet_brak)))))) of { + WExprVar hetmet_brak' -> + (trace "X" (case (trace "X" ((trace "X" (coreVarToWeakVar (trace "X" (hetmet_esc)))))) of { + WExprVar hetmet_esc' -> (trace "X" ((trace "X" (coqPassCoreToCore' (trace "X" (hetmet_brak')) (trace "X" (hetmet_esc')) (trace "X" (uniqueSupply)) (trace "X" (lbinds)))))); + _ -> (trace "X" ((trace "X" (Prelude.error (trace "X" (((:) (trace "X" ('I')) (trace "X" (((:) (trace "X" ('M')) (trace "X" (((:) (trace "X" ('P')) (trace "X" (((:) (trace "X" ('O')) (trace "X" (((:) (trace "X" ('S')) (trace "X" (((:) (trace "X" ('S')) (trace "X" (((:) (trace "X" ('I')) (trace "X" (((:) (trace "X" ('B')) (trace "X" (((:) (trace "X" ('L')) (trace "X" (((:) (trace "X" ('E')) (trace "X" ([]))))))))))))))))))))))))))))))))))))})); + _ -> (trace "X" ((trace "X" (Prelude.error (trace "X" (((:) (trace "X" ('I')) (trace "X" (((:) (trace "X" ('M')) (trace "X" (((:) (trace "X" ('P')) (trace "X" (((:) (trace "X" ('O')) (trace "X" (((:) (trace "X" ('S')) (trace "X" (((:) (trace "X" ('S')) (trace "X" (((:) (trace "X" ('I')) (trace "X" (((:) (trace "X" ('B')) (trace "X" (((:) (trace "X" ('L')) (trace "X" (((:) (trace "X" ('E')) (trace "X" ([]))))))))))))))))))))))))))))))))))))})) + -- 1.7.10.4