packages feed

uhc-light-1.1.7.2: src/UHC/Light/Compiler/Core/Trf/AnaRelevance.hs


-- UUAGC 0.9.50.2 (build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRe)
module UHC.Light.Compiler.Core.Trf.AnaRelevance(cmodTrfAnaRelevance) where

import UHC.Light.Compiler.Ty
import UHC.Light.Compiler.Base.Common
import UHC.Light.Compiler.Base.TermLike
import UHC.Light.Compiler.Base.HsName.Builtin
import UHC.Light.Compiler.Gam
import UHC.Light.Compiler.Opts
import UHC.Light.Compiler.Base.Optimize
import UHC.Light.Compiler.Core
import UHC.Light.Compiler.VarMp
import UHC.Light.Compiler.Substitutable
import Data.Maybe
import qualified Data.Map as Map
import qualified Data.Set as Set
import Control.Applicative
import UHC.Util.Utils
import UHC.Light.Compiler.Foreign.Extract
import UHC.Light.Compiler.AbstractCore
import UHC.Light.Compiler.AnaDomain
import UHC.Light.Compiler.AnaDomain.Utils
import UHC.Light.Compiler.Gam
import UHC.Light.Compiler.Gam.DataGam
import UHC.Light.Compiler.LamInfo
import UHC.Light.Compiler.AnaDomain.Trf.Instantiate
import UHC.Light.Compiler.Base.Debug
import UHC.Util.Pretty
import UHC.Light.Compiler.AnaDomain.Pretty
import UHC.Light.Compiler.CodeGen.BuiltinPrims
import UHC.Light.Compiler.Foreign






















cmodTrfAnaRelevance
  :: EHCOpts
     -> DataGam
     -> LamMp
     -> CModule
     -> ( CModule
        , LamMp
        )
cmodTrfAnaRelevance
     opts dataGam
     lamMp
     cmod
  =  let  t = wrap_CodeAGItf (sem_CodeAGItf (CodeAGItf_AGItf cmod))
                             (Inh_CodeAGItf
                               { opts_Inh_CodeAGItf = opts
                               , dataGam_Inh_CodeAGItf = dataGam
                               , lamMp_Inh_CodeAGItf = lamMp
                               })
     in   ( cTrf_Syn_CodeAGItf t
          , gathLamMp_Syn_CodeAGItf t
          )



data WhatToRelevInfer
  = WhatToRelevInfer_InstToBot			-- specialize/instantiate types to bot (strict)
  | WhatToRelevInfer_Quant				-- quantify
  deriving Eq



type REnv    = Gam HsName RelevTy

-- | lookup in REnv first, then global LamMp
renvLookup :: HsName -> REnv -> LamMp -> Maybe RelevTy
renvLookup n renv lammp = gamLookup n renv <|> (fmap libindaspRelevTy $ lamMpLookupAsp n acbaspkeyDefaultRelevTy lammp)



dbg opts t1 t2 amso ams = CExpr_Ann (CExprAnn_Debug $ showPP $ "?:" >#< t1 >#< "<=" >#< t2 >-< "ams:" >#< ams >-< "amso:" >#< amso)
dbgApp opts a f f2 = CExpr_Ann (CExprAnn_Debug $ showPP $ "argTy:" >#< a >#< "funTy:" >#< f >#< "func.ty:" >#< f2)
dbgBind opts m env = CExpr_Ann (CExprAnn_Debug $ showPP $ "env:" >#< (m `varUpd` env))
dbgCase opts bnd as asslv asinter = CExpr_Ann (CExprAnn_Debug $ showPP $ "bnd:" >#< pp1 bnd >-< "altQualSL:" >#< ppl as >-< "altQualSLSlv:" >#< ppl asslv >-< "altQualSLInt:" >#< pp1 asinter)
  where pp1 s = ppParensCommas $ Set.toList s
        ppl l = ppCurlysCommasBlock (map pp1 l)



annCoe :: RelevCoe -> CExpr -> CExpr
annCoe RelevCoe_Id e =                            e
annCoe c           e = CExpr_Ann (CExprAnn_Coe c) e

-- CAlt --------------------------------------------------------
{-
   visit 0:
      inherited attributes:
         boundRelevTyVarS     : UIDS
         dataGam              : DataGam
         env                  : REnv
         evalCtx              : EvalCtx
         finalRVarMp          : RVarMp
         knTy                 : RelevTy
         knTyCase             : RelevTy
         lamMp                : LamMp
         lev                  : Int
         opts                 : EHCOpts
         whatTo               : [WhatToRelevInfer]
      chained attributes:
         gUniq                : UID
         rvarMp               : RVarMp
      synthesized attributes:
         cTrf                 : CAlt 
         coe                  : RelevCoe
         fvS                  : FvS
         mbCTag               : Maybe CTag
         oTrf                 : CAlt 
         qualS                : RelevQualS
   alternatives:
      alternative Alt:
         child pat            : CPat 
         child expr           : CExpr 
         visit 0:
            local fvS         : _
            local whatAbove   : {WhatExpr}
            local lev         : _
            local mbCTagEnv   : _
            local patFldGivenTyL : _
            local patFldUsedTyL : {[RelevTy]}
            local patEnv      : _
            local altMbScrutTy : _
            local _tup1       : _
            local lUniq       : {UID}
            local lUniq2      : {UID}
            local lUniq3      : {UID}
            local cTrf        : _
            local oTrf        : _
-}
-- cata
sem_CAlt :: CAlt ->
            T_CAlt
sem_CAlt (CAlt_Alt _pat _expr) =
    (sem_CAlt_Alt (sem_CPat _pat) (sem_CExpr _expr))
-- semantic domain
type T_CAlt = UIDS ->
              DataGam ->
              REnv ->
              EvalCtx ->
              RVarMp ->
              UID ->
              RelevTy ->
              RelevTy ->
              LamMp ->
              Int ->
              EHCOpts ->
              RVarMp ->
              ([WhatToRelevInfer]) ->
              ( CAlt,RelevCoe,FvS,UID,(Maybe CTag),CAlt,RelevQualS,RVarMp)
sem_CAlt_Alt :: T_CPat ->
                T_CExpr ->
                T_CAlt
sem_CAlt_Alt pat_ expr_ =
    (\ _lhsIboundRelevTyVarS
       _lhsIdataGam
       _lhsIenv
       _lhsIevalCtx
       _lhsIfinalRVarMp
       _lhsIgUniq
       _lhsIknTy
       _lhsIknTyCase
       _lhsIlamMp
       _lhsIlev
       _lhsIopts
       _lhsIrvarMp
       _lhsIwhatTo ->
         (let _exprOisTopApp :: Bool
              _exprOisTopTup :: Bool
              _whatAbove :: WhatExpr
              _patFldUsedTyL :: ([RelevTy])
              _patOpatFldTyL :: ([(RelevTy,RelevTy)])
              _exprOenv :: REnv
              _patOgUniq :: UID
              _lUniq :: UID
              _lUniq2 :: UID
              _lUniq3 :: UID
              _lhsOfvS :: FvS
              _lhsOqualS :: RelevQualS
              _lhsOcTrf :: CAlt
              _lhsOoTrf :: CAlt
              _lhsOcoe :: RelevCoe
              _lhsOgUniq :: UID
              _lhsOmbCTag :: (Maybe CTag)
              _lhsOrvarMp :: RVarMp
              _patOboundRelevTyVarS :: UIDS
              _patOdataGam :: DataGam
              _patOenv :: REnv
              _patOfinalRVarMp :: RVarMp
              _patOknTy :: RelevTy
              _patOknTyCase :: RelevTy
              _patOlamMp :: LamMp
              _patOlev :: Int
              _patOopts :: EHCOpts
              _patOrvarMp :: RVarMp
              _patOwhatTo :: ([WhatToRelevInfer])
              _exprOaltMbScrutTy :: MbRelevTy
              _exprOboundRelevTyVarS :: UIDS
              _exprOdataGam :: DataGam
              _exprOevalCtx :: EvalCtx
              _exprOfinalRVarMp :: RVarMp
              _exprOgUniq :: UID
              _exprOknTy :: RelevTy
              _exprOlamMp :: LamMp
              _exprOlev :: Int
              _exprOopts :: EHCOpts
              _exprOrvarMp :: RVarMp
              _exprOwhatAbove :: WhatExpr
              _exprOwhatTo :: ([WhatToRelevInfer])
              _patIcTrf :: CPat
              _patIfldNmL :: ([HsName])
              _patIfvS :: FvS
              _patIgUniq :: UID
              _patImbCTag :: (Maybe CTag)
              _patInmL :: ([HsName])
              _patIoTrf :: CPat
              _patIpatFldTyL :: ([(RelevTy,RelevTy)])
              _patIqualS :: RelevQualS
              _patIrvarMp :: RVarMp
              _exprIappFunKind :: AppFunKind
              _exprIargL :: ([CBound])
              _exprIcTrf :: CExpr
              _exprIcoe :: RelevCoe
              _exprIfunCoe :: RelevCoe
              _exprIfvS :: FvS
              _exprIgUniq :: UID
              _exprIgathLamMp :: LamMp
              _exprImbFFIApp :: (Maybe ( Ty
                                                                   , Bool
                                                                   , FFIWay
                                                                   , ForeignEnt
                                                                   , [Ty]
                                                                   ))
              _exprImbFunVar :: (Maybe HsName)
              _exprImbLam :: (Maybe [HsName])
              _exprImbVar :: (Maybe HsName)
              _exprIoTrf :: CExpr
              _exprIqualS :: RelevQualS
              _exprIrvarMp :: RVarMp
              _exprIty :: RelevTy
              _exprIwhatBelow :: WhatExpr
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 14, column 17)
              _fvS =
                  _exprIfvS `Set.difference` Set.fromList _patInmL
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 45, column 17)
              _exprOisTopApp =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 45, column 17)
              _exprOisTopTup =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 87, column 17)
              _whatAbove =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonLevAlt.ag"(line 2, column 17)
              _lev =
                  _lhsIlev + 1
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 168, column 17)
              _mbCTagEnv =
                  do { ct <- _patImbCTag
                     ; (argTyL,_) <- relevTyArgsFromCTag True ct Nothing (length _patIfldNmL) _lhsIdataGam _lUniq
                     ; return (gamFromAssocL $ zip _patIfldNmL argTyL, argTyL)
                     }
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 172, column 17)
              _patFldGivenTyL =
                  maybe (map freshLazy $ mkNewLevUIDL (length _patIfldNmL) _lUniq3)
                        snd _mbCTagEnv
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 172, column 17)
              _patFldUsedTyL =
                  map fresh $ mkNewLevUIDL (length _patIfldNmL) _lUniq2
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 172, column 17)
              _patEnv =
                  gamFromAssocL $ zip _patIfldNmL _patFldUsedTyL
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 178, column 17)
              _patOpatFldTyL =
                  zip _patFldGivenTyL _patFldUsedTyL
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 179, column 17)
              _exprOenv =
                  gamAddGam _patEnv _lhsIenv
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 313, column 17)
              _altMbScrutTy =
                  Nothing
              -- -- generated by the unique rule mechanism.
              __tup1 =
                  let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> case nextUnique __cont of { (__cont, lUniq2) -> case nextUnique __cont of { (__cont, lUniq3) -> (__cont,lUniq,lUniq2,lUniq3)}}} )
              -- -- generated by the unique rule mechanism.
              (_patOgUniq,_,_,_) =
                  __tup1
              -- -- generated by the unique rule mechanism.
              (_,_lUniq,_,_) =
                  __tup1
              -- -- generated by the unique rule mechanism.
              (_,_,_lUniq2,_) =
                  __tup1
              -- -- generated by the unique rule mechanism.
              (_,_,_,_lUniq3) =
                  __tup1
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
              _lhsOfvS =
                  _fvS
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
              _lhsOqualS =
                  _patIqualS `Set.union` _exprIqualS
              -- self rule
              _cTrf =
                  CAlt_Alt _patIcTrf _exprIcTrf
              -- self rule
              _oTrf =
                  CAlt_Alt _patIoTrf _exprIoTrf
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- self rule
              _lhsOoTrf =
                  _oTrf
              -- copy rule (up)
              _lhsOcoe =
                  _exprIcoe
              -- copy rule (up)
              _lhsOgUniq =
                  _exprIgUniq
              -- copy rule (up)
              _lhsOmbCTag =
                  _patImbCTag
              -- copy rule (up)
              _lhsOrvarMp =
                  _exprIrvarMp
              -- copy rule (down)
              _patOboundRelevTyVarS =
                  _lhsIboundRelevTyVarS
              -- copy rule (down)
              _patOdataGam =
                  _lhsIdataGam
              -- copy rule (down)
              _patOenv =
                  _lhsIenv
              -- copy rule (down)
              _patOfinalRVarMp =
                  _lhsIfinalRVarMp
              -- copy rule (down)
              _patOknTy =
                  _lhsIknTy
              -- copy rule (down)
              _patOknTyCase =
                  _lhsIknTyCase
              -- copy rule (down)
              _patOlamMp =
                  _lhsIlamMp
              -- copy rule (from local)
              _patOlev =
                  _lev
              -- copy rule (down)
              _patOopts =
                  _lhsIopts
              -- copy rule (down)
              _patOrvarMp =
                  _lhsIrvarMp
              -- copy rule (down)
              _patOwhatTo =
                  _lhsIwhatTo
              -- copy rule (from local)
              _exprOaltMbScrutTy =
                  _altMbScrutTy
              -- copy rule (down)
              _exprOboundRelevTyVarS =
                  _lhsIboundRelevTyVarS
              -- copy rule (down)
              _exprOdataGam =
                  _lhsIdataGam
              -- copy rule (down)
              _exprOevalCtx =
                  _lhsIevalCtx
              -- copy rule (down)
              _exprOfinalRVarMp =
                  _lhsIfinalRVarMp
              -- copy rule (chain)
              _exprOgUniq =
                  _patIgUniq
              -- copy rule (down)
              _exprOknTy =
                  _lhsIknTy
              -- copy rule (down)
              _exprOlamMp =
                  _lhsIlamMp
              -- copy rule (from local)
              _exprOlev =
                  _lev
              -- copy rule (down)
              _exprOopts =
                  _lhsIopts
              -- copy rule (chain)
              _exprOrvarMp =
                  _patIrvarMp
              -- copy rule (from local)
              _exprOwhatAbove =
                  _whatAbove
              -- copy rule (down)
              _exprOwhatTo =
                  _lhsIwhatTo
              ( _patIcTrf,_patIfldNmL,_patIfvS,_patIgUniq,_patImbCTag,_patInmL,_patIoTrf,_patIpatFldTyL,_patIqualS,_patIrvarMp) =
                  pat_ _patOboundRelevTyVarS _patOdataGam _patOenv _patOfinalRVarMp _patOgUniq _patOknTy _patOknTyCase _patOlamMp _patOlev _patOopts _patOpatFldTyL _patOrvarMp _patOwhatTo
              ( _exprIappFunKind,_exprIargL,_exprIcTrf,_exprIcoe,_exprIfunCoe,_exprIfvS,_exprIgUniq,_exprIgathLamMp,_exprImbFFIApp,_exprImbFunVar,_exprImbLam,_exprImbVar,_exprIoTrf,_exprIqualS,_exprIrvarMp,_exprIty,_exprIwhatBelow) =
                  expr_ _exprOaltMbScrutTy _exprOboundRelevTyVarS _exprOdataGam _exprOenv _exprOevalCtx _exprOfinalRVarMp _exprOgUniq _exprOisTopApp _exprOisTopTup _exprOknTy _exprOlamMp _exprOlev _exprOopts _exprOrvarMp _exprOwhatAbove _exprOwhatTo
          in  ( _lhsOcTrf,_lhsOcoe,_lhsOfvS,_lhsOgUniq,_lhsOmbCTag,_lhsOoTrf,_lhsOqualS,_lhsOrvarMp)))
-- CAltL -------------------------------------------------------
{-
   visit 0:
      inherited attributes:
         altId                : UID
         altMbScrutTy         : MbRelevTy
         altNrMax             : Int
         altSolveLVarMp       : [RVarMp]
         boundRelevTyVarS     : UIDS
         dataGam              : DataGam
         env                  : REnv
         evalCtx              : EvalCtx
         finalRVarMp          : RVarMp
         knTy                 : RelevTy
         knTyCase             : RelevTy
         lamMp                : LamMp
         lev                  : Int
         opts                 : EHCOpts
         whatTo               : [WhatToRelevInfer]
      chained attributes:
         gUniq                : UID
         rvarMp               : RVarMp
      synthesized attributes:
         altNr                : Int
         altQualSL            : [RelevQualS]
         cTrf                 : CAltL 
         fvS                  : FvS
         oTrf                 : CAltL 
         qualS                : RelevQualS
         ty                   : RelevTy
   alternatives:
      alternative Cons:
         child hd             : CAlt 
         child tl             : CAltL 
         visit 0:
            local _tup2       : _
            local amsoDw      : {AMSOut RelevTy}
            local amsDw       : {AnaMatchState}
            local rvarMpDw    : _
            local rvarMpUp    : _
            local altNr       : {Int}
            local altKnUpTy   : {RelevTy}
            local altKnDwTy   : {RelevTy}
            local hereAltCoe  : _
            local hdFinalRVarMp : _
            local _tup3       : _
            local altSolveVarMp : _
            local _tup4       : _
            local lUniq       : {UID}
            local lUniq2      : {UID}
            local cTrf        : _
            local oTrf        : _
      alternative Nil:
         visit 0:
            local altNr       : {Int}
            local cTrf        : _
            local oTrf        : _
-}
-- cata
sem_CAltL :: CAltL ->
             T_CAltL
sem_CAltL list =
    (Prelude.foldr sem_CAltL_Cons sem_CAltL_Nil (Prelude.map sem_CAlt list))
-- semantic domain
type T_CAltL = UID ->
               MbRelevTy ->
               Int ->
               ([RVarMp]) ->
               UIDS ->
               DataGam ->
               REnv ->
               EvalCtx ->
               RVarMp ->
               UID ->
               RelevTy ->
               RelevTy ->
               LamMp ->
               Int ->
               EHCOpts ->
               RVarMp ->
               ([WhatToRelevInfer]) ->
               ( Int,([RelevQualS]),CAltL,FvS,UID,CAltL,RelevQualS,RVarMp,RelevTy)
sem_CAltL_Cons :: T_CAlt ->
                  T_CAltL ->
                  T_CAltL
sem_CAltL_Cons hd_ tl_ =
    (\ _lhsIaltId
       _lhsIaltMbScrutTy
       _lhsIaltNrMax
       _lhsIaltSolveLVarMp
       _lhsIboundRelevTyVarS
       _lhsIdataGam
       _lhsIenv
       _lhsIevalCtx
       _lhsIfinalRVarMp
       _lhsIgUniq
       _lhsIknTy
       _lhsIknTyCase
       _lhsIlamMp
       _lhsIlev
       _lhsIopts
       _lhsIrvarMp
       _lhsIwhatTo ->
         (let _hdOknTy :: RelevTy
              _amsoDw :: (AMSOut RelevTy)
              _amsDw :: AnaMatchState
              _altNr :: Int
              _altKnUpTy :: RelevTy
              _altKnDwTy :: RelevTy
              _lhsOty :: RelevTy
              _hdOrvarMp :: RVarMp
              _hdOfinalRVarMp :: RVarMp
              _lhsOaltQualSL :: ([RelevQualS])
              _tlOaltSolveLVarMp :: ([RVarMp])
              _lhsOcTrf :: CAltL
              _hdOgUniq :: UID
              _lUniq :: UID
              _lUniq2 :: UID
              _lhsOfvS :: FvS
              _lhsOqualS :: RelevQualS
              _lhsOoTrf :: CAltL
              _lhsOaltNr :: Int
              _lhsOgUniq :: UID
              _lhsOrvarMp :: RVarMp
              _hdOboundRelevTyVarS :: UIDS
              _hdOdataGam :: DataGam
              _hdOenv :: REnv
              _hdOevalCtx :: EvalCtx
              _hdOknTyCase :: RelevTy
              _hdOlamMp :: LamMp
              _hdOlev :: Int
              _hdOopts :: EHCOpts
              _hdOwhatTo :: ([WhatToRelevInfer])
              _tlOaltId :: UID
              _tlOaltMbScrutTy :: MbRelevTy
              _tlOaltNrMax :: Int
              _tlOboundRelevTyVarS :: UIDS
              _tlOdataGam :: DataGam
              _tlOenv :: REnv
              _tlOevalCtx :: EvalCtx
              _tlOfinalRVarMp :: RVarMp
              _tlOgUniq :: UID
              _tlOknTy :: RelevTy
              _tlOknTyCase :: RelevTy
              _tlOlamMp :: LamMp
              _tlOlev :: Int
              _tlOopts :: EHCOpts
              _tlOrvarMp :: RVarMp
              _tlOwhatTo :: ([WhatToRelevInfer])
              _hdIcTrf :: CAlt
              _hdIcoe :: RelevCoe
              _hdIfvS :: FvS
              _hdIgUniq :: UID
              _hdImbCTag :: (Maybe CTag)
              _hdIoTrf :: CAlt
              _hdIqualS :: RelevQualS
              _hdIrvarMp :: RVarMp
              _tlIaltNr :: Int
              _tlIaltQualSL :: ([RelevQualS])
              _tlIcTrf :: CAltL
              _tlIfvS :: FvS
              _tlIgUniq :: UID
              _tlIoTrf :: CAltL
              _tlIqualS :: RelevQualS
              _tlIrvarMp :: RVarMp
              _tlIty :: RelevTy
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 228, column 17)
              _hdOknTy =
                  _altKnDwTy
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 280, column 33)
              __tup2 =
                  amsLE _lhsIrvarMp _altKnDwTy _lhsIknTy
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 280, column 33)
              (_amsoDw,_) =
                  __tup2
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 280, column 33)
              (_,_amsDw) =
                  __tup2
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 280, column 17)
              _rvarMpDw =
                  amsLocalVarMp _amsDw |+> _lhsIrvarMp
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 280, column 17)
              _rvarMpUp =
                  _rvarMpDw
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 289, column 17)
              _altNr =
                  _tlIaltNr + 1
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 298, column 17)
              _altKnUpTy =
                  fresh _lUniq
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 300, column 17)
              _altKnDwTy =
                  fresh _lUniq2
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 340, column 17)
              _hereAltCoe =
                  _hdIcoe <.> (_hdFinalRVarMp `varUpd` amsoCoe _amsoDw)
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 369, column 17)
              _lhsOty =
                  _lhsIknTy
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 387, column 17)
              _hdOrvarMp =
                  _rvarMpUp
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 408, column 17)
              _hdFinalRVarMp =
                  _altSolveVarMp
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 409, column 17)
              _hdOfinalRVarMp =
                  _hdFinalRVarMp
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 433, column 17)
              _lhsOaltQualSL =
                  Set.unions [_hdIqualS, amsGathQual _amsDw] : _tlIaltQualSL
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 463, column 17)
              __tup3 =
                  hdAndTl' (panic "altSolveLVarMp") _lhsIaltSolveLVarMp
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 463, column 17)
              (_altSolveVarMp,_) =
                  __tup3
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 463, column 17)
              (_,_tlOaltSolveLVarMp) =
                  __tup3
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 624, column 17)
              _lhsOcTrf =
                  case _hdIcTrf of
                    CAlt_Alt p e -> CAlt_Alt p (annCoe _hereAltCoe e) : _tlIcTrf
              -- -- generated by the unique rule mechanism.
              __tup4 =
                  let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> case nextUnique __cont of { (__cont, lUniq2) -> (__cont,lUniq,lUniq2)}} )
              -- -- generated by the unique rule mechanism.
              (_hdOgUniq,_,_) =
                  __tup4
              -- -- generated by the unique rule mechanism.
              (_,_lUniq,_) =
                  __tup4
              -- -- generated by the unique rule mechanism.
              (_,_,_lUniq2) =
                  __tup4
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
              _lhsOfvS =
                  _hdIfvS `Set.union` _tlIfvS
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
              _lhsOqualS =
                  _hdIqualS `Set.union` _tlIqualS
              -- self rule
              _cTrf =
                  (:) _hdIcTrf _tlIcTrf
              -- self rule
              _oTrf =
                  (:) _hdIoTrf _tlIoTrf
              -- self rule
              _lhsOoTrf =
                  _oTrf
              -- copy rule (from local)
              _lhsOaltNr =
                  _altNr
              -- copy rule (up)
              _lhsOgUniq =
                  _tlIgUniq
              -- copy rule (up)
              _lhsOrvarMp =
                  _tlIrvarMp
              -- copy rule (down)
              _hdOboundRelevTyVarS =
                  _lhsIboundRelevTyVarS
              -- copy rule (down)
              _hdOdataGam =
                  _lhsIdataGam
              -- copy rule (down)
              _hdOenv =
                  _lhsIenv
              -- copy rule (down)
              _hdOevalCtx =
                  _lhsIevalCtx
              -- copy rule (down)
              _hdOknTyCase =
                  _lhsIknTyCase
              -- copy rule (down)
              _hdOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _hdOlev =
                  _lhsIlev
              -- copy rule (down)
              _hdOopts =
                  _lhsIopts
              -- copy rule (down)
              _hdOwhatTo =
                  _lhsIwhatTo
              -- copy rule (down)
              _tlOaltId =
                  _lhsIaltId
              -- copy rule (down)
              _tlOaltMbScrutTy =
                  _lhsIaltMbScrutTy
              -- copy rule (down)
              _tlOaltNrMax =
                  _lhsIaltNrMax
              -- copy rule (down)
              _tlOboundRelevTyVarS =
                  _lhsIboundRelevTyVarS
              -- copy rule (down)
              _tlOdataGam =
                  _lhsIdataGam
              -- copy rule (down)
              _tlOenv =
                  _lhsIenv
              -- copy rule (down)
              _tlOevalCtx =
                  _lhsIevalCtx
              -- copy rule (down)
              _tlOfinalRVarMp =
                  _lhsIfinalRVarMp
              -- copy rule (chain)
              _tlOgUniq =
                  _hdIgUniq
              -- copy rule (down)
              _tlOknTy =
                  _lhsIknTy
              -- copy rule (down)
              _tlOknTyCase =
                  _lhsIknTyCase
              -- copy rule (down)
              _tlOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _tlOlev =
                  _lhsIlev
              -- copy rule (down)
              _tlOopts =
                  _lhsIopts
              -- copy rule (chain)
              _tlOrvarMp =
                  _hdIrvarMp
              -- copy rule (down)
              _tlOwhatTo =
                  _lhsIwhatTo
              ( _hdIcTrf,_hdIcoe,_hdIfvS,_hdIgUniq,_hdImbCTag,_hdIoTrf,_hdIqualS,_hdIrvarMp) =
                  hd_ _hdOboundRelevTyVarS _hdOdataGam _hdOenv _hdOevalCtx _hdOfinalRVarMp _hdOgUniq _hdOknTy _hdOknTyCase _hdOlamMp _hdOlev _hdOopts _hdOrvarMp _hdOwhatTo
              ( _tlIaltNr,_tlIaltQualSL,_tlIcTrf,_tlIfvS,_tlIgUniq,_tlIoTrf,_tlIqualS,_tlIrvarMp,_tlIty) =
                  tl_ _tlOaltId _tlOaltMbScrutTy _tlOaltNrMax _tlOaltSolveLVarMp _tlOboundRelevTyVarS _tlOdataGam _tlOenv _tlOevalCtx _tlOfinalRVarMp _tlOgUniq _tlOknTy _tlOknTyCase _tlOlamMp _tlOlev _tlOopts _tlOrvarMp _tlOwhatTo
          in  ( _lhsOaltNr,_lhsOaltQualSL,_lhsOcTrf,_lhsOfvS,_lhsOgUniq,_lhsOoTrf,_lhsOqualS,_lhsOrvarMp,_lhsOty)))
sem_CAltL_Nil :: T_CAltL
sem_CAltL_Nil =
    (\ _lhsIaltId
       _lhsIaltMbScrutTy
       _lhsIaltNrMax
       _lhsIaltSolveLVarMp
       _lhsIboundRelevTyVarS
       _lhsIdataGam
       _lhsIenv
       _lhsIevalCtx
       _lhsIfinalRVarMp
       _lhsIgUniq
       _lhsIknTy
       _lhsIknTyCase
       _lhsIlamMp
       _lhsIlev
       _lhsIopts
       _lhsIrvarMp
       _lhsIwhatTo ->
         (let _altNr :: Int
              _lhsOty :: RelevTy
              _lhsOaltQualSL :: ([RelevQualS])
              _lhsOfvS :: FvS
              _lhsOqualS :: RelevQualS
              _lhsOcTrf :: CAltL
              _lhsOoTrf :: CAltL
              _lhsOaltNr :: Int
              _lhsOgUniq :: UID
              _lhsOrvarMp :: RVarMp
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 288, column 17)
              _altNr =
                  0
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 369, column 17)
              _lhsOty =
                  _lhsIknTy
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 434, column 17)
              _lhsOaltQualSL =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
              _lhsOfvS =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
              _lhsOqualS =
                  Set.empty
              -- self rule
              _cTrf =
                  []
              -- self rule
              _oTrf =
                  []
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- self rule
              _lhsOoTrf =
                  _oTrf
              -- copy rule (from local)
              _lhsOaltNr =
                  _altNr
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOrvarMp =
                  _lhsIrvarMp
          in  ( _lhsOaltNr,_lhsOaltQualSL,_lhsOcTrf,_lhsOfvS,_lhsOgUniq,_lhsOoTrf,_lhsOqualS,_lhsOrvarMp,_lhsOty)))
-- CBind -------------------------------------------------------
{-
   visit 0:
      inherited attributes:
         boundRelevTyVarS     : UIDS
         dataGam              : DataGam
         env                  : REnv
         evalCtx              : EvalCtx
         finalRVarMp          : RVarMp
         forQuantRVarMp       : RVarMp
         isGlobal             : Bool
         knTy                 : RelevTy
         lamMp                : LamMp
         letBindingsCateg     : CBindCateg
         lev                  : Int
         opts                 : EHCOpts
         whatTo               : [WhatToRelevInfer]
      chained attributes:
         gUniq                : UID
         rvarMp               : RVarMp
      synthesized attributes:
         altMbScrutTy         : MbRelevTy
         bindLamMp            : LamMp
         cTrf                 : CBind 
         extraBindRVarMp      : RVarMp
         fvS                  : FvS
         fvSMp                : FvSMp
         gathEnv              : REnv
         gathRecEnv           : REnv
         nm                   : HsName
         nmL                  : [HsName]
         oTrf                 : CBind 
         qualS                : RelevQualS
   alternatives:
      alternative Bind:
         child nm             : {HsName}
         child bindAspects    : CBoundL 
         visit 0:
            local cTrf        : _
            local oTrf        : _
-}
-- cata
sem_CBind :: CBind ->
             T_CBind
sem_CBind (CBind_Bind _nm _bindAspects) =
    (sem_CBind_Bind _nm (sem_CBoundL _bindAspects))
-- semantic domain
type T_CBind = UIDS ->
               DataGam ->
               REnv ->
               EvalCtx ->
               RVarMp ->
               RVarMp ->
               UID ->
               Bool ->
               RelevTy ->
               LamMp ->
               CBindCateg ->
               Int ->
               EHCOpts ->
               RVarMp ->
               ([WhatToRelevInfer]) ->
               ( MbRelevTy,LamMp,CBind,RVarMp,FvS,FvSMp,UID,REnv,REnv,HsName,([HsName]),CBind,RelevQualS,RVarMp)
sem_CBind_Bind :: HsName ->
                  T_CBoundL ->
                  T_CBind
sem_CBind_Bind nm_ bindAspects_ =
    (\ _lhsIboundRelevTyVarS
       _lhsIdataGam
       _lhsIenv
       _lhsIevalCtx
       _lhsIfinalRVarMp
       _lhsIforQuantRVarMp
       _lhsIgUniq
       _lhsIisGlobal
       _lhsIknTy
       _lhsIlamMp
       _lhsIletBindingsCateg
       _lhsIlev
       _lhsIopts
       _lhsIrvarMp
       _lhsIwhatTo ->
         (let _lhsOfvSMp :: FvSMp
              _lhsOnmL :: ([HsName])
              _bindAspectsOnm :: HsName
              _lhsOnm :: HsName
              _lhsOaltMbScrutTy :: MbRelevTy
              _lhsObindLamMp :: LamMp
              _lhsOextraBindRVarMp :: RVarMp
              _lhsOfvS :: FvS
              _lhsOgathEnv :: REnv
              _lhsOgathRecEnv :: REnv
              _lhsOqualS :: RelevQualS
              _lhsOcTrf :: CBind
              _lhsOoTrf :: CBind
              _lhsOgUniq :: UID
              _lhsOrvarMp :: RVarMp
              _bindAspectsOboundRelevTyVarS :: UIDS
              _bindAspectsOdataGam :: DataGam
              _bindAspectsOenv :: REnv
              _bindAspectsOevalCtx :: EvalCtx
              _bindAspectsOfinalRVarMp :: RVarMp
              _bindAspectsOforQuantRVarMp :: RVarMp
              _bindAspectsOgUniq :: UID
              _bindAspectsOisGlobal :: Bool
              _bindAspectsOknTy :: RelevTy
              _bindAspectsOlamMp :: LamMp
              _bindAspectsOletBindingsCateg :: CBindCateg
              _bindAspectsOlev :: Int
              _bindAspectsOopts :: EHCOpts
              _bindAspectsOrvarMp :: RVarMp
              _bindAspectsOwhatTo :: ([WhatToRelevInfer])
              _bindAspectsIaltMbScrutTy :: MbRelevTy
              _bindAspectsIbindLamMp :: LamMp
              _bindAspectsIcTrf :: CBoundL
              _bindAspectsIextraBindRVarMp :: RVarMp
              _bindAspectsIfvS :: FvS
              _bindAspectsIfvSMp :: FvSMp
              _bindAspectsIgUniq :: UID
              _bindAspectsIgathEnv :: REnv
              _bindAspectsIgathRecEnv :: REnv
              _bindAspectsInmL :: ([HsName])
              _bindAspectsIoTrf :: CBoundL
              _bindAspectsIqualS :: RelevQualS
              _bindAspectsIrvarMp :: RVarMp
              _bindAspectsItyAspectL :: ([CBound])
              _bindAspectsIvalAspectL :: ([CBound])
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 11, column 17)
              _lhsOfvSMp =
                  Map.singleton nm_ _bindAspectsIfvS
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 19, column 17)
              _lhsOnmL =
                  [nm_]
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonBindNm.ag"(line 4, column 17)
              _bindAspectsOnm =
                  nm_
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonBindNm.ag"(line 12, column 17)
              _lhsOnm =
                  nm_
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 609, column 17)
              _cTrf =
                  CBind_Bind nm_ (_bindAspectsItyAspectL ++ _bindAspectsIvalAspectL ++ _bindAspectsIcTrf)
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 306, column 33)
              _lhsOaltMbScrutTy =
                  _bindAspectsIaltMbScrutTy
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 11, column 30)
              _lhsObindLamMp =
                  _bindAspectsIbindLamMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 412, column 36)
              _lhsOextraBindRVarMp =
                  _bindAspectsIextraBindRVarMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
              _lhsOfvS =
                  _bindAspectsIfvS
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 194, column 32)
              _lhsOgathEnv =
                  _bindAspectsIgathEnv
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 195, column 32)
              _lhsOgathRecEnv =
                  _bindAspectsIgathRecEnv
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
              _lhsOqualS =
                  _bindAspectsIqualS
              -- self rule
              _oTrf =
                  CBind_Bind nm_ _bindAspectsIoTrf
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- self rule
              _lhsOoTrf =
                  _oTrf
              -- copy rule (up)
              _lhsOgUniq =
                  _bindAspectsIgUniq
              -- copy rule (up)
              _lhsOrvarMp =
                  _bindAspectsIrvarMp
              -- copy rule (down)
              _bindAspectsOboundRelevTyVarS =
                  _lhsIboundRelevTyVarS
              -- copy rule (down)
              _bindAspectsOdataGam =
                  _lhsIdataGam
              -- copy rule (down)
              _bindAspectsOenv =
                  _lhsIenv
              -- copy rule (down)
              _bindAspectsOevalCtx =
                  _lhsIevalCtx
              -- copy rule (down)
              _bindAspectsOfinalRVarMp =
                  _lhsIfinalRVarMp
              -- copy rule (down)
              _bindAspectsOforQuantRVarMp =
                  _lhsIforQuantRVarMp
              -- copy rule (down)
              _bindAspectsOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _bindAspectsOisGlobal =
                  _lhsIisGlobal
              -- copy rule (down)
              _bindAspectsOknTy =
                  _lhsIknTy
              -- copy rule (down)
              _bindAspectsOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _bindAspectsOletBindingsCateg =
                  _lhsIletBindingsCateg
              -- copy rule (down)
              _bindAspectsOlev =
                  _lhsIlev
              -- copy rule (down)
              _bindAspectsOopts =
                  _lhsIopts
              -- copy rule (down)
              _bindAspectsOrvarMp =
                  _lhsIrvarMp
              -- copy rule (down)
              _bindAspectsOwhatTo =
                  _lhsIwhatTo
              ( _bindAspectsIaltMbScrutTy,_bindAspectsIbindLamMp,_bindAspectsIcTrf,_bindAspectsIextraBindRVarMp,_bindAspectsIfvS,_bindAspectsIfvSMp,_bindAspectsIgUniq,_bindAspectsIgathEnv,_bindAspectsIgathRecEnv,_bindAspectsInmL,_bindAspectsIoTrf,_bindAspectsIqualS,_bindAspectsIrvarMp,_bindAspectsItyAspectL,_bindAspectsIvalAspectL) =
                  bindAspects_ _bindAspectsOboundRelevTyVarS _bindAspectsOdataGam _bindAspectsOenv _bindAspectsOevalCtx _bindAspectsOfinalRVarMp _bindAspectsOforQuantRVarMp _bindAspectsOgUniq _bindAspectsOisGlobal _bindAspectsOknTy _bindAspectsOlamMp _bindAspectsOletBindingsCateg _bindAspectsOlev _bindAspectsOnm _bindAspectsOopts _bindAspectsOrvarMp _bindAspectsOwhatTo
          in  ( _lhsOaltMbScrutTy,_lhsObindLamMp,_lhsOcTrf,_lhsOextraBindRVarMp,_lhsOfvS,_lhsOfvSMp,_lhsOgUniq,_lhsOgathEnv,_lhsOgathRecEnv,_lhsOnm,_lhsOnmL,_lhsOoTrf,_lhsOqualS,_lhsOrvarMp)))
-- CBindAnn ----------------------------------------------------
{-
   visit 0:
      inherited attributes:
         boundRelevTyVarS     : UIDS
         dataGam              : DataGam
         env                  : REnv
         finalRVarMp          : RVarMp
         knTy                 : RelevTy
         knTyCase             : RelevTy
         lamMp                : LamMp
         lev                  : Int
         opts                 : EHCOpts
         whatTo               : [WhatToRelevInfer]
      chained attributes:
         gUniq                : UID
         rvarMp               : RVarMp
      synthesized attributes:
         cTrf                 : CBindAnn 
         fvS                  : FvS
         nmL                  : [HsName]
         oTrf                 : CBindAnn 
         qualS                : RelevQualS
   alternatives:
      alternative Coe:
         child coe            : {RelevCoe}
         visit 0:
            local cTrf        : _
            local oTrf        : _
-}
-- cata
sem_CBindAnn :: CBindAnn ->
                T_CBindAnn
sem_CBindAnn (CBindAnn_Coe _coe) =
    (sem_CBindAnn_Coe _coe)
-- semantic domain
type T_CBindAnn = UIDS ->
                  DataGam ->
                  REnv ->
                  RVarMp ->
                  UID ->
                  RelevTy ->
                  RelevTy ->
                  LamMp ->
                  Int ->
                  EHCOpts ->
                  RVarMp ->
                  ([WhatToRelevInfer]) ->
                  ( CBindAnn,FvS,UID,([HsName]),CBindAnn,RelevQualS,RVarMp)
sem_CBindAnn_Coe :: RelevCoe ->
                    T_CBindAnn
sem_CBindAnn_Coe coe_ =
    (\ _lhsIboundRelevTyVarS
       _lhsIdataGam
       _lhsIenv
       _lhsIfinalRVarMp
       _lhsIgUniq
       _lhsIknTy
       _lhsIknTyCase
       _lhsIlamMp
       _lhsIlev
       _lhsIopts
       _lhsIrvarMp
       _lhsIwhatTo ->
         (let _lhsOfvS :: FvS
              _lhsOnmL :: ([HsName])
              _lhsOqualS :: RelevQualS
              _lhsOcTrf :: CBindAnn
              _lhsOoTrf :: CBindAnn
              _lhsOgUniq :: UID
              _lhsOrvarMp :: RVarMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
              _lhsOfvS =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 16, column 31)
              _lhsOnmL =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
              _lhsOqualS =
                  Set.empty
              -- self rule
              _cTrf =
                  CBindAnn_Coe coe_
              -- self rule
              _oTrf =
                  CBindAnn_Coe coe_
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- self rule
              _lhsOoTrf =
                  _oTrf
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOrvarMp =
                  _lhsIrvarMp
          in  ( _lhsOcTrf,_lhsOfvS,_lhsOgUniq,_lhsOnmL,_lhsOoTrf,_lhsOqualS,_lhsOrvarMp)))
-- CBindAnnL ---------------------------------------------------
{-
   visit 0:
      inherited attributes:
         boundRelevTyVarS     : UIDS
         dataGam              : DataGam
         env                  : REnv
         finalRVarMp          : RVarMp
         knTy                 : RelevTy
         knTyCase             : RelevTy
         lamMp                : LamMp
         lev                  : Int
         opts                 : EHCOpts
         whatTo               : [WhatToRelevInfer]
      chained attributes:
         gUniq                : UID
         rvarMp               : RVarMp
      synthesized attributes:
         cTrf                 : CBindAnnL 
         fvS                  : FvS
         nmL                  : [HsName]
         oTrf                 : CBindAnnL 
         qualS                : RelevQualS
   alternatives:
      alternative Cons:
         child hd             : CBindAnn 
         child tl             : CBindAnnL 
         visit 0:
            local cTrf        : _
            local oTrf        : _
      alternative Nil:
         visit 0:
            local cTrf        : _
            local oTrf        : _
-}
-- cata
sem_CBindAnnL :: CBindAnnL ->
                 T_CBindAnnL
sem_CBindAnnL list =
    (Prelude.foldr sem_CBindAnnL_Cons sem_CBindAnnL_Nil (Prelude.map sem_CBindAnn list))
-- semantic domain
type T_CBindAnnL = UIDS ->
                   DataGam ->
                   REnv ->
                   RVarMp ->
                   UID ->
                   RelevTy ->
                   RelevTy ->
                   LamMp ->
                   Int ->
                   EHCOpts ->
                   RVarMp ->
                   ([WhatToRelevInfer]) ->
                   ( CBindAnnL,FvS,UID,([HsName]),CBindAnnL,RelevQualS,RVarMp)
sem_CBindAnnL_Cons :: T_CBindAnn ->
                      T_CBindAnnL ->
                      T_CBindAnnL
sem_CBindAnnL_Cons hd_ tl_ =
    (\ _lhsIboundRelevTyVarS
       _lhsIdataGam
       _lhsIenv
       _lhsIfinalRVarMp
       _lhsIgUniq
       _lhsIknTy
       _lhsIknTyCase
       _lhsIlamMp
       _lhsIlev
       _lhsIopts
       _lhsIrvarMp
       _lhsIwhatTo ->
         (let _lhsOfvS :: FvS
              _lhsOnmL :: ([HsName])
              _lhsOqualS :: RelevQualS
              _lhsOcTrf :: CBindAnnL
              _lhsOoTrf :: CBindAnnL
              _lhsOgUniq :: UID
              _lhsOrvarMp :: RVarMp
              _hdOboundRelevTyVarS :: UIDS
              _hdOdataGam :: DataGam
              _hdOenv :: REnv
              _hdOfinalRVarMp :: RVarMp
              _hdOgUniq :: UID
              _hdOknTy :: RelevTy
              _hdOknTyCase :: RelevTy
              _hdOlamMp :: LamMp
              _hdOlev :: Int
              _hdOopts :: EHCOpts
              _hdOrvarMp :: RVarMp
              _hdOwhatTo :: ([WhatToRelevInfer])
              _tlOboundRelevTyVarS :: UIDS
              _tlOdataGam :: DataGam
              _tlOenv :: REnv
              _tlOfinalRVarMp :: RVarMp
              _tlOgUniq :: UID
              _tlOknTy :: RelevTy
              _tlOknTyCase :: RelevTy
              _tlOlamMp :: LamMp
              _tlOlev :: Int
              _tlOopts :: EHCOpts
              _tlOrvarMp :: RVarMp
              _tlOwhatTo :: ([WhatToRelevInfer])
              _hdIcTrf :: CBindAnn
              _hdIfvS :: FvS
              _hdIgUniq :: UID
              _hdInmL :: ([HsName])
              _hdIoTrf :: CBindAnn
              _hdIqualS :: RelevQualS
              _hdIrvarMp :: RVarMp
              _tlIcTrf :: CBindAnnL
              _tlIfvS :: FvS
              _tlIgUniq :: UID
              _tlInmL :: ([HsName])
              _tlIoTrf :: CBindAnnL
              _tlIqualS :: RelevQualS
              _tlIrvarMp :: RVarMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
              _lhsOfvS =
                  _hdIfvS `Set.union` _tlIfvS
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 16, column 31)
              _lhsOnmL =
                  _hdInmL ++ _tlInmL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
              _lhsOqualS =
                  _hdIqualS `Set.union` _tlIqualS
              -- self rule
              _cTrf =
                  (:) _hdIcTrf _tlIcTrf
              -- self rule
              _oTrf =
                  (:) _hdIoTrf _tlIoTrf
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- self rule
              _lhsOoTrf =
                  _oTrf
              -- copy rule (up)
              _lhsOgUniq =
                  _tlIgUniq
              -- copy rule (up)
              _lhsOrvarMp =
                  _tlIrvarMp
              -- copy rule (down)
              _hdOboundRelevTyVarS =
                  _lhsIboundRelevTyVarS
              -- copy rule (down)
              _hdOdataGam =
                  _lhsIdataGam
              -- copy rule (down)
              _hdOenv =
                  _lhsIenv
              -- copy rule (down)
              _hdOfinalRVarMp =
                  _lhsIfinalRVarMp
              -- copy rule (down)
              _hdOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _hdOknTy =
                  _lhsIknTy
              -- copy rule (down)
              _hdOknTyCase =
                  _lhsIknTyCase
              -- copy rule (down)
              _hdOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _hdOlev =
                  _lhsIlev
              -- copy rule (down)
              _hdOopts =
                  _lhsIopts
              -- copy rule (down)
              _hdOrvarMp =
                  _lhsIrvarMp
              -- copy rule (down)
              _hdOwhatTo =
                  _lhsIwhatTo
              -- copy rule (down)
              _tlOboundRelevTyVarS =
                  _lhsIboundRelevTyVarS
              -- copy rule (down)
              _tlOdataGam =
                  _lhsIdataGam
              -- copy rule (down)
              _tlOenv =
                  _lhsIenv
              -- copy rule (down)
              _tlOfinalRVarMp =
                  _lhsIfinalRVarMp
              -- copy rule (chain)
              _tlOgUniq =
                  _hdIgUniq
              -- copy rule (down)
              _tlOknTy =
                  _lhsIknTy
              -- copy rule (down)
              _tlOknTyCase =
                  _lhsIknTyCase
              -- copy rule (down)
              _tlOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _tlOlev =
                  _lhsIlev
              -- copy rule (down)
              _tlOopts =
                  _lhsIopts
              -- copy rule (chain)
              _tlOrvarMp =
                  _hdIrvarMp
              -- copy rule (down)
              _tlOwhatTo =
                  _lhsIwhatTo
              ( _hdIcTrf,_hdIfvS,_hdIgUniq,_hdInmL,_hdIoTrf,_hdIqualS,_hdIrvarMp) =
                  hd_ _hdOboundRelevTyVarS _hdOdataGam _hdOenv _hdOfinalRVarMp _hdOgUniq _hdOknTy _hdOknTyCase _hdOlamMp _hdOlev _hdOopts _hdOrvarMp _hdOwhatTo
              ( _tlIcTrf,_tlIfvS,_tlIgUniq,_tlInmL,_tlIoTrf,_tlIqualS,_tlIrvarMp) =
                  tl_ _tlOboundRelevTyVarS _tlOdataGam _tlOenv _tlOfinalRVarMp _tlOgUniq _tlOknTy _tlOknTyCase _tlOlamMp _tlOlev _tlOopts _tlOrvarMp _tlOwhatTo
          in  ( _lhsOcTrf,_lhsOfvS,_lhsOgUniq,_lhsOnmL,_lhsOoTrf,_lhsOqualS,_lhsOrvarMp)))
sem_CBindAnnL_Nil :: T_CBindAnnL
sem_CBindAnnL_Nil =
    (\ _lhsIboundRelevTyVarS
       _lhsIdataGam
       _lhsIenv
       _lhsIfinalRVarMp
       _lhsIgUniq
       _lhsIknTy
       _lhsIknTyCase
       _lhsIlamMp
       _lhsIlev
       _lhsIopts
       _lhsIrvarMp
       _lhsIwhatTo ->
         (let _lhsOfvS :: FvS
              _lhsOnmL :: ([HsName])
              _lhsOqualS :: RelevQualS
              _lhsOcTrf :: CBindAnnL
              _lhsOoTrf :: CBindAnnL
              _lhsOgUniq :: UID
              _lhsOrvarMp :: RVarMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
              _lhsOfvS =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 16, column 31)
              _lhsOnmL =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
              _lhsOqualS =
                  Set.empty
              -- self rule
              _cTrf =
                  []
              -- self rule
              _oTrf =
                  []
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- self rule
              _lhsOoTrf =
                  _oTrf
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOrvarMp =
                  _lhsIrvarMp
          in  ( _lhsOcTrf,_lhsOfvS,_lhsOgUniq,_lhsOnmL,_lhsOoTrf,_lhsOqualS,_lhsOrvarMp)))
-- CBindL ------------------------------------------------------
{-
   visit 0:
      inherited attributes:
         boundRelevTyVarS     : UIDS
         dataGam              : DataGam
         env                  : REnv
         evalCtx              : EvalCtx
         finalRVarMp          : RVarMp
         forQuantRVarMp       : RVarMp
         isGlobal             : Bool
         knTy                 : RelevTy
         lamMp                : LamMp
         letBindingsCateg     : CBindCateg
         lev                  : Int
         opts                 : EHCOpts
         whatTo               : [WhatToRelevInfer]
      chained attributes:
         gUniq                : UID
         rvarMp               : RVarMp
      synthesized attributes:
         altMbScrutTy         : MbRelevTy
         bindLamMp            : LamMp
         cTrf                 : CBindL 
         extraBindRVarMp      : RVarMp
         fvS                  : FvS
         fvSMp                : FvSMp
         gathEnv              : REnv
         gathRecEnv           : REnv
         nmL                  : [HsName]
         oTrf                 : CBindL 
         qualS                : RelevQualS
   alternatives:
      alternative Cons:
         child hd             : CBind 
         child tl             : CBindL 
         visit 0:
            local cTrf        : _
            local oTrf        : _
      alternative Nil:
         visit 0:
            local cTrf        : _
            local oTrf        : _
-}
-- cata
sem_CBindL :: CBindL ->
              T_CBindL
sem_CBindL list =
    (Prelude.foldr sem_CBindL_Cons sem_CBindL_Nil (Prelude.map sem_CBind list))
-- semantic domain
type T_CBindL = UIDS ->
                DataGam ->
                REnv ->
                EvalCtx ->
                RVarMp ->
                RVarMp ->
                UID ->
                Bool ->
                RelevTy ->
                LamMp ->
                CBindCateg ->
                Int ->
                EHCOpts ->
                RVarMp ->
                ([WhatToRelevInfer]) ->
                ( MbRelevTy,LamMp,CBindL,RVarMp,FvS,FvSMp,UID,REnv,REnv,([HsName]),CBindL,RelevQualS,RVarMp)
sem_CBindL_Cons :: T_CBind ->
                   T_CBindL ->
                   T_CBindL
sem_CBindL_Cons hd_ tl_ =
    (\ _lhsIboundRelevTyVarS
       _lhsIdataGam
       _lhsIenv
       _lhsIevalCtx
       _lhsIfinalRVarMp
       _lhsIforQuantRVarMp
       _lhsIgUniq
       _lhsIisGlobal
       _lhsIknTy
       _lhsIlamMp
       _lhsIletBindingsCateg
       _lhsIlev
       _lhsIopts
       _lhsIrvarMp
       _lhsIwhatTo ->
         (let _lhsOaltMbScrutTy :: MbRelevTy
              _lhsObindLamMp :: LamMp
              _lhsOextraBindRVarMp :: RVarMp
              _lhsOfvS :: FvS
              _lhsOfvSMp :: FvSMp
              _lhsOgathEnv :: REnv
              _lhsOgathRecEnv :: REnv
              _lhsOnmL :: ([HsName])
              _lhsOqualS :: RelevQualS
              _lhsOcTrf :: CBindL
              _lhsOoTrf :: CBindL
              _lhsOgUniq :: UID
              _lhsOrvarMp :: RVarMp
              _hdOboundRelevTyVarS :: UIDS
              _hdOdataGam :: DataGam
              _hdOenv :: REnv
              _hdOevalCtx :: EvalCtx
              _hdOfinalRVarMp :: RVarMp
              _hdOforQuantRVarMp :: RVarMp
              _hdOgUniq :: UID
              _hdOisGlobal :: Bool
              _hdOknTy :: RelevTy
              _hdOlamMp :: LamMp
              _hdOletBindingsCateg :: CBindCateg
              _hdOlev :: Int
              _hdOopts :: EHCOpts
              _hdOrvarMp :: RVarMp
              _hdOwhatTo :: ([WhatToRelevInfer])
              _tlOboundRelevTyVarS :: UIDS
              _tlOdataGam :: DataGam
              _tlOenv :: REnv
              _tlOevalCtx :: EvalCtx
              _tlOfinalRVarMp :: RVarMp
              _tlOforQuantRVarMp :: RVarMp
              _tlOgUniq :: UID
              _tlOisGlobal :: Bool
              _tlOknTy :: RelevTy
              _tlOlamMp :: LamMp
              _tlOletBindingsCateg :: CBindCateg
              _tlOlev :: Int
              _tlOopts :: EHCOpts
              _tlOrvarMp :: RVarMp
              _tlOwhatTo :: ([WhatToRelevInfer])
              _hdIaltMbScrutTy :: MbRelevTy
              _hdIbindLamMp :: LamMp
              _hdIcTrf :: CBind
              _hdIextraBindRVarMp :: RVarMp
              _hdIfvS :: FvS
              _hdIfvSMp :: FvSMp
              _hdIgUniq :: UID
              _hdIgathEnv :: REnv
              _hdIgathRecEnv :: REnv
              _hdInm :: HsName
              _hdInmL :: ([HsName])
              _hdIoTrf :: CBind
              _hdIqualS :: RelevQualS
              _hdIrvarMp :: RVarMp
              _tlIaltMbScrutTy :: MbRelevTy
              _tlIbindLamMp :: LamMp
              _tlIcTrf :: CBindL
              _tlIextraBindRVarMp :: RVarMp
              _tlIfvS :: FvS
              _tlIfvSMp :: FvSMp
              _tlIgUniq :: UID
              _tlIgathEnv :: REnv
              _tlIgathRecEnv :: REnv
              _tlInmL :: ([HsName])
              _tlIoTrf :: CBindL
              _tlIqualS :: RelevQualS
              _tlIrvarMp :: RVarMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 306, column 33)
              _lhsOaltMbScrutTy =
                  _hdIaltMbScrutTy <|> _tlIaltMbScrutTy
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 11, column 30)
              _lhsObindLamMp =
                  _hdIbindLamMp `lamMpUnionBindAspMp` _tlIbindLamMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 412, column 36)
              _lhsOextraBindRVarMp =
                  _hdIextraBindRVarMp |+> _tlIextraBindRVarMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
              _lhsOfvS =
                  _hdIfvS `Set.union` _tlIfvS
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 2, column 26)
              _lhsOfvSMp =
                  _hdIfvSMp `Map.union` _tlIfvSMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 194, column 32)
              _lhsOgathEnv =
                  _hdIgathEnv `gamUnion` _tlIgathEnv
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 195, column 32)
              _lhsOgathRecEnv =
                  _hdIgathRecEnv `gamUnion` _tlIgathRecEnv
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 16, column 31)
              _lhsOnmL =
                  _hdInmL ++ _tlInmL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
              _lhsOqualS =
                  _hdIqualS `Set.union` _tlIqualS
              -- self rule
              _cTrf =
                  (:) _hdIcTrf _tlIcTrf
              -- self rule
              _oTrf =
                  (:) _hdIoTrf _tlIoTrf
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- self rule
              _lhsOoTrf =
                  _oTrf
              -- copy rule (up)
              _lhsOgUniq =
                  _tlIgUniq
              -- copy rule (up)
              _lhsOrvarMp =
                  _tlIrvarMp
              -- copy rule (down)
              _hdOboundRelevTyVarS =
                  _lhsIboundRelevTyVarS
              -- copy rule (down)
              _hdOdataGam =
                  _lhsIdataGam
              -- copy rule (down)
              _hdOenv =
                  _lhsIenv
              -- copy rule (down)
              _hdOevalCtx =
                  _lhsIevalCtx
              -- copy rule (down)
              _hdOfinalRVarMp =
                  _lhsIfinalRVarMp
              -- copy rule (down)
              _hdOforQuantRVarMp =
                  _lhsIforQuantRVarMp
              -- copy rule (down)
              _hdOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _hdOisGlobal =
                  _lhsIisGlobal
              -- copy rule (down)
              _hdOknTy =
                  _lhsIknTy
              -- copy rule (down)
              _hdOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _hdOletBindingsCateg =
                  _lhsIletBindingsCateg
              -- copy rule (down)
              _hdOlev =
                  _lhsIlev
              -- copy rule (down)
              _hdOopts =
                  _lhsIopts
              -- copy rule (down)
              _hdOrvarMp =
                  _lhsIrvarMp
              -- copy rule (down)
              _hdOwhatTo =
                  _lhsIwhatTo
              -- copy rule (down)
              _tlOboundRelevTyVarS =
                  _lhsIboundRelevTyVarS
              -- copy rule (down)
              _tlOdataGam =
                  _lhsIdataGam
              -- copy rule (down)
              _tlOenv =
                  _lhsIenv
              -- copy rule (down)
              _tlOevalCtx =
                  _lhsIevalCtx
              -- copy rule (down)
              _tlOfinalRVarMp =
                  _lhsIfinalRVarMp
              -- copy rule (down)
              _tlOforQuantRVarMp =
                  _lhsIforQuantRVarMp
              -- copy rule (chain)
              _tlOgUniq =
                  _hdIgUniq
              -- copy rule (down)
              _tlOisGlobal =
                  _lhsIisGlobal
              -- copy rule (down)
              _tlOknTy =
                  _lhsIknTy
              -- copy rule (down)
              _tlOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _tlOletBindingsCateg =
                  _lhsIletBindingsCateg
              -- copy rule (down)
              _tlOlev =
                  _lhsIlev
              -- copy rule (down)
              _tlOopts =
                  _lhsIopts
              -- copy rule (chain)
              _tlOrvarMp =
                  _hdIrvarMp
              -- copy rule (down)
              _tlOwhatTo =
                  _lhsIwhatTo
              ( _hdIaltMbScrutTy,_hdIbindLamMp,_hdIcTrf,_hdIextraBindRVarMp,_hdIfvS,_hdIfvSMp,_hdIgUniq,_hdIgathEnv,_hdIgathRecEnv,_hdInm,_hdInmL,_hdIoTrf,_hdIqualS,_hdIrvarMp) =
                  hd_ _hdOboundRelevTyVarS _hdOdataGam _hdOenv _hdOevalCtx _hdOfinalRVarMp _hdOforQuantRVarMp _hdOgUniq _hdOisGlobal _hdOknTy _hdOlamMp _hdOletBindingsCateg _hdOlev _hdOopts _hdOrvarMp _hdOwhatTo
              ( _tlIaltMbScrutTy,_tlIbindLamMp,_tlIcTrf,_tlIextraBindRVarMp,_tlIfvS,_tlIfvSMp,_tlIgUniq,_tlIgathEnv,_tlIgathRecEnv,_tlInmL,_tlIoTrf,_tlIqualS,_tlIrvarMp) =
                  tl_ _tlOboundRelevTyVarS _tlOdataGam _tlOenv _tlOevalCtx _tlOfinalRVarMp _tlOforQuantRVarMp _tlOgUniq _tlOisGlobal _tlOknTy _tlOlamMp _tlOletBindingsCateg _tlOlev _tlOopts _tlOrvarMp _tlOwhatTo
          in  ( _lhsOaltMbScrutTy,_lhsObindLamMp,_lhsOcTrf,_lhsOextraBindRVarMp,_lhsOfvS,_lhsOfvSMp,_lhsOgUniq,_lhsOgathEnv,_lhsOgathRecEnv,_lhsOnmL,_lhsOoTrf,_lhsOqualS,_lhsOrvarMp)))
sem_CBindL_Nil :: T_CBindL
sem_CBindL_Nil =
    (\ _lhsIboundRelevTyVarS
       _lhsIdataGam
       _lhsIenv
       _lhsIevalCtx
       _lhsIfinalRVarMp
       _lhsIforQuantRVarMp
       _lhsIgUniq
       _lhsIisGlobal
       _lhsIknTy
       _lhsIlamMp
       _lhsIletBindingsCateg
       _lhsIlev
       _lhsIopts
       _lhsIrvarMp
       _lhsIwhatTo ->
         (let _lhsOaltMbScrutTy :: MbRelevTy
              _lhsObindLamMp :: LamMp
              _lhsOextraBindRVarMp :: RVarMp
              _lhsOfvS :: FvS
              _lhsOfvSMp :: FvSMp
              _lhsOgathEnv :: REnv
              _lhsOgathRecEnv :: REnv
              _lhsOnmL :: ([HsName])
              _lhsOqualS :: RelevQualS
              _lhsOcTrf :: CBindL
              _lhsOoTrf :: CBindL
              _lhsOgUniq :: UID
              _lhsOrvarMp :: RVarMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 306, column 33)
              _lhsOaltMbScrutTy =
                  Nothing
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 11, column 30)
              _lhsObindLamMp =
                  Map.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 412, column 36)
              _lhsOextraBindRVarMp =
                  emptyRVarMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
              _lhsOfvS =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 2, column 26)
              _lhsOfvSMp =
                  Map.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 194, column 32)
              _lhsOgathEnv =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 195, column 32)
              _lhsOgathRecEnv =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 16, column 31)
              _lhsOnmL =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
              _lhsOqualS =
                  Set.empty
              -- self rule
              _cTrf =
                  []
              -- self rule
              _oTrf =
                  []
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- self rule
              _lhsOoTrf =
                  _oTrf
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOrvarMp =
                  _lhsIrvarMp
          in  ( _lhsOaltMbScrutTy,_lhsObindLamMp,_lhsOcTrf,_lhsOextraBindRVarMp,_lhsOfvS,_lhsOfvSMp,_lhsOgUniq,_lhsOgathEnv,_lhsOgathRecEnv,_lhsOnmL,_lhsOoTrf,_lhsOqualS,_lhsOrvarMp)))
-- CBound ------------------------------------------------------
{-
   visit 0:
      inherited attributes:
         boundRelevTyVarS     : UIDS
         dataGam              : DataGam
         env                  : REnv
         evalCtx              : EvalCtx
         finalRVarMp          : RVarMp
         forQuantRVarMp       : RVarMp
         isGlobal             : Bool
         isTopApp             : Bool
         isTopTup             : Bool
         knTy                 : RelevTy
         lamMp                : LamMp
         letBindingsCateg     : CBindCateg
         lev                  : Int
         nm                   : HsName
         opts                 : EHCOpts
         whatTo               : [WhatToRelevInfer]
      chained attributes:
         gUniq                : UID
         rvarMp               : RVarMp
      synthesized attributes:
         altMbScrutTy         : MbRelevTy
         bindLamMp            : LamMp
         cTrf                 : CBound 
         coe                  : RelevCoe
         extraBindRVarMp      : RVarMp
         fvS                  : FvS
         fvSMp                : FvSMp
         gathEnv              : REnv
         gathRecEnv           : REnv
         nmL                  : [HsName]
         oTrf                 : CBound 
         qualS                : RelevQualS
         tyAspectL            : [CBound]
         valAspectL           : [CBound]
   alternatives:
      alternative Bind:
         child bindMeta       : CMetas 
         child expr           : CExpr 
         visit 0:
            local whatAbove   : {WhatExpr}
            local doBindStrict : {Bool}
            local gathEnv     : _
            local gathRecEnv  : _
            local altMbScrutTy : _
            local hereBindCoe : _
            local finalRVarMp : _
            local extraBindRVarMp : _
            local _tup5       : _
            local ty          : {RelevTy}
            local exprKnTy    : {RelevTy}
            local exprEnv     : {REnv}
            local exprBoundS  : {UIDS}
            local bindConstrain : {RVarMp -> RelevTy -> RelevTy -> (AnaMatchState,Maybe RelevCoe)}
            local _tup6       : _
            local amsBind     : {AnaMatchState}
            local mbBindCoe   : {Maybe RelevCoe}
            local rvarMpExpr  : _
            local _tup7       : _
            local quantTy     : {RelevTy}
            local quantVarMp  : {RVarMp}
            local quantRemQualS : {RelevQualS}
            local bindTy      : {RelevTy}
            local _tup8       : _
            local strictTy    : {RelevTy}
            local strictVarMp : {RVarMp}
            local debugTy1    : _
            local debugTy2    : _
            local strictTy2   : {RelevTy}
            local tyAspectL   : _
            local valAspectL  : _
            local _tup9       : _
            local lUniq       : {UID}
            local cTrf        : _
            local oTrf        : _
      alternative Meta:
         child aspectKeyS     : {ACoreBindAspectKeyS}
         child cmetas         : CMetas 
         visit 0:
            local altMbScrutTy : _
            local cTrf        : _
            local oTrf        : _
      alternative RelevTy:
         child aspectKeyS     : {ACoreBindAspectKeyS}
         child relevTy        : {RelevTy}
         visit 0:
            local altMbScrutTy : _
            local cTrf        : _
            local oTrf        : _
      alternative Val:
         child aspectKeyS     : {ACoreBindAspectKeyS}
         child mlev           : {MetaLev}
         child lbl            : {CLbl}
         child expr           : CExpr 
         visit 0:
            local whatAbove   : {WhatExpr}
            local altMbScrutTy : _
            local cTrf        : _
            local oTrf        : _
      alternative Ty:
         child aspectKeyS     : {ACoreBindAspectKeyS}
         child ty             : {Ty}
         visit 0:
            local altMbScrutTy : _
            local cTrf        : _
            local oTrf        : _
      alternative FFE:
         child callconv       : {FFIWay}
         child expEnt         : {ForeignEnt}
         child expr           : CExpr 
         child ty             : {Ty}
         visit 0:
            local whatAbove   : {WhatExpr}
            local argTyLresTy : _
            local argTyL      : _
            local resTy       : _
            local foreignEntInfo : _
            local expEntNm    : _
            local altMbScrutTy : _
            local cTrf        : _
            local oTrf        : _
-}
-- cata
sem_CBound :: CBound ->
              T_CBound
sem_CBound (CBound_Bind _bindMeta _expr) =
    (sem_CBound_Bind (sem_CMetas _bindMeta) (sem_CExpr _expr))
sem_CBound (CBound_Meta _aspectKeyS _cmetas) =
    (sem_CBound_Meta _aspectKeyS (sem_CMetas _cmetas))
sem_CBound (CBound_RelevTy _aspectKeyS _relevTy) =
    (sem_CBound_RelevTy _aspectKeyS _relevTy)
sem_CBound (CBound_Val _aspectKeyS _mlev _lbl _expr) =
    (sem_CBound_Val _aspectKeyS _mlev _lbl (sem_CExpr _expr))
sem_CBound (CBound_Ty _aspectKeyS _ty) =
    (sem_CBound_Ty _aspectKeyS _ty)
sem_CBound (CBound_FFE _callconv _expEnt _expr _ty) =
    (sem_CBound_FFE _callconv _expEnt (sem_CExpr _expr) _ty)
-- semantic domain
type T_CBound = UIDS ->
                DataGam ->
                REnv ->
                EvalCtx ->
                RVarMp ->
                RVarMp ->
                UID ->
                Bool ->
                Bool ->
                Bool ->
                RelevTy ->
                LamMp ->
                CBindCateg ->
                Int ->
                HsName ->
                EHCOpts ->
                RVarMp ->
                ([WhatToRelevInfer]) ->
                ( MbRelevTy,LamMp,CBound,RelevCoe,RVarMp,FvS,FvSMp,UID,REnv,REnv,([HsName]),CBound,RelevQualS,RVarMp,([CBound]),([CBound]))
sem_CBound_Bind :: T_CMetas ->
                   T_CExpr ->
                   T_CBound
sem_CBound_Bind bindMeta_ expr_ =
    (\ _lhsIboundRelevTyVarS
       _lhsIdataGam
       _lhsIenv
       _lhsIevalCtx
       _lhsIfinalRVarMp
       _lhsIforQuantRVarMp
       _lhsIgUniq
       _lhsIisGlobal
       _lhsIisTopApp
       _lhsIisTopTup
       _lhsIknTy
       _lhsIlamMp
       _lhsIletBindingsCateg
       _lhsIlev
       _lhsInm
       _lhsIopts
       _lhsIrvarMp
       _lhsIwhatTo ->
         (let _exprOisTopApp :: Bool
              _exprOisTopTup :: Bool
              _whatAbove :: WhatExpr
              _doBindStrict :: Bool
              _lhsObindLamMp :: LamMp
              _exprOenv :: REnv
              _exprOknTy :: RelevTy
              _lhsOaltMbScrutTy :: MbRelevTy
              _lhsOcoe :: RelevCoe
              _lhsOrvarMp :: RVarMp
              _lhsOqualS :: RelevQualS
              _exprOboundRelevTyVarS :: UIDS
              _ty :: RelevTy
              _exprKnTy :: RelevTy
              _exprEnv :: REnv
              _exprBoundS :: UIDS
              _bindConstrain :: (RVarMp -> RelevTy -> RelevTy -> (AnaMatchState,Maybe RelevCoe))
              _amsBind :: AnaMatchState
              _mbBindCoe :: (Maybe RelevCoe)
              _quantTy :: RelevTy
              _quantVarMp :: RVarMp
              _quantRemQualS :: RelevQualS
              _bindTy :: RelevTy
              _strictTy :: RelevTy
              _strictVarMp :: RVarMp
              _strictTy2 :: RelevTy
              _lhsOcTrf :: CBound
              _bindMetaOgUniq :: UID
              _lUniq :: UID
              _lhsOextraBindRVarMp :: RVarMp
              _lhsOfvS :: FvS
              _lhsOfvSMp :: FvSMp
              _lhsOgathEnv :: REnv
              _lhsOgathRecEnv :: REnv
              _lhsOnmL :: ([HsName])
              _lhsOtyAspectL :: ([CBound])
              _lhsOvalAspectL :: ([CBound])
              _lhsOoTrf :: CBound
              _lhsOgUniq :: UID
              _bindMetaOboundRelevTyVarS :: UIDS
              _bindMetaOdataGam :: DataGam
              _bindMetaOenv :: REnv
              _bindMetaOfinalRVarMp :: RVarMp
              _bindMetaOknTy :: RelevTy
              _bindMetaOlamMp :: LamMp
              _bindMetaOlev :: Int
              _bindMetaOopts :: EHCOpts
              _bindMetaOrvarMp :: RVarMp
              _bindMetaOwhatTo :: ([WhatToRelevInfer])
              _exprOaltMbScrutTy :: MbRelevTy
              _exprOdataGam :: DataGam
              _exprOevalCtx :: EvalCtx
              _exprOfinalRVarMp :: RVarMp
              _exprOgUniq :: UID
              _exprOlamMp :: LamMp
              _exprOlev :: Int
              _exprOopts :: EHCOpts
              _exprOrvarMp :: RVarMp
              _exprOwhatAbove :: WhatExpr
              _exprOwhatTo :: ([WhatToRelevInfer])
              _bindMetaIcTrf :: CMetas
              _bindMetaIfvS :: FvS
              _bindMetaIgUniq :: UID
              _bindMetaIoTrf :: CMetas
              _bindMetaIqualS :: RelevQualS
              _bindMetaIrvarMp :: RVarMp
              _exprIappFunKind :: AppFunKind
              _exprIargL :: ([CBound])
              _exprIcTrf :: CExpr
              _exprIcoe :: RelevCoe
              _exprIfunCoe :: RelevCoe
              _exprIfvS :: FvS
              _exprIgUniq :: UID
              _exprIgathLamMp :: LamMp
              _exprImbFFIApp :: (Maybe ( Ty
                                                                   , Bool
                                                                   , FFIWay
                                                                   , ForeignEnt
                                                                   , [Ty]
                                                                   ))
              _exprImbFunVar :: (Maybe HsName)
              _exprImbLam :: (Maybe [HsName])
              _exprImbVar :: (Maybe HsName)
              _exprIoTrf :: CExpr
              _exprIqualS :: RelevQualS
              _exprIrvarMp :: RVarMp
              _exprIty :: RelevTy
              _exprIwhatBelow :: WhatExpr
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 37, column 17)
              _exprOisTopApp =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 37, column 17)
              _exprOisTopTup =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 80, column 17)
              _whatAbove =
                  ExprIsBind
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 117, column 17)
              _doBindStrict =
                  WhatToRelevInfer_InstToBot `elem` _lhsIwhatTo
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 118, column 17)
              _lhsObindLamMp =
                  let l = [ (acbaspkeyDefaultRelevTy, LamInfoBindAsp_RelevTy _bindTy) ]
                  in  Map.singleton _lhsInm (emptyLamInfo {laminfoBindAspMp = Map.fromList l})
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 156, column 17)
              _exprOenv =
                  gamAddGam _exprEnv _lhsIenv
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 198, column 17)
              _gathEnv =
                  gamSingleton _lhsInm _quantTy
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 198, column 17)
              _gathRecEnv =
                  gamSingleton _lhsInm $ tup123to1 $ relevtyQuant [RelevTyQuantHow_Rec] emptyRVarMp Set.empty _ty
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 207, column 17)
              _exprOknTy =
                  _exprKnTy
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 309, column 17)
              _lhsOaltMbScrutTy =
                  do v <- _exprImbVar
                     renvLookup v _lhsIenv Map.empty
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 313, column 17)
              _altMbScrutTy =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 336, column 17)
              _hereBindCoe =
                  _exprIcoe <.> maybe RelevCoe_Id (_finalRVarMp `varUpd`) _mbBindCoe
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 337, column 25)
              _lhsOcoe =
                  RelevCoe_Id
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 378, column 17)
              _lhsOrvarMp =
                  _quantVarMp |+> _rvarMpExpr
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 405, column 17)
              _finalRVarMp =
                  _lhsIfinalRVarMp
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 415, column 17)
              _extraBindRVarMp =
                  if _doBindStrict then _strictVarMp else emptyRVarMp
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 428, column 17)
              _lhsOqualS =
                  Set.unions [amsGathQual _amsBind, _exprIqualS]
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 489, column 17)
              _exprOboundRelevTyVarS =
                  _exprBoundS
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 495, column 33)
              __tup5 =
                  let noConstrain _ _ _ = (emptyAnaMatchState, Nothing)
                      strictConstrain m t knTy = (ams, Just $ amsoCoe amso)
                        where (amso,ams) = amsLE m t knTy
                  in  case _exprImbLam of
                        Just nmL
                          -> (ty, r', exprEnv, varFreeSet ty, noConstrain)
                          where us@(r:as) = mkNewLevUIDL (1 + length nmL) _lUniq
                                r' = fresh r
                                as' = map fresh as
                                exprEnv = gamFromAssocL (zip nmL as')
                                ty = RelevTy_Fun RQuant_None [] [] as' r'
                        _ | isStrict  -> (bTy, bTy, emptyGam, Set.empty, strictConstrain)
                          | otherwise -> (bTy, bTy, emptyGam, Set.empty, noConstrain)
                          where isStrict = _lhsIletBindingsCateg == CBindCateg_Strict
                                (_,u1,u2) = mkNewLevUID2 _lUniq
                                eTy@(RelevTy_Ana eAna) = fresh u1
                                bTy@(RelevTy_Ana bAna) = fresh u2
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 495, column 33)
              (_ty,_,_,_,_) =
                  __tup5
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 495, column 33)
              (_,_exprKnTy,_,_,_) =
                  __tup5
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 495, column 33)
              (_,_,_exprEnv,_,_) =
                  __tup5
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 495, column 33)
              (_,_,_,_exprBoundS,_) =
                  __tup5
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 495, column 33)
              (_,_,_,_,_bindConstrain) =
                  __tup5
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 514, column 33)
              __tup6 =
                  _bindConstrain _exprIrvarMp _exprKnTy _lhsIknTy
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 514, column 33)
              (_amsBind,_) =
                  __tup6
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 514, column 33)
              (_,_mbBindCoe) =
                  __tup6
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 495, column 17)
              _rvarMpExpr =
                  amsLocalVarMp _amsBind |+> _exprIrvarMp
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 517, column 33)
              __tup7 =
                  case _ty of
                    t@(RelevTy_Fun _ _ _ _ _)
                      -> relevtyQuant ([RelevTyQuantHow_Solve] ++ how)
                                      _rvarMpExpr _exprIqualS t
                      where how | WhatToRelevInfer_Quant `elem` _lhsIwhatTo = [RelevTyQuantHow_RemoveAmbig,RelevTyQuantHow_Quant]
                                | otherwise                                 = []
                    t -> (m `varUpd` t, m, q)
                      where (q,m) = assSolve _lhsIboundRelevTyVarS (Set.map (_rvarMpExpr `varUpd`) _exprIqualS)
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 517, column 33)
              (_quantTy,_,_) =
                  __tup7
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 517, column 33)
              (_,_quantVarMp,_) =
                  __tup7
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 517, column 33)
              (_,_,_quantRemQualS) =
                  __tup7
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 495, column 17)
              _bindTy =
                  _lhsIforQuantRVarMp `varUpd` _quantTy
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 527, column 33)
              __tup8 =
                  case _bindTy of
                    t@(RelevTy_Fun _ _ qs a r@(RelevTy_Ana (AnaEval_Var rv)))
                      -> (sty, smp2 |+> smpAssume2 |+> smp1 |+> smpAssume1)
                      where smpAssume1 = rvarmpEvalUnit rv bot
                            (RelevTy_Fun _ vs' qs' a' r',smp1,rem1)
                              = relevtyQuant [RelevTyQuantHow_Solve,RelevTyQuantHow_RemoveAmbig,RelevTyQuantHow_Quant]
                                             smpAssume1 (Set.fromList qs `Set.union` _quantRemQualS) (RelevTy_Fun RQuant_None [] [] a (smpAssume1 `varUpd` r))
                            smpAssume2 = rvarmpUnions [ rvarmpEvalUnit v top | v <- vs' ]
                            (sty,smp2,_)
                              = relevtyQuant [RelevTyQuantHow_Solve,RelevTyQuantHow_RemoveAmbig,RelevTyQuantHow_Quant]
                                             smpAssume2 (Set.fromList qs' `Set.union` rem1) (RelevTy_Fun RQuant_None [] [] (smpAssume2 `varUpd` a') r')
                    t -> (m `varUpd` t, m)
                      where (q,m) = assSolve Set.empty (Set.map (_lhsIforQuantRVarMp `varUpd`) _quantRemQualS)
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 527, column 33)
              (_strictTy,_) =
                  __tup8
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 527, column 33)
              (_,_strictVarMp) =
                  __tup8
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 495, column 17)
              _debugTy1 =
                  case _rvarMpExpr `varUpd` _ty of
                    RelevTy_Fun _ _ _ a r
                      -> RelevTy_Fun RQuant_None v q a r
                      where q = _rvarMpExpr `varUpd` Set.toList _exprIqualS
                            v = Set.toList $ Set.unions [varFreeSet q, varFreeSet a, varFreeSet r]
                    t -> t
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 495, column 17)
              _debugTy2 =
                  case _lhsIfinalRVarMp `varUpd` _ty of
                    RelevTy_Fun _ _ _ a r
                      -> RelevTy_Fun RQuant_None [] q a r
                      where q = _lhsIfinalRVarMp `varUpd` Set.toList _exprIqualS
                    t -> t
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 495, column 17)
              _strictTy2 =
                  _lhsIfinalRVarMp `varUpd` _strictTy
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 495, column 17)
              _tyAspectL =
                  [ CBound_RelevTy acbaspkeyDefault _bindTy
                  ]
                  ++ (if _doBindStrict
                      then [CBound_RelevTy acbaspkeyStrict _strictTy2]
                      else []
                     )
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 604, column 17)
              _lhsOcTrf =
                  CBound_Bind _bindMetaIcTrf $
                  dbgBind _lhsIopts _lhsIfinalRVarMp _gathEnv $
                  annCoe _hereBindCoe _exprIcTrf
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 633, column 17)
              _valAspectL =
                  [
                  ]
              -- -- generated by the unique rule mechanism.
              __tup9 =
                  let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )
              -- -- generated by the unique rule mechanism.
              (_bindMetaOgUniq,_) =
                  __tup9
              -- -- generated by the unique rule mechanism.
              (_,_lUniq) =
                  __tup9
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 412, column 36)
              _lhsOextraBindRVarMp =
                  _extraBindRVarMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
              _lhsOfvS =
                  _bindMetaIfvS `Set.union` _exprIfvS
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 2, column 26)
              _lhsOfvSMp =
                  Map.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 194, column 32)
              _lhsOgathEnv =
                  _gathEnv
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 195, column 32)
              _lhsOgathRecEnv =
                  _gathRecEnv
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 16, column 31)
              _lhsOnmL =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 575, column 32)
              _lhsOtyAspectL =
                  _tyAspectL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 576, column 32)
              _lhsOvalAspectL =
                  _valAspectL
              -- self rule
              _cTrf =
                  CBound_Bind _bindMetaIcTrf _exprIcTrf
              -- self rule
              _oTrf =
                  CBound_Bind _bindMetaIoTrf _exprIoTrf
              -- self rule
              _lhsOoTrf =
                  _oTrf
              -- copy rule (up)
              _lhsOgUniq =
                  _exprIgUniq
              -- copy rule (down)
              _bindMetaOboundRelevTyVarS =
                  _lhsIboundRelevTyVarS
              -- copy rule (down)
              _bindMetaOdataGam =
                  _lhsIdataGam
              -- copy rule (down)
              _bindMetaOenv =
                  _lhsIenv
              -- copy rule (from local)
              _bindMetaOfinalRVarMp =
                  _finalRVarMp
              -- copy rule (down)
              _bindMetaOknTy =
                  _lhsIknTy
              -- copy rule (down)
              _bindMetaOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _bindMetaOlev =
                  _lhsIlev
              -- copy rule (down)
              _bindMetaOopts =
                  _lhsIopts
              -- copy rule (down)
              _bindMetaOrvarMp =
                  _lhsIrvarMp
              -- copy rule (down)
              _bindMetaOwhatTo =
                  _lhsIwhatTo
              -- copy rule (from local)
              _exprOaltMbScrutTy =
                  _altMbScrutTy
              -- copy rule (down)
              _exprOdataGam =
                  _lhsIdataGam
              -- copy rule (down)
              _exprOevalCtx =
                  _lhsIevalCtx
              -- copy rule (from local)
              _exprOfinalRVarMp =
                  _finalRVarMp
              -- copy rule (chain)
              _exprOgUniq =
                  _bindMetaIgUniq
              -- copy rule (down)
              _exprOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _exprOlev =
                  _lhsIlev
              -- copy rule (down)
              _exprOopts =
                  _lhsIopts
              -- copy rule (chain)
              _exprOrvarMp =
                  _bindMetaIrvarMp
              -- copy rule (from local)
              _exprOwhatAbove =
                  _whatAbove
              -- copy rule (down)
              _exprOwhatTo =
                  _lhsIwhatTo
              ( _bindMetaIcTrf,_bindMetaIfvS,_bindMetaIgUniq,_bindMetaIoTrf,_bindMetaIqualS,_bindMetaIrvarMp) =
                  bindMeta_ _bindMetaOboundRelevTyVarS _bindMetaOdataGam _bindMetaOenv _bindMetaOfinalRVarMp _bindMetaOgUniq _bindMetaOknTy _bindMetaOlamMp _bindMetaOlev _bindMetaOopts _bindMetaOrvarMp _bindMetaOwhatTo
              ( _exprIappFunKind,_exprIargL,_exprIcTrf,_exprIcoe,_exprIfunCoe,_exprIfvS,_exprIgUniq,_exprIgathLamMp,_exprImbFFIApp,_exprImbFunVar,_exprImbLam,_exprImbVar,_exprIoTrf,_exprIqualS,_exprIrvarMp,_exprIty,_exprIwhatBelow) =
                  expr_ _exprOaltMbScrutTy _exprOboundRelevTyVarS _exprOdataGam _exprOenv _exprOevalCtx _exprOfinalRVarMp _exprOgUniq _exprOisTopApp _exprOisTopTup _exprOknTy _exprOlamMp _exprOlev _exprOopts _exprOrvarMp _exprOwhatAbove _exprOwhatTo
          in  ( _lhsOaltMbScrutTy,_lhsObindLamMp,_lhsOcTrf,_lhsOcoe,_lhsOextraBindRVarMp,_lhsOfvS,_lhsOfvSMp,_lhsOgUniq,_lhsOgathEnv,_lhsOgathRecEnv,_lhsOnmL,_lhsOoTrf,_lhsOqualS,_lhsOrvarMp,_lhsOtyAspectL,_lhsOvalAspectL)))
sem_CBound_Meta :: ACoreBindAspectKeyS ->
                   T_CMetas ->
                   T_CBound
sem_CBound_Meta aspectKeyS_ cmetas_ =
    (\ _lhsIboundRelevTyVarS
       _lhsIdataGam
       _lhsIenv
       _lhsIevalCtx
       _lhsIfinalRVarMp
       _lhsIforQuantRVarMp
       _lhsIgUniq
       _lhsIisGlobal
       _lhsIisTopApp
       _lhsIisTopTup
       _lhsIknTy
       _lhsIlamMp
       _lhsIletBindingsCateg
       _lhsIlev
       _lhsInm
       _lhsIopts
       _lhsIrvarMp
       _lhsIwhatTo ->
         (let _lhsOcoe :: RelevCoe
              _lhsOaltMbScrutTy :: MbRelevTy
              _lhsObindLamMp :: LamMp
              _lhsOextraBindRVarMp :: RVarMp
              _lhsOfvS :: FvS
              _lhsOfvSMp :: FvSMp
              _lhsOgathEnv :: REnv
              _lhsOgathRecEnv :: REnv
              _lhsOnmL :: ([HsName])
              _lhsOqualS :: RelevQualS
              _lhsOtyAspectL :: ([CBound])
              _lhsOvalAspectL :: ([CBound])
              _lhsOcTrf :: CBound
              _lhsOoTrf :: CBound
              _lhsOgUniq :: UID
              _lhsOrvarMp :: RVarMp
              _cmetasOboundRelevTyVarS :: UIDS
              _cmetasOdataGam :: DataGam
              _cmetasOenv :: REnv
              _cmetasOfinalRVarMp :: RVarMp
              _cmetasOgUniq :: UID
              _cmetasOknTy :: RelevTy
              _cmetasOlamMp :: LamMp
              _cmetasOlev :: Int
              _cmetasOopts :: EHCOpts
              _cmetasOrvarMp :: RVarMp
              _cmetasOwhatTo :: ([WhatToRelevInfer])
              _cmetasIcTrf :: CMetas
              _cmetasIfvS :: FvS
              _cmetasIgUniq :: UID
              _cmetasIoTrf :: CMetas
              _cmetasIqualS :: RelevQualS
              _cmetasIrvarMp :: RVarMp
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 313, column 17)
              _altMbScrutTy =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 337, column 25)
              _lhsOcoe =
                  RelevCoe_Id
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 306, column 33)
              _lhsOaltMbScrutTy =
                  _altMbScrutTy
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 11, column 30)
              _lhsObindLamMp =
                  Map.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 412, column 36)
              _lhsOextraBindRVarMp =
                  emptyRVarMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
              _lhsOfvS =
                  _cmetasIfvS
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 2, column 26)
              _lhsOfvSMp =
                  Map.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 194, column 32)
              _lhsOgathEnv =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 195, column 32)
              _lhsOgathRecEnv =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 16, column 31)
              _lhsOnmL =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
              _lhsOqualS =
                  _cmetasIqualS
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 575, column 32)
              _lhsOtyAspectL =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 576, column 32)
              _lhsOvalAspectL =
                  []
              -- self rule
              _cTrf =
                  CBound_Meta aspectKeyS_ _cmetasIcTrf
              -- self rule
              _oTrf =
                  CBound_Meta aspectKeyS_ _cmetasIoTrf
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- self rule
              _lhsOoTrf =
                  _oTrf
              -- copy rule (up)
              _lhsOgUniq =
                  _cmetasIgUniq
              -- copy rule (up)
              _lhsOrvarMp =
                  _cmetasIrvarMp
              -- copy rule (down)
              _cmetasOboundRelevTyVarS =
                  _lhsIboundRelevTyVarS
              -- copy rule (down)
              _cmetasOdataGam =
                  _lhsIdataGam
              -- copy rule (down)
              _cmetasOenv =
                  _lhsIenv
              -- copy rule (down)
              _cmetasOfinalRVarMp =
                  _lhsIfinalRVarMp
              -- copy rule (down)
              _cmetasOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _cmetasOknTy =
                  _lhsIknTy
              -- copy rule (down)
              _cmetasOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _cmetasOlev =
                  _lhsIlev
              -- copy rule (down)
              _cmetasOopts =
                  _lhsIopts
              -- copy rule (down)
              _cmetasOrvarMp =
                  _lhsIrvarMp
              -- copy rule (down)
              _cmetasOwhatTo =
                  _lhsIwhatTo
              ( _cmetasIcTrf,_cmetasIfvS,_cmetasIgUniq,_cmetasIoTrf,_cmetasIqualS,_cmetasIrvarMp) =
                  cmetas_ _cmetasOboundRelevTyVarS _cmetasOdataGam _cmetasOenv _cmetasOfinalRVarMp _cmetasOgUniq _cmetasOknTy _cmetasOlamMp _cmetasOlev _cmetasOopts _cmetasOrvarMp _cmetasOwhatTo
          in  ( _lhsOaltMbScrutTy,_lhsObindLamMp,_lhsOcTrf,_lhsOcoe,_lhsOextraBindRVarMp,_lhsOfvS,_lhsOfvSMp,_lhsOgUniq,_lhsOgathEnv,_lhsOgathRecEnv,_lhsOnmL,_lhsOoTrf,_lhsOqualS,_lhsOrvarMp,_lhsOtyAspectL,_lhsOvalAspectL)))
sem_CBound_RelevTy :: ACoreBindAspectKeyS ->
                      RelevTy ->
                      T_CBound
sem_CBound_RelevTy aspectKeyS_ relevTy_ =
    (\ _lhsIboundRelevTyVarS
       _lhsIdataGam
       _lhsIenv
       _lhsIevalCtx
       _lhsIfinalRVarMp
       _lhsIforQuantRVarMp
       _lhsIgUniq
       _lhsIisGlobal
       _lhsIisTopApp
       _lhsIisTopTup
       _lhsIknTy
       _lhsIlamMp
       _lhsIletBindingsCateg
       _lhsIlev
       _lhsInm
       _lhsIopts
       _lhsIrvarMp
       _lhsIwhatTo ->
         (let _lhsOcoe :: RelevCoe
              _lhsOaltMbScrutTy :: MbRelevTy
              _lhsObindLamMp :: LamMp
              _lhsOextraBindRVarMp :: RVarMp
              _lhsOfvS :: FvS
              _lhsOfvSMp :: FvSMp
              _lhsOgathEnv :: REnv
              _lhsOgathRecEnv :: REnv
              _lhsOnmL :: ([HsName])
              _lhsOqualS :: RelevQualS
              _lhsOtyAspectL :: ([CBound])
              _lhsOvalAspectL :: ([CBound])
              _lhsOcTrf :: CBound
              _lhsOoTrf :: CBound
              _lhsOgUniq :: UID
              _lhsOrvarMp :: RVarMp
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 313, column 17)
              _altMbScrutTy =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 337, column 25)
              _lhsOcoe =
                  RelevCoe_Id
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 306, column 33)
              _lhsOaltMbScrutTy =
                  _altMbScrutTy
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 11, column 30)
              _lhsObindLamMp =
                  Map.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 412, column 36)
              _lhsOextraBindRVarMp =
                  emptyRVarMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
              _lhsOfvS =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 2, column 26)
              _lhsOfvSMp =
                  Map.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 194, column 32)
              _lhsOgathEnv =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 195, column 32)
              _lhsOgathRecEnv =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 16, column 31)
              _lhsOnmL =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
              _lhsOqualS =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 575, column 32)
              _lhsOtyAspectL =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 576, column 32)
              _lhsOvalAspectL =
                  []
              -- self rule
              _cTrf =
                  CBound_RelevTy aspectKeyS_ relevTy_
              -- self rule
              _oTrf =
                  CBound_RelevTy aspectKeyS_ relevTy_
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- self rule
              _lhsOoTrf =
                  _oTrf
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOrvarMp =
                  _lhsIrvarMp
          in  ( _lhsOaltMbScrutTy,_lhsObindLamMp,_lhsOcTrf,_lhsOcoe,_lhsOextraBindRVarMp,_lhsOfvS,_lhsOfvSMp,_lhsOgUniq,_lhsOgathEnv,_lhsOgathRecEnv,_lhsOnmL,_lhsOoTrf,_lhsOqualS,_lhsOrvarMp,_lhsOtyAspectL,_lhsOvalAspectL)))
sem_CBound_Val :: ACoreBindAspectKeyS ->
                  MetaLev ->
                  CLbl ->
                  T_CExpr ->
                  T_CBound
sem_CBound_Val aspectKeyS_ mlev_ lbl_ expr_ =
    (\ _lhsIboundRelevTyVarS
       _lhsIdataGam
       _lhsIenv
       _lhsIevalCtx
       _lhsIfinalRVarMp
       _lhsIforQuantRVarMp
       _lhsIgUniq
       _lhsIisGlobal
       _lhsIisTopApp
       _lhsIisTopTup
       _lhsIknTy
       _lhsIlamMp
       _lhsIletBindingsCateg
       _lhsIlev
       _lhsInm
       _lhsIopts
       _lhsIrvarMp
       _lhsIwhatTo ->
         (let _whatAbove :: WhatExpr
              _lhsOaltMbScrutTy :: MbRelevTy
              _lhsObindLamMp :: LamMp
              _lhsOextraBindRVarMp :: RVarMp
              _lhsOfvS :: FvS
              _lhsOfvSMp :: FvSMp
              _lhsOgathEnv :: REnv
              _lhsOgathRecEnv :: REnv
              _lhsOnmL :: ([HsName])
              _lhsOqualS :: RelevQualS
              _lhsOtyAspectL :: ([CBound])
              _lhsOvalAspectL :: ([CBound])
              _lhsOcTrf :: CBound
              _lhsOoTrf :: CBound
              _lhsOcoe :: RelevCoe
              _lhsOgUniq :: UID
              _lhsOrvarMp :: RVarMp
              _exprOaltMbScrutTy :: MbRelevTy
              _exprOboundRelevTyVarS :: UIDS
              _exprOdataGam :: DataGam
              _exprOenv :: REnv
              _exprOevalCtx :: EvalCtx
              _exprOfinalRVarMp :: RVarMp
              _exprOgUniq :: UID
              _exprOisTopApp :: Bool
              _exprOisTopTup :: Bool
              _exprOknTy :: RelevTy
              _exprOlamMp :: LamMp
              _exprOlev :: Int
              _exprOopts :: EHCOpts
              _exprOrvarMp :: RVarMp
              _exprOwhatAbove :: WhatExpr
              _exprOwhatTo :: ([WhatToRelevInfer])
              _exprIappFunKind :: AppFunKind
              _exprIargL :: ([CBound])
              _exprIcTrf :: CExpr
              _exprIcoe :: RelevCoe
              _exprIfunCoe :: RelevCoe
              _exprIfvS :: FvS
              _exprIgUniq :: UID
              _exprIgathLamMp :: LamMp
              _exprImbFFIApp :: (Maybe ( Ty
                                                                   , Bool
                                                                   , FFIWay
                                                                   , ForeignEnt
                                                                   , [Ty]
                                                                   ))
              _exprImbFunVar :: (Maybe HsName)
              _exprImbLam :: (Maybe [HsName])
              _exprImbVar :: (Maybe HsName)
              _exprIoTrf :: CExpr
              _exprIqualS :: RelevQualS
              _exprIrvarMp :: RVarMp
              _exprIty :: RelevTy
              _exprIwhatBelow :: WhatExpr
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 80, column 17)
              _whatAbove =
                  ExprIsBind
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 313, column 17)
              _altMbScrutTy =
                  Nothing
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 306, column 33)
              _lhsOaltMbScrutTy =
                  _altMbScrutTy
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 11, column 30)
              _lhsObindLamMp =
                  Map.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 412, column 36)
              _lhsOextraBindRVarMp =
                  emptyRVarMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
              _lhsOfvS =
                  _exprIfvS
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 2, column 26)
              _lhsOfvSMp =
                  Map.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 194, column 32)
              _lhsOgathEnv =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 195, column 32)
              _lhsOgathRecEnv =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 16, column 31)
              _lhsOnmL =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
              _lhsOqualS =
                  _exprIqualS
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 575, column 32)
              _lhsOtyAspectL =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 576, column 32)
              _lhsOvalAspectL =
                  []
              -- self rule
              _cTrf =
                  CBound_Val aspectKeyS_ mlev_ lbl_ _exprIcTrf
              -- self rule
              _oTrf =
                  CBound_Val aspectKeyS_ mlev_ lbl_ _exprIoTrf
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- self rule
              _lhsOoTrf =
                  _oTrf
              -- copy rule (up)
              _lhsOcoe =
                  _exprIcoe
              -- copy rule (up)
              _lhsOgUniq =
                  _exprIgUniq
              -- copy rule (up)
              _lhsOrvarMp =
                  _exprIrvarMp
              -- copy rule (from local)
              _exprOaltMbScrutTy =
                  _altMbScrutTy
              -- copy rule (down)
              _exprOboundRelevTyVarS =
                  _lhsIboundRelevTyVarS
              -- copy rule (down)
              _exprOdataGam =
                  _lhsIdataGam
              -- copy rule (down)
              _exprOenv =
                  _lhsIenv
              -- copy rule (down)
              _exprOevalCtx =
                  _lhsIevalCtx
              -- copy rule (down)
              _exprOfinalRVarMp =
                  _lhsIfinalRVarMp
              -- copy rule (down)
              _exprOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _exprOisTopApp =
                  _lhsIisTopApp
              -- copy rule (down)
              _exprOisTopTup =
                  _lhsIisTopTup
              -- copy rule (down)
              _exprOknTy =
                  _lhsIknTy
              -- copy rule (down)
              _exprOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _exprOlev =
                  _lhsIlev
              -- copy rule (down)
              _exprOopts =
                  _lhsIopts
              -- copy rule (down)
              _exprOrvarMp =
                  _lhsIrvarMp
              -- copy rule (from local)
              _exprOwhatAbove =
                  _whatAbove
              -- copy rule (down)
              _exprOwhatTo =
                  _lhsIwhatTo
              ( _exprIappFunKind,_exprIargL,_exprIcTrf,_exprIcoe,_exprIfunCoe,_exprIfvS,_exprIgUniq,_exprIgathLamMp,_exprImbFFIApp,_exprImbFunVar,_exprImbLam,_exprImbVar,_exprIoTrf,_exprIqualS,_exprIrvarMp,_exprIty,_exprIwhatBelow) =
                  expr_ _exprOaltMbScrutTy _exprOboundRelevTyVarS _exprOdataGam _exprOenv _exprOevalCtx _exprOfinalRVarMp _exprOgUniq _exprOisTopApp _exprOisTopTup _exprOknTy _exprOlamMp _exprOlev _exprOopts _exprOrvarMp _exprOwhatAbove _exprOwhatTo
          in  ( _lhsOaltMbScrutTy,_lhsObindLamMp,_lhsOcTrf,_lhsOcoe,_lhsOextraBindRVarMp,_lhsOfvS,_lhsOfvSMp,_lhsOgUniq,_lhsOgathEnv,_lhsOgathRecEnv,_lhsOnmL,_lhsOoTrf,_lhsOqualS,_lhsOrvarMp,_lhsOtyAspectL,_lhsOvalAspectL)))
sem_CBound_Ty :: ACoreBindAspectKeyS ->
                 Ty ->
                 T_CBound
sem_CBound_Ty aspectKeyS_ ty_ =
    (\ _lhsIboundRelevTyVarS
       _lhsIdataGam
       _lhsIenv
       _lhsIevalCtx
       _lhsIfinalRVarMp
       _lhsIforQuantRVarMp
       _lhsIgUniq
       _lhsIisGlobal
       _lhsIisTopApp
       _lhsIisTopTup
       _lhsIknTy
       _lhsIlamMp
       _lhsIletBindingsCateg
       _lhsIlev
       _lhsInm
       _lhsIopts
       _lhsIrvarMp
       _lhsIwhatTo ->
         (let _lhsOcoe :: RelevCoe
              _lhsOaltMbScrutTy :: MbRelevTy
              _lhsObindLamMp :: LamMp
              _lhsOextraBindRVarMp :: RVarMp
              _lhsOfvS :: FvS
              _lhsOfvSMp :: FvSMp
              _lhsOgathEnv :: REnv
              _lhsOgathRecEnv :: REnv
              _lhsOnmL :: ([HsName])
              _lhsOqualS :: RelevQualS
              _lhsOtyAspectL :: ([CBound])
              _lhsOvalAspectL :: ([CBound])
              _lhsOcTrf :: CBound
              _lhsOoTrf :: CBound
              _lhsOgUniq :: UID
              _lhsOrvarMp :: RVarMp
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 313, column 17)
              _altMbScrutTy =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 337, column 25)
              _lhsOcoe =
                  RelevCoe_Id
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 306, column 33)
              _lhsOaltMbScrutTy =
                  _altMbScrutTy
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 11, column 30)
              _lhsObindLamMp =
                  Map.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 412, column 36)
              _lhsOextraBindRVarMp =
                  emptyRVarMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
              _lhsOfvS =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 2, column 26)
              _lhsOfvSMp =
                  Map.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 194, column 32)
              _lhsOgathEnv =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 195, column 32)
              _lhsOgathRecEnv =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 16, column 31)
              _lhsOnmL =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
              _lhsOqualS =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 575, column 32)
              _lhsOtyAspectL =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 576, column 32)
              _lhsOvalAspectL =
                  []
              -- self rule
              _cTrf =
                  CBound_Ty aspectKeyS_ ty_
              -- self rule
              _oTrf =
                  CBound_Ty aspectKeyS_ ty_
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- self rule
              _lhsOoTrf =
                  _oTrf
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOrvarMp =
                  _lhsIrvarMp
          in  ( _lhsOaltMbScrutTy,_lhsObindLamMp,_lhsOcTrf,_lhsOcoe,_lhsOextraBindRVarMp,_lhsOfvS,_lhsOfvSMp,_lhsOgUniq,_lhsOgathEnv,_lhsOgathRecEnv,_lhsOnmL,_lhsOoTrf,_lhsOqualS,_lhsOrvarMp,_lhsOtyAspectL,_lhsOvalAspectL)))
sem_CBound_FFE :: FFIWay ->
                  ForeignEnt ->
                  T_CExpr ->
                  Ty ->
                  T_CBound
sem_CBound_FFE callconv_ expEnt_ expr_ ty_ =
    (\ _lhsIboundRelevTyVarS
       _lhsIdataGam
       _lhsIenv
       _lhsIevalCtx
       _lhsIfinalRVarMp
       _lhsIforQuantRVarMp
       _lhsIgUniq
       _lhsIisGlobal
       _lhsIisTopApp
       _lhsIisTopTup
       _lhsIknTy
       _lhsIlamMp
       _lhsIletBindingsCateg
       _lhsIlev
       _lhsInm
       _lhsIopts
       _lhsIrvarMp
       _lhsIwhatTo ->
         (let _exprOisTopApp :: Bool
              _exprOisTopTup :: Bool
              _whatAbove :: WhatExpr
              _lhsOcoe :: RelevCoe
              _lhsOaltMbScrutTy :: MbRelevTy
              _lhsObindLamMp :: LamMp
              _lhsOextraBindRVarMp :: RVarMp
              _lhsOfvS :: FvS
              _lhsOfvSMp :: FvSMp
              _lhsOgathEnv :: REnv
              _lhsOgathRecEnv :: REnv
              _lhsOnmL :: ([HsName])
              _lhsOqualS :: RelevQualS
              _lhsOtyAspectL :: ([CBound])
              _lhsOvalAspectL :: ([CBound])
              _lhsOcTrf :: CBound
              _lhsOoTrf :: CBound
              _lhsOgUniq :: UID
              _lhsOrvarMp :: RVarMp
              _exprOaltMbScrutTy :: MbRelevTy
              _exprOboundRelevTyVarS :: UIDS
              _exprOdataGam :: DataGam
              _exprOenv :: REnv
              _exprOevalCtx :: EvalCtx
              _exprOfinalRVarMp :: RVarMp
              _exprOgUniq :: UID
              _exprOknTy :: RelevTy
              _exprOlamMp :: LamMp
              _exprOlev :: Int
              _exprOopts :: EHCOpts
              _exprOrvarMp :: RVarMp
              _exprOwhatAbove :: WhatExpr
              _exprOwhatTo :: ([WhatToRelevInfer])
              _exprIappFunKind :: AppFunKind
              _exprIargL :: ([CBound])
              _exprIcTrf :: CExpr
              _exprIcoe :: RelevCoe
              _exprIfunCoe :: RelevCoe
              _exprIfvS :: FvS
              _exprIgUniq :: UID
              _exprIgathLamMp :: LamMp
              _exprImbFFIApp :: (Maybe ( Ty
                                                                   , Bool
                                                                   , FFIWay
                                                                   , ForeignEnt
                                                                   , [Ty]
                                                                   ))
              _exprImbFunVar :: (Maybe HsName)
              _exprImbLam :: (Maybe [HsName])
              _exprImbVar :: (Maybe HsName)
              _exprIoTrf :: CExpr
              _exprIqualS :: RelevQualS
              _exprIrvarMp :: RVarMp
              _exprIty :: RelevTy
              _exprIwhatBelow :: WhatExpr
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 37, column 17)
              _exprOisTopApp =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 37, column 17)
              _exprOisTopTup =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 81, column 17)
              _whatAbove =
                  ExprIsLam 0
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonFFI.ag"(line 21, column 17)
              _argTyLresTy =
                  appUnArr ty_
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonFFI.ag"(line 21, column 17)
              _argTyL =
                  fst _argTyLresTy
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonFFI.ag"(line 21, column 17)
              _resTy =
                  snd _argTyLresTy
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonFFI.ag"(line 21, column 17)
              _foreignEntInfo =
                  foreignEntExtract expEnt_
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonFFI.ag"(line 21, column 17)
              _expEntNm =
                  forextractEnt _foreignEntInfo
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 313, column 17)
              _altMbScrutTy =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 337, column 25)
              _lhsOcoe =
                  RelevCoe_Id
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 306, column 33)
              _lhsOaltMbScrutTy =
                  _altMbScrutTy
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 11, column 30)
              _lhsObindLamMp =
                  Map.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 412, column 36)
              _lhsOextraBindRVarMp =
                  emptyRVarMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
              _lhsOfvS =
                  _exprIfvS
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 2, column 26)
              _lhsOfvSMp =
                  Map.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 194, column 32)
              _lhsOgathEnv =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 195, column 32)
              _lhsOgathRecEnv =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 16, column 31)
              _lhsOnmL =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
              _lhsOqualS =
                  _exprIqualS
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 575, column 32)
              _lhsOtyAspectL =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 576, column 32)
              _lhsOvalAspectL =
                  []
              -- self rule
              _cTrf =
                  CBound_FFE callconv_ expEnt_ _exprIcTrf ty_
              -- self rule
              _oTrf =
                  CBound_FFE callconv_ expEnt_ _exprIoTrf ty_
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- self rule
              _lhsOoTrf =
                  _oTrf
              -- copy rule (up)
              _lhsOgUniq =
                  _exprIgUniq
              -- copy rule (up)
              _lhsOrvarMp =
                  _exprIrvarMp
              -- copy rule (from local)
              _exprOaltMbScrutTy =
                  _altMbScrutTy
              -- copy rule (down)
              _exprOboundRelevTyVarS =
                  _lhsIboundRelevTyVarS
              -- copy rule (down)
              _exprOdataGam =
                  _lhsIdataGam
              -- copy rule (down)
              _exprOenv =
                  _lhsIenv
              -- copy rule (down)
              _exprOevalCtx =
                  _lhsIevalCtx
              -- copy rule (down)
              _exprOfinalRVarMp =
                  _lhsIfinalRVarMp
              -- copy rule (down)
              _exprOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _exprOknTy =
                  _lhsIknTy
              -- copy rule (down)
              _exprOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _exprOlev =
                  _lhsIlev
              -- copy rule (down)
              _exprOopts =
                  _lhsIopts
              -- copy rule (down)
              _exprOrvarMp =
                  _lhsIrvarMp
              -- copy rule (from local)
              _exprOwhatAbove =
                  _whatAbove
              -- copy rule (down)
              _exprOwhatTo =
                  _lhsIwhatTo
              ( _exprIappFunKind,_exprIargL,_exprIcTrf,_exprIcoe,_exprIfunCoe,_exprIfvS,_exprIgUniq,_exprIgathLamMp,_exprImbFFIApp,_exprImbFunVar,_exprImbLam,_exprImbVar,_exprIoTrf,_exprIqualS,_exprIrvarMp,_exprIty,_exprIwhatBelow) =
                  expr_ _exprOaltMbScrutTy _exprOboundRelevTyVarS _exprOdataGam _exprOenv _exprOevalCtx _exprOfinalRVarMp _exprOgUniq _exprOisTopApp _exprOisTopTup _exprOknTy _exprOlamMp _exprOlev _exprOopts _exprOrvarMp _exprOwhatAbove _exprOwhatTo
          in  ( _lhsOaltMbScrutTy,_lhsObindLamMp,_lhsOcTrf,_lhsOcoe,_lhsOextraBindRVarMp,_lhsOfvS,_lhsOfvSMp,_lhsOgUniq,_lhsOgathEnv,_lhsOgathRecEnv,_lhsOnmL,_lhsOoTrf,_lhsOqualS,_lhsOrvarMp,_lhsOtyAspectL,_lhsOvalAspectL)))
-- CBoundL -----------------------------------------------------
{-
   visit 0:
      inherited attributes:
         boundRelevTyVarS     : UIDS
         dataGam              : DataGam
         env                  : REnv
         evalCtx              : EvalCtx
         finalRVarMp          : RVarMp
         forQuantRVarMp       : RVarMp
         isGlobal             : Bool
         knTy                 : RelevTy
         lamMp                : LamMp
         letBindingsCateg     : CBindCateg
         lev                  : Int
         nm                   : HsName
         opts                 : EHCOpts
         whatTo               : [WhatToRelevInfer]
      chained attributes:
         gUniq                : UID
         rvarMp               : RVarMp
      synthesized attributes:
         altMbScrutTy         : MbRelevTy
         bindLamMp            : LamMp
         cTrf                 : CBoundL 
         extraBindRVarMp      : RVarMp
         fvS                  : FvS
         fvSMp                : FvSMp
         gathEnv              : REnv
         gathRecEnv           : REnv
         nmL                  : [HsName]
         oTrf                 : CBoundL 
         qualS                : RelevQualS
         tyAspectL            : [CBound]
         valAspectL           : [CBound]
   alternatives:
      alternative Cons:
         child hd             : CBound 
         child tl             : CBoundL 
         visit 0:
            local cTrf        : _
            local oTrf        : _
      alternative Nil:
         visit 0:
            local cTrf        : _
            local oTrf        : _
-}
-- cata
sem_CBoundL :: CBoundL ->
               T_CBoundL
sem_CBoundL list =
    (Prelude.foldr sem_CBoundL_Cons sem_CBoundL_Nil (Prelude.map sem_CBound list))
-- semantic domain
type T_CBoundL = UIDS ->
                 DataGam ->
                 REnv ->
                 EvalCtx ->
                 RVarMp ->
                 RVarMp ->
                 UID ->
                 Bool ->
                 RelevTy ->
                 LamMp ->
                 CBindCateg ->
                 Int ->
                 HsName ->
                 EHCOpts ->
                 RVarMp ->
                 ([WhatToRelevInfer]) ->
                 ( MbRelevTy,LamMp,CBoundL,RVarMp,FvS,FvSMp,UID,REnv,REnv,([HsName]),CBoundL,RelevQualS,RVarMp,([CBound]),([CBound]))
sem_CBoundL_Cons :: T_CBound ->
                    T_CBoundL ->
                    T_CBoundL
sem_CBoundL_Cons hd_ tl_ =
    (\ _lhsIboundRelevTyVarS
       _lhsIdataGam
       _lhsIenv
       _lhsIevalCtx
       _lhsIfinalRVarMp
       _lhsIforQuantRVarMp
       _lhsIgUniq
       _lhsIisGlobal
       _lhsIknTy
       _lhsIlamMp
       _lhsIletBindingsCateg
       _lhsIlev
       _lhsInm
       _lhsIopts
       _lhsIrvarMp
       _lhsIwhatTo ->
         (let _hdOisTopApp :: Bool
              _hdOisTopTup :: Bool
              _lhsOaltMbScrutTy :: MbRelevTy
              _lhsObindLamMp :: LamMp
              _lhsOextraBindRVarMp :: RVarMp
              _lhsOfvS :: FvS
              _lhsOfvSMp :: FvSMp
              _lhsOgathEnv :: REnv
              _lhsOgathRecEnv :: REnv
              _lhsOnmL :: ([HsName])
              _lhsOqualS :: RelevQualS
              _lhsOtyAspectL :: ([CBound])
              _lhsOvalAspectL :: ([CBound])
              _lhsOcTrf :: CBoundL
              _lhsOoTrf :: CBoundL
              _lhsOgUniq :: UID
              _lhsOrvarMp :: RVarMp
              _hdOboundRelevTyVarS :: UIDS
              _hdOdataGam :: DataGam
              _hdOenv :: REnv
              _hdOevalCtx :: EvalCtx
              _hdOfinalRVarMp :: RVarMp
              _hdOforQuantRVarMp :: RVarMp
              _hdOgUniq :: UID
              _hdOisGlobal :: Bool
              _hdOknTy :: RelevTy
              _hdOlamMp :: LamMp
              _hdOletBindingsCateg :: CBindCateg
              _hdOlev :: Int
              _hdOnm :: HsName
              _hdOopts :: EHCOpts
              _hdOrvarMp :: RVarMp
              _hdOwhatTo :: ([WhatToRelevInfer])
              _tlOboundRelevTyVarS :: UIDS
              _tlOdataGam :: DataGam
              _tlOenv :: REnv
              _tlOevalCtx :: EvalCtx
              _tlOfinalRVarMp :: RVarMp
              _tlOforQuantRVarMp :: RVarMp
              _tlOgUniq :: UID
              _tlOisGlobal :: Bool
              _tlOknTy :: RelevTy
              _tlOlamMp :: LamMp
              _tlOletBindingsCateg :: CBindCateg
              _tlOlev :: Int
              _tlOnm :: HsName
              _tlOopts :: EHCOpts
              _tlOrvarMp :: RVarMp
              _tlOwhatTo :: ([WhatToRelevInfer])
              _hdIaltMbScrutTy :: MbRelevTy
              _hdIbindLamMp :: LamMp
              _hdIcTrf :: CBound
              _hdIcoe :: RelevCoe
              _hdIextraBindRVarMp :: RVarMp
              _hdIfvS :: FvS
              _hdIfvSMp :: FvSMp
              _hdIgUniq :: UID
              _hdIgathEnv :: REnv
              _hdIgathRecEnv :: REnv
              _hdInmL :: ([HsName])
              _hdIoTrf :: CBound
              _hdIqualS :: RelevQualS
              _hdIrvarMp :: RVarMp
              _hdItyAspectL :: ([CBound])
              _hdIvalAspectL :: ([CBound])
              _tlIaltMbScrutTy :: MbRelevTy
              _tlIbindLamMp :: LamMp
              _tlIcTrf :: CBoundL
              _tlIextraBindRVarMp :: RVarMp
              _tlIfvS :: FvS
              _tlIfvSMp :: FvSMp
              _tlIgUniq :: UID
              _tlIgathEnv :: REnv
              _tlIgathRecEnv :: REnv
              _tlInmL :: ([HsName])
              _tlIoTrf :: CBoundL
              _tlIqualS :: RelevQualS
              _tlIrvarMp :: RVarMp
              _tlItyAspectL :: ([CBound])
              _tlIvalAspectL :: ([CBound])
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 31, column 25)
              _hdOisTopApp =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 31, column 25)
              _hdOisTopTup =
                  True
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 306, column 33)
              _lhsOaltMbScrutTy =
                  _hdIaltMbScrutTy <|> _tlIaltMbScrutTy
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 11, column 30)
              _lhsObindLamMp =
                  _hdIbindLamMp `lamMpUnionBindAspMp` _tlIbindLamMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 412, column 36)
              _lhsOextraBindRVarMp =
                  _hdIextraBindRVarMp |+> _tlIextraBindRVarMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
              _lhsOfvS =
                  _hdIfvS `Set.union` _tlIfvS
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 2, column 26)
              _lhsOfvSMp =
                  _hdIfvSMp `Map.union` _tlIfvSMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 194, column 32)
              _lhsOgathEnv =
                  _hdIgathEnv `gamUnion` _tlIgathEnv
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 195, column 32)
              _lhsOgathRecEnv =
                  _hdIgathRecEnv `gamUnion` _tlIgathRecEnv
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 16, column 31)
              _lhsOnmL =
                  _hdInmL ++ _tlInmL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
              _lhsOqualS =
                  _hdIqualS `Set.union` _tlIqualS
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 575, column 32)
              _lhsOtyAspectL =
                  _hdItyAspectL ++ _tlItyAspectL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 576, column 32)
              _lhsOvalAspectL =
                  _hdIvalAspectL ++ _tlIvalAspectL
              -- self rule
              _cTrf =
                  (:) _hdIcTrf _tlIcTrf
              -- self rule
              _oTrf =
                  (:) _hdIoTrf _tlIoTrf
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- self rule
              _lhsOoTrf =
                  _oTrf
              -- copy rule (up)
              _lhsOgUniq =
                  _tlIgUniq
              -- copy rule (up)
              _lhsOrvarMp =
                  _tlIrvarMp
              -- copy rule (down)
              _hdOboundRelevTyVarS =
                  _lhsIboundRelevTyVarS
              -- copy rule (down)
              _hdOdataGam =
                  _lhsIdataGam
              -- copy rule (down)
              _hdOenv =
                  _lhsIenv
              -- copy rule (down)
              _hdOevalCtx =
                  _lhsIevalCtx
              -- copy rule (down)
              _hdOfinalRVarMp =
                  _lhsIfinalRVarMp
              -- copy rule (down)
              _hdOforQuantRVarMp =
                  _lhsIforQuantRVarMp
              -- copy rule (down)
              _hdOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _hdOisGlobal =
                  _lhsIisGlobal
              -- copy rule (down)
              _hdOknTy =
                  _lhsIknTy
              -- copy rule (down)
              _hdOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _hdOletBindingsCateg =
                  _lhsIletBindingsCateg
              -- copy rule (down)
              _hdOlev =
                  _lhsIlev
              -- copy rule (down)
              _hdOnm =
                  _lhsInm
              -- copy rule (down)
              _hdOopts =
                  _lhsIopts
              -- copy rule (down)
              _hdOrvarMp =
                  _lhsIrvarMp
              -- copy rule (down)
              _hdOwhatTo =
                  _lhsIwhatTo
              -- copy rule (down)
              _tlOboundRelevTyVarS =
                  _lhsIboundRelevTyVarS
              -- copy rule (down)
              _tlOdataGam =
                  _lhsIdataGam
              -- copy rule (down)
              _tlOenv =
                  _lhsIenv
              -- copy rule (down)
              _tlOevalCtx =
                  _lhsIevalCtx
              -- copy rule (down)
              _tlOfinalRVarMp =
                  _lhsIfinalRVarMp
              -- copy rule (down)
              _tlOforQuantRVarMp =
                  _lhsIforQuantRVarMp
              -- copy rule (chain)
              _tlOgUniq =
                  _hdIgUniq
              -- copy rule (down)
              _tlOisGlobal =
                  _lhsIisGlobal
              -- copy rule (down)
              _tlOknTy =
                  _lhsIknTy
              -- copy rule (down)
              _tlOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _tlOletBindingsCateg =
                  _lhsIletBindingsCateg
              -- copy rule (down)
              _tlOlev =
                  _lhsIlev
              -- copy rule (down)
              _tlOnm =
                  _lhsInm
              -- copy rule (down)
              _tlOopts =
                  _lhsIopts
              -- copy rule (chain)
              _tlOrvarMp =
                  _hdIrvarMp
              -- copy rule (down)
              _tlOwhatTo =
                  _lhsIwhatTo
              ( _hdIaltMbScrutTy,_hdIbindLamMp,_hdIcTrf,_hdIcoe,_hdIextraBindRVarMp,_hdIfvS,_hdIfvSMp,_hdIgUniq,_hdIgathEnv,_hdIgathRecEnv,_hdInmL,_hdIoTrf,_hdIqualS,_hdIrvarMp,_hdItyAspectL,_hdIvalAspectL) =
                  hd_ _hdOboundRelevTyVarS _hdOdataGam _hdOenv _hdOevalCtx _hdOfinalRVarMp _hdOforQuantRVarMp _hdOgUniq _hdOisGlobal _hdOisTopApp _hdOisTopTup _hdOknTy _hdOlamMp _hdOletBindingsCateg _hdOlev _hdOnm _hdOopts _hdOrvarMp _hdOwhatTo
              ( _tlIaltMbScrutTy,_tlIbindLamMp,_tlIcTrf,_tlIextraBindRVarMp,_tlIfvS,_tlIfvSMp,_tlIgUniq,_tlIgathEnv,_tlIgathRecEnv,_tlInmL,_tlIoTrf,_tlIqualS,_tlIrvarMp,_tlItyAspectL,_tlIvalAspectL) =
                  tl_ _tlOboundRelevTyVarS _tlOdataGam _tlOenv _tlOevalCtx _tlOfinalRVarMp _tlOforQuantRVarMp _tlOgUniq _tlOisGlobal _tlOknTy _tlOlamMp _tlOletBindingsCateg _tlOlev _tlOnm _tlOopts _tlOrvarMp _tlOwhatTo
          in  ( _lhsOaltMbScrutTy,_lhsObindLamMp,_lhsOcTrf,_lhsOextraBindRVarMp,_lhsOfvS,_lhsOfvSMp,_lhsOgUniq,_lhsOgathEnv,_lhsOgathRecEnv,_lhsOnmL,_lhsOoTrf,_lhsOqualS,_lhsOrvarMp,_lhsOtyAspectL,_lhsOvalAspectL)))
sem_CBoundL_Nil :: T_CBoundL
sem_CBoundL_Nil =
    (\ _lhsIboundRelevTyVarS
       _lhsIdataGam
       _lhsIenv
       _lhsIevalCtx
       _lhsIfinalRVarMp
       _lhsIforQuantRVarMp
       _lhsIgUniq
       _lhsIisGlobal
       _lhsIknTy
       _lhsIlamMp
       _lhsIletBindingsCateg
       _lhsIlev
       _lhsInm
       _lhsIopts
       _lhsIrvarMp
       _lhsIwhatTo ->
         (let _lhsOaltMbScrutTy :: MbRelevTy
              _lhsObindLamMp :: LamMp
              _lhsOextraBindRVarMp :: RVarMp
              _lhsOfvS :: FvS
              _lhsOfvSMp :: FvSMp
              _lhsOgathEnv :: REnv
              _lhsOgathRecEnv :: REnv
              _lhsOnmL :: ([HsName])
              _lhsOqualS :: RelevQualS
              _lhsOtyAspectL :: ([CBound])
              _lhsOvalAspectL :: ([CBound])
              _lhsOcTrf :: CBoundL
              _lhsOoTrf :: CBoundL
              _lhsOgUniq :: UID
              _lhsOrvarMp :: RVarMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 306, column 33)
              _lhsOaltMbScrutTy =
                  Nothing
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 11, column 30)
              _lhsObindLamMp =
                  Map.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 412, column 36)
              _lhsOextraBindRVarMp =
                  emptyRVarMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
              _lhsOfvS =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 2, column 26)
              _lhsOfvSMp =
                  Map.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 194, column 32)
              _lhsOgathEnv =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 195, column 32)
              _lhsOgathRecEnv =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 16, column 31)
              _lhsOnmL =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
              _lhsOqualS =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 575, column 32)
              _lhsOtyAspectL =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 576, column 32)
              _lhsOvalAspectL =
                  []
              -- self rule
              _cTrf =
                  []
              -- self rule
              _oTrf =
                  []
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- self rule
              _lhsOoTrf =
                  _oTrf
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOrvarMp =
                  _lhsIrvarMp
          in  ( _lhsOaltMbScrutTy,_lhsObindLamMp,_lhsOcTrf,_lhsOextraBindRVarMp,_lhsOfvS,_lhsOfvSMp,_lhsOgUniq,_lhsOgathEnv,_lhsOgathRecEnv,_lhsOnmL,_lhsOoTrf,_lhsOqualS,_lhsOrvarMp,_lhsOtyAspectL,_lhsOvalAspectL)))
-- CDataCon ----------------------------------------------------
{-
   visit 0:
      synthesized attribute:
         cTrf                 : CDataCon 
   alternatives:
      alternative Con:
         child conNm          : {HsName}
         child tagNr          : {Int}
         child arity          : {Int}
         visit 0:
            local cTrf        : _
-}
-- cata
sem_CDataCon :: CDataCon ->
                T_CDataCon
sem_CDataCon (CDataCon_Con _conNm _tagNr _arity) =
    (sem_CDataCon_Con _conNm _tagNr _arity)
-- semantic domain
type T_CDataCon = ( CDataCon)
sem_CDataCon_Con :: HsName ->
                    Int ->
                    Int ->
                    T_CDataCon
sem_CDataCon_Con conNm_ tagNr_ arity_ =
    (let _lhsOcTrf :: CDataCon
         -- self rule
         _cTrf =
             CDataCon_Con conNm_ tagNr_ arity_
         -- self rule
         _lhsOcTrf =
             _cTrf
     in  ( _lhsOcTrf))
-- CDataConL ---------------------------------------------------
{-
   visit 0:
      synthesized attribute:
         cTrf                 : CDataConL 
   alternatives:
      alternative Cons:
         child hd             : CDataCon 
         child tl             : CDataConL 
         visit 0:
            local cTrf        : _
      alternative Nil:
         visit 0:
            local cTrf        : _
-}
-- cata
sem_CDataConL :: CDataConL ->
                 T_CDataConL
sem_CDataConL list =
    (Prelude.foldr sem_CDataConL_Cons sem_CDataConL_Nil (Prelude.map sem_CDataCon list))
-- semantic domain
type T_CDataConL = ( CDataConL)
sem_CDataConL_Cons :: T_CDataCon ->
                      T_CDataConL ->
                      T_CDataConL
sem_CDataConL_Cons hd_ tl_ =
    (let _lhsOcTrf :: CDataConL
         _hdIcTrf :: CDataCon
         _tlIcTrf :: CDataConL
         -- self rule
         _cTrf =
             (:) _hdIcTrf _tlIcTrf
         -- self rule
         _lhsOcTrf =
             _cTrf
         ( _hdIcTrf) =
             hd_
         ( _tlIcTrf) =
             tl_
     in  ( _lhsOcTrf))
sem_CDataConL_Nil :: T_CDataConL
sem_CDataConL_Nil =
    (let _lhsOcTrf :: CDataConL
         -- self rule
         _cTrf =
             []
         -- self rule
         _lhsOcTrf =
             _cTrf
     in  ( _lhsOcTrf))
-- CDeclMeta ---------------------------------------------------
{-
   visit 0:
      synthesized attribute:
         cTrf                 : CDeclMeta 
   alternatives:
      alternative Data:
         child tyNm           : {HsName}
         child dataCons       : CDataConL 
         visit 0:
            local cTrf        : _
-}
-- cata
sem_CDeclMeta :: CDeclMeta ->
                 T_CDeclMeta
sem_CDeclMeta (CDeclMeta_Data _tyNm _dataCons) =
    (sem_CDeclMeta_Data _tyNm (sem_CDataConL _dataCons))
-- semantic domain
type T_CDeclMeta = ( CDeclMeta)
sem_CDeclMeta_Data :: HsName ->
                      T_CDataConL ->
                      T_CDeclMeta
sem_CDeclMeta_Data tyNm_ dataCons_ =
    (let _lhsOcTrf :: CDeclMeta
         _dataConsIcTrf :: CDataConL
         -- self rule
         _cTrf =
             CDeclMeta_Data tyNm_ _dataConsIcTrf
         -- self rule
         _lhsOcTrf =
             _cTrf
         ( _dataConsIcTrf) =
             dataCons_
     in  ( _lhsOcTrf))
-- CDeclMetaL --------------------------------------------------
{-
   visit 0:
      synthesized attribute:
         cTrf                 : CDeclMetaL 
   alternatives:
      alternative Cons:
         child hd             : CDeclMeta 
         child tl             : CDeclMetaL 
         visit 0:
            local cTrf        : _
      alternative Nil:
         visit 0:
            local cTrf        : _
-}
-- cata
sem_CDeclMetaL :: CDeclMetaL ->
                  T_CDeclMetaL
sem_CDeclMetaL list =
    (Prelude.foldr sem_CDeclMetaL_Cons sem_CDeclMetaL_Nil (Prelude.map sem_CDeclMeta list))
-- semantic domain
type T_CDeclMetaL = ( CDeclMetaL)
sem_CDeclMetaL_Cons :: T_CDeclMeta ->
                       T_CDeclMetaL ->
                       T_CDeclMetaL
sem_CDeclMetaL_Cons hd_ tl_ =
    (let _lhsOcTrf :: CDeclMetaL
         _hdIcTrf :: CDeclMeta
         _tlIcTrf :: CDeclMetaL
         -- self rule
         _cTrf =
             (:) _hdIcTrf _tlIcTrf
         -- self rule
         _lhsOcTrf =
             _cTrf
         ( _hdIcTrf) =
             hd_
         ( _tlIcTrf) =
             tl_
     in  ( _lhsOcTrf))
sem_CDeclMetaL_Nil :: T_CDeclMetaL
sem_CDeclMetaL_Nil =
    (let _lhsOcTrf :: CDeclMetaL
         -- self rule
         _cTrf =
             []
         -- self rule
         _lhsOcTrf =
             _cTrf
     in  ( _lhsOcTrf))
-- CExport -----------------------------------------------------
{-
   visit 0:
      synthesized attribute:
         cTrf                 : CExport 
   alternatives:
      alternative Export:
         child nm             : {HsName}
         visit 0:
            local cTrf        : _
-}
-- cata
sem_CExport :: CExport ->
               T_CExport
sem_CExport (CExport_Export _nm) =
    (sem_CExport_Export _nm)
-- semantic domain
type T_CExport = ( CExport)
sem_CExport_Export :: HsName ->
                      T_CExport
sem_CExport_Export nm_ =
    (let _lhsOcTrf :: CExport
         -- self rule
         _cTrf =
             CExport_Export nm_
         -- self rule
         _lhsOcTrf =
             _cTrf
     in  ( _lhsOcTrf))
-- CExportL ----------------------------------------------------
{-
   visit 0:
      synthesized attribute:
         cTrf                 : CExportL 
   alternatives:
      alternative Cons:
         child hd             : CExport 
         child tl             : CExportL 
         visit 0:
            local cTrf        : _
      alternative Nil:
         visit 0:
            local cTrf        : _
-}
-- cata
sem_CExportL :: CExportL ->
                T_CExportL
sem_CExportL list =
    (Prelude.foldr sem_CExportL_Cons sem_CExportL_Nil (Prelude.map sem_CExport list))
-- semantic domain
type T_CExportL = ( CExportL)
sem_CExportL_Cons :: T_CExport ->
                     T_CExportL ->
                     T_CExportL
sem_CExportL_Cons hd_ tl_ =
    (let _lhsOcTrf :: CExportL
         _hdIcTrf :: CExport
         _tlIcTrf :: CExportL
         -- self rule
         _cTrf =
             (:) _hdIcTrf _tlIcTrf
         -- self rule
         _lhsOcTrf =
             _cTrf
         ( _hdIcTrf) =
             hd_
         ( _tlIcTrf) =
             tl_
     in  ( _lhsOcTrf))
sem_CExportL_Nil :: T_CExportL
sem_CExportL_Nil =
    (let _lhsOcTrf :: CExportL
         -- self rule
         _cTrf =
             []
         -- self rule
         _lhsOcTrf =
             _cTrf
     in  ( _lhsOcTrf))
-- CExpr -------------------------------------------------------
{-
   visit 0:
      inherited attributes:
         altMbScrutTy         : MbRelevTy
         boundRelevTyVarS     : UIDS
         dataGam              : DataGam
         env                  : REnv
         evalCtx              : EvalCtx
         finalRVarMp          : RVarMp
         isTopApp             : Bool
         isTopTup             : Bool
         knTy                 : RelevTy
         lamMp                : LamMp
         lev                  : Int
         opts                 : EHCOpts
         whatAbove            : WhatExpr
         whatTo               : [WhatToRelevInfer]
      chained attributes:
         gUniq                : UID
         rvarMp               : RVarMp
      synthesized attributes:
         appFunKind           : AppFunKind
         argL                 : [CBound]
         cTrf                 : CExpr 
         coe                  : RelevCoe
         funCoe               : RelevCoe
         fvS                  : FvS
         gathLamMp            : LamMp
         mbFFIApp             : Maybe ( Ty
                                  , Bool
                                  , FFIWay
                                  , ForeignEnt
                                  , [Ty]
                                  )
         mbFunVar             : Maybe HsName
         mbLam                : Maybe [HsName]
         mbVar                : Maybe HsName
         oTrf                 : CExpr 
         qualS                : RelevQualS
         ty                   : RelevTy
         whatBelow            : WhatExpr
   alternatives:
      alternative Var:
         child ref            : {ACoreBindRef}
         visit 0:
            local isTopApp    : {Bool}
            local isTopTup    : _
            local whatBelow   : _
            local whatAbove   : {WhatExpr}
            local mbVar       : {Maybe HsName}
            local nm          : {HsName}
            local nmAsp       : {HsName}
            local mbEnvTy     : _
            local _tup10      : _
            local envTy       : {RelevTy}
            local envQualS    : {RelevQualS}
            local _tup11      : _
            local amso        : {AMSOut RelevTy}
            local ams         : {AnaMatchState}
            local dbg         : _
            local _tup12      : _
            local lUniq       : {UID}
            local lUniq2      : {UID}
            local lUniq3      : {UID}
            local cTrf        : _
            local oTrf        : _
      alternative Int:
         child int            : {Int}
         visit 0:
            local isTopApp    : {Bool}
            local isTopTup    : _
            local whatBelow   : _
            local whatAbove   : {WhatExpr}
            local litTy       : {RelevTy}
            local _tup13      : _
            local amso        : {AMSOut RelevTy}
            local ams         : {AnaMatchState}
            local dbg         : _
            local cTrf        : _
            local oTrf        : _
      alternative Char:
         child char           : {Char}
         visit 0:
            local isTopApp    : {Bool}
            local isTopTup    : _
            local whatBelow   : _
            local whatAbove   : {WhatExpr}
            local litTy       : {RelevTy}
            local _tup14      : _
            local amso        : {AMSOut RelevTy}
            local ams         : {AnaMatchState}
            local dbg         : _
            local cTrf        : _
            local oTrf        : _
      alternative String:
         child str            : {String}
         visit 0:
            local isTopApp    : {Bool}
            local isTopTup    : _
            local whatBelow   : _
            local whatAbove   : {WhatExpr}
            local cTrf        : _
            local oTrf        : _
      alternative Integer:
         child integer        : {Integer}
         visit 0:
            local isTopApp    : {Bool}
            local isTopTup    : _
            local whatBelow   : _
            local whatAbove   : {WhatExpr}
            local cTrf        : _
            local oTrf        : _
      alternative Tup:
         child tag            : {CTag}
         visit 0:
            local isTopApp    : {Bool}
            local isTopTup    : _
            local whatBelow   : _
            local whatAbove   : {WhatExpr}
            local _tup15      : _
            local tupTy       : {RelevTy}
            local tupQualS    : _
            local _tup16      : _
            local amso        : {AMSOut RelevTy}
            local ams         : {AnaMatchState}
            local dbg         : _
            local _tup17      : _
            local lUniq       : {UID}
            local lUniq2      : {UID}
            local cTrf        : _
            local oTrf        : _
      alternative Let:
         child categ          : {CBindCateg}
         child binds          : CBindL 
         child body           : CExpr 
         visit 0:
            local fvS         : _
            local letBindingsCateg : _
            local isTopApp    : {Bool}
            local isTopTup    : _
            local whatBelow   : _
            local whatAbove   : {WhatExpr}
            local isTopLet    : _
            local evalCtx     : _
            local isGlobal    : _
            local bindsCanParticpateInOuterSolving : {Bool}
            local bindsQualSSubs : _
            local bindsQualSOuter : _
            local bindsQualSSolv1 : _
            local bindsQualSSolv2 : _
            local bindsSolveVarMp : _
            local cTrf        : _
            local oTrf        : _
      alternative App:
         child func           : CExpr 
         child arg            : CBound 
         visit 0:
            local fvS         : _
            local letBindingsCateg : _
            local isTopTup    : _
            local whatBelow   : _
            local whatAbove   : {WhatExpr}
            local isTopApp'   : _
            local argL        : _
            local isGlobal    : _
            local funTy       : {RelevTy}
            local _tup18      : _
            local argTy       : {RelevTy}
            local resTy       : _
            local resFunTy    : _
            local hereArgCoe  : _
            local hereFunCoe  : _
            local _tup19      : _
            local argCoe      : _
            local resCoe      : _
            local forQuantRVarMp : _
            local _tup20      : _
            local lUniq       : {UID}
            local cTrf        : _
            local oTrf        : _
      alternative Lam:
         child bind           : CBind 
         child body           : CExpr 
         visit 0:
            local fvS         : _
            local letBindingsCateg : _
            local isTopApp    : {Bool}
            local isTopTup    : _
            local whatBelow   : _
            local whatAbove   : {WhatExpr}
            local isTopLam    : _
            local argNm       : _
            local lev         : _
            local isGlobal    : _
            local hereBodyCoe : _
            local forQuantRVarMp : _
            local cTrf        : _
            local oTrf        : _
      alternative Case:
         child expr           : CExpr 
         child alts           : CAltL 
         child dflt           : CExpr 
         visit 0:
            local isTopApp    : {Bool}
            local isTopTup    : _
            local whatBelow   : _
            local whatAbove   : {WhatExpr}
            local altQualSLSubs : {[RelevQualS]}
            local altQualSLSolv1 : {[(RelevQualS,RVarMp)]}
            local altQualSLSolv : {[RelevQualS]}
            local altQualSIntersect : {RelevQualS}
            local altQualSLSolv2 : _
            local altSolveLVarMp : {[RVarMp]}
            local dbg         : _
            local _tup21      : _
            local lUniq       : {UID}
            local lUniq2      : {UID}
            local cTrf        : _
            local oTrf        : _
      alternative CaseAltFail:
         child failReason     : {CaseAltFailReason}
         child errorExpr      : CExpr 
         visit 0:
            local isTopApp    : {Bool}
            local isTopTup    : _
            local whatAbove   : {WhatExpr}
            local cTrf        : _
            local oTrf        : _
      alternative TupDel:
         child expr           : CExpr 
         child tag            : {CTag}
         child nm             : {HsName}
         child offset         : CExpr 
         visit 0:
            local isTopApp    : {Bool}
            local isTopTup    : _
            local whatBelow   : _
            local whatAbove   : {WhatExpr}
            local cTrf        : _
            local oTrf        : _
      alternative TupIns:
         child expr           : CExpr 
         child tag            : {CTag}
         child nm             : {HsName}
         child offset         : CExpr 
         child fldExpr        : CExpr 
         visit 0:
            local isTopApp    : {Bool}
            local isTopTup    : _
            local whatBelow   : _
            local whatAbove   : {WhatExpr}
            local cTrf        : _
            local oTrf        : _
      alternative TupUpd:
         child expr           : CExpr 
         child tag            : {CTag}
         child nm             : {HsName}
         child offset         : CExpr 
         child fldExpr        : CExpr 
         visit 0:
            local isTopApp    : {Bool}
            local isTopTup    : _
            local whatBelow   : _
            local whatAbove   : {WhatExpr}
            local cTrf        : _
            local oTrf        : _
      alternative FFI:
         child callconv       : {FFIWay}
         child safety         : {String}
         child impEnt         : {ForeignEnt}
         child ty             : {Ty}
         visit 0:
            local isTopApp    : {Bool}
            local isTopTup    : _
            local whatBelow   : _
            local whatAbove   : {WhatExpr}
            local argTyLresTy : {( TyL, Ty )}
            local argTyL      : {TyL}
            local resTy       : _
            local foreignEntInfo : _
            local mbPrimNeedEval : {Maybe PrimitiveNeedsEval}
            local primArgNeedsEvalL : _
            local primResNeedsEval : {Bool}
            local argMbConL   : _
            local resMbCon    : _
            local _tup22      : _
            local ffiTy       : {RelevTy}
            local ffiQualS    : _
            local _tup23      : _
            local amso        : {AMSOut RelevTy}
            local ams         : {AnaMatchState}
            local dbg         : _
            local _tup24      : _
            local lUniq       : {UID}
            local lUniq2      : {UID}
            local cTrf        : _
            local oTrf        : _
      alternative Dbg:
         child info           : {String}
         visit 0:
            local isTopApp    : {Bool}
            local isTopTup    : _
            local whatBelow   : _
            local whatAbove   : {WhatExpr}
            local cTrf        : _
            local oTrf        : _
      alternative Hole:
         child uid            : {UID}
         visit 0:
            local isTopApp    : {Bool}
            local isTopTup    : _
            local whatBelow   : _
            local whatAbove   : {WhatExpr}
            local cTrf        : _
            local oTrf        : _
      alternative HoleLet:
         child bindsUid       : {UID}
         child body           : CExpr 
         visit 0:
            local isTopApp    : {Bool}
            local isTopTup    : _
            local whatBelow   : _
            local whatAbove   : {WhatExpr}
            local cTrf        : _
            local oTrf        : _
      alternative CoeArg:
         visit 0:
            local isTopApp    : {Bool}
            local isTopTup    : _
            local whatBelow   : _
            local whatAbove   : {WhatExpr}
            local cTrf        : _
            local oTrf        : _
      alternative ImplsApp:
         child func           : CExpr 
         child uid            : {ImplsVarId}
         visit 0:
            local isTopApp    : {Bool}
            local isTopTup    : _
            local whatBelow   : _
            local whatAbove   : {WhatExpr}
            local cTrf        : _
            local oTrf        : _
      alternative ImplsLam:
         child uid            : {ImplsVarId}
         child body           : CExpr 
         visit 0:
            local isTopApp    : {Bool}
            local isTopTup    : _
            local whatBelow   : _
            local whatAbove   : {WhatExpr}
            local cTrf        : _
            local oTrf        : _
      alternative Ann:
         child ann            : CExprAnn 
         child expr           : CExpr 
         visit 0:
            local cTrf        : _
            local oTrf        : _
-}
-- cata
sem_CExpr :: CExpr ->
             T_CExpr
sem_CExpr (CExpr_Var _ref) =
    (sem_CExpr_Var _ref)
sem_CExpr (CExpr_Int _int) =
    (sem_CExpr_Int _int)
sem_CExpr (CExpr_Char _char) =
    (sem_CExpr_Char _char)
sem_CExpr (CExpr_String _str) =
    (sem_CExpr_String _str)
sem_CExpr (CExpr_Integer _integer) =
    (sem_CExpr_Integer _integer)
sem_CExpr (CExpr_Tup _tag) =
    (sem_CExpr_Tup _tag)
sem_CExpr (CExpr_Let _categ _binds _body) =
    (sem_CExpr_Let _categ (sem_CBindL _binds) (sem_CExpr _body))
sem_CExpr (CExpr_App _func _arg) =
    (sem_CExpr_App (sem_CExpr _func) (sem_CBound _arg))
sem_CExpr (CExpr_Lam _bind _body) =
    (sem_CExpr_Lam (sem_CBind _bind) (sem_CExpr _body))
sem_CExpr (CExpr_Case _expr _alts _dflt) =
    (sem_CExpr_Case (sem_CExpr _expr) (sem_CAltL _alts) (sem_CExpr _dflt))
sem_CExpr (CExpr_CaseAltFail _failReason _errorExpr) =
    (sem_CExpr_CaseAltFail _failReason (sem_CExpr _errorExpr))
sem_CExpr (CExpr_TupDel _expr _tag _nm _offset) =
    (sem_CExpr_TupDel (sem_CExpr _expr) _tag _nm (sem_CExpr _offset))
sem_CExpr (CExpr_TupIns _expr _tag _nm _offset _fldExpr) =
    (sem_CExpr_TupIns (sem_CExpr _expr) _tag _nm (sem_CExpr _offset) (sem_CExpr _fldExpr))
sem_CExpr (CExpr_TupUpd _expr _tag _nm _offset _fldExpr) =
    (sem_CExpr_TupUpd (sem_CExpr _expr) _tag _nm (sem_CExpr _offset) (sem_CExpr _fldExpr))
sem_CExpr (CExpr_FFI _callconv _safety _impEnt _ty) =
    (sem_CExpr_FFI _callconv _safety _impEnt _ty)
sem_CExpr (CExpr_Dbg _info) =
    (sem_CExpr_Dbg _info)
sem_CExpr (CExpr_Hole _uid) =
    (sem_CExpr_Hole _uid)
sem_CExpr (CExpr_HoleLet _bindsUid _body) =
    (sem_CExpr_HoleLet _bindsUid (sem_CExpr _body))
sem_CExpr (CExpr_CoeArg) =
    (sem_CExpr_CoeArg)
sem_CExpr (CExpr_ImplsApp _func _uid) =
    (sem_CExpr_ImplsApp (sem_CExpr _func) _uid)
sem_CExpr (CExpr_ImplsLam _uid _body) =
    (sem_CExpr_ImplsLam _uid (sem_CExpr _body))
sem_CExpr (CExpr_Ann _ann _expr) =
    (sem_CExpr_Ann (sem_CExprAnn _ann) (sem_CExpr _expr))
-- semantic domain
type T_CExpr = MbRelevTy ->
               UIDS ->
               DataGam ->
               REnv ->
               EvalCtx ->
               RVarMp ->
               UID ->
               Bool ->
               Bool ->
               RelevTy ->
               LamMp ->
               Int ->
               EHCOpts ->
               RVarMp ->
               WhatExpr ->
               ([WhatToRelevInfer]) ->
               ( AppFunKind,([CBound]),CExpr,RelevCoe,RelevCoe,FvS,UID,LamMp,(Maybe ( Ty
                                                                                                                , Bool
                                                                                                                , FFIWay
                                                                                                                , ForeignEnt
                                                                                                                , [Ty]
                                                                                                                )),(Maybe HsName),(Maybe [HsName]),(Maybe HsName),CExpr,RelevQualS,RVarMp,RelevTy,WhatExpr)
sem_CExpr_Var :: ACoreBindRef ->
                 T_CExpr
sem_CExpr_Var ref_ =
    (\ _lhsIaltMbScrutTy
       _lhsIboundRelevTyVarS
       _lhsIdataGam
       _lhsIenv
       _lhsIevalCtx
       _lhsIfinalRVarMp
       _lhsIgUniq
       _lhsIisTopApp
       _lhsIisTopTup
       _lhsIknTy
       _lhsIlamMp
       _lhsIlev
       _lhsIopts
       _lhsIrvarMp
       _lhsIwhatAbove
       _lhsIwhatTo ->
         (let _lhsOgathLamMp :: LamMp
              _lhsOfvS :: FvS
              _isTopApp :: Bool
              _whatAbove :: WhatExpr
              _lhsOmbLam :: (Maybe [HsName])
              _lhsOappFunKind :: AppFunKind
              _mbVar :: (Maybe HsName)
              _lhsOmbFunVar :: (Maybe HsName)
              _lhsOargL :: ([CBound])
              _nm :: HsName
              _nmAsp :: HsName
              _lhsOmbFFIApp :: (Maybe ( Ty
                                                                  , Bool
                                                                  , FFIWay
                                                                  , ForeignEnt
                                                                  , [Ty]
                                                                  ))
              _envTy :: RelevTy
              _envQualS :: RelevQualS
              _amso :: (AMSOut RelevTy)
              _ams :: AnaMatchState
              _lhsOcoe :: RelevCoe
              _lhsOfunCoe :: RelevCoe
              _lhsOty :: RelevTy
              _lhsOrvarMp :: RVarMp
              _lhsOqualS :: RelevQualS
              _lhsOcTrf :: CExpr
              _lhsOgUniq :: UID
              _lUniq :: UID
              _lUniq2 :: UID
              _lUniq3 :: UID
              _lhsOoTrf :: CExpr
              _lhsOmbVar :: (Maybe HsName)
              _lhsOwhatBelow :: WhatExpr
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 9, column 33)
              _lhsOgathLamMp =
                  Map.empty
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 7, column 17)
              _lhsOfvS =
                  Set.singleton _nm
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 16, column 17)
              _isTopApp =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 21, column 17)
              _isTopTup =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 52, column 17)
              _whatBelow =
                  ExprIsVar _nm
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 72, column 17)
              _whatAbove =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonPred.ag"(line 6, column 33)
              _lhsOmbLam =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonPred.ag"(line 13, column 17)
              _lhsOappFunKind =
                  AppFunKind_Fun ref_
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonPred.ag"(line 21, column 17)
              _mbVar =
                  Just _nm
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonStructureInfo.ag"(line 5, column 17)
              _lhsOmbFunVar =
                  _mbVar
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonStructureInfo.ag"(line 15, column 33)
              _lhsOargL =
                  []
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonBindNm.ag"(line 15, column 17)
              _nm =
                  acbrefNm ref_
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonBindNm.ag"(line 15, column 17)
              _nmAsp =
                  mkHNm ref_
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonFFI.ag"(line 43, column 17)
              _lhsOmbFFIApp =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 159, column 17)
              _mbEnvTy =
                  fmap (relevtyInst _lUniq) (renvLookup _nm _lhsIenv _lhsIlamMp)
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 160, column 33)
              __tup10 =
                  maybe (top, Set.empty) id _mbEnvTy
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 160, column 33)
              (_envTy,_) =
                  __tup10
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 160, column 33)
              (_,_envQualS) =
                  __tup10
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 234, column 33)
              __tup11 =
                  let mk envTy knTy
                        = case (envTy,knTy) of
                            (RelevTy_Ana ana,t@(RelevTy_Fun _ _ _ a r@(RelevTy_Ana rAna)))
                              -> ( amso' {amsoCoe = RelevCoe_Eval ana rAna <.> RelevCoe_CastTy envTy envTy' <.> amsoCoe amso'}
                                 , ams'  {amsGathQual = Set.insert (RelevQual_SubEval ana rAna) $ amsGathQual ams'}
                                 )
                              where (amso',ams') = amsLE _lhsIrvarMp envTy' t
                                    envTy' = anaMkBotFun $ length a
                                    ty'@(RelevTy_Ana ana') = fresh _lUniq2
                            (t1,t2)
                              -> ( amsoMkOk t1 t2 (RelevCoe_CastTy t1 t2)
                                 , emptyAnaMatchState
                                 )
                  in  case _mbEnvTy of
                        Just (envTy,_)
                          | amsoIsOk amso -> o
                          | otherwise     -> mk envTy _lhsIknTy
                          where o@(amso,ams) = amsLE _lhsIrvarMp envTy _lhsIknTy
                        _                 -> mk (fresh _lUniq3) _lhsIknTy
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 234, column 33)
              (_amso,_) =
                  __tup11
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 234, column 33)
              (_,_ams) =
                  __tup11
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 319, column 17)
              _lhsOcoe =
                  _lhsIfinalRVarMp `varUpd` amsoCoe _amso
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 350, column 17)
              _lhsOfunCoe =
                  last $ relevCoeToComposeList $ amsoCoe _amso
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 362, column 17)
              _lhsOty =
                  amsoHi _amso
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 382, column 17)
              _lhsOrvarMp =
                  amsLocalVarMp _ams |+> _lhsIrvarMp
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 421, column 17)
              _lhsOqualS =
                  Set.union _envQualS (amsGathQual _ams)
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 594, column 17)
              _dbg =
                  dbg     _lhsIopts _envTy _lhsIknTy _amso _ams
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 613, column 17)
              _lhsOcTrf =
                  _cTrf
              -- -- generated by the unique rule mechanism.
              __tup12 =
                  let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> case nextUnique __cont of { (__cont, lUniq2) -> case nextUnique __cont of { (__cont, lUniq3) -> (__cont,lUniq,lUniq2,lUniq3)}}} )
              -- -- generated by the unique rule mechanism.
              (_lhsOgUniq,_,_,_) =
                  __tup12
              -- -- generated by the unique rule mechanism.
              (_,_lUniq,_,_) =
                  __tup12
              -- -- generated by the unique rule mechanism.
              (_,_,_lUniq2,_) =
                  __tup12
              -- -- generated by the unique rule mechanism.
              (_,_,_,_lUniq3) =
                  __tup12
              -- self rule
              _cTrf =
                  CExpr_Var ref_
              -- self rule
              _oTrf =
                  CExpr_Var ref_
              -- self rule
              _lhsOoTrf =
                  _oTrf
              -- copy rule (from local)
              _lhsOmbVar =
                  _mbVar
              -- copy rule (from local)
              _lhsOwhatBelow =
                  _whatBelow
          in  ( _lhsOappFunKind,_lhsOargL,_lhsOcTrf,_lhsOcoe,_lhsOfunCoe,_lhsOfvS,_lhsOgUniq,_lhsOgathLamMp,_lhsOmbFFIApp,_lhsOmbFunVar,_lhsOmbLam,_lhsOmbVar,_lhsOoTrf,_lhsOqualS,_lhsOrvarMp,_lhsOty,_lhsOwhatBelow)))
sem_CExpr_Int :: Int ->
                 T_CExpr
sem_CExpr_Int int_ =
    (\ _lhsIaltMbScrutTy
       _lhsIboundRelevTyVarS
       _lhsIdataGam
       _lhsIenv
       _lhsIevalCtx
       _lhsIfinalRVarMp
       _lhsIgUniq
       _lhsIisTopApp
       _lhsIisTopTup
       _lhsIknTy
       _lhsIlamMp
       _lhsIlev
       _lhsIopts
       _lhsIrvarMp
       _lhsIwhatAbove
       _lhsIwhatTo ->
         (let _lhsOgathLamMp :: LamMp
              _isTopApp :: Bool
              _whatAbove :: WhatExpr
              _lhsOmbLam :: (Maybe [HsName])
              _lhsOappFunKind :: AppFunKind
              _lhsOmbVar :: (Maybe HsName)
              _lhsOmbFunVar :: (Maybe HsName)
              _lhsOargL :: ([CBound])
              _lhsOmbFFIApp :: (Maybe ( Ty
                                                                  , Bool
                                                                  , FFIWay
                                                                  , ForeignEnt
                                                                  , [Ty]
                                                                  ))
              _litTy :: RelevTy
              _amso :: (AMSOut RelevTy)
              _ams :: AnaMatchState
              _lhsOcoe :: RelevCoe
              _lhsOfunCoe :: RelevCoe
              _lhsOty :: RelevTy
              _lhsOrvarMp :: RVarMp
              _lhsOqualS :: RelevQualS
              _lhsOcTrf :: CExpr
              _lhsOfvS :: FvS
              _lhsOoTrf :: CExpr
              _lhsOgUniq :: UID
              _lhsOwhatBelow :: WhatExpr
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 9, column 33)
              _lhsOgathLamMp =
                  Map.empty
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 16, column 17)
              _isTopApp =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 21, column 17)
              _isTopTup =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 53, column 17)
              _whatBelow =
                  ExprIsInt int_
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 72, column 17)
              _whatAbove =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonPred.ag"(line 6, column 33)
              _lhsOmbLam =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonPred.ag"(line 16, column 17)
              _lhsOappFunKind =
                  AppFunKind_NoApp
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonPred.ag"(line 24, column 33)
              _lhsOmbVar =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonStructureInfo.ag"(line 8, column 33)
              _lhsOmbFunVar =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonStructureInfo.ag"(line 15, column 33)
              _lhsOargL =
                  []
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonFFI.ag"(line 43, column 17)
              _lhsOmbFFIApp =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 231, column 17)
              _litTy =
                  bot
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 232, column 33)
              __tup13 =
                  amsLE _lhsIrvarMp _litTy _lhsIknTy
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 232, column 33)
              (_amso,_) =
                  __tup13
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 232, column 33)
              (_,_ams) =
                  __tup13
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 319, column 17)
              _lhsOcoe =
                  _lhsIfinalRVarMp `varUpd` amsoCoe _amso
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 350, column 17)
              _lhsOfunCoe =
                  last $ relevCoeToComposeList $ amsoCoe _amso
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 362, column 17)
              _lhsOty =
                  amsoHi _amso
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 382, column 17)
              _lhsOrvarMp =
                  amsLocalVarMp _ams |+> _lhsIrvarMp
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 424, column 17)
              _lhsOqualS =
                  amsGathQual _ams
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 595, column 17)
              _dbg =
                  dbg     _lhsIopts _litTy _lhsIknTy _amso _ams
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 613, column 17)
              _lhsOcTrf =
                  _cTrf
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
              _lhsOfvS =
                  Set.empty
              -- self rule
              _cTrf =
                  CExpr_Int int_
              -- self rule
              _oTrf =
                  CExpr_Int int_
              -- self rule
              _lhsOoTrf =
                  _oTrf
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (from local)
              _lhsOwhatBelow =
                  _whatBelow
          in  ( _lhsOappFunKind,_lhsOargL,_lhsOcTrf,_lhsOcoe,_lhsOfunCoe,_lhsOfvS,_lhsOgUniq,_lhsOgathLamMp,_lhsOmbFFIApp,_lhsOmbFunVar,_lhsOmbLam,_lhsOmbVar,_lhsOoTrf,_lhsOqualS,_lhsOrvarMp,_lhsOty,_lhsOwhatBelow)))
sem_CExpr_Char :: Char ->
                  T_CExpr
sem_CExpr_Char char_ =
    (\ _lhsIaltMbScrutTy
       _lhsIboundRelevTyVarS
       _lhsIdataGam
       _lhsIenv
       _lhsIevalCtx
       _lhsIfinalRVarMp
       _lhsIgUniq
       _lhsIisTopApp
       _lhsIisTopTup
       _lhsIknTy
       _lhsIlamMp
       _lhsIlev
       _lhsIopts
       _lhsIrvarMp
       _lhsIwhatAbove
       _lhsIwhatTo ->
         (let _lhsOgathLamMp :: LamMp
              _isTopApp :: Bool
              _whatAbove :: WhatExpr
              _lhsOmbLam :: (Maybe [HsName])
              _lhsOappFunKind :: AppFunKind
              _lhsOmbVar :: (Maybe HsName)
              _lhsOmbFunVar :: (Maybe HsName)
              _lhsOargL :: ([CBound])
              _lhsOmbFFIApp :: (Maybe ( Ty
                                                                  , Bool
                                                                  , FFIWay
                                                                  , ForeignEnt
                                                                  , [Ty]
                                                                  ))
              _litTy :: RelevTy
              _amso :: (AMSOut RelevTy)
              _ams :: AnaMatchState
              _lhsOcoe :: RelevCoe
              _lhsOfunCoe :: RelevCoe
              _lhsOty :: RelevTy
              _lhsOrvarMp :: RVarMp
              _lhsOqualS :: RelevQualS
              _lhsOcTrf :: CExpr
              _lhsOfvS :: FvS
              _lhsOoTrf :: CExpr
              _lhsOgUniq :: UID
              _lhsOwhatBelow :: WhatExpr
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 9, column 33)
              _lhsOgathLamMp =
                  Map.empty
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 16, column 17)
              _isTopApp =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 21, column 17)
              _isTopTup =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 59, column 25)
              _whatBelow =
                  ExprIsOtherWHNF
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 72, column 17)
              _whatAbove =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonPred.ag"(line 6, column 33)
              _lhsOmbLam =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonPred.ag"(line 16, column 17)
              _lhsOappFunKind =
                  AppFunKind_NoApp
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonPred.ag"(line 24, column 33)
              _lhsOmbVar =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonStructureInfo.ag"(line 8, column 33)
              _lhsOmbFunVar =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonStructureInfo.ag"(line 15, column 33)
              _lhsOargL =
                  []
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonFFI.ag"(line 43, column 17)
              _lhsOmbFFIApp =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 231, column 17)
              _litTy =
                  bot
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 232, column 33)
              __tup14 =
                  amsLE _lhsIrvarMp _litTy _lhsIknTy
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 232, column 33)
              (_amso,_) =
                  __tup14
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 232, column 33)
              (_,_ams) =
                  __tup14
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 319, column 17)
              _lhsOcoe =
                  _lhsIfinalRVarMp `varUpd` amsoCoe _amso
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 350, column 17)
              _lhsOfunCoe =
                  last $ relevCoeToComposeList $ amsoCoe _amso
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 362, column 17)
              _lhsOty =
                  amsoHi _amso
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 382, column 17)
              _lhsOrvarMp =
                  amsLocalVarMp _ams |+> _lhsIrvarMp
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 424, column 17)
              _lhsOqualS =
                  amsGathQual _ams
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 595, column 17)
              _dbg =
                  dbg     _lhsIopts _litTy _lhsIknTy _amso _ams
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 613, column 17)
              _lhsOcTrf =
                  _cTrf
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
              _lhsOfvS =
                  Set.empty
              -- self rule
              _cTrf =
                  CExpr_Char char_
              -- self rule
              _oTrf =
                  CExpr_Char char_
              -- self rule
              _lhsOoTrf =
                  _oTrf
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (from local)
              _lhsOwhatBelow =
                  _whatBelow
          in  ( _lhsOappFunKind,_lhsOargL,_lhsOcTrf,_lhsOcoe,_lhsOfunCoe,_lhsOfvS,_lhsOgUniq,_lhsOgathLamMp,_lhsOmbFFIApp,_lhsOmbFunVar,_lhsOmbLam,_lhsOmbVar,_lhsOoTrf,_lhsOqualS,_lhsOrvarMp,_lhsOty,_lhsOwhatBelow)))
sem_CExpr_String :: String ->
                    T_CExpr
sem_CExpr_String str_ =
    (\ _lhsIaltMbScrutTy
       _lhsIboundRelevTyVarS
       _lhsIdataGam
       _lhsIenv
       _lhsIevalCtx
       _lhsIfinalRVarMp
       _lhsIgUniq
       _lhsIisTopApp
       _lhsIisTopTup
       _lhsIknTy
       _lhsIlamMp
       _lhsIlev
       _lhsIopts
       _lhsIrvarMp
       _lhsIwhatAbove
       _lhsIwhatTo ->
         (let _lhsOgathLamMp :: LamMp
              _isTopApp :: Bool
              _whatAbove :: WhatExpr
              _lhsOmbLam :: (Maybe [HsName])
              _lhsOappFunKind :: AppFunKind
              _lhsOmbVar :: (Maybe HsName)
              _lhsOmbFunVar :: (Maybe HsName)
              _lhsOargL :: ([CBound])
              _lhsOmbFFIApp :: (Maybe ( Ty
                                                                  , Bool
                                                                  , FFIWay
                                                                  , ForeignEnt
                                                                  , [Ty]
                                                                  ))
              _lhsOcoe :: RelevCoe
              _lhsOfunCoe :: RelevCoe
              _lhsOty :: RelevTy
              _lhsOfvS :: FvS
              _lhsOqualS :: RelevQualS
              _lhsOcTrf :: CExpr
              _lhsOoTrf :: CExpr
              _lhsOgUniq :: UID
              _lhsOrvarMp :: RVarMp
              _lhsOwhatBelow :: WhatExpr
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 9, column 33)
              _lhsOgathLamMp =
                  Map.empty
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 16, column 17)
              _isTopApp =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 21, column 17)
              _isTopTup =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 59, column 25)
              _whatBelow =
                  ExprIsOtherWHNF
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 72, column 17)
              _whatAbove =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonPred.ag"(line 6, column 33)
              _lhsOmbLam =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonPred.ag"(line 16, column 17)
              _lhsOappFunKind =
                  AppFunKind_NoApp
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonPred.ag"(line 24, column 33)
              _lhsOmbVar =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonStructureInfo.ag"(line 8, column 33)
              _lhsOmbFunVar =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonStructureInfo.ag"(line 15, column 33)
              _lhsOargL =
                  []
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonFFI.ag"(line 43, column 17)
              _lhsOmbFFIApp =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 324, column 17)
              _lhsOcoe =
                  RelevCoe_Id
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 356, column 17)
              _lhsOfunCoe =
                  RelevCoe_Err "CExpr.unimpl"
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 366, column 17)
              _lhsOty =
                  RelevTy_Err "unimpl"
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
              _lhsOfvS =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
              _lhsOqualS =
                  Set.empty
              -- self rule
              _cTrf =
                  CExpr_String str_
              -- self rule
              _oTrf =
                  CExpr_String str_
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- self rule
              _lhsOoTrf =
                  _oTrf
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOrvarMp =
                  _lhsIrvarMp
              -- copy rule (from local)
              _lhsOwhatBelow =
                  _whatBelow
          in  ( _lhsOappFunKind,_lhsOargL,_lhsOcTrf,_lhsOcoe,_lhsOfunCoe,_lhsOfvS,_lhsOgUniq,_lhsOgathLamMp,_lhsOmbFFIApp,_lhsOmbFunVar,_lhsOmbLam,_lhsOmbVar,_lhsOoTrf,_lhsOqualS,_lhsOrvarMp,_lhsOty,_lhsOwhatBelow)))
sem_CExpr_Integer :: Integer ->
                     T_CExpr
sem_CExpr_Integer integer_ =
    (\ _lhsIaltMbScrutTy
       _lhsIboundRelevTyVarS
       _lhsIdataGam
       _lhsIenv
       _lhsIevalCtx
       _lhsIfinalRVarMp
       _lhsIgUniq
       _lhsIisTopApp
       _lhsIisTopTup
       _lhsIknTy
       _lhsIlamMp
       _lhsIlev
       _lhsIopts
       _lhsIrvarMp
       _lhsIwhatAbove
       _lhsIwhatTo ->
         (let _lhsOgathLamMp :: LamMp
              _isTopApp :: Bool
              _whatAbove :: WhatExpr
              _lhsOmbLam :: (Maybe [HsName])
              _lhsOappFunKind :: AppFunKind
              _lhsOmbVar :: (Maybe HsName)
              _lhsOmbFunVar :: (Maybe HsName)
              _lhsOargL :: ([CBound])
              _lhsOmbFFIApp :: (Maybe ( Ty
                                                                  , Bool
                                                                  , FFIWay
                                                                  , ForeignEnt
                                                                  , [Ty]
                                                                  ))
              _lhsOcoe :: RelevCoe
              _lhsOfunCoe :: RelevCoe
              _lhsOty :: RelevTy
              _lhsOfvS :: FvS
              _lhsOqualS :: RelevQualS
              _lhsOcTrf :: CExpr
              _lhsOoTrf :: CExpr
              _lhsOgUniq :: UID
              _lhsOrvarMp :: RVarMp
              _lhsOwhatBelow :: WhatExpr
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 9, column 33)
              _lhsOgathLamMp =
                  Map.empty
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 16, column 17)
              _isTopApp =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 21, column 17)
              _isTopTup =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 59, column 25)
              _whatBelow =
                  ExprIsOtherWHNF
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 72, column 17)
              _whatAbove =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonPred.ag"(line 6, column 33)
              _lhsOmbLam =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonPred.ag"(line 16, column 17)
              _lhsOappFunKind =
                  AppFunKind_NoApp
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonPred.ag"(line 24, column 33)
              _lhsOmbVar =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonStructureInfo.ag"(line 8, column 33)
              _lhsOmbFunVar =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonStructureInfo.ag"(line 15, column 33)
              _lhsOargL =
                  []
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonFFI.ag"(line 43, column 17)
              _lhsOmbFFIApp =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 324, column 17)
              _lhsOcoe =
                  RelevCoe_Id
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 356, column 17)
              _lhsOfunCoe =
                  RelevCoe_Err "CExpr.unimpl"
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 366, column 17)
              _lhsOty =
                  RelevTy_Err "unimpl"
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
              _lhsOfvS =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
              _lhsOqualS =
                  Set.empty
              -- self rule
              _cTrf =
                  CExpr_Integer integer_
              -- self rule
              _oTrf =
                  CExpr_Integer integer_
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- self rule
              _lhsOoTrf =
                  _oTrf
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOrvarMp =
                  _lhsIrvarMp
              -- copy rule (from local)
              _lhsOwhatBelow =
                  _whatBelow
          in  ( _lhsOappFunKind,_lhsOargL,_lhsOcTrf,_lhsOcoe,_lhsOfunCoe,_lhsOfvS,_lhsOgUniq,_lhsOgathLamMp,_lhsOmbFFIApp,_lhsOmbFunVar,_lhsOmbLam,_lhsOmbVar,_lhsOoTrf,_lhsOqualS,_lhsOrvarMp,_lhsOty,_lhsOwhatBelow)))
sem_CExpr_Tup :: CTag ->
                 T_CExpr
sem_CExpr_Tup tag_ =
    (\ _lhsIaltMbScrutTy
       _lhsIboundRelevTyVarS
       _lhsIdataGam
       _lhsIenv
       _lhsIevalCtx
       _lhsIfinalRVarMp
       _lhsIgUniq
       _lhsIisTopApp
       _lhsIisTopTup
       _lhsIknTy
       _lhsIlamMp
       _lhsIlev
       _lhsIopts
       _lhsIrvarMp
       _lhsIwhatAbove
       _lhsIwhatTo ->
         (let _lhsOgathLamMp :: LamMp
              _isTopApp :: Bool
              _whatAbove :: WhatExpr
              _lhsOmbLam :: (Maybe [HsName])
              _lhsOappFunKind :: AppFunKind
              _lhsOmbVar :: (Maybe HsName)
              _lhsOmbFunVar :: (Maybe HsName)
              _lhsOargL :: ([CBound])
              _lhsOmbFFIApp :: (Maybe ( Ty
                                                                  , Bool
                                                                  , FFIWay
                                                                  , ForeignEnt
                                                                  , [Ty]
                                                                  ))
              _tupTy :: RelevTy
              _amso :: (AMSOut RelevTy)
              _ams :: AnaMatchState
              _lhsOcoe :: RelevCoe
              _lhsOfunCoe :: RelevCoe
              _lhsOty :: RelevTy
              _lhsOrvarMp :: RVarMp
              _lhsOqualS :: RelevQualS
              _lhsOcTrf :: CExpr
              _lhsOgUniq :: UID
              _lUniq :: UID
              _lUniq2 :: UID
              _lhsOfvS :: FvS
              _lhsOoTrf :: CExpr
              _lhsOwhatBelow :: WhatExpr
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 9, column 33)
              _lhsOgathLamMp =
                  Map.empty
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 16, column 17)
              _isTopApp =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 21, column 17)
              _isTopTup =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 55, column 25)
              _whatBelow =
                  ExprIsTup tag_
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 72, column 17)
              _whatAbove =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonPred.ag"(line 6, column 33)
              _lhsOmbLam =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonPred.ag"(line 11, column 17)
              _lhsOappFunKind =
                  AppFunKind_Tag tag_
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonPred.ag"(line 24, column 33)
              _lhsOmbVar =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonStructureInfo.ag"(line 8, column 33)
              _lhsOmbFunVar =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonStructureInfo.ag"(line 15, column 33)
              _lhsOargL =
                  []
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonFFI.ag"(line 43, column 17)
              _lhsOmbFFIApp =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 255, column 33)
              __tup15 =
                  let r = fresh _lUniq2
                      arity = whatExprAppArity _lhsIwhatAbove
                  in  maybe (RelevTy_Err "CExpr.Tup.tupTy", Set.empty) (\(a,qs) -> (RelevTy_Fun RQuant_None [] [] a r, qs))
                      $ relevTyArgsFromCTag False tag_ (Just r) arity _lhsIdataGam _lUniq
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 255, column 33)
              (_tupTy,_) =
                  __tup15
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 255, column 33)
              (_,_tupQualS) =
                  __tup15
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 259, column 33)
              __tup16 =
                  amsLE _lhsIrvarMp _tupTy _lhsIknTy
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 259, column 33)
              (_amso,_) =
                  __tup16
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 259, column 33)
              (_,_ams) =
                  __tup16
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 319, column 17)
              _lhsOcoe =
                  _lhsIfinalRVarMp `varUpd` amsoCoe _amso
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 350, column 17)
              _lhsOfunCoe =
                  last $ relevCoeToComposeList $ amsoCoe _amso
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 362, column 17)
              _lhsOty =
                  amsoHi _amso
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 382, column 17)
              _lhsOrvarMp =
                  amsLocalVarMp _ams |+> _lhsIrvarMp
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 423, column 17)
              _lhsOqualS =
                  Set.union _tupQualS (amsGathQual _ams)
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 596, column 17)
              _dbg =
                  dbg     _lhsIopts _tupTy _lhsIknTy _amso _ams
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 613, column 17)
              _lhsOcTrf =
                  _cTrf
              -- -- generated by the unique rule mechanism.
              __tup17 =
                  let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> case nextUnique __cont of { (__cont, lUniq2) -> (__cont,lUniq,lUniq2)}} )
              -- -- generated by the unique rule mechanism.
              (_lhsOgUniq,_,_) =
                  __tup17
              -- -- generated by the unique rule mechanism.
              (_,_lUniq,_) =
                  __tup17
              -- -- generated by the unique rule mechanism.
              (_,_,_lUniq2) =
                  __tup17
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
              _lhsOfvS =
                  Set.empty
              -- self rule
              _cTrf =
                  CExpr_Tup tag_
              -- self rule
              _oTrf =
                  CExpr_Tup tag_
              -- self rule
              _lhsOoTrf =
                  _oTrf
              -- copy rule (from local)
              _lhsOwhatBelow =
                  _whatBelow
          in  ( _lhsOappFunKind,_lhsOargL,_lhsOcTrf,_lhsOcoe,_lhsOfunCoe,_lhsOfvS,_lhsOgUniq,_lhsOgathLamMp,_lhsOmbFFIApp,_lhsOmbFunVar,_lhsOmbLam,_lhsOmbVar,_lhsOoTrf,_lhsOqualS,_lhsOrvarMp,_lhsOty,_lhsOwhatBelow)))
sem_CExpr_Let :: CBindCateg ->
                 T_CBindL ->
                 T_CExpr ->
                 T_CExpr
sem_CExpr_Let categ_ binds_ body_ =
    (\ _lhsIaltMbScrutTy
       _lhsIboundRelevTyVarS
       _lhsIdataGam
       _lhsIenv
       _lhsIevalCtx
       _lhsIfinalRVarMp
       _lhsIgUniq
       _lhsIisTopApp
       _lhsIisTopTup
       _lhsIknTy
       _lhsIlamMp
       _lhsIlev
       _lhsIopts
       _lhsIrvarMp
       _lhsIwhatAbove
       _lhsIwhatTo ->
         (let _lhsOgathLamMp :: LamMp
              _isTopApp :: Bool
              _whatAbove :: WhatExpr
              _lhsOmbLam :: (Maybe [HsName])
              _lhsOappFunKind :: AppFunKind
              _lhsOmbVar :: (Maybe HsName)
              _lhsOmbFunVar :: (Maybe HsName)
              _lhsOargL :: ([CBound])
              _lhsOmbFFIApp :: (Maybe ( Ty
                                                                  , Bool
                                                                  , FFIWay
                                                                  , ForeignEnt
                                                                  , [Ty]
                                                                  ))
              _bindsOenv :: REnv
              _bodyOenv :: REnv
              _lhsOfunCoe :: RelevCoe
              _lhsOty :: RelevTy
              _bodyOrvarMp :: RVarMp
              _bindsOforQuantRVarMp :: RVarMp
              _bindsCanParticpateInOuterSolving :: Bool
              _lhsOfvS :: FvS
              _lhsOqualS :: RelevQualS
              _lhsOcTrf :: CExpr
              _lhsOoTrf :: CExpr
              _lhsOcoe :: RelevCoe
              _lhsOgUniq :: UID
              _lhsOrvarMp :: RVarMp
              _lhsOwhatBelow :: WhatExpr
              _bindsOboundRelevTyVarS :: UIDS
              _bindsOdataGam :: DataGam
              _bindsOevalCtx :: EvalCtx
              _bindsOfinalRVarMp :: RVarMp
              _bindsOgUniq :: UID
              _bindsOisGlobal :: Bool
              _bindsOknTy :: RelevTy
              _bindsOlamMp :: LamMp
              _bindsOletBindingsCateg :: CBindCateg
              _bindsOlev :: Int
              _bindsOopts :: EHCOpts
              _bindsOrvarMp :: RVarMp
              _bindsOwhatTo :: ([WhatToRelevInfer])
              _bodyOaltMbScrutTy :: MbRelevTy
              _bodyOboundRelevTyVarS :: UIDS
              _bodyOdataGam :: DataGam
              _bodyOevalCtx :: EvalCtx
              _bodyOfinalRVarMp :: RVarMp
              _bodyOgUniq :: UID
              _bodyOisTopApp :: Bool
              _bodyOisTopTup :: Bool
              _bodyOknTy :: RelevTy
              _bodyOlamMp :: LamMp
              _bodyOlev :: Int
              _bodyOopts :: EHCOpts
              _bodyOwhatAbove :: WhatExpr
              _bodyOwhatTo :: ([WhatToRelevInfer])
              _bindsIaltMbScrutTy :: MbRelevTy
              _bindsIbindLamMp :: LamMp
              _bindsIcTrf :: CBindL
              _bindsIextraBindRVarMp :: RVarMp
              _bindsIfvS :: FvS
              _bindsIfvSMp :: FvSMp
              _bindsIgUniq :: UID
              _bindsIgathEnv :: REnv
              _bindsIgathRecEnv :: REnv
              _bindsInmL :: ([HsName])
              _bindsIoTrf :: CBindL
              _bindsIqualS :: RelevQualS
              _bindsIrvarMp :: RVarMp
              _bodyIappFunKind :: AppFunKind
              _bodyIargL :: ([CBound])
              _bodyIcTrf :: CExpr
              _bodyIcoe :: RelevCoe
              _bodyIfunCoe :: RelevCoe
              _bodyIfvS :: FvS
              _bodyIgUniq :: UID
              _bodyIgathLamMp :: LamMp
              _bodyImbFFIApp :: (Maybe ( Ty
                                                                   , Bool
                                                                   , FFIWay
                                                                   , ForeignEnt
                                                                   , [Ty]
                                                                   ))
              _bodyImbFunVar :: (Maybe HsName)
              _bodyImbLam :: (Maybe [HsName])
              _bodyImbVar :: (Maybe HsName)
              _bodyIoTrf :: CExpr
              _bodyIqualS :: RelevQualS
              _bodyIrvarMp :: RVarMp
              _bodyIty :: RelevTy
              _bodyIwhatBelow :: WhatExpr
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 7, column 17)
              _lhsOgathLamMp =
                  _bindsIbindLamMp `Map.union` _bodyIgathLamMp
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 6, column 17)
              _fvS =
                  (_bodyIfvS `Set.union` _bindsIfvS) `Set.difference` Set.fromList _bindsInmL
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 4, column 17)
              _letBindingsCateg =
                  categ_
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 16, column 17)
              _isTopApp =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 21, column 17)
              _isTopTup =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 64, column 17)
              _whatBelow =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 72, column 17)
              _whatAbove =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 75, column 17)
              _isTopLet =
                  _lhsIwhatAbove == ExprIsBind
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 106, column 17)
              _evalCtx =
                  if categ_ == CBindCateg_Strict
                  then EvalCtx_Eval
                  else EvalCtx_Thunk
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonPred.ag"(line 6, column 33)
              _lhsOmbLam =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonPred.ag"(line 16, column 17)
              _lhsOappFunKind =
                  AppFunKind_NoApp
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonPred.ag"(line 24, column 33)
              _lhsOmbVar =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonStructureInfo.ag"(line 8, column 33)
              _lhsOmbFunVar =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonStructureInfo.ag"(line 15, column 33)
              _lhsOargL =
                  []
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonFFI.ag"(line 43, column 17)
              _lhsOmbFFIApp =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonLev.ag"(line 10, column 17)
              _isGlobal =
                  _lhsIlev == cLevModule
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 164, column 17)
              _bindsOenv =
                  gamAddGam _bindsIgathRecEnv _lhsIenv
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 165, column 17)
              _bodyOenv =
                  gamAddGam _bindsIgathEnv    _lhsIenv
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 356, column 17)
              _lhsOfunCoe =
                  RelevCoe_Err "CExpr.unimpl"
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 366, column 17)
              _lhsOty =
                  RelevTy_Err "unimpl"
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 384, column 17)
              _bodyOrvarMp =
                  _bindsIextraBindRVarMp |+> _bindsIrvarMp
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 392, column 17)
              _bindsOforQuantRVarMp =
                  _bindsIrvarMp
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 467, column 17)
              _bindsCanParticpateInOuterSolving =
                  categ_ == CBindCateg_Strict
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 467, column 17)
              _bindsQualSSubs =
                  Set.map (_bindsIrvarMp `varUpd`) _bindsIqualS
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 467, column 17)
              _bindsQualSOuter =
                  if _bindsCanParticpateInOuterSolving then _bindsQualSSubs else Set.empty
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 467, column 17)
              _bindsQualSSolv1 =
                  if _bindsCanParticpateInOuterSolving
                  then (Set.empty, emptyRVarMp)
                  else let (q,m) = assSolve _lhsIboundRelevTyVarS _bindsQualSSubs
                       in  (Set.map (m `varUpd`) q, m)
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 480, column 17)
              _bindsQualSSolv2 =
                  let (q,m) = _bindsQualSSolv1
                      m2 = m |+> _lhsIfinalRVarMp
                      (q',m3) = assSolve Set.empty (Set.map (m2 `varUpd`) q)
                  in  (Set.map (m3 `varUpd`) q', m3 |+> m2)
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 480, column 17)
              _bindsSolveVarMp =
                  snd _bindsQualSSolv2
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
              _lhsOfvS =
                  _fvS
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
              _lhsOqualS =
                  _bindsIqualS `Set.union` _bodyIqualS
              -- self rule
              _cTrf =
                  CExpr_Let categ_ _bindsIcTrf _bodyIcTrf
              -- self rule
              _oTrf =
                  CExpr_Let categ_ _bindsIoTrf _bodyIoTrf
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- self rule
              _lhsOoTrf =
                  _oTrf
              -- copy rule (up)
              _lhsOcoe =
                  _bodyIcoe
              -- copy rule (up)
              _lhsOgUniq =
                  _bodyIgUniq
              -- copy rule (up)
              _lhsOrvarMp =
                  _bodyIrvarMp
              -- copy rule (from local)
              _lhsOwhatBelow =
                  _whatBelow
              -- copy rule (down)
              _bindsOboundRelevTyVarS =
                  _lhsIboundRelevTyVarS
              -- copy rule (down)
              _bindsOdataGam =
                  _lhsIdataGam
              -- copy rule (from local)
              _bindsOevalCtx =
                  _evalCtx
              -- copy rule (down)
              _bindsOfinalRVarMp =
                  _lhsIfinalRVarMp
              -- copy rule (down)
              _bindsOgUniq =
                  _lhsIgUniq
              -- copy rule (from local)
              _bindsOisGlobal =
                  _isGlobal
              -- copy rule (down)
              _bindsOknTy =
                  _lhsIknTy
              -- copy rule (down)
              _bindsOlamMp =
                  _lhsIlamMp
              -- copy rule (from local)
              _bindsOletBindingsCateg =
                  _letBindingsCateg
              -- copy rule (down)
              _bindsOlev =
                  _lhsIlev
              -- copy rule (down)
              _bindsOopts =
                  _lhsIopts
              -- copy rule (down)
              _bindsOrvarMp =
                  _lhsIrvarMp
              -- copy rule (down)
              _bindsOwhatTo =
                  _lhsIwhatTo
              -- copy rule (chain)
              _bodyOaltMbScrutTy =
                  _bindsIaltMbScrutTy
              -- copy rule (down)
              _bodyOboundRelevTyVarS =
                  _lhsIboundRelevTyVarS
              -- copy rule (down)
              _bodyOdataGam =
                  _lhsIdataGam
              -- copy rule (from local)
              _bodyOevalCtx =
                  _evalCtx
              -- copy rule (down)
              _bodyOfinalRVarMp =
                  _lhsIfinalRVarMp
              -- copy rule (chain)
              _bodyOgUniq =
                  _bindsIgUniq
              -- copy rule (from local)
              _bodyOisTopApp =
                  _isTopApp
              -- copy rule (from local)
              _bodyOisTopTup =
                  _isTopTup
              -- copy rule (down)
              _bodyOknTy =
                  _lhsIknTy
              -- copy rule (down)
              _bodyOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _bodyOlev =
                  _lhsIlev
              -- copy rule (down)
              _bodyOopts =
                  _lhsIopts
              -- copy rule (from local)
              _bodyOwhatAbove =
                  _whatAbove
              -- copy rule (down)
              _bodyOwhatTo =
                  _lhsIwhatTo
              ( _bindsIaltMbScrutTy,_bindsIbindLamMp,_bindsIcTrf,_bindsIextraBindRVarMp,_bindsIfvS,_bindsIfvSMp,_bindsIgUniq,_bindsIgathEnv,_bindsIgathRecEnv,_bindsInmL,_bindsIoTrf,_bindsIqualS,_bindsIrvarMp) =
                  binds_ _bindsOboundRelevTyVarS _bindsOdataGam _bindsOenv _bindsOevalCtx _bindsOfinalRVarMp _bindsOforQuantRVarMp _bindsOgUniq _bindsOisGlobal _bindsOknTy _bindsOlamMp _bindsOletBindingsCateg _bindsOlev _bindsOopts _bindsOrvarMp _bindsOwhatTo
              ( _bodyIappFunKind,_bodyIargL,_bodyIcTrf,_bodyIcoe,_bodyIfunCoe,_bodyIfvS,_bodyIgUniq,_bodyIgathLamMp,_bodyImbFFIApp,_bodyImbFunVar,_bodyImbLam,_bodyImbVar,_bodyIoTrf,_bodyIqualS,_bodyIrvarMp,_bodyIty,_bodyIwhatBelow) =
                  body_ _bodyOaltMbScrutTy _bodyOboundRelevTyVarS _bodyOdataGam _bodyOenv _bodyOevalCtx _bodyOfinalRVarMp _bodyOgUniq _bodyOisTopApp _bodyOisTopTup _bodyOknTy _bodyOlamMp _bodyOlev _bodyOopts _bodyOrvarMp _bodyOwhatAbove _bodyOwhatTo
          in  ( _lhsOappFunKind,_lhsOargL,_lhsOcTrf,_lhsOcoe,_lhsOfunCoe,_lhsOfvS,_lhsOgUniq,_lhsOgathLamMp,_lhsOmbFFIApp,_lhsOmbFunVar,_lhsOmbLam,_lhsOmbVar,_lhsOoTrf,_lhsOqualS,_lhsOrvarMp,_lhsOty,_lhsOwhatBelow)))
sem_CExpr_App :: T_CExpr ->
                 T_CBound ->
                 T_CExpr
sem_CExpr_App func_ arg_ =
    (\ _lhsIaltMbScrutTy
       _lhsIboundRelevTyVarS
       _lhsIdataGam
       _lhsIenv
       _lhsIevalCtx
       _lhsIfinalRVarMp
       _lhsIgUniq
       _lhsIisTopApp
       _lhsIisTopTup
       _lhsIknTy
       _lhsIlamMp
       _lhsIlev
       _lhsIopts
       _lhsIrvarMp
       _lhsIwhatAbove
       _lhsIwhatTo ->
         (let _lhsOgathLamMp :: LamMp
              _funcOisTopApp :: Bool
              _argOisTopApp :: Bool
              _whatAbove :: WhatExpr
              _argOevalCtx :: EvalCtx
              _lhsOmbLam :: (Maybe [HsName])
              _lhsOappFunKind :: AppFunKind
              _lhsOmbVar :: (Maybe HsName)
              _lhsOmbFunVar :: (Maybe HsName)
              _argOnm :: HsName
              _lhsOmbFFIApp :: (Maybe ( Ty
                                                                  , Bool
                                                                  , FFIWay
                                                                  , ForeignEnt
                                                                  , [Ty]
                                                                  ))
              _argOknTy :: RelevTy
              _funcOknTy :: RelevTy
              _funTy :: RelevTy
              _argTy :: RelevTy
              _lhsOcoe :: RelevCoe
              _lhsOfunCoe :: RelevCoe
              _lhsOty :: RelevTy
              _lhsOcTrf :: CExpr
              _funcOgUniq :: UID
              _lUniq :: UID
              _lhsOfvS :: FvS
              _lhsOqualS :: RelevQualS
              _lhsOoTrf :: CExpr
              _lhsOargL :: ([CBound])
              _lhsOgUniq :: UID
              _lhsOrvarMp :: RVarMp
              _lhsOwhatBelow :: WhatExpr
              _funcOaltMbScrutTy :: MbRelevTy
              _funcOboundRelevTyVarS :: UIDS
              _funcOdataGam :: DataGam
              _funcOenv :: REnv
              _funcOevalCtx :: EvalCtx
              _funcOfinalRVarMp :: RVarMp
              _funcOisTopTup :: Bool
              _funcOlamMp :: LamMp
              _funcOlev :: Int
              _funcOopts :: EHCOpts
              _funcOrvarMp :: RVarMp
              _funcOwhatAbove :: WhatExpr
              _funcOwhatTo :: ([WhatToRelevInfer])
              _argOboundRelevTyVarS :: UIDS
              _argOdataGam :: DataGam
              _argOenv :: REnv
              _argOfinalRVarMp :: RVarMp
              _argOforQuantRVarMp :: RVarMp
              _argOgUniq :: UID
              _argOisGlobal :: Bool
              _argOisTopTup :: Bool
              _argOlamMp :: LamMp
              _argOletBindingsCateg :: CBindCateg
              _argOlev :: Int
              _argOopts :: EHCOpts
              _argOrvarMp :: RVarMp
              _argOwhatTo :: ([WhatToRelevInfer])
              _funcIappFunKind :: AppFunKind
              _funcIargL :: ([CBound])
              _funcIcTrf :: CExpr
              _funcIcoe :: RelevCoe
              _funcIfunCoe :: RelevCoe
              _funcIfvS :: FvS
              _funcIgUniq :: UID
              _funcIgathLamMp :: LamMp
              _funcImbFFIApp :: (Maybe ( Ty
                                                                   , Bool
                                                                   , FFIWay
                                                                   , ForeignEnt
                                                                   , [Ty]
                                                                   ))
              _funcImbFunVar :: (Maybe HsName)
              _funcImbLam :: (Maybe [HsName])
              _funcImbVar :: (Maybe HsName)
              _funcIoTrf :: CExpr
              _funcIqualS :: RelevQualS
              _funcIrvarMp :: RVarMp
              _funcIty :: RelevTy
              _funcIwhatBelow :: WhatExpr
              _argIaltMbScrutTy :: MbRelevTy
              _argIbindLamMp :: LamMp
              _argIcTrf :: CBound
              _argIcoe :: RelevCoe
              _argIextraBindRVarMp :: RVarMp
              _argIfvS :: FvS
              _argIfvSMp :: FvSMp
              _argIgUniq :: UID
              _argIgathEnv :: REnv
              _argIgathRecEnv :: REnv
              _argInmL :: ([HsName])
              _argIoTrf :: CBound
              _argIqualS :: RelevQualS
              _argIrvarMp :: RVarMp
              _argItyAspectL :: ([CBound])
              _argIvalAspectL :: ([CBound])
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 9, column 33)
              _lhsOgathLamMp =
                  Map.empty
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 8, column 17)
              _fvS =
                  _funcIfvS `Set.union` _argIfvS
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 6, column 33)
              _letBindingsCateg =
                  acoreBindcategPlain
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 14, column 17)
              _funcOisTopApp =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 15, column 17)
              _argOisTopApp =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 21, column 17)
              _isTopTup =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 54, column 17)
              _whatBelow =
                  maybe (ExprIsApp 1 _funcIwhatBelow) (\(a,w) -> ExprIsApp (a + 1) w) $ whatExprMbApp _funcIwhatBelow
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 70, column 17)
              _whatAbove =
                  maybe (ExprIsApp 1 ExprIsOther) (\(a,w) -> ExprIsApp (a + 1) w) $ whatExprMbApp _lhsIwhatAbove
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 77, column 17)
              _isTopApp' =
                  isNothing $ whatExprMbApp _lhsIwhatAbove
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 112, column 17)
              _argOevalCtx =
                  EvalCtx_Thunk
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonPred.ag"(line 6, column 33)
              _lhsOmbLam =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonPred.ag"(line 14, column 17)
              _lhsOappFunKind =
                  _funcIappFunKind
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonPred.ag"(line 24, column 33)
              _lhsOmbVar =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonStructureInfo.ag"(line 6, column 17)
              _lhsOmbFunVar =
                  _funcImbFunVar
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonStructureInfo.ag"(line 13, column 17)
              _argL =
                  _argIcTrf : _funcIargL
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonBindNm.ag"(line 7, column 17)
              _argOnm =
                  hsnUnknown
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonFFI.ag"(line 41, column 17)
              _lhsOmbFFIApp =
                  _funcImbFFIApp
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonLev.ag"(line 12, column 33)
              _isGlobal =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 210, column 17)
              _argOknTy =
                  _argTy
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 211, column 17)
              _funcOknTy =
                  case _lhsIknTy of
                    RelevTy_Fun q v qs as r -> RelevTy_Fun q           v  qs (fresh _lUniq : as) r
                    t                       -> RelevTy_Fun RQuant_None [] [] [fresh _lUniq     ] t
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 270, column 17)
              _funTy =
                  case _funcIty of
                    t@(RelevTy_Fun _ _ _ (_:_) _) -> t
                    _                             -> anaMkBotFun 1
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 273, column 33)
              __tup18 =
                  case _funTy of
                    RelevTy_Fun q v qs (a:as) r -> (a,r,RelevTy_Fun q v qs as r)
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 273, column 33)
              (_argTy,_,_) =
                  __tup18
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 273, column 33)
              (_,_resTy,_) =
                  __tup18
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 273, column 33)
              (_,_,_resFunTy) =
                  __tup18
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 320, column 17)
              _lhsOcoe =
                  if _lhsIisTopApp
                  then _lhsIfinalRVarMp `varUpd` _resCoe
                  else RelevCoe_Id
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 327, column 17)
              _hereArgCoe =
                  _argIcoe <.> (_lhsIfinalRVarMp `varUpd` _argCoe)
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 327, column 17)
              _hereFunCoe =
                  case _funcIwhatBelow of
                    ExprIsApp _ _ -> RelevCoe_Id
                    _             -> _funcIcoe
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 351, column 17)
              __tup19 =
                  case _funcIfunCoe of
                    RelevCoe_Fun (a:as) r -> (a,r,RelevCoe_Fun as r)
                    _                     -> (RelevCoe_Err "CExpr.App.a", RelevCoe_Err "CExpr.App.r", RelevCoe_Err "CExpr.App.f")
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 351, column 17)
              (_argCoe,_,_) =
                  __tup19
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 351, column 17)
              (_,_resCoe,_) =
                  __tup19
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 351, column 17)
              (_,_,_lhsOfunCoe) =
                  __tup19
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 363, column 17)
              _lhsOty =
                  if _lhsIisTopApp then _resTy else _resFunTy
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 394, column 33)
              _forQuantRVarMp =
                  emptyRVarMp
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 616, column 17)
              _lhsOcTrf =
                  let a =
                          maybe _argIcTrf (\((a,_,_),e) -> acoreBound1AspkeyVal a (annCoe _hereArgCoe e)) $ acoreBoundMbVal _argIcTrf
                      app = acore1AppBound (annCoe _hereFunCoe _funcIcTrf) a
                  in  app
              -- -- generated by the unique rule mechanism.
              __tup20 =
                  let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )
              -- -- generated by the unique rule mechanism.
              (_funcOgUniq,_) =
                  __tup20
              -- -- generated by the unique rule mechanism.
              (_,_lUniq) =
                  __tup20
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
              _lhsOfvS =
                  _fvS
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
              _lhsOqualS =
                  _funcIqualS `Set.union` _argIqualS
              -- self rule
              _cTrf =
                  CExpr_App _funcIcTrf _argIcTrf
              -- self rule
              _oTrf =
                  CExpr_App _funcIoTrf _argIoTrf
              -- self rule
              _lhsOoTrf =
                  _oTrf
              -- copy rule (from local)
              _lhsOargL =
                  _argL
              -- copy rule (up)
              _lhsOgUniq =
                  _argIgUniq
              -- copy rule (up)
              _lhsOrvarMp =
                  _argIrvarMp
              -- copy rule (from local)
              _lhsOwhatBelow =
                  _whatBelow
              -- copy rule (down)
              _funcOaltMbScrutTy =
                  _lhsIaltMbScrutTy
              -- copy rule (down)
              _funcOboundRelevTyVarS =
                  _lhsIboundRelevTyVarS
              -- copy rule (down)
              _funcOdataGam =
                  _lhsIdataGam
              -- copy rule (down)
              _funcOenv =
                  _lhsIenv
              -- copy rule (down)
              _funcOevalCtx =
                  _lhsIevalCtx
              -- copy rule (down)
              _funcOfinalRVarMp =
                  _lhsIfinalRVarMp
              -- copy rule (from local)
              _funcOisTopTup =
                  _isTopTup
              -- copy rule (down)
              _funcOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _funcOlev =
                  _lhsIlev
              -- copy rule (down)
              _funcOopts =
                  _lhsIopts
              -- copy rule (down)
              _funcOrvarMp =
                  _lhsIrvarMp
              -- copy rule (from local)
              _funcOwhatAbove =
                  _whatAbove
              -- copy rule (down)
              _funcOwhatTo =
                  _lhsIwhatTo
              -- copy rule (down)
              _argOboundRelevTyVarS =
                  _lhsIboundRelevTyVarS
              -- copy rule (down)
              _argOdataGam =
                  _lhsIdataGam
              -- copy rule (down)
              _argOenv =
                  _lhsIenv
              -- copy rule (down)
              _argOfinalRVarMp =
                  _lhsIfinalRVarMp
              -- copy rule (from local)
              _argOforQuantRVarMp =
                  _forQuantRVarMp
              -- copy rule (chain)
              _argOgUniq =
                  _funcIgUniq
              -- copy rule (from local)
              _argOisGlobal =
                  _isGlobal
              -- copy rule (from local)
              _argOisTopTup =
                  _isTopTup
              -- copy rule (down)
              _argOlamMp =
                  _lhsIlamMp
              -- copy rule (from local)
              _argOletBindingsCateg =
                  _letBindingsCateg
              -- copy rule (down)
              _argOlev =
                  _lhsIlev
              -- copy rule (down)
              _argOopts =
                  _lhsIopts
              -- copy rule (chain)
              _argOrvarMp =
                  _funcIrvarMp
              -- copy rule (down)
              _argOwhatTo =
                  _lhsIwhatTo
              ( _funcIappFunKind,_funcIargL,_funcIcTrf,_funcIcoe,_funcIfunCoe,_funcIfvS,_funcIgUniq,_funcIgathLamMp,_funcImbFFIApp,_funcImbFunVar,_funcImbLam,_funcImbVar,_funcIoTrf,_funcIqualS,_funcIrvarMp,_funcIty,_funcIwhatBelow) =
                  func_ _funcOaltMbScrutTy _funcOboundRelevTyVarS _funcOdataGam _funcOenv _funcOevalCtx _funcOfinalRVarMp _funcOgUniq _funcOisTopApp _funcOisTopTup _funcOknTy _funcOlamMp _funcOlev _funcOopts _funcOrvarMp _funcOwhatAbove _funcOwhatTo
              ( _argIaltMbScrutTy,_argIbindLamMp,_argIcTrf,_argIcoe,_argIextraBindRVarMp,_argIfvS,_argIfvSMp,_argIgUniq,_argIgathEnv,_argIgathRecEnv,_argInmL,_argIoTrf,_argIqualS,_argIrvarMp,_argItyAspectL,_argIvalAspectL) =
                  arg_ _argOboundRelevTyVarS _argOdataGam _argOenv _argOevalCtx _argOfinalRVarMp _argOforQuantRVarMp _argOgUniq _argOisGlobal _argOisTopApp _argOisTopTup _argOknTy _argOlamMp _argOletBindingsCateg _argOlev _argOnm _argOopts _argOrvarMp _argOwhatTo
          in  ( _lhsOappFunKind,_lhsOargL,_lhsOcTrf,_lhsOcoe,_lhsOfunCoe,_lhsOfvS,_lhsOgUniq,_lhsOgathLamMp,_lhsOmbFFIApp,_lhsOmbFunVar,_lhsOmbLam,_lhsOmbVar,_lhsOoTrf,_lhsOqualS,_lhsOrvarMp,_lhsOty,_lhsOwhatBelow)))
sem_CExpr_Lam :: T_CBind ->
                 T_CExpr ->
                 T_CExpr
sem_CExpr_Lam bind_ body_ =
    (\ _lhsIaltMbScrutTy
       _lhsIboundRelevTyVarS
       _lhsIdataGam
       _lhsIenv
       _lhsIevalCtx
       _lhsIfinalRVarMp
       _lhsIgUniq
       _lhsIisTopApp
       _lhsIisTopTup
       _lhsIknTy
       _lhsIlamMp
       _lhsIlev
       _lhsIopts
       _lhsIrvarMp
       _lhsIwhatAbove
       _lhsIwhatTo ->
         (let _lhsOgathLamMp :: LamMp
              _bodyOlamMp :: LamMp
              _isTopApp :: Bool
              _whatAbove :: WhatExpr
              _lhsOmbLam :: (Maybe [HsName])
              _lhsOappFunKind :: AppFunKind
              _lhsOmbVar :: (Maybe HsName)
              _lhsOmbFunVar :: (Maybe HsName)
              _lhsOargL :: ([CBound])
              _lhsOmbFFIApp :: (Maybe ( Ty
                                                                  , Bool
                                                                  , FFIWay
                                                                  , ForeignEnt
                                                                  , [Ty]
                                                                  ))
              _lhsOcoe :: RelevCoe
              _lhsOfunCoe :: RelevCoe
              _lhsOty :: RelevTy
              _lhsOcTrf :: CExpr
              _lhsOfvS :: FvS
              _lhsOqualS :: RelevQualS
              _lhsOoTrf :: CExpr
              _lhsOgUniq :: UID
              _lhsOrvarMp :: RVarMp
              _lhsOwhatBelow :: WhatExpr
              _bindOboundRelevTyVarS :: UIDS
              _bindOdataGam :: DataGam
              _bindOenv :: REnv
              _bindOevalCtx :: EvalCtx
              _bindOfinalRVarMp :: RVarMp
              _bindOforQuantRVarMp :: RVarMp
              _bindOgUniq :: UID
              _bindOisGlobal :: Bool
              _bindOknTy :: RelevTy
              _bindOlamMp :: LamMp
              _bindOletBindingsCateg :: CBindCateg
              _bindOlev :: Int
              _bindOopts :: EHCOpts
              _bindOrvarMp :: RVarMp
              _bindOwhatTo :: ([WhatToRelevInfer])
              _bodyOaltMbScrutTy :: MbRelevTy
              _bodyOboundRelevTyVarS :: UIDS
              _bodyOdataGam :: DataGam
              _bodyOenv :: REnv
              _bodyOevalCtx :: EvalCtx
              _bodyOfinalRVarMp :: RVarMp
              _bodyOgUniq :: UID
              _bodyOisTopApp :: Bool
              _bodyOisTopTup :: Bool
              _bodyOknTy :: RelevTy
              _bodyOlev :: Int
              _bodyOopts :: EHCOpts
              _bodyOrvarMp :: RVarMp
              _bodyOwhatAbove :: WhatExpr
              _bodyOwhatTo :: ([WhatToRelevInfer])
              _bindIaltMbScrutTy :: MbRelevTy
              _bindIbindLamMp :: LamMp
              _bindIcTrf :: CBind
              _bindIextraBindRVarMp :: RVarMp
              _bindIfvS :: FvS
              _bindIfvSMp :: FvSMp
              _bindIgUniq :: UID
              _bindIgathEnv :: REnv
              _bindIgathRecEnv :: REnv
              _bindInm :: HsName
              _bindInmL :: ([HsName])
              _bindIoTrf :: CBind
              _bindIqualS :: RelevQualS
              _bindIrvarMp :: RVarMp
              _bodyIappFunKind :: AppFunKind
              _bodyIargL :: ([CBound])
              _bodyIcTrf :: CExpr
              _bodyIcoe :: RelevCoe
              _bodyIfunCoe :: RelevCoe
              _bodyIfvS :: FvS
              _bodyIgUniq :: UID
              _bodyIgathLamMp :: LamMp
              _bodyImbFFIApp :: (Maybe ( Ty
                                                                   , Bool
                                                                   , FFIWay
                                                                   , ForeignEnt
                                                                   , [Ty]
                                                                   ))
              _bodyImbFunVar :: (Maybe HsName)
              _bodyImbLam :: (Maybe [HsName])
              _bodyImbVar :: (Maybe HsName)
              _bodyIoTrf :: CExpr
              _bodyIqualS :: RelevQualS
              _bodyIrvarMp :: RVarMp
              _bodyIty :: RelevTy
              _bodyIwhatBelow :: WhatExpr
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 9, column 33)
              _lhsOgathLamMp =
                  Map.empty
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonLamInfo.ag"(line 7, column 17)
              _bodyOlamMp =
                  Map.delete _argNm _lhsIlamMp
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 5, column 17)
              _fvS =
                  _argNm `Set.delete` _bodyIfvS
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 6, column 33)
              _letBindingsCateg =
                  acoreBindcategPlain
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 16, column 17)
              _isTopApp =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 21, column 17)
              _isTopTup =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 51, column 17)
              _whatBelow =
                  maybe (ExprIsLam 1) (\a -> ExprIsLam $ a + 1) $ whatExprMbLam _bodyIwhatBelow
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 69, column 17)
              _whatAbove =
                  maybe (ExprIsLam 1) (\a -> ExprIsLam $ a + 1) $ whatExprMbLam _lhsIwhatAbove
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 76, column 17)
              _isTopLam =
                  not $ whatExprIsLam _lhsIwhatAbove
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonPred.ag"(line 4, column 17)
              _lhsOmbLam =
                  Just $ maybe [_argNm] (_argNm:) _bodyImbLam
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonPred.ag"(line 16, column 17)
              _lhsOappFunKind =
                  AppFunKind_NoApp
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonPred.ag"(line 24, column 33)
              _lhsOmbVar =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonStructureInfo.ag"(line 8, column 33)
              _lhsOmbFunVar =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonStructureInfo.ag"(line 15, column 33)
              _lhsOargL =
                  []
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonBindNm.ag"(line 19, column 17)
              _argNm =
                  _bindInm
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonFFI.ag"(line 43, column 17)
              _lhsOmbFFIApp =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonLevLamPer1Lam.ag"(line 2, column 17)
              _lev =
                  _lhsIlev + 1
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonLev.ag"(line 12, column 33)
              _isGlobal =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 324, column 17)
              _lhsOcoe =
                  RelevCoe_Id
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 331, column 17)
              _hereBodyCoe =
                  case _bodyIwhatBelow of
                    ExprIsLam _ -> RelevCoe_Id
                    _           -> _bodyIcoe
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 356, column 17)
              _lhsOfunCoe =
                  RelevCoe_Err "CExpr.unimpl"
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 366, column 17)
              _lhsOty =
                  RelevTy_Err "unimpl"
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 394, column 33)
              _forQuantRVarMp =
                  emptyRVarMp
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 615, column 17)
              _lhsOcTrf =
                  acoreLam1 _argNm $ annCoe _hereBodyCoe _bodyIcTrf
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
              _lhsOfvS =
                  _fvS
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
              _lhsOqualS =
                  _bindIqualS `Set.union` _bodyIqualS
              -- self rule
              _cTrf =
                  CExpr_Lam _bindIcTrf _bodyIcTrf
              -- self rule
              _oTrf =
                  CExpr_Lam _bindIoTrf _bodyIoTrf
              -- self rule
              _lhsOoTrf =
                  _oTrf
              -- copy rule (up)
              _lhsOgUniq =
                  _bodyIgUniq
              -- copy rule (up)
              _lhsOrvarMp =
                  _bodyIrvarMp
              -- copy rule (from local)
              _lhsOwhatBelow =
                  _whatBelow
              -- copy rule (down)
              _bindOboundRelevTyVarS =
                  _lhsIboundRelevTyVarS
              -- copy rule (down)
              _bindOdataGam =
                  _lhsIdataGam
              -- copy rule (down)
              _bindOenv =
                  _lhsIenv
              -- copy rule (down)
              _bindOevalCtx =
                  _lhsIevalCtx
              -- copy rule (down)
              _bindOfinalRVarMp =
                  _lhsIfinalRVarMp
              -- copy rule (from local)
              _bindOforQuantRVarMp =
                  _forQuantRVarMp
              -- copy rule (down)
              _bindOgUniq =
                  _lhsIgUniq
              -- copy rule (from local)
              _bindOisGlobal =
                  _isGlobal
              -- copy rule (down)
              _bindOknTy =
                  _lhsIknTy
              -- copy rule (down)
              _bindOlamMp =
                  _lhsIlamMp
              -- copy rule (from local)
              _bindOletBindingsCateg =
                  _letBindingsCateg
              -- copy rule (from local)
              _bindOlev =
                  _lev
              -- copy rule (down)
              _bindOopts =
                  _lhsIopts
              -- copy rule (down)
              _bindOrvarMp =
                  _lhsIrvarMp
              -- copy rule (down)
              _bindOwhatTo =
                  _lhsIwhatTo
              -- copy rule (chain)
              _bodyOaltMbScrutTy =
                  _bindIaltMbScrutTy
              -- copy rule (down)
              _bodyOboundRelevTyVarS =
                  _lhsIboundRelevTyVarS
              -- copy rule (down)
              _bodyOdataGam =
                  _lhsIdataGam
              -- copy rule (down)
              _bodyOenv =
                  _lhsIenv
              -- copy rule (down)
              _bodyOevalCtx =
                  _lhsIevalCtx
              -- copy rule (down)
              _bodyOfinalRVarMp =
                  _lhsIfinalRVarMp
              -- copy rule (chain)
              _bodyOgUniq =
                  _bindIgUniq
              -- copy rule (from local)
              _bodyOisTopApp =
                  _isTopApp
              -- copy rule (from local)
              _bodyOisTopTup =
                  _isTopTup
              -- copy rule (down)
              _bodyOknTy =
                  _lhsIknTy
              -- copy rule (from local)
              _bodyOlev =
                  _lev
              -- copy rule (down)
              _bodyOopts =
                  _lhsIopts
              -- copy rule (chain)
              _bodyOrvarMp =
                  _bindIrvarMp
              -- copy rule (from local)
              _bodyOwhatAbove =
                  _whatAbove
              -- copy rule (down)
              _bodyOwhatTo =
                  _lhsIwhatTo
              ( _bindIaltMbScrutTy,_bindIbindLamMp,_bindIcTrf,_bindIextraBindRVarMp,_bindIfvS,_bindIfvSMp,_bindIgUniq,_bindIgathEnv,_bindIgathRecEnv,_bindInm,_bindInmL,_bindIoTrf,_bindIqualS,_bindIrvarMp) =
                  bind_ _bindOboundRelevTyVarS _bindOdataGam _bindOenv _bindOevalCtx _bindOfinalRVarMp _bindOforQuantRVarMp _bindOgUniq _bindOisGlobal _bindOknTy _bindOlamMp _bindOletBindingsCateg _bindOlev _bindOopts _bindOrvarMp _bindOwhatTo
              ( _bodyIappFunKind,_bodyIargL,_bodyIcTrf,_bodyIcoe,_bodyIfunCoe,_bodyIfvS,_bodyIgUniq,_bodyIgathLamMp,_bodyImbFFIApp,_bodyImbFunVar,_bodyImbLam,_bodyImbVar,_bodyIoTrf,_bodyIqualS,_bodyIrvarMp,_bodyIty,_bodyIwhatBelow) =
                  body_ _bodyOaltMbScrutTy _bodyOboundRelevTyVarS _bodyOdataGam _bodyOenv _bodyOevalCtx _bodyOfinalRVarMp _bodyOgUniq _bodyOisTopApp _bodyOisTopTup _bodyOknTy _bodyOlamMp _bodyOlev _bodyOopts _bodyOrvarMp _bodyOwhatAbove _bodyOwhatTo
          in  ( _lhsOappFunKind,_lhsOargL,_lhsOcTrf,_lhsOcoe,_lhsOfunCoe,_lhsOfvS,_lhsOgUniq,_lhsOgathLamMp,_lhsOmbFFIApp,_lhsOmbFunVar,_lhsOmbLam,_lhsOmbVar,_lhsOoTrf,_lhsOqualS,_lhsOrvarMp,_lhsOty,_lhsOwhatBelow)))
sem_CExpr_Case :: T_CExpr ->
                  T_CAltL ->
                  T_CExpr ->
                  T_CExpr
sem_CExpr_Case expr_ alts_ dflt_ =
    (\ _lhsIaltMbScrutTy
       _lhsIboundRelevTyVarS
       _lhsIdataGam
       _lhsIenv
       _lhsIevalCtx
       _lhsIfinalRVarMp
       _lhsIgUniq
       _lhsIisTopApp
       _lhsIisTopTup
       _lhsIknTy
       _lhsIlamMp
       _lhsIlev
       _lhsIopts
       _lhsIrvarMp
       _lhsIwhatAbove
       _lhsIwhatTo ->
         (let _lhsOgathLamMp :: LamMp
              _isTopApp :: Bool
              _whatAbove :: WhatExpr
              _lhsOmbLam :: (Maybe [HsName])
              _lhsOappFunKind :: AppFunKind
              _lhsOmbVar :: (Maybe HsName)
              _lhsOmbFunVar :: (Maybe HsName)
              _lhsOargL :: ([CBound])
              _lhsOmbFFIApp :: (Maybe ( Ty
                                                                  , Bool
                                                                  , FFIWay
                                                                  , ForeignEnt
                                                                  , [Ty]
                                                                  ))
              _exprOknTy :: RelevTy
              _altsOknTyCase :: RelevTy
              _altsOaltNrMax :: Int
              _altsOaltId :: UID
              _lhsOcoe :: RelevCoe
              _lhsOfunCoe :: RelevCoe
              _lhsOty :: RelevTy
              _lhsOrvarMp :: RVarMp
              _lhsOqualS :: RelevQualS
              _altQualSLSubs :: ([RelevQualS])
              _altQualSLSolv1 :: ([(RelevQualS,RVarMp)])
              _altQualSLSolv :: ([RelevQualS])
              _altQualSIntersect :: RelevQualS
              _altSolveLVarMp :: ([RVarMp])
              _lhsOcTrf :: CExpr
              _exprOgUniq :: UID
              _lUniq :: UID
              _lUniq2 :: UID
              _lhsOfvS :: FvS
              _lhsOoTrf :: CExpr
              _lhsOgUniq :: UID
              _lhsOwhatBelow :: WhatExpr
              _exprOaltMbScrutTy :: MbRelevTy
              _exprOboundRelevTyVarS :: UIDS
              _exprOdataGam :: DataGam
              _exprOenv :: REnv
              _exprOevalCtx :: EvalCtx
              _exprOfinalRVarMp :: RVarMp
              _exprOisTopApp :: Bool
              _exprOisTopTup :: Bool
              _exprOlamMp :: LamMp
              _exprOlev :: Int
              _exprOopts :: EHCOpts
              _exprOrvarMp :: RVarMp
              _exprOwhatAbove :: WhatExpr
              _exprOwhatTo :: ([WhatToRelevInfer])
              _altsOaltMbScrutTy :: MbRelevTy
              _altsOaltSolveLVarMp :: ([RVarMp])
              _altsOboundRelevTyVarS :: UIDS
              _altsOdataGam :: DataGam
              _altsOenv :: REnv
              _altsOevalCtx :: EvalCtx
              _altsOfinalRVarMp :: RVarMp
              _altsOgUniq :: UID
              _altsOknTy :: RelevTy
              _altsOlamMp :: LamMp
              _altsOlev :: Int
              _altsOopts :: EHCOpts
              _altsOrvarMp :: RVarMp
              _altsOwhatTo :: ([WhatToRelevInfer])
              _dfltOaltMbScrutTy :: MbRelevTy
              _dfltOboundRelevTyVarS :: UIDS
              _dfltOdataGam :: DataGam
              _dfltOenv :: REnv
              _dfltOevalCtx :: EvalCtx
              _dfltOfinalRVarMp :: RVarMp
              _dfltOgUniq :: UID
              _dfltOisTopApp :: Bool
              _dfltOisTopTup :: Bool
              _dfltOknTy :: RelevTy
              _dfltOlamMp :: LamMp
              _dfltOlev :: Int
              _dfltOopts :: EHCOpts
              _dfltOrvarMp :: RVarMp
              _dfltOwhatAbove :: WhatExpr
              _dfltOwhatTo :: ([WhatToRelevInfer])
              _exprIappFunKind :: AppFunKind
              _exprIargL :: ([CBound])
              _exprIcTrf :: CExpr
              _exprIcoe :: RelevCoe
              _exprIfunCoe :: RelevCoe
              _exprIfvS :: FvS
              _exprIgUniq :: UID
              _exprIgathLamMp :: LamMp
              _exprImbFFIApp :: (Maybe ( Ty
                                                                   , Bool
                                                                   , FFIWay
                                                                   , ForeignEnt
                                                                   , [Ty]
                                                                   ))
              _exprImbFunVar :: (Maybe HsName)
              _exprImbLam :: (Maybe [HsName])
              _exprImbVar :: (Maybe HsName)
              _exprIoTrf :: CExpr
              _exprIqualS :: RelevQualS
              _exprIrvarMp :: RVarMp
              _exprIty :: RelevTy
              _exprIwhatBelow :: WhatExpr
              _altsIaltNr :: Int
              _altsIaltQualSL :: ([RelevQualS])
              _altsIcTrf :: CAltL
              _altsIfvS :: FvS
              _altsIgUniq :: UID
              _altsIoTrf :: CAltL
              _altsIqualS :: RelevQualS
              _altsIrvarMp :: RVarMp
              _altsIty :: RelevTy
              _dfltIappFunKind :: AppFunKind
              _dfltIargL :: ([CBound])
              _dfltIcTrf :: CExpr
              _dfltIcoe :: RelevCoe
              _dfltIfunCoe :: RelevCoe
              _dfltIfvS :: FvS
              _dfltIgUniq :: UID
              _dfltIgathLamMp :: LamMp
              _dfltImbFFIApp :: (Maybe ( Ty
                                                                   , Bool
                                                                   , FFIWay
                                                                   , ForeignEnt
                                                                   , [Ty]
                                                                   ))
              _dfltImbFunVar :: (Maybe HsName)
              _dfltImbLam :: (Maybe [HsName])
              _dfltImbVar :: (Maybe HsName)
              _dfltIoTrf :: CExpr
              _dfltIqualS :: RelevQualS
              _dfltIrvarMp :: RVarMp
              _dfltIty :: RelevTy
              _dfltIwhatBelow :: WhatExpr
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 9, column 33)
              _lhsOgathLamMp =
                  Map.empty
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 16, column 17)
              _isTopApp =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 21, column 17)
              _isTopTup =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 64, column 17)
              _whatBelow =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 72, column 17)
              _whatAbove =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonPred.ag"(line 6, column 33)
              _lhsOmbLam =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonPred.ag"(line 16, column 17)
              _lhsOappFunKind =
                  AppFunKind_NoApp
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonPred.ag"(line 24, column 33)
              _lhsOmbVar =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonStructureInfo.ag"(line 8, column 33)
              _lhsOmbFunVar =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonStructureInfo.ag"(line 15, column 33)
              _lhsOargL =
                  []
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonFFI.ag"(line 43, column 17)
              _lhsOmbFFIApp =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 215, column 17)
              _exprOknTy =
                  _lhsIknTy
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 225, column 17)
              _altsOknTyCase =
                  _lhsIknTy
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 293, column 17)
              _altsOaltNrMax =
                  _altsIaltNr
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 293, column 17)
              _altsOaltId =
                  _lUniq
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 324, column 17)
              _lhsOcoe =
                  RelevCoe_Id
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 356, column 17)
              _lhsOfunCoe =
                  RelevCoe_Err "CExpr.unimpl"
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 364, column 17)
              _lhsOty =
                  _altsIty
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 383, column 17)
              _lhsOrvarMp =
                  _altsIrvarMp
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 425, column 17)
              _lhsOqualS =
                  Set.unions [_exprIqualS, _altQualSIntersect]
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 437, column 17)
              _altQualSLSubs =
                  map (Set.map (_altsIrvarMp `varUpd`)) _altsIaltQualSL
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 437, column 17)
              _altQualSLSolv1 =
                  let bnd = _lhsIboundRelevTyVarS
                      s q = (Set.map (m `varUpd`) q', m)
                          where (q',m) = assSolve bnd q
                  in  map s _altQualSLSubs
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 437, column 17)
              _altQualSLSolv =
                  map fst _altQualSLSolv1
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 437, column 17)
              _altQualSIntersect =
                  foldr1 Set.intersection _altQualSLSolv
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 452, column 17)
              _altQualSLSolv2 =
                  let s (q,m) = (Set.map (m3 `varUpd`) q', m4)
                              where m2 = m |+> _lhsIfinalRVarMp
                                    (q',m3) = assSolve Set.empty (Set.map (m2 `varUpd`) q)
                                    m4 = m3 |+> m2
                  in  map s _altQualSLSolv1
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 452, column 17)
              _altSolveLVarMp =
                  map snd _altQualSLSolv2
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 598, column 17)
              _dbg =
                  dbgCase _lhsIopts _lhsIboundRelevTyVarS _altQualSLSubs _altQualSLSolv _altQualSIntersect
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 620, column 17)
              _lhsOcTrf =
                  _cTrf
              -- -- generated by the unique rule mechanism.
              __tup21 =
                  let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> case nextUnique __cont of { (__cont, lUniq2) -> (__cont,lUniq,lUniq2)}} )
              -- -- generated by the unique rule mechanism.
              (_exprOgUniq,_,_) =
                  __tup21
              -- -- generated by the unique rule mechanism.
              (_,_lUniq,_) =
                  __tup21
              -- -- generated by the unique rule mechanism.
              (_,_,_lUniq2) =
                  __tup21
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
              _lhsOfvS =
                  _exprIfvS `Set.union` _altsIfvS `Set.union` _dfltIfvS
              -- self rule
              _cTrf =
                  CExpr_Case _exprIcTrf _altsIcTrf _dfltIcTrf
              -- self rule
              _oTrf =
                  CExpr_Case _exprIoTrf _altsIoTrf _dfltIoTrf
              -- self rule
              _lhsOoTrf =
                  _oTrf
              -- copy rule (up)
              _lhsOgUniq =
                  _dfltIgUniq
              -- copy rule (from local)
              _lhsOwhatBelow =
                  _whatBelow
              -- copy rule (down)
              _exprOaltMbScrutTy =
                  _lhsIaltMbScrutTy
              -- copy rule (down)
              _exprOboundRelevTyVarS =
                  _lhsIboundRelevTyVarS
              -- copy rule (down)
              _exprOdataGam =
                  _lhsIdataGam
              -- copy rule (down)
              _exprOenv =
                  _lhsIenv
              -- copy rule (down)
              _exprOevalCtx =
                  _lhsIevalCtx
              -- copy rule (down)
              _exprOfinalRVarMp =
                  _lhsIfinalRVarMp
              -- copy rule (from local)
              _exprOisTopApp =
                  _isTopApp
              -- copy rule (from local)
              _exprOisTopTup =
                  _isTopTup
              -- copy rule (down)
              _exprOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _exprOlev =
                  _lhsIlev
              -- copy rule (down)
              _exprOopts =
                  _lhsIopts
              -- copy rule (down)
              _exprOrvarMp =
                  _lhsIrvarMp
              -- copy rule (from local)
              _exprOwhatAbove =
                  _whatAbove
              -- copy rule (down)
              _exprOwhatTo =
                  _lhsIwhatTo
              -- copy rule (down)
              _altsOaltMbScrutTy =
                  _lhsIaltMbScrutTy
              -- copy rule (from local)
              _altsOaltSolveLVarMp =
                  _altSolveLVarMp
              -- copy rule (down)
              _altsOboundRelevTyVarS =
                  _lhsIboundRelevTyVarS
              -- copy rule (down)
              _altsOdataGam =
                  _lhsIdataGam
              -- copy rule (down)
              _altsOenv =
                  _lhsIenv
              -- copy rule (down)
              _altsOevalCtx =
                  _lhsIevalCtx
              -- copy rule (down)
              _altsOfinalRVarMp =
                  _lhsIfinalRVarMp
              -- copy rule (chain)
              _altsOgUniq =
                  _exprIgUniq
              -- copy rule (down)
              _altsOknTy =
                  _lhsIknTy
              -- copy rule (down)
              _altsOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _altsOlev =
                  _lhsIlev
              -- copy rule (down)
              _altsOopts =
                  _lhsIopts
              -- copy rule (chain)
              _altsOrvarMp =
                  _exprIrvarMp
              -- copy rule (down)
              _altsOwhatTo =
                  _lhsIwhatTo
              -- copy rule (down)
              _dfltOaltMbScrutTy =
                  _lhsIaltMbScrutTy
              -- copy rule (down)
              _dfltOboundRelevTyVarS =
                  _lhsIboundRelevTyVarS
              -- copy rule (down)
              _dfltOdataGam =
                  _lhsIdataGam
              -- copy rule (down)
              _dfltOenv =
                  _lhsIenv
              -- copy rule (down)
              _dfltOevalCtx =
                  _lhsIevalCtx
              -- copy rule (down)
              _dfltOfinalRVarMp =
                  _lhsIfinalRVarMp
              -- copy rule (chain)
              _dfltOgUniq =
                  _altsIgUniq
              -- copy rule (from local)
              _dfltOisTopApp =
                  _isTopApp
              -- copy rule (from local)
              _dfltOisTopTup =
                  _isTopTup
              -- copy rule (down)
              _dfltOknTy =
                  _lhsIknTy
              -- copy rule (down)
              _dfltOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _dfltOlev =
                  _lhsIlev
              -- copy rule (down)
              _dfltOopts =
                  _lhsIopts
              -- copy rule (chain)
              _dfltOrvarMp =
                  _altsIrvarMp
              -- copy rule (from local)
              _dfltOwhatAbove =
                  _whatAbove
              -- copy rule (down)
              _dfltOwhatTo =
                  _lhsIwhatTo
              ( _exprIappFunKind,_exprIargL,_exprIcTrf,_exprIcoe,_exprIfunCoe,_exprIfvS,_exprIgUniq,_exprIgathLamMp,_exprImbFFIApp,_exprImbFunVar,_exprImbLam,_exprImbVar,_exprIoTrf,_exprIqualS,_exprIrvarMp,_exprIty,_exprIwhatBelow) =
                  expr_ _exprOaltMbScrutTy _exprOboundRelevTyVarS _exprOdataGam _exprOenv _exprOevalCtx _exprOfinalRVarMp _exprOgUniq _exprOisTopApp _exprOisTopTup _exprOknTy _exprOlamMp _exprOlev _exprOopts _exprOrvarMp _exprOwhatAbove _exprOwhatTo
              ( _altsIaltNr,_altsIaltQualSL,_altsIcTrf,_altsIfvS,_altsIgUniq,_altsIoTrf,_altsIqualS,_altsIrvarMp,_altsIty) =
                  alts_ _altsOaltId _altsOaltMbScrutTy _altsOaltNrMax _altsOaltSolveLVarMp _altsOboundRelevTyVarS _altsOdataGam _altsOenv _altsOevalCtx _altsOfinalRVarMp _altsOgUniq _altsOknTy _altsOknTyCase _altsOlamMp _altsOlev _altsOopts _altsOrvarMp _altsOwhatTo
              ( _dfltIappFunKind,_dfltIargL,_dfltIcTrf,_dfltIcoe,_dfltIfunCoe,_dfltIfvS,_dfltIgUniq,_dfltIgathLamMp,_dfltImbFFIApp,_dfltImbFunVar,_dfltImbLam,_dfltImbVar,_dfltIoTrf,_dfltIqualS,_dfltIrvarMp,_dfltIty,_dfltIwhatBelow) =
                  dflt_ _dfltOaltMbScrutTy _dfltOboundRelevTyVarS _dfltOdataGam _dfltOenv _dfltOevalCtx _dfltOfinalRVarMp _dfltOgUniq _dfltOisTopApp _dfltOisTopTup _dfltOknTy _dfltOlamMp _dfltOlev _dfltOopts _dfltOrvarMp _dfltOwhatAbove _dfltOwhatTo
          in  ( _lhsOappFunKind,_lhsOargL,_lhsOcTrf,_lhsOcoe,_lhsOfunCoe,_lhsOfvS,_lhsOgUniq,_lhsOgathLamMp,_lhsOmbFFIApp,_lhsOmbFunVar,_lhsOmbLam,_lhsOmbVar,_lhsOoTrf,_lhsOqualS,_lhsOrvarMp,_lhsOty,_lhsOwhatBelow)))
sem_CExpr_CaseAltFail :: CaseAltFailReason ->
                         T_CExpr ->
                         T_CExpr
sem_CExpr_CaseAltFail failReason_ errorExpr_ =
    (\ _lhsIaltMbScrutTy
       _lhsIboundRelevTyVarS
       _lhsIdataGam
       _lhsIenv
       _lhsIevalCtx
       _lhsIfinalRVarMp
       _lhsIgUniq
       _lhsIisTopApp
       _lhsIisTopTup
       _lhsIknTy
       _lhsIlamMp
       _lhsIlev
       _lhsIopts
       _lhsIrvarMp
       _lhsIwhatAbove
       _lhsIwhatTo ->
         (let _isTopApp :: Bool
              _whatAbove :: WhatExpr
              _lhsOmbFFIApp :: (Maybe ( Ty
                                                                  , Bool
                                                                  , FFIWay
                                                                  , ForeignEnt
                                                                  , [Ty]
                                                                  ))
              _lhsOcoe :: RelevCoe
              _lhsOfvS :: FvS
              _lhsOqualS :: RelevQualS
              _lhsOcTrf :: CExpr
              _lhsOoTrf :: CExpr
              _lhsOappFunKind :: AppFunKind
              _lhsOargL :: ([CBound])
              _lhsOfunCoe :: RelevCoe
              _lhsOgUniq :: UID
              _lhsOgathLamMp :: LamMp
              _lhsOmbFunVar :: (Maybe HsName)
              _lhsOmbLam :: (Maybe [HsName])
              _lhsOmbVar :: (Maybe HsName)
              _lhsOrvarMp :: RVarMp
              _lhsOty :: RelevTy
              _lhsOwhatBelow :: WhatExpr
              _errorExprOaltMbScrutTy :: MbRelevTy
              _errorExprOboundRelevTyVarS :: UIDS
              _errorExprOdataGam :: DataGam
              _errorExprOenv :: REnv
              _errorExprOevalCtx :: EvalCtx
              _errorExprOfinalRVarMp :: RVarMp
              _errorExprOgUniq :: UID
              _errorExprOisTopApp :: Bool
              _errorExprOisTopTup :: Bool
              _errorExprOknTy :: RelevTy
              _errorExprOlamMp :: LamMp
              _errorExprOlev :: Int
              _errorExprOopts :: EHCOpts
              _errorExprOrvarMp :: RVarMp
              _errorExprOwhatAbove :: WhatExpr
              _errorExprOwhatTo :: ([WhatToRelevInfer])
              _errorExprIappFunKind :: AppFunKind
              _errorExprIargL :: ([CBound])
              _errorExprIcTrf :: CExpr
              _errorExprIcoe :: RelevCoe
              _errorExprIfunCoe :: RelevCoe
              _errorExprIfvS :: FvS
              _errorExprIgUniq :: UID
              _errorExprIgathLamMp :: LamMp
              _errorExprImbFFIApp :: (Maybe ( Ty
                                                                        , Bool
                                                                        , FFIWay
                                                                        , ForeignEnt
                                                                        , [Ty]
                                                                        ))
              _errorExprImbFunVar :: (Maybe HsName)
              _errorExprImbLam :: (Maybe [HsName])
              _errorExprImbVar :: (Maybe HsName)
              _errorExprIoTrf :: CExpr
              _errorExprIqualS :: RelevQualS
              _errorExprIrvarMp :: RVarMp
              _errorExprIty :: RelevTy
              _errorExprIwhatBelow :: WhatExpr
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 16, column 17)
              _isTopApp =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 21, column 17)
              _isTopTup =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 72, column 17)
              _whatAbove =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonFFI.ag"(line 43, column 17)
              _lhsOmbFFIApp =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 324, column 17)
              _lhsOcoe =
                  RelevCoe_Id
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
              _lhsOfvS =
                  _errorExprIfvS
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
              _lhsOqualS =
                  _errorExprIqualS
              -- self rule
              _cTrf =
                  CExpr_CaseAltFail failReason_ _errorExprIcTrf
              -- self rule
              _oTrf =
                  CExpr_CaseAltFail failReason_ _errorExprIoTrf
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- self rule
              _lhsOoTrf =
                  _oTrf
              -- copy rule (up)
              _lhsOappFunKind =
                  _errorExprIappFunKind
              -- copy rule (up)
              _lhsOargL =
                  _errorExprIargL
              -- copy rule (up)
              _lhsOfunCoe =
                  _errorExprIfunCoe
              -- copy rule (up)
              _lhsOgUniq =
                  _errorExprIgUniq
              -- copy rule (up)
              _lhsOgathLamMp =
                  _errorExprIgathLamMp
              -- copy rule (up)
              _lhsOmbFunVar =
                  _errorExprImbFunVar
              -- copy rule (up)
              _lhsOmbLam =
                  _errorExprImbLam
              -- copy rule (up)
              _lhsOmbVar =
                  _errorExprImbVar
              -- copy rule (up)
              _lhsOrvarMp =
                  _errorExprIrvarMp
              -- copy rule (up)
              _lhsOty =
                  _errorExprIty
              -- copy rule (up)
              _lhsOwhatBelow =
                  _errorExprIwhatBelow
              -- copy rule (down)
              _errorExprOaltMbScrutTy =
                  _lhsIaltMbScrutTy
              -- copy rule (down)
              _errorExprOboundRelevTyVarS =
                  _lhsIboundRelevTyVarS
              -- copy rule (down)
              _errorExprOdataGam =
                  _lhsIdataGam
              -- copy rule (down)
              _errorExprOenv =
                  _lhsIenv
              -- copy rule (down)
              _errorExprOevalCtx =
                  _lhsIevalCtx
              -- copy rule (down)
              _errorExprOfinalRVarMp =
                  _lhsIfinalRVarMp
              -- copy rule (down)
              _errorExprOgUniq =
                  _lhsIgUniq
              -- copy rule (from local)
              _errorExprOisTopApp =
                  _isTopApp
              -- copy rule (from local)
              _errorExprOisTopTup =
                  _isTopTup
              -- copy rule (down)
              _errorExprOknTy =
                  _lhsIknTy
              -- copy rule (down)
              _errorExprOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _errorExprOlev =
                  _lhsIlev
              -- copy rule (down)
              _errorExprOopts =
                  _lhsIopts
              -- copy rule (down)
              _errorExprOrvarMp =
                  _lhsIrvarMp
              -- copy rule (from local)
              _errorExprOwhatAbove =
                  _whatAbove
              -- copy rule (down)
              _errorExprOwhatTo =
                  _lhsIwhatTo
              ( _errorExprIappFunKind,_errorExprIargL,_errorExprIcTrf,_errorExprIcoe,_errorExprIfunCoe,_errorExprIfvS,_errorExprIgUniq,_errorExprIgathLamMp,_errorExprImbFFIApp,_errorExprImbFunVar,_errorExprImbLam,_errorExprImbVar,_errorExprIoTrf,_errorExprIqualS,_errorExprIrvarMp,_errorExprIty,_errorExprIwhatBelow) =
                  errorExpr_ _errorExprOaltMbScrutTy _errorExprOboundRelevTyVarS _errorExprOdataGam _errorExprOenv _errorExprOevalCtx _errorExprOfinalRVarMp _errorExprOgUniq _errorExprOisTopApp _errorExprOisTopTup _errorExprOknTy _errorExprOlamMp _errorExprOlev _errorExprOopts _errorExprOrvarMp _errorExprOwhatAbove _errorExprOwhatTo
          in  ( _lhsOappFunKind,_lhsOargL,_lhsOcTrf,_lhsOcoe,_lhsOfunCoe,_lhsOfvS,_lhsOgUniq,_lhsOgathLamMp,_lhsOmbFFIApp,_lhsOmbFunVar,_lhsOmbLam,_lhsOmbVar,_lhsOoTrf,_lhsOqualS,_lhsOrvarMp,_lhsOty,_lhsOwhatBelow)))
sem_CExpr_TupDel :: T_CExpr ->
                    CTag ->
                    HsName ->
                    T_CExpr ->
                    T_CExpr
sem_CExpr_TupDel expr_ tag_ nm_ offset_ =
    (\ _lhsIaltMbScrutTy
       _lhsIboundRelevTyVarS
       _lhsIdataGam
       _lhsIenv
       _lhsIevalCtx
       _lhsIfinalRVarMp
       _lhsIgUniq
       _lhsIisTopApp
       _lhsIisTopTup
       _lhsIknTy
       _lhsIlamMp
       _lhsIlev
       _lhsIopts
       _lhsIrvarMp
       _lhsIwhatAbove
       _lhsIwhatTo ->
         (let _lhsOgathLamMp :: LamMp
              _isTopApp :: Bool
              _exprOisTopTup :: Bool
              _whatAbove :: WhatExpr
              _lhsOmbLam :: (Maybe [HsName])
              _lhsOappFunKind :: AppFunKind
              _lhsOmbVar :: (Maybe HsName)
              _lhsOmbFunVar :: (Maybe HsName)
              _lhsOargL :: ([CBound])
              _lhsOmbFFIApp :: (Maybe ( Ty
                                                                  , Bool
                                                                  , FFIWay
                                                                  , ForeignEnt
                                                                  , [Ty]
                                                                  ))
              _lhsOcoe :: RelevCoe
              _lhsOfunCoe :: RelevCoe
              _lhsOty :: RelevTy
              _lhsOfvS :: FvS
              _lhsOqualS :: RelevQualS
              _lhsOcTrf :: CExpr
              _lhsOoTrf :: CExpr
              _lhsOgUniq :: UID
              _lhsOrvarMp :: RVarMp
              _lhsOwhatBelow :: WhatExpr
              _exprOaltMbScrutTy :: MbRelevTy
              _exprOboundRelevTyVarS :: UIDS
              _exprOdataGam :: DataGam
              _exprOenv :: REnv
              _exprOevalCtx :: EvalCtx
              _exprOfinalRVarMp :: RVarMp
              _exprOgUniq :: UID
              _exprOisTopApp :: Bool
              _exprOknTy :: RelevTy
              _exprOlamMp :: LamMp
              _exprOlev :: Int
              _exprOopts :: EHCOpts
              _exprOrvarMp :: RVarMp
              _exprOwhatAbove :: WhatExpr
              _exprOwhatTo :: ([WhatToRelevInfer])
              _offsetOaltMbScrutTy :: MbRelevTy
              _offsetOboundRelevTyVarS :: UIDS
              _offsetOdataGam :: DataGam
              _offsetOenv :: REnv
              _offsetOevalCtx :: EvalCtx
              _offsetOfinalRVarMp :: RVarMp
              _offsetOgUniq :: UID
              _offsetOisTopApp :: Bool
              _offsetOisTopTup :: Bool
              _offsetOknTy :: RelevTy
              _offsetOlamMp :: LamMp
              _offsetOlev :: Int
              _offsetOopts :: EHCOpts
              _offsetOrvarMp :: RVarMp
              _offsetOwhatAbove :: WhatExpr
              _offsetOwhatTo :: ([WhatToRelevInfer])
              _exprIappFunKind :: AppFunKind
              _exprIargL :: ([CBound])
              _exprIcTrf :: CExpr
              _exprIcoe :: RelevCoe
              _exprIfunCoe :: RelevCoe
              _exprIfvS :: FvS
              _exprIgUniq :: UID
              _exprIgathLamMp :: LamMp
              _exprImbFFIApp :: (Maybe ( Ty
                                                                   , Bool
                                                                   , FFIWay
                                                                   , ForeignEnt
                                                                   , [Ty]
                                                                   ))
              _exprImbFunVar :: (Maybe HsName)
              _exprImbLam :: (Maybe [HsName])
              _exprImbVar :: (Maybe HsName)
              _exprIoTrf :: CExpr
              _exprIqualS :: RelevQualS
              _exprIrvarMp :: RVarMp
              _exprIty :: RelevTy
              _exprIwhatBelow :: WhatExpr
              _offsetIappFunKind :: AppFunKind
              _offsetIargL :: ([CBound])
              _offsetIcTrf :: CExpr
              _offsetIcoe :: RelevCoe
              _offsetIfunCoe :: RelevCoe
              _offsetIfvS :: FvS
              _offsetIgUniq :: UID
              _offsetIgathLamMp :: LamMp
              _offsetImbFFIApp :: (Maybe ( Ty
                                                                     , Bool
                                                                     , FFIWay
                                                                     , ForeignEnt
                                                                     , [Ty]
                                                                     ))
              _offsetImbFunVar :: (Maybe HsName)
              _offsetImbLam :: (Maybe [HsName])
              _offsetImbVar :: (Maybe HsName)
              _offsetIoTrf :: CExpr
              _offsetIqualS :: RelevQualS
              _offsetIrvarMp :: RVarMp
              _offsetIty :: RelevTy
              _offsetIwhatBelow :: WhatExpr
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 9, column 33)
              _lhsOgathLamMp =
                  Map.empty
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 16, column 17)
              _isTopApp =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 18, column 17)
              _exprOisTopTup =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 19, column 17)
              _isTopTup =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 64, column 17)
              _whatBelow =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 72, column 17)
              _whatAbove =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonPred.ag"(line 6, column 33)
              _lhsOmbLam =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonPred.ag"(line 16, column 17)
              _lhsOappFunKind =
                  AppFunKind_NoApp
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonPred.ag"(line 24, column 33)
              _lhsOmbVar =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonStructureInfo.ag"(line 8, column 33)
              _lhsOmbFunVar =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonStructureInfo.ag"(line 15, column 33)
              _lhsOargL =
                  []
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonFFI.ag"(line 43, column 17)
              _lhsOmbFFIApp =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 324, column 17)
              _lhsOcoe =
                  RelevCoe_Id
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 356, column 17)
              _lhsOfunCoe =
                  RelevCoe_Err "CExpr.unimpl"
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 366, column 17)
              _lhsOty =
                  RelevTy_Err "unimpl"
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
              _lhsOfvS =
                  _exprIfvS `Set.union` _offsetIfvS
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
              _lhsOqualS =
                  _exprIqualS `Set.union` _offsetIqualS
              -- self rule
              _cTrf =
                  CExpr_TupDel _exprIcTrf tag_ nm_ _offsetIcTrf
              -- self rule
              _oTrf =
                  CExpr_TupDel _exprIoTrf tag_ nm_ _offsetIoTrf
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- self rule
              _lhsOoTrf =
                  _oTrf
              -- copy rule (up)
              _lhsOgUniq =
                  _offsetIgUniq
              -- copy rule (up)
              _lhsOrvarMp =
                  _offsetIrvarMp
              -- copy rule (from local)
              _lhsOwhatBelow =
                  _whatBelow
              -- copy rule (down)
              _exprOaltMbScrutTy =
                  _lhsIaltMbScrutTy
              -- copy rule (down)
              _exprOboundRelevTyVarS =
                  _lhsIboundRelevTyVarS
              -- copy rule (down)
              _exprOdataGam =
                  _lhsIdataGam
              -- copy rule (down)
              _exprOenv =
                  _lhsIenv
              -- copy rule (down)
              _exprOevalCtx =
                  _lhsIevalCtx
              -- copy rule (down)
              _exprOfinalRVarMp =
                  _lhsIfinalRVarMp
              -- copy rule (down)
              _exprOgUniq =
                  _lhsIgUniq
              -- copy rule (from local)
              _exprOisTopApp =
                  _isTopApp
              -- copy rule (down)
              _exprOknTy =
                  _lhsIknTy
              -- copy rule (down)
              _exprOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _exprOlev =
                  _lhsIlev
              -- copy rule (down)
              _exprOopts =
                  _lhsIopts
              -- copy rule (down)
              _exprOrvarMp =
                  _lhsIrvarMp
              -- copy rule (from local)
              _exprOwhatAbove =
                  _whatAbove
              -- copy rule (down)
              _exprOwhatTo =
                  _lhsIwhatTo
              -- copy rule (down)
              _offsetOaltMbScrutTy =
                  _lhsIaltMbScrutTy
              -- copy rule (down)
              _offsetOboundRelevTyVarS =
                  _lhsIboundRelevTyVarS
              -- copy rule (down)
              _offsetOdataGam =
                  _lhsIdataGam
              -- copy rule (down)
              _offsetOenv =
                  _lhsIenv
              -- copy rule (down)
              _offsetOevalCtx =
                  _lhsIevalCtx
              -- copy rule (down)
              _offsetOfinalRVarMp =
                  _lhsIfinalRVarMp
              -- copy rule (chain)
              _offsetOgUniq =
                  _exprIgUniq
              -- copy rule (from local)
              _offsetOisTopApp =
                  _isTopApp
              -- copy rule (from local)
              _offsetOisTopTup =
                  _isTopTup
              -- copy rule (down)
              _offsetOknTy =
                  _lhsIknTy
              -- copy rule (down)
              _offsetOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _offsetOlev =
                  _lhsIlev
              -- copy rule (down)
              _offsetOopts =
                  _lhsIopts
              -- copy rule (chain)
              _offsetOrvarMp =
                  _exprIrvarMp
              -- copy rule (from local)
              _offsetOwhatAbove =
                  _whatAbove
              -- copy rule (down)
              _offsetOwhatTo =
                  _lhsIwhatTo
              ( _exprIappFunKind,_exprIargL,_exprIcTrf,_exprIcoe,_exprIfunCoe,_exprIfvS,_exprIgUniq,_exprIgathLamMp,_exprImbFFIApp,_exprImbFunVar,_exprImbLam,_exprImbVar,_exprIoTrf,_exprIqualS,_exprIrvarMp,_exprIty,_exprIwhatBelow) =
                  expr_ _exprOaltMbScrutTy _exprOboundRelevTyVarS _exprOdataGam _exprOenv _exprOevalCtx _exprOfinalRVarMp _exprOgUniq _exprOisTopApp _exprOisTopTup _exprOknTy _exprOlamMp _exprOlev _exprOopts _exprOrvarMp _exprOwhatAbove _exprOwhatTo
              ( _offsetIappFunKind,_offsetIargL,_offsetIcTrf,_offsetIcoe,_offsetIfunCoe,_offsetIfvS,_offsetIgUniq,_offsetIgathLamMp,_offsetImbFFIApp,_offsetImbFunVar,_offsetImbLam,_offsetImbVar,_offsetIoTrf,_offsetIqualS,_offsetIrvarMp,_offsetIty,_offsetIwhatBelow) =
                  offset_ _offsetOaltMbScrutTy _offsetOboundRelevTyVarS _offsetOdataGam _offsetOenv _offsetOevalCtx _offsetOfinalRVarMp _offsetOgUniq _offsetOisTopApp _offsetOisTopTup _offsetOknTy _offsetOlamMp _offsetOlev _offsetOopts _offsetOrvarMp _offsetOwhatAbove _offsetOwhatTo
          in  ( _lhsOappFunKind,_lhsOargL,_lhsOcTrf,_lhsOcoe,_lhsOfunCoe,_lhsOfvS,_lhsOgUniq,_lhsOgathLamMp,_lhsOmbFFIApp,_lhsOmbFunVar,_lhsOmbLam,_lhsOmbVar,_lhsOoTrf,_lhsOqualS,_lhsOrvarMp,_lhsOty,_lhsOwhatBelow)))
sem_CExpr_TupIns :: T_CExpr ->
                    CTag ->
                    HsName ->
                    T_CExpr ->
                    T_CExpr ->
                    T_CExpr
sem_CExpr_TupIns expr_ tag_ nm_ offset_ fldExpr_ =
    (\ _lhsIaltMbScrutTy
       _lhsIboundRelevTyVarS
       _lhsIdataGam
       _lhsIenv
       _lhsIevalCtx
       _lhsIfinalRVarMp
       _lhsIgUniq
       _lhsIisTopApp
       _lhsIisTopTup
       _lhsIknTy
       _lhsIlamMp
       _lhsIlev
       _lhsIopts
       _lhsIrvarMp
       _lhsIwhatAbove
       _lhsIwhatTo ->
         (let _lhsOgathLamMp :: LamMp
              _isTopApp :: Bool
              _exprOisTopTup :: Bool
              _whatAbove :: WhatExpr
              _lhsOmbLam :: (Maybe [HsName])
              _lhsOappFunKind :: AppFunKind
              _lhsOmbVar :: (Maybe HsName)
              _lhsOmbFunVar :: (Maybe HsName)
              _lhsOargL :: ([CBound])
              _lhsOmbFFIApp :: (Maybe ( Ty
                                                                  , Bool
                                                                  , FFIWay
                                                                  , ForeignEnt
                                                                  , [Ty]
                                                                  ))
              _lhsOcoe :: RelevCoe
              _lhsOfunCoe :: RelevCoe
              _lhsOty :: RelevTy
              _lhsOfvS :: FvS
              _lhsOqualS :: RelevQualS
              _lhsOcTrf :: CExpr
              _lhsOoTrf :: CExpr
              _lhsOgUniq :: UID
              _lhsOrvarMp :: RVarMp
              _lhsOwhatBelow :: WhatExpr
              _exprOaltMbScrutTy :: MbRelevTy
              _exprOboundRelevTyVarS :: UIDS
              _exprOdataGam :: DataGam
              _exprOenv :: REnv
              _exprOevalCtx :: EvalCtx
              _exprOfinalRVarMp :: RVarMp
              _exprOgUniq :: UID
              _exprOisTopApp :: Bool
              _exprOknTy :: RelevTy
              _exprOlamMp :: LamMp
              _exprOlev :: Int
              _exprOopts :: EHCOpts
              _exprOrvarMp :: RVarMp
              _exprOwhatAbove :: WhatExpr
              _exprOwhatTo :: ([WhatToRelevInfer])
              _offsetOaltMbScrutTy :: MbRelevTy
              _offsetOboundRelevTyVarS :: UIDS
              _offsetOdataGam :: DataGam
              _offsetOenv :: REnv
              _offsetOevalCtx :: EvalCtx
              _offsetOfinalRVarMp :: RVarMp
              _offsetOgUniq :: UID
              _offsetOisTopApp :: Bool
              _offsetOisTopTup :: Bool
              _offsetOknTy :: RelevTy
              _offsetOlamMp :: LamMp
              _offsetOlev :: Int
              _offsetOopts :: EHCOpts
              _offsetOrvarMp :: RVarMp
              _offsetOwhatAbove :: WhatExpr
              _offsetOwhatTo :: ([WhatToRelevInfer])
              _fldExprOaltMbScrutTy :: MbRelevTy
              _fldExprOboundRelevTyVarS :: UIDS
              _fldExprOdataGam :: DataGam
              _fldExprOenv :: REnv
              _fldExprOevalCtx :: EvalCtx
              _fldExprOfinalRVarMp :: RVarMp
              _fldExprOgUniq :: UID
              _fldExprOisTopApp :: Bool
              _fldExprOisTopTup :: Bool
              _fldExprOknTy :: RelevTy
              _fldExprOlamMp :: LamMp
              _fldExprOlev :: Int
              _fldExprOopts :: EHCOpts
              _fldExprOrvarMp :: RVarMp
              _fldExprOwhatAbove :: WhatExpr
              _fldExprOwhatTo :: ([WhatToRelevInfer])
              _exprIappFunKind :: AppFunKind
              _exprIargL :: ([CBound])
              _exprIcTrf :: CExpr
              _exprIcoe :: RelevCoe
              _exprIfunCoe :: RelevCoe
              _exprIfvS :: FvS
              _exprIgUniq :: UID
              _exprIgathLamMp :: LamMp
              _exprImbFFIApp :: (Maybe ( Ty
                                                                   , Bool
                                                                   , FFIWay
                                                                   , ForeignEnt
                                                                   , [Ty]
                                                                   ))
              _exprImbFunVar :: (Maybe HsName)
              _exprImbLam :: (Maybe [HsName])
              _exprImbVar :: (Maybe HsName)
              _exprIoTrf :: CExpr
              _exprIqualS :: RelevQualS
              _exprIrvarMp :: RVarMp
              _exprIty :: RelevTy
              _exprIwhatBelow :: WhatExpr
              _offsetIappFunKind :: AppFunKind
              _offsetIargL :: ([CBound])
              _offsetIcTrf :: CExpr
              _offsetIcoe :: RelevCoe
              _offsetIfunCoe :: RelevCoe
              _offsetIfvS :: FvS
              _offsetIgUniq :: UID
              _offsetIgathLamMp :: LamMp
              _offsetImbFFIApp :: (Maybe ( Ty
                                                                     , Bool
                                                                     , FFIWay
                                                                     , ForeignEnt
                                                                     , [Ty]
                                                                     ))
              _offsetImbFunVar :: (Maybe HsName)
              _offsetImbLam :: (Maybe [HsName])
              _offsetImbVar :: (Maybe HsName)
              _offsetIoTrf :: CExpr
              _offsetIqualS :: RelevQualS
              _offsetIrvarMp :: RVarMp
              _offsetIty :: RelevTy
              _offsetIwhatBelow :: WhatExpr
              _fldExprIappFunKind :: AppFunKind
              _fldExprIargL :: ([CBound])
              _fldExprIcTrf :: CExpr
              _fldExprIcoe :: RelevCoe
              _fldExprIfunCoe :: RelevCoe
              _fldExprIfvS :: FvS
              _fldExprIgUniq :: UID
              _fldExprIgathLamMp :: LamMp
              _fldExprImbFFIApp :: (Maybe ( Ty
                                                                      , Bool
                                                                      , FFIWay
                                                                      , ForeignEnt
                                                                      , [Ty]
                                                                      ))
              _fldExprImbFunVar :: (Maybe HsName)
              _fldExprImbLam :: (Maybe [HsName])
              _fldExprImbVar :: (Maybe HsName)
              _fldExprIoTrf :: CExpr
              _fldExprIqualS :: RelevQualS
              _fldExprIrvarMp :: RVarMp
              _fldExprIty :: RelevTy
              _fldExprIwhatBelow :: WhatExpr
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 9, column 33)
              _lhsOgathLamMp =
                  Map.empty
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 16, column 17)
              _isTopApp =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 18, column 17)
              _exprOisTopTup =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 19, column 17)
              _isTopTup =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 64, column 17)
              _whatBelow =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 72, column 17)
              _whatAbove =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonPred.ag"(line 6, column 33)
              _lhsOmbLam =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonPred.ag"(line 16, column 17)
              _lhsOappFunKind =
                  AppFunKind_NoApp
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonPred.ag"(line 24, column 33)
              _lhsOmbVar =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonStructureInfo.ag"(line 8, column 33)
              _lhsOmbFunVar =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonStructureInfo.ag"(line 15, column 33)
              _lhsOargL =
                  []
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonFFI.ag"(line 43, column 17)
              _lhsOmbFFIApp =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 324, column 17)
              _lhsOcoe =
                  RelevCoe_Id
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 356, column 17)
              _lhsOfunCoe =
                  RelevCoe_Err "CExpr.unimpl"
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 366, column 17)
              _lhsOty =
                  RelevTy_Err "unimpl"
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
              _lhsOfvS =
                  _exprIfvS `Set.union` _offsetIfvS `Set.union` _fldExprIfvS
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
              _lhsOqualS =
                  _exprIqualS `Set.union` _offsetIqualS `Set.union` _fldExprIqualS
              -- self rule
              _cTrf =
                  CExpr_TupIns _exprIcTrf tag_ nm_ _offsetIcTrf _fldExprIcTrf
              -- self rule
              _oTrf =
                  CExpr_TupIns _exprIoTrf tag_ nm_ _offsetIoTrf _fldExprIoTrf
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- self rule
              _lhsOoTrf =
                  _oTrf
              -- copy rule (up)
              _lhsOgUniq =
                  _fldExprIgUniq
              -- copy rule (up)
              _lhsOrvarMp =
                  _fldExprIrvarMp
              -- copy rule (from local)
              _lhsOwhatBelow =
                  _whatBelow
              -- copy rule (down)
              _exprOaltMbScrutTy =
                  _lhsIaltMbScrutTy
              -- copy rule (down)
              _exprOboundRelevTyVarS =
                  _lhsIboundRelevTyVarS
              -- copy rule (down)
              _exprOdataGam =
                  _lhsIdataGam
              -- copy rule (down)
              _exprOenv =
                  _lhsIenv
              -- copy rule (down)
              _exprOevalCtx =
                  _lhsIevalCtx
              -- copy rule (down)
              _exprOfinalRVarMp =
                  _lhsIfinalRVarMp
              -- copy rule (down)
              _exprOgUniq =
                  _lhsIgUniq
              -- copy rule (from local)
              _exprOisTopApp =
                  _isTopApp
              -- copy rule (down)
              _exprOknTy =
                  _lhsIknTy
              -- copy rule (down)
              _exprOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _exprOlev =
                  _lhsIlev
              -- copy rule (down)
              _exprOopts =
                  _lhsIopts
              -- copy rule (down)
              _exprOrvarMp =
                  _lhsIrvarMp
              -- copy rule (from local)
              _exprOwhatAbove =
                  _whatAbove
              -- copy rule (down)
              _exprOwhatTo =
                  _lhsIwhatTo
              -- copy rule (down)
              _offsetOaltMbScrutTy =
                  _lhsIaltMbScrutTy
              -- copy rule (down)
              _offsetOboundRelevTyVarS =
                  _lhsIboundRelevTyVarS
              -- copy rule (down)
              _offsetOdataGam =
                  _lhsIdataGam
              -- copy rule (down)
              _offsetOenv =
                  _lhsIenv
              -- copy rule (down)
              _offsetOevalCtx =
                  _lhsIevalCtx
              -- copy rule (down)
              _offsetOfinalRVarMp =
                  _lhsIfinalRVarMp
              -- copy rule (chain)
              _offsetOgUniq =
                  _exprIgUniq
              -- copy rule (from local)
              _offsetOisTopApp =
                  _isTopApp
              -- copy rule (from local)
              _offsetOisTopTup =
                  _isTopTup
              -- copy rule (down)
              _offsetOknTy =
                  _lhsIknTy
              -- copy rule (down)
              _offsetOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _offsetOlev =
                  _lhsIlev
              -- copy rule (down)
              _offsetOopts =
                  _lhsIopts
              -- copy rule (chain)
              _offsetOrvarMp =
                  _exprIrvarMp
              -- copy rule (from local)
              _offsetOwhatAbove =
                  _whatAbove
              -- copy rule (down)
              _offsetOwhatTo =
                  _lhsIwhatTo
              -- copy rule (down)
              _fldExprOaltMbScrutTy =
                  _lhsIaltMbScrutTy
              -- copy rule (down)
              _fldExprOboundRelevTyVarS =
                  _lhsIboundRelevTyVarS
              -- copy rule (down)
              _fldExprOdataGam =
                  _lhsIdataGam
              -- copy rule (down)
              _fldExprOenv =
                  _lhsIenv
              -- copy rule (down)
              _fldExprOevalCtx =
                  _lhsIevalCtx
              -- copy rule (down)
              _fldExprOfinalRVarMp =
                  _lhsIfinalRVarMp
              -- copy rule (chain)
              _fldExprOgUniq =
                  _offsetIgUniq
              -- copy rule (from local)
              _fldExprOisTopApp =
                  _isTopApp
              -- copy rule (from local)
              _fldExprOisTopTup =
                  _isTopTup
              -- copy rule (down)
              _fldExprOknTy =
                  _lhsIknTy
              -- copy rule (down)
              _fldExprOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _fldExprOlev =
                  _lhsIlev
              -- copy rule (down)
              _fldExprOopts =
                  _lhsIopts
              -- copy rule (chain)
              _fldExprOrvarMp =
                  _offsetIrvarMp
              -- copy rule (from local)
              _fldExprOwhatAbove =
                  _whatAbove
              -- copy rule (down)
              _fldExprOwhatTo =
                  _lhsIwhatTo
              ( _exprIappFunKind,_exprIargL,_exprIcTrf,_exprIcoe,_exprIfunCoe,_exprIfvS,_exprIgUniq,_exprIgathLamMp,_exprImbFFIApp,_exprImbFunVar,_exprImbLam,_exprImbVar,_exprIoTrf,_exprIqualS,_exprIrvarMp,_exprIty,_exprIwhatBelow) =
                  expr_ _exprOaltMbScrutTy _exprOboundRelevTyVarS _exprOdataGam _exprOenv _exprOevalCtx _exprOfinalRVarMp _exprOgUniq _exprOisTopApp _exprOisTopTup _exprOknTy _exprOlamMp _exprOlev _exprOopts _exprOrvarMp _exprOwhatAbove _exprOwhatTo
              ( _offsetIappFunKind,_offsetIargL,_offsetIcTrf,_offsetIcoe,_offsetIfunCoe,_offsetIfvS,_offsetIgUniq,_offsetIgathLamMp,_offsetImbFFIApp,_offsetImbFunVar,_offsetImbLam,_offsetImbVar,_offsetIoTrf,_offsetIqualS,_offsetIrvarMp,_offsetIty,_offsetIwhatBelow) =
                  offset_ _offsetOaltMbScrutTy _offsetOboundRelevTyVarS _offsetOdataGam _offsetOenv _offsetOevalCtx _offsetOfinalRVarMp _offsetOgUniq _offsetOisTopApp _offsetOisTopTup _offsetOknTy _offsetOlamMp _offsetOlev _offsetOopts _offsetOrvarMp _offsetOwhatAbove _offsetOwhatTo
              ( _fldExprIappFunKind,_fldExprIargL,_fldExprIcTrf,_fldExprIcoe,_fldExprIfunCoe,_fldExprIfvS,_fldExprIgUniq,_fldExprIgathLamMp,_fldExprImbFFIApp,_fldExprImbFunVar,_fldExprImbLam,_fldExprImbVar,_fldExprIoTrf,_fldExprIqualS,_fldExprIrvarMp,_fldExprIty,_fldExprIwhatBelow) =
                  fldExpr_ _fldExprOaltMbScrutTy _fldExprOboundRelevTyVarS _fldExprOdataGam _fldExprOenv _fldExprOevalCtx _fldExprOfinalRVarMp _fldExprOgUniq _fldExprOisTopApp _fldExprOisTopTup _fldExprOknTy _fldExprOlamMp _fldExprOlev _fldExprOopts _fldExprOrvarMp _fldExprOwhatAbove _fldExprOwhatTo
          in  ( _lhsOappFunKind,_lhsOargL,_lhsOcTrf,_lhsOcoe,_lhsOfunCoe,_lhsOfvS,_lhsOgUniq,_lhsOgathLamMp,_lhsOmbFFIApp,_lhsOmbFunVar,_lhsOmbLam,_lhsOmbVar,_lhsOoTrf,_lhsOqualS,_lhsOrvarMp,_lhsOty,_lhsOwhatBelow)))
sem_CExpr_TupUpd :: T_CExpr ->
                    CTag ->
                    HsName ->
                    T_CExpr ->
                    T_CExpr ->
                    T_CExpr
sem_CExpr_TupUpd expr_ tag_ nm_ offset_ fldExpr_ =
    (\ _lhsIaltMbScrutTy
       _lhsIboundRelevTyVarS
       _lhsIdataGam
       _lhsIenv
       _lhsIevalCtx
       _lhsIfinalRVarMp
       _lhsIgUniq
       _lhsIisTopApp
       _lhsIisTopTup
       _lhsIknTy
       _lhsIlamMp
       _lhsIlev
       _lhsIopts
       _lhsIrvarMp
       _lhsIwhatAbove
       _lhsIwhatTo ->
         (let _lhsOgathLamMp :: LamMp
              _isTopApp :: Bool
              _exprOisTopTup :: Bool
              _whatAbove :: WhatExpr
              _lhsOmbLam :: (Maybe [HsName])
              _lhsOappFunKind :: AppFunKind
              _lhsOmbVar :: (Maybe HsName)
              _lhsOmbFunVar :: (Maybe HsName)
              _lhsOargL :: ([CBound])
              _lhsOmbFFIApp :: (Maybe ( Ty
                                                                  , Bool
                                                                  , FFIWay
                                                                  , ForeignEnt
                                                                  , [Ty]
                                                                  ))
              _lhsOcoe :: RelevCoe
              _lhsOfunCoe :: RelevCoe
              _lhsOty :: RelevTy
              _lhsOfvS :: FvS
              _lhsOqualS :: RelevQualS
              _lhsOcTrf :: CExpr
              _lhsOoTrf :: CExpr
              _lhsOgUniq :: UID
              _lhsOrvarMp :: RVarMp
              _lhsOwhatBelow :: WhatExpr
              _exprOaltMbScrutTy :: MbRelevTy
              _exprOboundRelevTyVarS :: UIDS
              _exprOdataGam :: DataGam
              _exprOenv :: REnv
              _exprOevalCtx :: EvalCtx
              _exprOfinalRVarMp :: RVarMp
              _exprOgUniq :: UID
              _exprOisTopApp :: Bool
              _exprOknTy :: RelevTy
              _exprOlamMp :: LamMp
              _exprOlev :: Int
              _exprOopts :: EHCOpts
              _exprOrvarMp :: RVarMp
              _exprOwhatAbove :: WhatExpr
              _exprOwhatTo :: ([WhatToRelevInfer])
              _offsetOaltMbScrutTy :: MbRelevTy
              _offsetOboundRelevTyVarS :: UIDS
              _offsetOdataGam :: DataGam
              _offsetOenv :: REnv
              _offsetOevalCtx :: EvalCtx
              _offsetOfinalRVarMp :: RVarMp
              _offsetOgUniq :: UID
              _offsetOisTopApp :: Bool
              _offsetOisTopTup :: Bool
              _offsetOknTy :: RelevTy
              _offsetOlamMp :: LamMp
              _offsetOlev :: Int
              _offsetOopts :: EHCOpts
              _offsetOrvarMp :: RVarMp
              _offsetOwhatAbove :: WhatExpr
              _offsetOwhatTo :: ([WhatToRelevInfer])
              _fldExprOaltMbScrutTy :: MbRelevTy
              _fldExprOboundRelevTyVarS :: UIDS
              _fldExprOdataGam :: DataGam
              _fldExprOenv :: REnv
              _fldExprOevalCtx :: EvalCtx
              _fldExprOfinalRVarMp :: RVarMp
              _fldExprOgUniq :: UID
              _fldExprOisTopApp :: Bool
              _fldExprOisTopTup :: Bool
              _fldExprOknTy :: RelevTy
              _fldExprOlamMp :: LamMp
              _fldExprOlev :: Int
              _fldExprOopts :: EHCOpts
              _fldExprOrvarMp :: RVarMp
              _fldExprOwhatAbove :: WhatExpr
              _fldExprOwhatTo :: ([WhatToRelevInfer])
              _exprIappFunKind :: AppFunKind
              _exprIargL :: ([CBound])
              _exprIcTrf :: CExpr
              _exprIcoe :: RelevCoe
              _exprIfunCoe :: RelevCoe
              _exprIfvS :: FvS
              _exprIgUniq :: UID
              _exprIgathLamMp :: LamMp
              _exprImbFFIApp :: (Maybe ( Ty
                                                                   , Bool
                                                                   , FFIWay
                                                                   , ForeignEnt
                                                                   , [Ty]
                                                                   ))
              _exprImbFunVar :: (Maybe HsName)
              _exprImbLam :: (Maybe [HsName])
              _exprImbVar :: (Maybe HsName)
              _exprIoTrf :: CExpr
              _exprIqualS :: RelevQualS
              _exprIrvarMp :: RVarMp
              _exprIty :: RelevTy
              _exprIwhatBelow :: WhatExpr
              _offsetIappFunKind :: AppFunKind
              _offsetIargL :: ([CBound])
              _offsetIcTrf :: CExpr
              _offsetIcoe :: RelevCoe
              _offsetIfunCoe :: RelevCoe
              _offsetIfvS :: FvS
              _offsetIgUniq :: UID
              _offsetIgathLamMp :: LamMp
              _offsetImbFFIApp :: (Maybe ( Ty
                                                                     , Bool
                                                                     , FFIWay
                                                                     , ForeignEnt
                                                                     , [Ty]
                                                                     ))
              _offsetImbFunVar :: (Maybe HsName)
              _offsetImbLam :: (Maybe [HsName])
              _offsetImbVar :: (Maybe HsName)
              _offsetIoTrf :: CExpr
              _offsetIqualS :: RelevQualS
              _offsetIrvarMp :: RVarMp
              _offsetIty :: RelevTy
              _offsetIwhatBelow :: WhatExpr
              _fldExprIappFunKind :: AppFunKind
              _fldExprIargL :: ([CBound])
              _fldExprIcTrf :: CExpr
              _fldExprIcoe :: RelevCoe
              _fldExprIfunCoe :: RelevCoe
              _fldExprIfvS :: FvS
              _fldExprIgUniq :: UID
              _fldExprIgathLamMp :: LamMp
              _fldExprImbFFIApp :: (Maybe ( Ty
                                                                      , Bool
                                                                      , FFIWay
                                                                      , ForeignEnt
                                                                      , [Ty]
                                                                      ))
              _fldExprImbFunVar :: (Maybe HsName)
              _fldExprImbLam :: (Maybe [HsName])
              _fldExprImbVar :: (Maybe HsName)
              _fldExprIoTrf :: CExpr
              _fldExprIqualS :: RelevQualS
              _fldExprIrvarMp :: RVarMp
              _fldExprIty :: RelevTy
              _fldExprIwhatBelow :: WhatExpr
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 9, column 33)
              _lhsOgathLamMp =
                  Map.empty
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 16, column 17)
              _isTopApp =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 18, column 17)
              _exprOisTopTup =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 19, column 17)
              _isTopTup =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 64, column 17)
              _whatBelow =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 72, column 17)
              _whatAbove =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonPred.ag"(line 6, column 33)
              _lhsOmbLam =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonPred.ag"(line 16, column 17)
              _lhsOappFunKind =
                  AppFunKind_NoApp
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonPred.ag"(line 24, column 33)
              _lhsOmbVar =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonStructureInfo.ag"(line 8, column 33)
              _lhsOmbFunVar =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonStructureInfo.ag"(line 15, column 33)
              _lhsOargL =
                  []
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonFFI.ag"(line 43, column 17)
              _lhsOmbFFIApp =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 324, column 17)
              _lhsOcoe =
                  RelevCoe_Id
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 356, column 17)
              _lhsOfunCoe =
                  RelevCoe_Err "CExpr.unimpl"
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 366, column 17)
              _lhsOty =
                  RelevTy_Err "unimpl"
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
              _lhsOfvS =
                  _exprIfvS `Set.union` _offsetIfvS `Set.union` _fldExprIfvS
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
              _lhsOqualS =
                  _exprIqualS `Set.union` _offsetIqualS `Set.union` _fldExprIqualS
              -- self rule
              _cTrf =
                  CExpr_TupUpd _exprIcTrf tag_ nm_ _offsetIcTrf _fldExprIcTrf
              -- self rule
              _oTrf =
                  CExpr_TupUpd _exprIoTrf tag_ nm_ _offsetIoTrf _fldExprIoTrf
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- self rule
              _lhsOoTrf =
                  _oTrf
              -- copy rule (up)
              _lhsOgUniq =
                  _fldExprIgUniq
              -- copy rule (up)
              _lhsOrvarMp =
                  _fldExprIrvarMp
              -- copy rule (from local)
              _lhsOwhatBelow =
                  _whatBelow
              -- copy rule (down)
              _exprOaltMbScrutTy =
                  _lhsIaltMbScrutTy
              -- copy rule (down)
              _exprOboundRelevTyVarS =
                  _lhsIboundRelevTyVarS
              -- copy rule (down)
              _exprOdataGam =
                  _lhsIdataGam
              -- copy rule (down)
              _exprOenv =
                  _lhsIenv
              -- copy rule (down)
              _exprOevalCtx =
                  _lhsIevalCtx
              -- copy rule (down)
              _exprOfinalRVarMp =
                  _lhsIfinalRVarMp
              -- copy rule (down)
              _exprOgUniq =
                  _lhsIgUniq
              -- copy rule (from local)
              _exprOisTopApp =
                  _isTopApp
              -- copy rule (down)
              _exprOknTy =
                  _lhsIknTy
              -- copy rule (down)
              _exprOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _exprOlev =
                  _lhsIlev
              -- copy rule (down)
              _exprOopts =
                  _lhsIopts
              -- copy rule (down)
              _exprOrvarMp =
                  _lhsIrvarMp
              -- copy rule (from local)
              _exprOwhatAbove =
                  _whatAbove
              -- copy rule (down)
              _exprOwhatTo =
                  _lhsIwhatTo
              -- copy rule (down)
              _offsetOaltMbScrutTy =
                  _lhsIaltMbScrutTy
              -- copy rule (down)
              _offsetOboundRelevTyVarS =
                  _lhsIboundRelevTyVarS
              -- copy rule (down)
              _offsetOdataGam =
                  _lhsIdataGam
              -- copy rule (down)
              _offsetOenv =
                  _lhsIenv
              -- copy rule (down)
              _offsetOevalCtx =
                  _lhsIevalCtx
              -- copy rule (down)
              _offsetOfinalRVarMp =
                  _lhsIfinalRVarMp
              -- copy rule (chain)
              _offsetOgUniq =
                  _exprIgUniq
              -- copy rule (from local)
              _offsetOisTopApp =
                  _isTopApp
              -- copy rule (from local)
              _offsetOisTopTup =
                  _isTopTup
              -- copy rule (down)
              _offsetOknTy =
                  _lhsIknTy
              -- copy rule (down)
              _offsetOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _offsetOlev =
                  _lhsIlev
              -- copy rule (down)
              _offsetOopts =
                  _lhsIopts
              -- copy rule (chain)
              _offsetOrvarMp =
                  _exprIrvarMp
              -- copy rule (from local)
              _offsetOwhatAbove =
                  _whatAbove
              -- copy rule (down)
              _offsetOwhatTo =
                  _lhsIwhatTo
              -- copy rule (down)
              _fldExprOaltMbScrutTy =
                  _lhsIaltMbScrutTy
              -- copy rule (down)
              _fldExprOboundRelevTyVarS =
                  _lhsIboundRelevTyVarS
              -- copy rule (down)
              _fldExprOdataGam =
                  _lhsIdataGam
              -- copy rule (down)
              _fldExprOenv =
                  _lhsIenv
              -- copy rule (down)
              _fldExprOevalCtx =
                  _lhsIevalCtx
              -- copy rule (down)
              _fldExprOfinalRVarMp =
                  _lhsIfinalRVarMp
              -- copy rule (chain)
              _fldExprOgUniq =
                  _offsetIgUniq
              -- copy rule (from local)
              _fldExprOisTopApp =
                  _isTopApp
              -- copy rule (from local)
              _fldExprOisTopTup =
                  _isTopTup
              -- copy rule (down)
              _fldExprOknTy =
                  _lhsIknTy
              -- copy rule (down)
              _fldExprOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _fldExprOlev =
                  _lhsIlev
              -- copy rule (down)
              _fldExprOopts =
                  _lhsIopts
              -- copy rule (chain)
              _fldExprOrvarMp =
                  _offsetIrvarMp
              -- copy rule (from local)
              _fldExprOwhatAbove =
                  _whatAbove
              -- copy rule (down)
              _fldExprOwhatTo =
                  _lhsIwhatTo
              ( _exprIappFunKind,_exprIargL,_exprIcTrf,_exprIcoe,_exprIfunCoe,_exprIfvS,_exprIgUniq,_exprIgathLamMp,_exprImbFFIApp,_exprImbFunVar,_exprImbLam,_exprImbVar,_exprIoTrf,_exprIqualS,_exprIrvarMp,_exprIty,_exprIwhatBelow) =
                  expr_ _exprOaltMbScrutTy _exprOboundRelevTyVarS _exprOdataGam _exprOenv _exprOevalCtx _exprOfinalRVarMp _exprOgUniq _exprOisTopApp _exprOisTopTup _exprOknTy _exprOlamMp _exprOlev _exprOopts _exprOrvarMp _exprOwhatAbove _exprOwhatTo
              ( _offsetIappFunKind,_offsetIargL,_offsetIcTrf,_offsetIcoe,_offsetIfunCoe,_offsetIfvS,_offsetIgUniq,_offsetIgathLamMp,_offsetImbFFIApp,_offsetImbFunVar,_offsetImbLam,_offsetImbVar,_offsetIoTrf,_offsetIqualS,_offsetIrvarMp,_offsetIty,_offsetIwhatBelow) =
                  offset_ _offsetOaltMbScrutTy _offsetOboundRelevTyVarS _offsetOdataGam _offsetOenv _offsetOevalCtx _offsetOfinalRVarMp _offsetOgUniq _offsetOisTopApp _offsetOisTopTup _offsetOknTy _offsetOlamMp _offsetOlev _offsetOopts _offsetOrvarMp _offsetOwhatAbove _offsetOwhatTo
              ( _fldExprIappFunKind,_fldExprIargL,_fldExprIcTrf,_fldExprIcoe,_fldExprIfunCoe,_fldExprIfvS,_fldExprIgUniq,_fldExprIgathLamMp,_fldExprImbFFIApp,_fldExprImbFunVar,_fldExprImbLam,_fldExprImbVar,_fldExprIoTrf,_fldExprIqualS,_fldExprIrvarMp,_fldExprIty,_fldExprIwhatBelow) =
                  fldExpr_ _fldExprOaltMbScrutTy _fldExprOboundRelevTyVarS _fldExprOdataGam _fldExprOenv _fldExprOevalCtx _fldExprOfinalRVarMp _fldExprOgUniq _fldExprOisTopApp _fldExprOisTopTup _fldExprOknTy _fldExprOlamMp _fldExprOlev _fldExprOopts _fldExprOrvarMp _fldExprOwhatAbove _fldExprOwhatTo
          in  ( _lhsOappFunKind,_lhsOargL,_lhsOcTrf,_lhsOcoe,_lhsOfunCoe,_lhsOfvS,_lhsOgUniq,_lhsOgathLamMp,_lhsOmbFFIApp,_lhsOmbFunVar,_lhsOmbLam,_lhsOmbVar,_lhsOoTrf,_lhsOqualS,_lhsOrvarMp,_lhsOty,_lhsOwhatBelow)))
sem_CExpr_FFI :: FFIWay ->
                 String ->
                 ForeignEnt ->
                 Ty ->
                 T_CExpr
sem_CExpr_FFI callconv_ safety_ impEnt_ ty_ =
    (\ _lhsIaltMbScrutTy
       _lhsIboundRelevTyVarS
       _lhsIdataGam
       _lhsIenv
       _lhsIevalCtx
       _lhsIfinalRVarMp
       _lhsIgUniq
       _lhsIisTopApp
       _lhsIisTopTup
       _lhsIknTy
       _lhsIlamMp
       _lhsIlev
       _lhsIopts
       _lhsIrvarMp
       _lhsIwhatAbove
       _lhsIwhatTo ->
         (let _lhsOgathLamMp :: LamMp
              _isTopApp :: Bool
              _whatAbove :: WhatExpr
              _lhsOmbLam :: (Maybe [HsName])
              _lhsOappFunKind :: AppFunKind
              _lhsOmbVar :: (Maybe HsName)
              _lhsOmbFunVar :: (Maybe HsName)
              _lhsOargL :: ([CBound])
              _argTyLresTy :: (( TyL, Ty ))
              _argTyL :: TyL
              _mbPrimNeedEval :: (Maybe PrimitiveNeedsEval)
              _primResNeedsEval :: Bool
              _lhsOmbFFIApp :: (Maybe ( Ty
                                                                  , Bool
                                                                  , FFIWay
                                                                  , ForeignEnt
                                                                  , [Ty]
                                                                  ))
              _ffiTy :: RelevTy
              _amso :: (AMSOut RelevTy)
              _ams :: AnaMatchState
              _lhsOcoe :: RelevCoe
              _lhsOfunCoe :: RelevCoe
              _lhsOty :: RelevTy
              _lhsOrvarMp :: RVarMp
              _lhsOqualS :: RelevQualS
              _lhsOcTrf :: CExpr
              _lhsOgUniq :: UID
              _lUniq :: UID
              _lUniq2 :: UID
              _lhsOfvS :: FvS
              _lhsOoTrf :: CExpr
              _lhsOwhatBelow :: WhatExpr
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 9, column 33)
              _lhsOgathLamMp =
                  Map.empty
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 16, column 17)
              _isTopApp =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 21, column 17)
              _isTopTup =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 56, column 25)
              _whatBelow =
                  ExprIsFFI
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 72, column 17)
              _whatAbove =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonPred.ag"(line 6, column 33)
              _lhsOmbLam =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonPred.ag"(line 12, column 17)
              _lhsOappFunKind =
                  AppFunKind_FFI
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonPred.ag"(line 24, column 33)
              _lhsOmbVar =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonStructureInfo.ag"(line 8, column 33)
              _lhsOmbFunVar =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonStructureInfo.ag"(line 15, column 33)
              _lhsOargL =
                  []
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonFFI.ag"(line 2, column 17)
              _argTyLresTy =
                  appUnArr ty_
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonFFI.ag"(line 2, column 17)
              _argTyL =
                  fst _argTyLresTy
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonFFI.ag"(line 2, column 17)
              _resTy =
                  snd _argTyLresTy
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonFFI.ag"(line 2, column 17)
              _foreignEntInfo =
                  foreignEntExtract impEnt_
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonFFI.ag"(line 6, column 17)
              _mbPrimNeedEval =
                  maybe Nothing lookupPrimNeedsEval $ forextractMbEnt _foreignEntInfo
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonFFI.ag"(line 6, column 17)
              _primArgNeedsEvalL =
                  maybe (repeat True) (\p -> primArgNeedEval p ++ repeat True) _mbPrimNeedEval
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonFFI.ag"(line 6, column 17)
              _primResNeedsEval =
                  maybe False primResNeedEval _mbPrimNeedEval
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonFFI.ag"(line 11, column 17)
              _argMbConL =
                  map tyAppFunMbConNm _argTyL
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonFFI.ag"(line 11, column 17)
              _resMbCon =
                  tyAppFunMbConNm _resTy
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonFFI.ag"(line 35, column 17)
              _lhsOmbFFIApp =
                  Just ( _resTy
                       , _primResNeedsEval
                       , callconv_
                       , impEnt_
                       , _argTyL
                       )
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 263, column 33)
              __tup22 =
                  let (r@(RelevTy_Ana re) ,qr) = (fresh _lUniq, [])
                      (as,qa) = relevTyArgs (const fresh) (\(RelevTy_Ana x) (RelevTy_Ana y) -> [RelevQual_SubEval x y]) _lUniq2 (take (length _argTyL) _primArgNeedsEvalL) r
                  in  (RelevTy_Fun RQuant_None [] [] as r, Set.fromList $ qr ++ qa)
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 263, column 33)
              (_ffiTy,_) =
                  __tup22
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 263, column 33)
              (_,_ffiQualS) =
                  __tup22
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 266, column 33)
              __tup23 =
                  amsLE _lhsIrvarMp _ffiTy _lhsIknTy
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 266, column 33)
              (_amso,_) =
                  __tup23
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 266, column 33)
              (_,_ams) =
                  __tup23
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 319, column 17)
              _lhsOcoe =
                  _lhsIfinalRVarMp `varUpd` amsoCoe _amso
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 350, column 17)
              _lhsOfunCoe =
                  last $ relevCoeToComposeList $ amsoCoe _amso
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 362, column 17)
              _lhsOty =
                  amsoHi _amso
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 382, column 17)
              _lhsOrvarMp =
                  amsLocalVarMp _ams |+> _lhsIrvarMp
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 422, column 17)
              _lhsOqualS =
                  Set.union _ffiQualS (amsGathQual _ams)
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 597, column 17)
              _dbg =
                  dbg     _lhsIopts _ffiTy _lhsIknTy _amso _ams
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 613, column 17)
              _lhsOcTrf =
                  _cTrf
              -- -- generated by the unique rule mechanism.
              __tup24 =
                  let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> case nextUnique __cont of { (__cont, lUniq2) -> (__cont,lUniq,lUniq2)}} )
              -- -- generated by the unique rule mechanism.
              (_lhsOgUniq,_,_) =
                  __tup24
              -- -- generated by the unique rule mechanism.
              (_,_lUniq,_) =
                  __tup24
              -- -- generated by the unique rule mechanism.
              (_,_,_lUniq2) =
                  __tup24
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
              _lhsOfvS =
                  Set.empty
              -- self rule
              _cTrf =
                  CExpr_FFI callconv_ safety_ impEnt_ ty_
              -- self rule
              _oTrf =
                  CExpr_FFI callconv_ safety_ impEnt_ ty_
              -- self rule
              _lhsOoTrf =
                  _oTrf
              -- copy rule (from local)
              _lhsOwhatBelow =
                  _whatBelow
          in  ( _lhsOappFunKind,_lhsOargL,_lhsOcTrf,_lhsOcoe,_lhsOfunCoe,_lhsOfvS,_lhsOgUniq,_lhsOgathLamMp,_lhsOmbFFIApp,_lhsOmbFunVar,_lhsOmbLam,_lhsOmbVar,_lhsOoTrf,_lhsOqualS,_lhsOrvarMp,_lhsOty,_lhsOwhatBelow)))
sem_CExpr_Dbg :: String ->
                 T_CExpr
sem_CExpr_Dbg info_ =
    (\ _lhsIaltMbScrutTy
       _lhsIboundRelevTyVarS
       _lhsIdataGam
       _lhsIenv
       _lhsIevalCtx
       _lhsIfinalRVarMp
       _lhsIgUniq
       _lhsIisTopApp
       _lhsIisTopTup
       _lhsIknTy
       _lhsIlamMp
       _lhsIlev
       _lhsIopts
       _lhsIrvarMp
       _lhsIwhatAbove
       _lhsIwhatTo ->
         (let _lhsOgathLamMp :: LamMp
              _isTopApp :: Bool
              _whatAbove :: WhatExpr
              _lhsOmbLam :: (Maybe [HsName])
              _lhsOappFunKind :: AppFunKind
              _lhsOmbVar :: (Maybe HsName)
              _lhsOmbFunVar :: (Maybe HsName)
              _lhsOargL :: ([CBound])
              _lhsOmbFFIApp :: (Maybe ( Ty
                                                                  , Bool
                                                                  , FFIWay
                                                                  , ForeignEnt
                                                                  , [Ty]
                                                                  ))
              _lhsOcoe :: RelevCoe
              _lhsOfunCoe :: RelevCoe
              _lhsOty :: RelevTy
              _lhsOfvS :: FvS
              _lhsOqualS :: RelevQualS
              _lhsOcTrf :: CExpr
              _lhsOoTrf :: CExpr
              _lhsOgUniq :: UID
              _lhsOrvarMp :: RVarMp
              _lhsOwhatBelow :: WhatExpr
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 9, column 33)
              _lhsOgathLamMp =
                  Map.empty
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 16, column 17)
              _isTopApp =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 21, column 17)
              _isTopTup =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 64, column 17)
              _whatBelow =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 72, column 17)
              _whatAbove =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonPred.ag"(line 6, column 33)
              _lhsOmbLam =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonPred.ag"(line 16, column 17)
              _lhsOappFunKind =
                  AppFunKind_NoApp
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonPred.ag"(line 24, column 33)
              _lhsOmbVar =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonStructureInfo.ag"(line 8, column 33)
              _lhsOmbFunVar =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonStructureInfo.ag"(line 15, column 33)
              _lhsOargL =
                  []
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonFFI.ag"(line 43, column 17)
              _lhsOmbFFIApp =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 324, column 17)
              _lhsOcoe =
                  RelevCoe_Id
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 356, column 17)
              _lhsOfunCoe =
                  RelevCoe_Err "CExpr.unimpl"
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 366, column 17)
              _lhsOty =
                  RelevTy_Err "unimpl"
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
              _lhsOfvS =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
              _lhsOqualS =
                  Set.empty
              -- self rule
              _cTrf =
                  CExpr_Dbg info_
              -- self rule
              _oTrf =
                  CExpr_Dbg info_
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- self rule
              _lhsOoTrf =
                  _oTrf
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOrvarMp =
                  _lhsIrvarMp
              -- copy rule (from local)
              _lhsOwhatBelow =
                  _whatBelow
          in  ( _lhsOappFunKind,_lhsOargL,_lhsOcTrf,_lhsOcoe,_lhsOfunCoe,_lhsOfvS,_lhsOgUniq,_lhsOgathLamMp,_lhsOmbFFIApp,_lhsOmbFunVar,_lhsOmbLam,_lhsOmbVar,_lhsOoTrf,_lhsOqualS,_lhsOrvarMp,_lhsOty,_lhsOwhatBelow)))
sem_CExpr_Hole :: UID ->
                  T_CExpr
sem_CExpr_Hole uid_ =
    (\ _lhsIaltMbScrutTy
       _lhsIboundRelevTyVarS
       _lhsIdataGam
       _lhsIenv
       _lhsIevalCtx
       _lhsIfinalRVarMp
       _lhsIgUniq
       _lhsIisTopApp
       _lhsIisTopTup
       _lhsIknTy
       _lhsIlamMp
       _lhsIlev
       _lhsIopts
       _lhsIrvarMp
       _lhsIwhatAbove
       _lhsIwhatTo ->
         (let _lhsOgathLamMp :: LamMp
              _isTopApp :: Bool
              _whatAbove :: WhatExpr
              _lhsOmbLam :: (Maybe [HsName])
              _lhsOappFunKind :: AppFunKind
              _lhsOmbVar :: (Maybe HsName)
              _lhsOmbFunVar :: (Maybe HsName)
              _lhsOargL :: ([CBound])
              _lhsOmbFFIApp :: (Maybe ( Ty
                                                                  , Bool
                                                                  , FFIWay
                                                                  , ForeignEnt
                                                                  , [Ty]
                                                                  ))
              _lhsOcoe :: RelevCoe
              _lhsOfunCoe :: RelevCoe
              _lhsOty :: RelevTy
              _lhsOfvS :: FvS
              _lhsOqualS :: RelevQualS
              _lhsOcTrf :: CExpr
              _lhsOoTrf :: CExpr
              _lhsOgUniq :: UID
              _lhsOrvarMp :: RVarMp
              _lhsOwhatBelow :: WhatExpr
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 9, column 33)
              _lhsOgathLamMp =
                  Map.empty
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 16, column 17)
              _isTopApp =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 21, column 17)
              _isTopTup =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 64, column 17)
              _whatBelow =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 72, column 17)
              _whatAbove =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonPred.ag"(line 6, column 33)
              _lhsOmbLam =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonPred.ag"(line 16, column 17)
              _lhsOappFunKind =
                  AppFunKind_NoApp
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonPred.ag"(line 24, column 33)
              _lhsOmbVar =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonStructureInfo.ag"(line 8, column 33)
              _lhsOmbFunVar =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonStructureInfo.ag"(line 15, column 33)
              _lhsOargL =
                  []
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonFFI.ag"(line 43, column 17)
              _lhsOmbFFIApp =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 324, column 17)
              _lhsOcoe =
                  RelevCoe_Id
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 356, column 17)
              _lhsOfunCoe =
                  RelevCoe_Err "CExpr.unimpl"
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 366, column 17)
              _lhsOty =
                  RelevTy_Err "unimpl"
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
              _lhsOfvS =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
              _lhsOqualS =
                  Set.empty
              -- self rule
              _cTrf =
                  CExpr_Hole uid_
              -- self rule
              _oTrf =
                  CExpr_Hole uid_
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- self rule
              _lhsOoTrf =
                  _oTrf
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOrvarMp =
                  _lhsIrvarMp
              -- copy rule (from local)
              _lhsOwhatBelow =
                  _whatBelow
          in  ( _lhsOappFunKind,_lhsOargL,_lhsOcTrf,_lhsOcoe,_lhsOfunCoe,_lhsOfvS,_lhsOgUniq,_lhsOgathLamMp,_lhsOmbFFIApp,_lhsOmbFunVar,_lhsOmbLam,_lhsOmbVar,_lhsOoTrf,_lhsOqualS,_lhsOrvarMp,_lhsOty,_lhsOwhatBelow)))
sem_CExpr_HoleLet :: UID ->
                     T_CExpr ->
                     T_CExpr
sem_CExpr_HoleLet bindsUid_ body_ =
    (\ _lhsIaltMbScrutTy
       _lhsIboundRelevTyVarS
       _lhsIdataGam
       _lhsIenv
       _lhsIevalCtx
       _lhsIfinalRVarMp
       _lhsIgUniq
       _lhsIisTopApp
       _lhsIisTopTup
       _lhsIknTy
       _lhsIlamMp
       _lhsIlev
       _lhsIopts
       _lhsIrvarMp
       _lhsIwhatAbove
       _lhsIwhatTo ->
         (let _lhsOgathLamMp :: LamMp
              _isTopApp :: Bool
              _whatAbove :: WhatExpr
              _lhsOmbLam :: (Maybe [HsName])
              _lhsOappFunKind :: AppFunKind
              _lhsOmbVar :: (Maybe HsName)
              _lhsOmbFunVar :: (Maybe HsName)
              _lhsOargL :: ([CBound])
              _lhsOmbFFIApp :: (Maybe ( Ty
                                                                  , Bool
                                                                  , FFIWay
                                                                  , ForeignEnt
                                                                  , [Ty]
                                                                  ))
              _lhsOcoe :: RelevCoe
              _lhsOfunCoe :: RelevCoe
              _lhsOty :: RelevTy
              _lhsOfvS :: FvS
              _lhsOqualS :: RelevQualS
              _lhsOcTrf :: CExpr
              _lhsOoTrf :: CExpr
              _lhsOgUniq :: UID
              _lhsOrvarMp :: RVarMp
              _lhsOwhatBelow :: WhatExpr
              _bodyOaltMbScrutTy :: MbRelevTy
              _bodyOboundRelevTyVarS :: UIDS
              _bodyOdataGam :: DataGam
              _bodyOenv :: REnv
              _bodyOevalCtx :: EvalCtx
              _bodyOfinalRVarMp :: RVarMp
              _bodyOgUniq :: UID
              _bodyOisTopApp :: Bool
              _bodyOisTopTup :: Bool
              _bodyOknTy :: RelevTy
              _bodyOlamMp :: LamMp
              _bodyOlev :: Int
              _bodyOopts :: EHCOpts
              _bodyOrvarMp :: RVarMp
              _bodyOwhatAbove :: WhatExpr
              _bodyOwhatTo :: ([WhatToRelevInfer])
              _bodyIappFunKind :: AppFunKind
              _bodyIargL :: ([CBound])
              _bodyIcTrf :: CExpr
              _bodyIcoe :: RelevCoe
              _bodyIfunCoe :: RelevCoe
              _bodyIfvS :: FvS
              _bodyIgUniq :: UID
              _bodyIgathLamMp :: LamMp
              _bodyImbFFIApp :: (Maybe ( Ty
                                                                   , Bool
                                                                   , FFIWay
                                                                   , ForeignEnt
                                                                   , [Ty]
                                                                   ))
              _bodyImbFunVar :: (Maybe HsName)
              _bodyImbLam :: (Maybe [HsName])
              _bodyImbVar :: (Maybe HsName)
              _bodyIoTrf :: CExpr
              _bodyIqualS :: RelevQualS
              _bodyIrvarMp :: RVarMp
              _bodyIty :: RelevTy
              _bodyIwhatBelow :: WhatExpr
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 9, column 33)
              _lhsOgathLamMp =
                  Map.empty
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 16, column 17)
              _isTopApp =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 21, column 17)
              _isTopTup =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 64, column 17)
              _whatBelow =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 72, column 17)
              _whatAbove =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonPred.ag"(line 6, column 33)
              _lhsOmbLam =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonPred.ag"(line 16, column 17)
              _lhsOappFunKind =
                  AppFunKind_NoApp
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonPred.ag"(line 24, column 33)
              _lhsOmbVar =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonStructureInfo.ag"(line 8, column 33)
              _lhsOmbFunVar =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonStructureInfo.ag"(line 15, column 33)
              _lhsOargL =
                  []
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonFFI.ag"(line 43, column 17)
              _lhsOmbFFIApp =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 324, column 17)
              _lhsOcoe =
                  RelevCoe_Id
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 356, column 17)
              _lhsOfunCoe =
                  RelevCoe_Err "CExpr.unimpl"
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 366, column 17)
              _lhsOty =
                  RelevTy_Err "unimpl"
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
              _lhsOfvS =
                  _bodyIfvS
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
              _lhsOqualS =
                  _bodyIqualS
              -- self rule
              _cTrf =
                  CExpr_HoleLet bindsUid_ _bodyIcTrf
              -- self rule
              _oTrf =
                  CExpr_HoleLet bindsUid_ _bodyIoTrf
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- self rule
              _lhsOoTrf =
                  _oTrf
              -- copy rule (up)
              _lhsOgUniq =
                  _bodyIgUniq
              -- copy rule (up)
              _lhsOrvarMp =
                  _bodyIrvarMp
              -- copy rule (from local)
              _lhsOwhatBelow =
                  _whatBelow
              -- copy rule (down)
              _bodyOaltMbScrutTy =
                  _lhsIaltMbScrutTy
              -- copy rule (down)
              _bodyOboundRelevTyVarS =
                  _lhsIboundRelevTyVarS
              -- copy rule (down)
              _bodyOdataGam =
                  _lhsIdataGam
              -- copy rule (down)
              _bodyOenv =
                  _lhsIenv
              -- copy rule (down)
              _bodyOevalCtx =
                  _lhsIevalCtx
              -- copy rule (down)
              _bodyOfinalRVarMp =
                  _lhsIfinalRVarMp
              -- copy rule (down)
              _bodyOgUniq =
                  _lhsIgUniq
              -- copy rule (from local)
              _bodyOisTopApp =
                  _isTopApp
              -- copy rule (from local)
              _bodyOisTopTup =
                  _isTopTup
              -- copy rule (down)
              _bodyOknTy =
                  _lhsIknTy
              -- copy rule (down)
              _bodyOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _bodyOlev =
                  _lhsIlev
              -- copy rule (down)
              _bodyOopts =
                  _lhsIopts
              -- copy rule (down)
              _bodyOrvarMp =
                  _lhsIrvarMp
              -- copy rule (from local)
              _bodyOwhatAbove =
                  _whatAbove
              -- copy rule (down)
              _bodyOwhatTo =
                  _lhsIwhatTo
              ( _bodyIappFunKind,_bodyIargL,_bodyIcTrf,_bodyIcoe,_bodyIfunCoe,_bodyIfvS,_bodyIgUniq,_bodyIgathLamMp,_bodyImbFFIApp,_bodyImbFunVar,_bodyImbLam,_bodyImbVar,_bodyIoTrf,_bodyIqualS,_bodyIrvarMp,_bodyIty,_bodyIwhatBelow) =
                  body_ _bodyOaltMbScrutTy _bodyOboundRelevTyVarS _bodyOdataGam _bodyOenv _bodyOevalCtx _bodyOfinalRVarMp _bodyOgUniq _bodyOisTopApp _bodyOisTopTup _bodyOknTy _bodyOlamMp _bodyOlev _bodyOopts _bodyOrvarMp _bodyOwhatAbove _bodyOwhatTo
          in  ( _lhsOappFunKind,_lhsOargL,_lhsOcTrf,_lhsOcoe,_lhsOfunCoe,_lhsOfvS,_lhsOgUniq,_lhsOgathLamMp,_lhsOmbFFIApp,_lhsOmbFunVar,_lhsOmbLam,_lhsOmbVar,_lhsOoTrf,_lhsOqualS,_lhsOrvarMp,_lhsOty,_lhsOwhatBelow)))
sem_CExpr_CoeArg :: T_CExpr
sem_CExpr_CoeArg =
    (\ _lhsIaltMbScrutTy
       _lhsIboundRelevTyVarS
       _lhsIdataGam
       _lhsIenv
       _lhsIevalCtx
       _lhsIfinalRVarMp
       _lhsIgUniq
       _lhsIisTopApp
       _lhsIisTopTup
       _lhsIknTy
       _lhsIlamMp
       _lhsIlev
       _lhsIopts
       _lhsIrvarMp
       _lhsIwhatAbove
       _lhsIwhatTo ->
         (let _lhsOgathLamMp :: LamMp
              _isTopApp :: Bool
              _whatAbove :: WhatExpr
              _lhsOmbLam :: (Maybe [HsName])
              _lhsOappFunKind :: AppFunKind
              _lhsOmbVar :: (Maybe HsName)
              _lhsOmbFunVar :: (Maybe HsName)
              _lhsOargL :: ([CBound])
              _lhsOmbFFIApp :: (Maybe ( Ty
                                                                  , Bool
                                                                  , FFIWay
                                                                  , ForeignEnt
                                                                  , [Ty]
                                                                  ))
              _lhsOcoe :: RelevCoe
              _lhsOfunCoe :: RelevCoe
              _lhsOty :: RelevTy
              _lhsOfvS :: FvS
              _lhsOqualS :: RelevQualS
              _lhsOcTrf :: CExpr
              _lhsOoTrf :: CExpr
              _lhsOgUniq :: UID
              _lhsOrvarMp :: RVarMp
              _lhsOwhatBelow :: WhatExpr
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 9, column 33)
              _lhsOgathLamMp =
                  Map.empty
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 16, column 17)
              _isTopApp =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 21, column 17)
              _isTopTup =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 64, column 17)
              _whatBelow =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 72, column 17)
              _whatAbove =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonPred.ag"(line 6, column 33)
              _lhsOmbLam =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonPred.ag"(line 16, column 17)
              _lhsOappFunKind =
                  AppFunKind_NoApp
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonPred.ag"(line 24, column 33)
              _lhsOmbVar =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonStructureInfo.ag"(line 8, column 33)
              _lhsOmbFunVar =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonStructureInfo.ag"(line 15, column 33)
              _lhsOargL =
                  []
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonFFI.ag"(line 43, column 17)
              _lhsOmbFFIApp =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 324, column 17)
              _lhsOcoe =
                  RelevCoe_Id
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 356, column 17)
              _lhsOfunCoe =
                  RelevCoe_Err "CExpr.unimpl"
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 366, column 17)
              _lhsOty =
                  RelevTy_Err "unimpl"
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
              _lhsOfvS =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
              _lhsOqualS =
                  Set.empty
              -- self rule
              _cTrf =
                  CExpr_CoeArg
              -- self rule
              _oTrf =
                  CExpr_CoeArg
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- self rule
              _lhsOoTrf =
                  _oTrf
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOrvarMp =
                  _lhsIrvarMp
              -- copy rule (from local)
              _lhsOwhatBelow =
                  _whatBelow
          in  ( _lhsOappFunKind,_lhsOargL,_lhsOcTrf,_lhsOcoe,_lhsOfunCoe,_lhsOfvS,_lhsOgUniq,_lhsOgathLamMp,_lhsOmbFFIApp,_lhsOmbFunVar,_lhsOmbLam,_lhsOmbVar,_lhsOoTrf,_lhsOqualS,_lhsOrvarMp,_lhsOty,_lhsOwhatBelow)))
sem_CExpr_ImplsApp :: T_CExpr ->
                      ImplsVarId ->
                      T_CExpr
sem_CExpr_ImplsApp func_ uid_ =
    (\ _lhsIaltMbScrutTy
       _lhsIboundRelevTyVarS
       _lhsIdataGam
       _lhsIenv
       _lhsIevalCtx
       _lhsIfinalRVarMp
       _lhsIgUniq
       _lhsIisTopApp
       _lhsIisTopTup
       _lhsIknTy
       _lhsIlamMp
       _lhsIlev
       _lhsIopts
       _lhsIrvarMp
       _lhsIwhatAbove
       _lhsIwhatTo ->
         (let _lhsOgathLamMp :: LamMp
              _isTopApp :: Bool
              _whatAbove :: WhatExpr
              _lhsOmbLam :: (Maybe [HsName])
              _lhsOappFunKind :: AppFunKind
              _lhsOmbVar :: (Maybe HsName)
              _lhsOmbFunVar :: (Maybe HsName)
              _lhsOargL :: ([CBound])
              _lhsOmbFFIApp :: (Maybe ( Ty
                                                                  , Bool
                                                                  , FFIWay
                                                                  , ForeignEnt
                                                                  , [Ty]
                                                                  ))
              _lhsOcoe :: RelevCoe
              _lhsOfunCoe :: RelevCoe
              _lhsOty :: RelevTy
              _lhsOfvS :: FvS
              _lhsOqualS :: RelevQualS
              _lhsOcTrf :: CExpr
              _lhsOoTrf :: CExpr
              _lhsOgUniq :: UID
              _lhsOrvarMp :: RVarMp
              _lhsOwhatBelow :: WhatExpr
              _funcOaltMbScrutTy :: MbRelevTy
              _funcOboundRelevTyVarS :: UIDS
              _funcOdataGam :: DataGam
              _funcOenv :: REnv
              _funcOevalCtx :: EvalCtx
              _funcOfinalRVarMp :: RVarMp
              _funcOgUniq :: UID
              _funcOisTopApp :: Bool
              _funcOisTopTup :: Bool
              _funcOknTy :: RelevTy
              _funcOlamMp :: LamMp
              _funcOlev :: Int
              _funcOopts :: EHCOpts
              _funcOrvarMp :: RVarMp
              _funcOwhatAbove :: WhatExpr
              _funcOwhatTo :: ([WhatToRelevInfer])
              _funcIappFunKind :: AppFunKind
              _funcIargL :: ([CBound])
              _funcIcTrf :: CExpr
              _funcIcoe :: RelevCoe
              _funcIfunCoe :: RelevCoe
              _funcIfvS :: FvS
              _funcIgUniq :: UID
              _funcIgathLamMp :: LamMp
              _funcImbFFIApp :: (Maybe ( Ty
                                                                   , Bool
                                                                   , FFIWay
                                                                   , ForeignEnt
                                                                   , [Ty]
                                                                   ))
              _funcImbFunVar :: (Maybe HsName)
              _funcImbLam :: (Maybe [HsName])
              _funcImbVar :: (Maybe HsName)
              _funcIoTrf :: CExpr
              _funcIqualS :: RelevQualS
              _funcIrvarMp :: RVarMp
              _funcIty :: RelevTy
              _funcIwhatBelow :: WhatExpr
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 9, column 33)
              _lhsOgathLamMp =
                  Map.empty
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 16, column 17)
              _isTopApp =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 21, column 17)
              _isTopTup =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 64, column 17)
              _whatBelow =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 72, column 17)
              _whatAbove =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonPred.ag"(line 6, column 33)
              _lhsOmbLam =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonPred.ag"(line 16, column 17)
              _lhsOappFunKind =
                  AppFunKind_NoApp
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonPred.ag"(line 24, column 33)
              _lhsOmbVar =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonStructureInfo.ag"(line 8, column 33)
              _lhsOmbFunVar =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonStructureInfo.ag"(line 15, column 33)
              _lhsOargL =
                  []
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonFFI.ag"(line 43, column 17)
              _lhsOmbFFIApp =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 324, column 17)
              _lhsOcoe =
                  RelevCoe_Id
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 356, column 17)
              _lhsOfunCoe =
                  RelevCoe_Err "CExpr.unimpl"
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 366, column 17)
              _lhsOty =
                  RelevTy_Err "unimpl"
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
              _lhsOfvS =
                  _funcIfvS
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
              _lhsOqualS =
                  _funcIqualS
              -- self rule
              _cTrf =
                  CExpr_ImplsApp _funcIcTrf uid_
              -- self rule
              _oTrf =
                  CExpr_ImplsApp _funcIoTrf uid_
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- self rule
              _lhsOoTrf =
                  _oTrf
              -- copy rule (up)
              _lhsOgUniq =
                  _funcIgUniq
              -- copy rule (up)
              _lhsOrvarMp =
                  _funcIrvarMp
              -- copy rule (from local)
              _lhsOwhatBelow =
                  _whatBelow
              -- copy rule (down)
              _funcOaltMbScrutTy =
                  _lhsIaltMbScrutTy
              -- copy rule (down)
              _funcOboundRelevTyVarS =
                  _lhsIboundRelevTyVarS
              -- copy rule (down)
              _funcOdataGam =
                  _lhsIdataGam
              -- copy rule (down)
              _funcOenv =
                  _lhsIenv
              -- copy rule (down)
              _funcOevalCtx =
                  _lhsIevalCtx
              -- copy rule (down)
              _funcOfinalRVarMp =
                  _lhsIfinalRVarMp
              -- copy rule (down)
              _funcOgUniq =
                  _lhsIgUniq
              -- copy rule (from local)
              _funcOisTopApp =
                  _isTopApp
              -- copy rule (from local)
              _funcOisTopTup =
                  _isTopTup
              -- copy rule (down)
              _funcOknTy =
                  _lhsIknTy
              -- copy rule (down)
              _funcOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _funcOlev =
                  _lhsIlev
              -- copy rule (down)
              _funcOopts =
                  _lhsIopts
              -- copy rule (down)
              _funcOrvarMp =
                  _lhsIrvarMp
              -- copy rule (from local)
              _funcOwhatAbove =
                  _whatAbove
              -- copy rule (down)
              _funcOwhatTo =
                  _lhsIwhatTo
              ( _funcIappFunKind,_funcIargL,_funcIcTrf,_funcIcoe,_funcIfunCoe,_funcIfvS,_funcIgUniq,_funcIgathLamMp,_funcImbFFIApp,_funcImbFunVar,_funcImbLam,_funcImbVar,_funcIoTrf,_funcIqualS,_funcIrvarMp,_funcIty,_funcIwhatBelow) =
                  func_ _funcOaltMbScrutTy _funcOboundRelevTyVarS _funcOdataGam _funcOenv _funcOevalCtx _funcOfinalRVarMp _funcOgUniq _funcOisTopApp _funcOisTopTup _funcOknTy _funcOlamMp _funcOlev _funcOopts _funcOrvarMp _funcOwhatAbove _funcOwhatTo
          in  ( _lhsOappFunKind,_lhsOargL,_lhsOcTrf,_lhsOcoe,_lhsOfunCoe,_lhsOfvS,_lhsOgUniq,_lhsOgathLamMp,_lhsOmbFFIApp,_lhsOmbFunVar,_lhsOmbLam,_lhsOmbVar,_lhsOoTrf,_lhsOqualS,_lhsOrvarMp,_lhsOty,_lhsOwhatBelow)))
sem_CExpr_ImplsLam :: ImplsVarId ->
                      T_CExpr ->
                      T_CExpr
sem_CExpr_ImplsLam uid_ body_ =
    (\ _lhsIaltMbScrutTy
       _lhsIboundRelevTyVarS
       _lhsIdataGam
       _lhsIenv
       _lhsIevalCtx
       _lhsIfinalRVarMp
       _lhsIgUniq
       _lhsIisTopApp
       _lhsIisTopTup
       _lhsIknTy
       _lhsIlamMp
       _lhsIlev
       _lhsIopts
       _lhsIrvarMp
       _lhsIwhatAbove
       _lhsIwhatTo ->
         (let _lhsOgathLamMp :: LamMp
              _isTopApp :: Bool
              _whatAbove :: WhatExpr
              _lhsOmbLam :: (Maybe [HsName])
              _lhsOappFunKind :: AppFunKind
              _lhsOmbVar :: (Maybe HsName)
              _lhsOmbFunVar :: (Maybe HsName)
              _lhsOargL :: ([CBound])
              _lhsOmbFFIApp :: (Maybe ( Ty
                                                                  , Bool
                                                                  , FFIWay
                                                                  , ForeignEnt
                                                                  , [Ty]
                                                                  ))
              _lhsOcoe :: RelevCoe
              _lhsOfunCoe :: RelevCoe
              _lhsOty :: RelevTy
              _lhsOfvS :: FvS
              _lhsOqualS :: RelevQualS
              _lhsOcTrf :: CExpr
              _lhsOoTrf :: CExpr
              _lhsOgUniq :: UID
              _lhsOrvarMp :: RVarMp
              _lhsOwhatBelow :: WhatExpr
              _bodyOaltMbScrutTy :: MbRelevTy
              _bodyOboundRelevTyVarS :: UIDS
              _bodyOdataGam :: DataGam
              _bodyOenv :: REnv
              _bodyOevalCtx :: EvalCtx
              _bodyOfinalRVarMp :: RVarMp
              _bodyOgUniq :: UID
              _bodyOisTopApp :: Bool
              _bodyOisTopTup :: Bool
              _bodyOknTy :: RelevTy
              _bodyOlamMp :: LamMp
              _bodyOlev :: Int
              _bodyOopts :: EHCOpts
              _bodyOrvarMp :: RVarMp
              _bodyOwhatAbove :: WhatExpr
              _bodyOwhatTo :: ([WhatToRelevInfer])
              _bodyIappFunKind :: AppFunKind
              _bodyIargL :: ([CBound])
              _bodyIcTrf :: CExpr
              _bodyIcoe :: RelevCoe
              _bodyIfunCoe :: RelevCoe
              _bodyIfvS :: FvS
              _bodyIgUniq :: UID
              _bodyIgathLamMp :: LamMp
              _bodyImbFFIApp :: (Maybe ( Ty
                                                                   , Bool
                                                                   , FFIWay
                                                                   , ForeignEnt
                                                                   , [Ty]
                                                                   ))
              _bodyImbFunVar :: (Maybe HsName)
              _bodyImbLam :: (Maybe [HsName])
              _bodyImbVar :: (Maybe HsName)
              _bodyIoTrf :: CExpr
              _bodyIqualS :: RelevQualS
              _bodyIrvarMp :: RVarMp
              _bodyIty :: RelevTy
              _bodyIwhatBelow :: WhatExpr
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 9, column 33)
              _lhsOgathLamMp =
                  Map.empty
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 16, column 17)
              _isTopApp =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 21, column 17)
              _isTopTup =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 64, column 17)
              _whatBelow =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 72, column 17)
              _whatAbove =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonPred.ag"(line 6, column 33)
              _lhsOmbLam =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonPred.ag"(line 16, column 17)
              _lhsOappFunKind =
                  AppFunKind_NoApp
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonPred.ag"(line 24, column 33)
              _lhsOmbVar =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonStructureInfo.ag"(line 8, column 33)
              _lhsOmbFunVar =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonStructureInfo.ag"(line 15, column 33)
              _lhsOargL =
                  []
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonFFI.ag"(line 43, column 17)
              _lhsOmbFFIApp =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 324, column 17)
              _lhsOcoe =
                  RelevCoe_Id
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 356, column 17)
              _lhsOfunCoe =
                  RelevCoe_Err "CExpr.unimpl"
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 366, column 17)
              _lhsOty =
                  RelevTy_Err "unimpl"
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
              _lhsOfvS =
                  _bodyIfvS
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
              _lhsOqualS =
                  _bodyIqualS
              -- self rule
              _cTrf =
                  CExpr_ImplsLam uid_ _bodyIcTrf
              -- self rule
              _oTrf =
                  CExpr_ImplsLam uid_ _bodyIoTrf
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- self rule
              _lhsOoTrf =
                  _oTrf
              -- copy rule (up)
              _lhsOgUniq =
                  _bodyIgUniq
              -- copy rule (up)
              _lhsOrvarMp =
                  _bodyIrvarMp
              -- copy rule (from local)
              _lhsOwhatBelow =
                  _whatBelow
              -- copy rule (down)
              _bodyOaltMbScrutTy =
                  _lhsIaltMbScrutTy
              -- copy rule (down)
              _bodyOboundRelevTyVarS =
                  _lhsIboundRelevTyVarS
              -- copy rule (down)
              _bodyOdataGam =
                  _lhsIdataGam
              -- copy rule (down)
              _bodyOenv =
                  _lhsIenv
              -- copy rule (down)
              _bodyOevalCtx =
                  _lhsIevalCtx
              -- copy rule (down)
              _bodyOfinalRVarMp =
                  _lhsIfinalRVarMp
              -- copy rule (down)
              _bodyOgUniq =
                  _lhsIgUniq
              -- copy rule (from local)
              _bodyOisTopApp =
                  _isTopApp
              -- copy rule (from local)
              _bodyOisTopTup =
                  _isTopTup
              -- copy rule (down)
              _bodyOknTy =
                  _lhsIknTy
              -- copy rule (down)
              _bodyOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _bodyOlev =
                  _lhsIlev
              -- copy rule (down)
              _bodyOopts =
                  _lhsIopts
              -- copy rule (down)
              _bodyOrvarMp =
                  _lhsIrvarMp
              -- copy rule (from local)
              _bodyOwhatAbove =
                  _whatAbove
              -- copy rule (down)
              _bodyOwhatTo =
                  _lhsIwhatTo
              ( _bodyIappFunKind,_bodyIargL,_bodyIcTrf,_bodyIcoe,_bodyIfunCoe,_bodyIfvS,_bodyIgUniq,_bodyIgathLamMp,_bodyImbFFIApp,_bodyImbFunVar,_bodyImbLam,_bodyImbVar,_bodyIoTrf,_bodyIqualS,_bodyIrvarMp,_bodyIty,_bodyIwhatBelow) =
                  body_ _bodyOaltMbScrutTy _bodyOboundRelevTyVarS _bodyOdataGam _bodyOenv _bodyOevalCtx _bodyOfinalRVarMp _bodyOgUniq _bodyOisTopApp _bodyOisTopTup _bodyOknTy _bodyOlamMp _bodyOlev _bodyOopts _bodyOrvarMp _bodyOwhatAbove _bodyOwhatTo
          in  ( _lhsOappFunKind,_lhsOargL,_lhsOcTrf,_lhsOcoe,_lhsOfunCoe,_lhsOfvS,_lhsOgUniq,_lhsOgathLamMp,_lhsOmbFFIApp,_lhsOmbFunVar,_lhsOmbLam,_lhsOmbVar,_lhsOoTrf,_lhsOqualS,_lhsOrvarMp,_lhsOty,_lhsOwhatBelow)))
sem_CExpr_Ann :: T_CExprAnn ->
                 T_CExpr ->
                 T_CExpr
sem_CExpr_Ann ann_ expr_ =
    (\ _lhsIaltMbScrutTy
       _lhsIboundRelevTyVarS
       _lhsIdataGam
       _lhsIenv
       _lhsIevalCtx
       _lhsIfinalRVarMp
       _lhsIgUniq
       _lhsIisTopApp
       _lhsIisTopTup
       _lhsIknTy
       _lhsIlamMp
       _lhsIlev
       _lhsIopts
       _lhsIrvarMp
       _lhsIwhatAbove
       _lhsIwhatTo ->
         (let _lhsOcoe :: RelevCoe
              _lhsOfvS :: FvS
              _lhsOqualS :: RelevQualS
              _lhsOcTrf :: CExpr
              _lhsOoTrf :: CExpr
              _lhsOappFunKind :: AppFunKind
              _lhsOargL :: ([CBound])
              _lhsOfunCoe :: RelevCoe
              _lhsOgUniq :: UID
              _lhsOgathLamMp :: LamMp
              _lhsOmbFFIApp :: (Maybe ( Ty
                                                                  , Bool
                                                                  , FFIWay
                                                                  , ForeignEnt
                                                                  , [Ty]
                                                                  ))
              _lhsOmbFunVar :: (Maybe HsName)
              _lhsOmbLam :: (Maybe [HsName])
              _lhsOmbVar :: (Maybe HsName)
              _lhsOrvarMp :: RVarMp
              _lhsOty :: RelevTy
              _lhsOwhatBelow :: WhatExpr
              _annOboundRelevTyVarS :: UIDS
              _annOdataGam :: DataGam
              _annOenv :: REnv
              _annOfinalRVarMp :: RVarMp
              _annOgUniq :: UID
              _annOknTy :: RelevTy
              _annOlamMp :: LamMp
              _annOlev :: Int
              _annOopts :: EHCOpts
              _annOrvarMp :: RVarMp
              _annOwhatTo :: ([WhatToRelevInfer])
              _exprOaltMbScrutTy :: MbRelevTy
              _exprOboundRelevTyVarS :: UIDS
              _exprOdataGam :: DataGam
              _exprOenv :: REnv
              _exprOevalCtx :: EvalCtx
              _exprOfinalRVarMp :: RVarMp
              _exprOgUniq :: UID
              _exprOisTopApp :: Bool
              _exprOisTopTup :: Bool
              _exprOknTy :: RelevTy
              _exprOlamMp :: LamMp
              _exprOlev :: Int
              _exprOopts :: EHCOpts
              _exprOrvarMp :: RVarMp
              _exprOwhatAbove :: WhatExpr
              _exprOwhatTo :: ([WhatToRelevInfer])
              _annIcTrf :: CExprAnn
              _annIfvS :: FvS
              _annIgUniq :: UID
              _annIoTrf :: CExprAnn
              _annIqualS :: RelevQualS
              _annIrvarMp :: RVarMp
              _exprIappFunKind :: AppFunKind
              _exprIargL :: ([CBound])
              _exprIcTrf :: CExpr
              _exprIcoe :: RelevCoe
              _exprIfunCoe :: RelevCoe
              _exprIfvS :: FvS
              _exprIgUniq :: UID
              _exprIgathLamMp :: LamMp
              _exprImbFFIApp :: (Maybe ( Ty
                                                                   , Bool
                                                                   , FFIWay
                                                                   , ForeignEnt
                                                                   , [Ty]
                                                                   ))
              _exprImbFunVar :: (Maybe HsName)
              _exprImbLam :: (Maybe [HsName])
              _exprImbVar :: (Maybe HsName)
              _exprIoTrf :: CExpr
              _exprIqualS :: RelevQualS
              _exprIrvarMp :: RVarMp
              _exprIty :: RelevTy
              _exprIwhatBelow :: WhatExpr
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 324, column 17)
              _lhsOcoe =
                  RelevCoe_Id
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
              _lhsOfvS =
                  _annIfvS `Set.union` _exprIfvS
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
              _lhsOqualS =
                  _annIqualS `Set.union` _exprIqualS
              -- self rule
              _cTrf =
                  CExpr_Ann _annIcTrf _exprIcTrf
              -- self rule
              _oTrf =
                  CExpr_Ann _annIoTrf _exprIoTrf
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- self rule
              _lhsOoTrf =
                  _oTrf
              -- copy rule (up)
              _lhsOappFunKind =
                  _exprIappFunKind
              -- copy rule (up)
              _lhsOargL =
                  _exprIargL
              -- copy rule (up)
              _lhsOfunCoe =
                  _exprIfunCoe
              -- copy rule (up)
              _lhsOgUniq =
                  _exprIgUniq
              -- copy rule (up)
              _lhsOgathLamMp =
                  _exprIgathLamMp
              -- copy rule (up)
              _lhsOmbFFIApp =
                  _exprImbFFIApp
              -- copy rule (up)
              _lhsOmbFunVar =
                  _exprImbFunVar
              -- copy rule (up)
              _lhsOmbLam =
                  _exprImbLam
              -- copy rule (up)
              _lhsOmbVar =
                  _exprImbVar
              -- copy rule (up)
              _lhsOrvarMp =
                  _exprIrvarMp
              -- copy rule (up)
              _lhsOty =
                  _exprIty
              -- copy rule (up)
              _lhsOwhatBelow =
                  _exprIwhatBelow
              -- copy rule (down)
              _annOboundRelevTyVarS =
                  _lhsIboundRelevTyVarS
              -- copy rule (down)
              _annOdataGam =
                  _lhsIdataGam
              -- copy rule (down)
              _annOenv =
                  _lhsIenv
              -- copy rule (down)
              _annOfinalRVarMp =
                  _lhsIfinalRVarMp
              -- copy rule (down)
              _annOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _annOknTy =
                  _lhsIknTy
              -- copy rule (down)
              _annOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _annOlev =
                  _lhsIlev
              -- copy rule (down)
              _annOopts =
                  _lhsIopts
              -- copy rule (down)
              _annOrvarMp =
                  _lhsIrvarMp
              -- copy rule (down)
              _annOwhatTo =
                  _lhsIwhatTo
              -- copy rule (down)
              _exprOaltMbScrutTy =
                  _lhsIaltMbScrutTy
              -- copy rule (down)
              _exprOboundRelevTyVarS =
                  _lhsIboundRelevTyVarS
              -- copy rule (down)
              _exprOdataGam =
                  _lhsIdataGam
              -- copy rule (down)
              _exprOenv =
                  _lhsIenv
              -- copy rule (down)
              _exprOevalCtx =
                  _lhsIevalCtx
              -- copy rule (down)
              _exprOfinalRVarMp =
                  _lhsIfinalRVarMp
              -- copy rule (chain)
              _exprOgUniq =
                  _annIgUniq
              -- copy rule (down)
              _exprOisTopApp =
                  _lhsIisTopApp
              -- copy rule (down)
              _exprOisTopTup =
                  _lhsIisTopTup
              -- copy rule (down)
              _exprOknTy =
                  _lhsIknTy
              -- copy rule (down)
              _exprOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _exprOlev =
                  _lhsIlev
              -- copy rule (down)
              _exprOopts =
                  _lhsIopts
              -- copy rule (chain)
              _exprOrvarMp =
                  _annIrvarMp
              -- copy rule (down)
              _exprOwhatAbove =
                  _lhsIwhatAbove
              -- copy rule (down)
              _exprOwhatTo =
                  _lhsIwhatTo
              ( _annIcTrf,_annIfvS,_annIgUniq,_annIoTrf,_annIqualS,_annIrvarMp) =
                  ann_ _annOboundRelevTyVarS _annOdataGam _annOenv _annOfinalRVarMp _annOgUniq _annOknTy _annOlamMp _annOlev _annOopts _annOrvarMp _annOwhatTo
              ( _exprIappFunKind,_exprIargL,_exprIcTrf,_exprIcoe,_exprIfunCoe,_exprIfvS,_exprIgUniq,_exprIgathLamMp,_exprImbFFIApp,_exprImbFunVar,_exprImbLam,_exprImbVar,_exprIoTrf,_exprIqualS,_exprIrvarMp,_exprIty,_exprIwhatBelow) =
                  expr_ _exprOaltMbScrutTy _exprOboundRelevTyVarS _exprOdataGam _exprOenv _exprOevalCtx _exprOfinalRVarMp _exprOgUniq _exprOisTopApp _exprOisTopTup _exprOknTy _exprOlamMp _exprOlev _exprOopts _exprOrvarMp _exprOwhatAbove _exprOwhatTo
          in  ( _lhsOappFunKind,_lhsOargL,_lhsOcTrf,_lhsOcoe,_lhsOfunCoe,_lhsOfvS,_lhsOgUniq,_lhsOgathLamMp,_lhsOmbFFIApp,_lhsOmbFunVar,_lhsOmbLam,_lhsOmbVar,_lhsOoTrf,_lhsOqualS,_lhsOrvarMp,_lhsOty,_lhsOwhatBelow)))
-- CExprAnn ----------------------------------------------------
{-
   visit 0:
      inherited attributes:
         boundRelevTyVarS     : UIDS
         dataGam              : DataGam
         env                  : REnv
         finalRVarMp          : RVarMp
         knTy                 : RelevTy
         lamMp                : LamMp
         lev                  : Int
         opts                 : EHCOpts
         whatTo               : [WhatToRelevInfer]
      chained attributes:
         gUniq                : UID
         rvarMp               : RVarMp
      synthesized attributes:
         cTrf                 : CExprAnn 
         fvS                  : FvS
         oTrf                 : CExprAnn 
         qualS                : RelevQualS
   alternatives:
      alternative Ty:
         child ty             : {Ty}
         visit 0:
            local cTrf        : _
            local oTrf        : _
      alternative Coe:
         child coe            : {RelevCoe}
         visit 0:
            local cTrf        : _
            local oTrf        : _
      alternative Debug:
         child info           : {String}
         visit 0:
            local cTrf        : _
            local oTrf        : _
-}
-- cata
sem_CExprAnn :: CExprAnn ->
                T_CExprAnn
sem_CExprAnn (CExprAnn_Ty _ty) =
    (sem_CExprAnn_Ty _ty)
sem_CExprAnn (CExprAnn_Coe _coe) =
    (sem_CExprAnn_Coe _coe)
sem_CExprAnn (CExprAnn_Debug _info) =
    (sem_CExprAnn_Debug _info)
-- semantic domain
type T_CExprAnn = UIDS ->
                  DataGam ->
                  REnv ->
                  RVarMp ->
                  UID ->
                  RelevTy ->
                  LamMp ->
                  Int ->
                  EHCOpts ->
                  RVarMp ->
                  ([WhatToRelevInfer]) ->
                  ( CExprAnn,FvS,UID,CExprAnn,RelevQualS,RVarMp)
sem_CExprAnn_Ty :: Ty ->
                   T_CExprAnn
sem_CExprAnn_Ty ty_ =
    (\ _lhsIboundRelevTyVarS
       _lhsIdataGam
       _lhsIenv
       _lhsIfinalRVarMp
       _lhsIgUniq
       _lhsIknTy
       _lhsIlamMp
       _lhsIlev
       _lhsIopts
       _lhsIrvarMp
       _lhsIwhatTo ->
         (let _lhsOfvS :: FvS
              _lhsOqualS :: RelevQualS
              _lhsOcTrf :: CExprAnn
              _lhsOoTrf :: CExprAnn
              _lhsOgUniq :: UID
              _lhsOrvarMp :: RVarMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
              _lhsOfvS =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
              _lhsOqualS =
                  Set.empty
              -- self rule
              _cTrf =
                  CExprAnn_Ty ty_
              -- self rule
              _oTrf =
                  CExprAnn_Ty ty_
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- self rule
              _lhsOoTrf =
                  _oTrf
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOrvarMp =
                  _lhsIrvarMp
          in  ( _lhsOcTrf,_lhsOfvS,_lhsOgUniq,_lhsOoTrf,_lhsOqualS,_lhsOrvarMp)))
sem_CExprAnn_Coe :: RelevCoe ->
                    T_CExprAnn
sem_CExprAnn_Coe coe_ =
    (\ _lhsIboundRelevTyVarS
       _lhsIdataGam
       _lhsIenv
       _lhsIfinalRVarMp
       _lhsIgUniq
       _lhsIknTy
       _lhsIlamMp
       _lhsIlev
       _lhsIopts
       _lhsIrvarMp
       _lhsIwhatTo ->
         (let _lhsOfvS :: FvS
              _lhsOqualS :: RelevQualS
              _lhsOcTrf :: CExprAnn
              _lhsOoTrf :: CExprAnn
              _lhsOgUniq :: UID
              _lhsOrvarMp :: RVarMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
              _lhsOfvS =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
              _lhsOqualS =
                  Set.empty
              -- self rule
              _cTrf =
                  CExprAnn_Coe coe_
              -- self rule
              _oTrf =
                  CExprAnn_Coe coe_
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- self rule
              _lhsOoTrf =
                  _oTrf
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOrvarMp =
                  _lhsIrvarMp
          in  ( _lhsOcTrf,_lhsOfvS,_lhsOgUniq,_lhsOoTrf,_lhsOqualS,_lhsOrvarMp)))
sem_CExprAnn_Debug :: String ->
                      T_CExprAnn
sem_CExprAnn_Debug info_ =
    (\ _lhsIboundRelevTyVarS
       _lhsIdataGam
       _lhsIenv
       _lhsIfinalRVarMp
       _lhsIgUniq
       _lhsIknTy
       _lhsIlamMp
       _lhsIlev
       _lhsIopts
       _lhsIrvarMp
       _lhsIwhatTo ->
         (let _lhsOfvS :: FvS
              _lhsOqualS :: RelevQualS
              _lhsOcTrf :: CExprAnn
              _lhsOoTrf :: CExprAnn
              _lhsOgUniq :: UID
              _lhsOrvarMp :: RVarMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
              _lhsOfvS =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
              _lhsOqualS =
                  Set.empty
              -- self rule
              _cTrf =
                  CExprAnn_Debug info_
              -- self rule
              _oTrf =
                  CExprAnn_Debug info_
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- self rule
              _lhsOoTrf =
                  _oTrf
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOrvarMp =
                  _lhsIrvarMp
          in  ( _lhsOcTrf,_lhsOfvS,_lhsOgUniq,_lhsOoTrf,_lhsOqualS,_lhsOrvarMp)))
-- CImport -----------------------------------------------------
{-
   visit 0:
      synthesized attribute:
         cTrf                 : CImport 
   alternatives:
      alternative Import:
         child nm             : {HsName}
         visit 0:
            local cTrf        : _
-}
-- cata
sem_CImport :: CImport ->
               T_CImport
sem_CImport (CImport_Import _nm) =
    (sem_CImport_Import _nm)
-- semantic domain
type T_CImport = ( CImport)
sem_CImport_Import :: HsName ->
                      T_CImport
sem_CImport_Import nm_ =
    (let _lhsOcTrf :: CImport
         -- self rule
         _cTrf =
             CImport_Import nm_
         -- self rule
         _lhsOcTrf =
             _cTrf
     in  ( _lhsOcTrf))
-- CImportL ----------------------------------------------------
{-
   visit 0:
      synthesized attribute:
         cTrf                 : CImportL 
   alternatives:
      alternative Cons:
         child hd             : CImport 
         child tl             : CImportL 
         visit 0:
            local cTrf        : _
      alternative Nil:
         visit 0:
            local cTrf        : _
-}
-- cata
sem_CImportL :: CImportL ->
                T_CImportL
sem_CImportL list =
    (Prelude.foldr sem_CImportL_Cons sem_CImportL_Nil (Prelude.map sem_CImport list))
-- semantic domain
type T_CImportL = ( CImportL)
sem_CImportL_Cons :: T_CImport ->
                     T_CImportL ->
                     T_CImportL
sem_CImportL_Cons hd_ tl_ =
    (let _lhsOcTrf :: CImportL
         _hdIcTrf :: CImport
         _tlIcTrf :: CImportL
         -- self rule
         _cTrf =
             (:) _hdIcTrf _tlIcTrf
         -- self rule
         _lhsOcTrf =
             _cTrf
         ( _hdIcTrf) =
             hd_
         ( _tlIcTrf) =
             tl_
     in  ( _lhsOcTrf))
sem_CImportL_Nil :: T_CImportL
sem_CImportL_Nil =
    (let _lhsOcTrf :: CImportL
         -- self rule
         _cTrf =
             []
         -- self rule
         _lhsOcTrf =
             _cTrf
     in  ( _lhsOcTrf))
-- CMetaBind ---------------------------------------------------
{-
   visit 0:
      inherited attributes:
         boundRelevTyVarS     : UIDS
         dataGam              : DataGam
         env                  : REnv
         finalRVarMp          : RVarMp
         knTy                 : RelevTy
         lamMp                : LamMp
         lev                  : Int
         opts                 : EHCOpts
         whatTo               : [WhatToRelevInfer]
      chained attributes:
         gUniq                : UID
         rvarMp               : RVarMp
      synthesized attributes:
         cTrf                 : CMetaBind 
         fvS                  : FvS
         oTrf                 : CMetaBind 
         qualS                : RelevQualS
   alternatives:
      alternative Plain:
         visit 0:
            local cTrf        : _
            local oTrf        : _
      alternative Function0:
         visit 0:
            local cTrf        : _
            local oTrf        : _
      alternative Function1:
         visit 0:
            local cTrf        : _
            local oTrf        : _
      alternative Apply0:
         visit 0:
            local cTrf        : _
            local oTrf        : _
-}
-- cata
sem_CMetaBind :: CMetaBind ->
                 T_CMetaBind
sem_CMetaBind (CMetaBind_Plain) =
    (sem_CMetaBind_Plain)
sem_CMetaBind (CMetaBind_Function0) =
    (sem_CMetaBind_Function0)
sem_CMetaBind (CMetaBind_Function1) =
    (sem_CMetaBind_Function1)
sem_CMetaBind (CMetaBind_Apply0) =
    (sem_CMetaBind_Apply0)
-- semantic domain
type T_CMetaBind = UIDS ->
                   DataGam ->
                   REnv ->
                   RVarMp ->
                   UID ->
                   RelevTy ->
                   LamMp ->
                   Int ->
                   EHCOpts ->
                   RVarMp ->
                   ([WhatToRelevInfer]) ->
                   ( CMetaBind,FvS,UID,CMetaBind,RelevQualS,RVarMp)
sem_CMetaBind_Plain :: T_CMetaBind
sem_CMetaBind_Plain =
    (\ _lhsIboundRelevTyVarS
       _lhsIdataGam
       _lhsIenv
       _lhsIfinalRVarMp
       _lhsIgUniq
       _lhsIknTy
       _lhsIlamMp
       _lhsIlev
       _lhsIopts
       _lhsIrvarMp
       _lhsIwhatTo ->
         (let _lhsOfvS :: FvS
              _lhsOqualS :: RelevQualS
              _lhsOcTrf :: CMetaBind
              _lhsOoTrf :: CMetaBind
              _lhsOgUniq :: UID
              _lhsOrvarMp :: RVarMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
              _lhsOfvS =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
              _lhsOqualS =
                  Set.empty
              -- self rule
              _cTrf =
                  CMetaBind_Plain
              -- self rule
              _oTrf =
                  CMetaBind_Plain
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- self rule
              _lhsOoTrf =
                  _oTrf
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOrvarMp =
                  _lhsIrvarMp
          in  ( _lhsOcTrf,_lhsOfvS,_lhsOgUniq,_lhsOoTrf,_lhsOqualS,_lhsOrvarMp)))
sem_CMetaBind_Function0 :: T_CMetaBind
sem_CMetaBind_Function0 =
    (\ _lhsIboundRelevTyVarS
       _lhsIdataGam
       _lhsIenv
       _lhsIfinalRVarMp
       _lhsIgUniq
       _lhsIknTy
       _lhsIlamMp
       _lhsIlev
       _lhsIopts
       _lhsIrvarMp
       _lhsIwhatTo ->
         (let _lhsOfvS :: FvS
              _lhsOqualS :: RelevQualS
              _lhsOcTrf :: CMetaBind
              _lhsOoTrf :: CMetaBind
              _lhsOgUniq :: UID
              _lhsOrvarMp :: RVarMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
              _lhsOfvS =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
              _lhsOqualS =
                  Set.empty
              -- self rule
              _cTrf =
                  CMetaBind_Function0
              -- self rule
              _oTrf =
                  CMetaBind_Function0
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- self rule
              _lhsOoTrf =
                  _oTrf
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOrvarMp =
                  _lhsIrvarMp
          in  ( _lhsOcTrf,_lhsOfvS,_lhsOgUniq,_lhsOoTrf,_lhsOqualS,_lhsOrvarMp)))
sem_CMetaBind_Function1 :: T_CMetaBind
sem_CMetaBind_Function1 =
    (\ _lhsIboundRelevTyVarS
       _lhsIdataGam
       _lhsIenv
       _lhsIfinalRVarMp
       _lhsIgUniq
       _lhsIknTy
       _lhsIlamMp
       _lhsIlev
       _lhsIopts
       _lhsIrvarMp
       _lhsIwhatTo ->
         (let _lhsOfvS :: FvS
              _lhsOqualS :: RelevQualS
              _lhsOcTrf :: CMetaBind
              _lhsOoTrf :: CMetaBind
              _lhsOgUniq :: UID
              _lhsOrvarMp :: RVarMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
              _lhsOfvS =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
              _lhsOqualS =
                  Set.empty
              -- self rule
              _cTrf =
                  CMetaBind_Function1
              -- self rule
              _oTrf =
                  CMetaBind_Function1
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- self rule
              _lhsOoTrf =
                  _oTrf
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOrvarMp =
                  _lhsIrvarMp
          in  ( _lhsOcTrf,_lhsOfvS,_lhsOgUniq,_lhsOoTrf,_lhsOqualS,_lhsOrvarMp)))
sem_CMetaBind_Apply0 :: T_CMetaBind
sem_CMetaBind_Apply0 =
    (\ _lhsIboundRelevTyVarS
       _lhsIdataGam
       _lhsIenv
       _lhsIfinalRVarMp
       _lhsIgUniq
       _lhsIknTy
       _lhsIlamMp
       _lhsIlev
       _lhsIopts
       _lhsIrvarMp
       _lhsIwhatTo ->
         (let _lhsOfvS :: FvS
              _lhsOqualS :: RelevQualS
              _lhsOcTrf :: CMetaBind
              _lhsOoTrf :: CMetaBind
              _lhsOgUniq :: UID
              _lhsOrvarMp :: RVarMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
              _lhsOfvS =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
              _lhsOqualS =
                  Set.empty
              -- self rule
              _cTrf =
                  CMetaBind_Apply0
              -- self rule
              _oTrf =
                  CMetaBind_Apply0
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- self rule
              _lhsOoTrf =
                  _oTrf
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOrvarMp =
                  _lhsIrvarMp
          in  ( _lhsOcTrf,_lhsOfvS,_lhsOgUniq,_lhsOoTrf,_lhsOqualS,_lhsOrvarMp)))
-- CMetaVal ----------------------------------------------------
{-
   visit 0:
      inherited attributes:
         boundRelevTyVarS     : UIDS
         dataGam              : DataGam
         env                  : REnv
         finalRVarMp          : RVarMp
         knTy                 : RelevTy
         lamMp                : LamMp
         lev                  : Int
         opts                 : EHCOpts
         whatTo               : [WhatToRelevInfer]
      chained attributes:
         gUniq                : UID
         rvarMp               : RVarMp
      synthesized attributes:
         cTrf                 : CMetaVal 
         fvS                  : FvS
         oTrf                 : CMetaVal 
         qualS                : RelevQualS
   alternatives:
      alternative Val:
         visit 0:
            local cTrf        : _
            local oTrf        : _
      alternative Dict:
         visit 0:
            local cTrf        : _
            local oTrf        : _
      alternative DictClass:
         child tracks         : {[Track]}
         visit 0:
            local cTrf        : _
            local oTrf        : _
      alternative DictInstance:
         child tracks         : {[Track]}
         visit 0:
            local cTrf        : _
            local oTrf        : _
      alternative Track:
         child track          : {Track}
         visit 0:
            local cTrf        : _
            local oTrf        : _
-}
-- cata
sem_CMetaVal :: CMetaVal ->
                T_CMetaVal
sem_CMetaVal (CMetaVal_Val) =
    (sem_CMetaVal_Val)
sem_CMetaVal (CMetaVal_Dict) =
    (sem_CMetaVal_Dict)
sem_CMetaVal (CMetaVal_DictClass _tracks) =
    (sem_CMetaVal_DictClass _tracks)
sem_CMetaVal (CMetaVal_DictInstance _tracks) =
    (sem_CMetaVal_DictInstance _tracks)
sem_CMetaVal (CMetaVal_Track _track) =
    (sem_CMetaVal_Track _track)
-- semantic domain
type T_CMetaVal = UIDS ->
                  DataGam ->
                  REnv ->
                  RVarMp ->
                  UID ->
                  RelevTy ->
                  LamMp ->
                  Int ->
                  EHCOpts ->
                  RVarMp ->
                  ([WhatToRelevInfer]) ->
                  ( CMetaVal,FvS,UID,CMetaVal,RelevQualS,RVarMp)
sem_CMetaVal_Val :: T_CMetaVal
sem_CMetaVal_Val =
    (\ _lhsIboundRelevTyVarS
       _lhsIdataGam
       _lhsIenv
       _lhsIfinalRVarMp
       _lhsIgUniq
       _lhsIknTy
       _lhsIlamMp
       _lhsIlev
       _lhsIopts
       _lhsIrvarMp
       _lhsIwhatTo ->
         (let _lhsOfvS :: FvS
              _lhsOqualS :: RelevQualS
              _lhsOcTrf :: CMetaVal
              _lhsOoTrf :: CMetaVal
              _lhsOgUniq :: UID
              _lhsOrvarMp :: RVarMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
              _lhsOfvS =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
              _lhsOqualS =
                  Set.empty
              -- self rule
              _cTrf =
                  CMetaVal_Val
              -- self rule
              _oTrf =
                  CMetaVal_Val
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- self rule
              _lhsOoTrf =
                  _oTrf
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOrvarMp =
                  _lhsIrvarMp
          in  ( _lhsOcTrf,_lhsOfvS,_lhsOgUniq,_lhsOoTrf,_lhsOqualS,_lhsOrvarMp)))
sem_CMetaVal_Dict :: T_CMetaVal
sem_CMetaVal_Dict =
    (\ _lhsIboundRelevTyVarS
       _lhsIdataGam
       _lhsIenv
       _lhsIfinalRVarMp
       _lhsIgUniq
       _lhsIknTy
       _lhsIlamMp
       _lhsIlev
       _lhsIopts
       _lhsIrvarMp
       _lhsIwhatTo ->
         (let _lhsOfvS :: FvS
              _lhsOqualS :: RelevQualS
              _lhsOcTrf :: CMetaVal
              _lhsOoTrf :: CMetaVal
              _lhsOgUniq :: UID
              _lhsOrvarMp :: RVarMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
              _lhsOfvS =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
              _lhsOqualS =
                  Set.empty
              -- self rule
              _cTrf =
                  CMetaVal_Dict
              -- self rule
              _oTrf =
                  CMetaVal_Dict
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- self rule
              _lhsOoTrf =
                  _oTrf
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOrvarMp =
                  _lhsIrvarMp
          in  ( _lhsOcTrf,_lhsOfvS,_lhsOgUniq,_lhsOoTrf,_lhsOqualS,_lhsOrvarMp)))
sem_CMetaVal_DictClass :: ([Track]) ->
                          T_CMetaVal
sem_CMetaVal_DictClass tracks_ =
    (\ _lhsIboundRelevTyVarS
       _lhsIdataGam
       _lhsIenv
       _lhsIfinalRVarMp
       _lhsIgUniq
       _lhsIknTy
       _lhsIlamMp
       _lhsIlev
       _lhsIopts
       _lhsIrvarMp
       _lhsIwhatTo ->
         (let _lhsOfvS :: FvS
              _lhsOqualS :: RelevQualS
              _lhsOcTrf :: CMetaVal
              _lhsOoTrf :: CMetaVal
              _lhsOgUniq :: UID
              _lhsOrvarMp :: RVarMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
              _lhsOfvS =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
              _lhsOqualS =
                  Set.empty
              -- self rule
              _cTrf =
                  CMetaVal_DictClass tracks_
              -- self rule
              _oTrf =
                  CMetaVal_DictClass tracks_
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- self rule
              _lhsOoTrf =
                  _oTrf
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOrvarMp =
                  _lhsIrvarMp
          in  ( _lhsOcTrf,_lhsOfvS,_lhsOgUniq,_lhsOoTrf,_lhsOqualS,_lhsOrvarMp)))
sem_CMetaVal_DictInstance :: ([Track]) ->
                             T_CMetaVal
sem_CMetaVal_DictInstance tracks_ =
    (\ _lhsIboundRelevTyVarS
       _lhsIdataGam
       _lhsIenv
       _lhsIfinalRVarMp
       _lhsIgUniq
       _lhsIknTy
       _lhsIlamMp
       _lhsIlev
       _lhsIopts
       _lhsIrvarMp
       _lhsIwhatTo ->
         (let _lhsOfvS :: FvS
              _lhsOqualS :: RelevQualS
              _lhsOcTrf :: CMetaVal
              _lhsOoTrf :: CMetaVal
              _lhsOgUniq :: UID
              _lhsOrvarMp :: RVarMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
              _lhsOfvS =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
              _lhsOqualS =
                  Set.empty
              -- self rule
              _cTrf =
                  CMetaVal_DictInstance tracks_
              -- self rule
              _oTrf =
                  CMetaVal_DictInstance tracks_
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- self rule
              _lhsOoTrf =
                  _oTrf
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOrvarMp =
                  _lhsIrvarMp
          in  ( _lhsOcTrf,_lhsOfvS,_lhsOgUniq,_lhsOoTrf,_lhsOqualS,_lhsOrvarMp)))
sem_CMetaVal_Track :: Track ->
                      T_CMetaVal
sem_CMetaVal_Track track_ =
    (\ _lhsIboundRelevTyVarS
       _lhsIdataGam
       _lhsIenv
       _lhsIfinalRVarMp
       _lhsIgUniq
       _lhsIknTy
       _lhsIlamMp
       _lhsIlev
       _lhsIopts
       _lhsIrvarMp
       _lhsIwhatTo ->
         (let _lhsOfvS :: FvS
              _lhsOqualS :: RelevQualS
              _lhsOcTrf :: CMetaVal
              _lhsOoTrf :: CMetaVal
              _lhsOgUniq :: UID
              _lhsOrvarMp :: RVarMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
              _lhsOfvS =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
              _lhsOqualS =
                  Set.empty
              -- self rule
              _cTrf =
                  CMetaVal_Track track_
              -- self rule
              _oTrf =
                  CMetaVal_Track track_
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- self rule
              _lhsOoTrf =
                  _oTrf
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOrvarMp =
                  _lhsIrvarMp
          in  ( _lhsOcTrf,_lhsOfvS,_lhsOgUniq,_lhsOoTrf,_lhsOqualS,_lhsOrvarMp)))
-- CMetas ------------------------------------------------------
{-
   visit 0:
      inherited attributes:
         boundRelevTyVarS     : UIDS
         dataGam              : DataGam
         env                  : REnv
         finalRVarMp          : RVarMp
         knTy                 : RelevTy
         lamMp                : LamMp
         lev                  : Int
         opts                 : EHCOpts
         whatTo               : [WhatToRelevInfer]
      chained attributes:
         gUniq                : UID
         rvarMp               : RVarMp
      synthesized attributes:
         cTrf                 : CMetas 
         fvS                  : FvS
         oTrf                 : CMetas 
         qualS                : RelevQualS
   alternatives:
      alternative Tuple:
         child x1             : CMetaBind 
         child x2             : CMetaVal 
         visit 0:
            local cTrf        : _
            local oTrf        : _
-}
-- cata
sem_CMetas :: CMetas ->
              T_CMetas
sem_CMetas ( x1,x2) =
    (sem_CMetas_Tuple (sem_CMetaBind x1) (sem_CMetaVal x2))
-- semantic domain
type T_CMetas = UIDS ->
                DataGam ->
                REnv ->
                RVarMp ->
                UID ->
                RelevTy ->
                LamMp ->
                Int ->
                EHCOpts ->
                RVarMp ->
                ([WhatToRelevInfer]) ->
                ( CMetas,FvS,UID,CMetas,RelevQualS,RVarMp)
sem_CMetas_Tuple :: T_CMetaBind ->
                    T_CMetaVal ->
                    T_CMetas
sem_CMetas_Tuple x1_ x2_ =
    (\ _lhsIboundRelevTyVarS
       _lhsIdataGam
       _lhsIenv
       _lhsIfinalRVarMp
       _lhsIgUniq
       _lhsIknTy
       _lhsIlamMp
       _lhsIlev
       _lhsIopts
       _lhsIrvarMp
       _lhsIwhatTo ->
         (let _lhsOfvS :: FvS
              _lhsOqualS :: RelevQualS
              _lhsOcTrf :: CMetas
              _lhsOoTrf :: CMetas
              _lhsOgUniq :: UID
              _lhsOrvarMp :: RVarMp
              _x1OboundRelevTyVarS :: UIDS
              _x1OdataGam :: DataGam
              _x1Oenv :: REnv
              _x1OfinalRVarMp :: RVarMp
              _x1OgUniq :: UID
              _x1OknTy :: RelevTy
              _x1OlamMp :: LamMp
              _x1Olev :: Int
              _x1Oopts :: EHCOpts
              _x1OrvarMp :: RVarMp
              _x1OwhatTo :: ([WhatToRelevInfer])
              _x2OboundRelevTyVarS :: UIDS
              _x2OdataGam :: DataGam
              _x2Oenv :: REnv
              _x2OfinalRVarMp :: RVarMp
              _x2OgUniq :: UID
              _x2OknTy :: RelevTy
              _x2OlamMp :: LamMp
              _x2Olev :: Int
              _x2Oopts :: EHCOpts
              _x2OrvarMp :: RVarMp
              _x2OwhatTo :: ([WhatToRelevInfer])
              _x1IcTrf :: CMetaBind
              _x1IfvS :: FvS
              _x1IgUniq :: UID
              _x1IoTrf :: CMetaBind
              _x1IqualS :: RelevQualS
              _x1IrvarMp :: RVarMp
              _x2IcTrf :: CMetaVal
              _x2IfvS :: FvS
              _x2IgUniq :: UID
              _x2IoTrf :: CMetaVal
              _x2IqualS :: RelevQualS
              _x2IrvarMp :: RVarMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
              _lhsOfvS =
                  _x1IfvS `Set.union` _x2IfvS
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
              _lhsOqualS =
                  _x1IqualS `Set.union` _x2IqualS
              -- self rule
              _cTrf =
                  (_x1IcTrf,_x2IcTrf)
              -- self rule
              _oTrf =
                  (_x1IoTrf,_x2IoTrf)
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- self rule
              _lhsOoTrf =
                  _oTrf
              -- copy rule (up)
              _lhsOgUniq =
                  _x2IgUniq
              -- copy rule (up)
              _lhsOrvarMp =
                  _x2IrvarMp
              -- copy rule (down)
              _x1OboundRelevTyVarS =
                  _lhsIboundRelevTyVarS
              -- copy rule (down)
              _x1OdataGam =
                  _lhsIdataGam
              -- copy rule (down)
              _x1Oenv =
                  _lhsIenv
              -- copy rule (down)
              _x1OfinalRVarMp =
                  _lhsIfinalRVarMp
              -- copy rule (down)
              _x1OgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _x1OknTy =
                  _lhsIknTy
              -- copy rule (down)
              _x1OlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _x1Olev =
                  _lhsIlev
              -- copy rule (down)
              _x1Oopts =
                  _lhsIopts
              -- copy rule (down)
              _x1OrvarMp =
                  _lhsIrvarMp
              -- copy rule (down)
              _x1OwhatTo =
                  _lhsIwhatTo
              -- copy rule (down)
              _x2OboundRelevTyVarS =
                  _lhsIboundRelevTyVarS
              -- copy rule (down)
              _x2OdataGam =
                  _lhsIdataGam
              -- copy rule (down)
              _x2Oenv =
                  _lhsIenv
              -- copy rule (down)
              _x2OfinalRVarMp =
                  _lhsIfinalRVarMp
              -- copy rule (chain)
              _x2OgUniq =
                  _x1IgUniq
              -- copy rule (down)
              _x2OknTy =
                  _lhsIknTy
              -- copy rule (down)
              _x2OlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _x2Olev =
                  _lhsIlev
              -- copy rule (down)
              _x2Oopts =
                  _lhsIopts
              -- copy rule (chain)
              _x2OrvarMp =
                  _x1IrvarMp
              -- copy rule (down)
              _x2OwhatTo =
                  _lhsIwhatTo
              ( _x1IcTrf,_x1IfvS,_x1IgUniq,_x1IoTrf,_x1IqualS,_x1IrvarMp) =
                  x1_ _x1OboundRelevTyVarS _x1OdataGam _x1Oenv _x1OfinalRVarMp _x1OgUniq _x1OknTy _x1OlamMp _x1Olev _x1Oopts _x1OrvarMp _x1OwhatTo
              ( _x2IcTrf,_x2IfvS,_x2IgUniq,_x2IoTrf,_x2IqualS,_x2IrvarMp) =
                  x2_ _x2OboundRelevTyVarS _x2OdataGam _x2Oenv _x2OfinalRVarMp _x2OgUniq _x2OknTy _x2OlamMp _x2Olev _x2Oopts _x2OrvarMp _x2OwhatTo
          in  ( _lhsOcTrf,_lhsOfvS,_lhsOgUniq,_lhsOoTrf,_lhsOqualS,_lhsOrvarMp)))
-- CModule -----------------------------------------------------
{-
   visit 0:
      inherited attributes:
         dataGam              : DataGam
         env                  : REnv
         finalRVarMp          : RVarMp
         lamMp                : LamMp
         lev                  : Int
         opts                 : EHCOpts
         whatTo               : [WhatToRelevInfer]
      chained attributes:
         gUniq                : UID
         rvarMp               : RVarMp
      synthesized attributes:
         cTrf                 : CModule 
         fvS                  : FvS
         gathLamMp            : LamMp
         qualS                : RelevQualS
   alternatives:
      alternative Mod:
         child moduleNm       : {HsName}
         child exports        : CExportL 
         child imports        : CImportL 
         child declMetas      : CDeclMetaL 
         child expr           : CExpr 
         visit 0:
            local whatAbove   : {WhatExpr}
            local altMbScrutTy : _
            local cTrf        : _
-}
-- cata
sem_CModule :: CModule ->
               T_CModule
sem_CModule (CModule_Mod _moduleNm _exports _imports _declMetas _expr) =
    (sem_CModule_Mod _moduleNm (sem_CExportL _exports) (sem_CImportL _imports) (sem_CDeclMetaL _declMetas) (sem_CExpr _expr))
-- semantic domain
type T_CModule = DataGam ->
                 REnv ->
                 RVarMp ->
                 UID ->
                 LamMp ->
                 Int ->
                 EHCOpts ->
                 RVarMp ->
                 ([WhatToRelevInfer]) ->
                 ( CModule,FvS,UID,LamMp,RelevQualS,RVarMp)
sem_CModule_Mod :: HsName ->
                   T_CExportL ->
                   T_CImportL ->
                   T_CDeclMetaL ->
                   T_CExpr ->
                   T_CModule
sem_CModule_Mod moduleNm_ exports_ imports_ declMetas_ expr_ =
    (\ _lhsIdataGam
       _lhsIenv
       _lhsIfinalRVarMp
       _lhsIgUniq
       _lhsIlamMp
       _lhsIlev
       _lhsIopts
       _lhsIrvarMp
       _lhsIwhatTo ->
         (let _exprOisTopApp :: Bool
              _exprOisTopTup :: Bool
              _whatAbove :: WhatExpr
              _exprOevalCtx :: EvalCtx
              _exprOknTy :: RelevTy
              _exprOboundRelevTyVarS :: UIDS
              _lhsOfvS :: FvS
              _lhsOqualS :: RelevQualS
              _lhsOcTrf :: CModule
              _lhsOgUniq :: UID
              _lhsOgathLamMp :: LamMp
              _lhsOrvarMp :: RVarMp
              _exprOaltMbScrutTy :: MbRelevTy
              _exprOdataGam :: DataGam
              _exprOenv :: REnv
              _exprOfinalRVarMp :: RVarMp
              _exprOgUniq :: UID
              _exprOlamMp :: LamMp
              _exprOlev :: Int
              _exprOopts :: EHCOpts
              _exprOrvarMp :: RVarMp
              _exprOwhatAbove :: WhatExpr
              _exprOwhatTo :: ([WhatToRelevInfer])
              _exportsIcTrf :: CExportL
              _importsIcTrf :: CImportL
              _declMetasIcTrf :: CDeclMetaL
              _exprIappFunKind :: AppFunKind
              _exprIargL :: ([CBound])
              _exprIcTrf :: CExpr
              _exprIcoe :: RelevCoe
              _exprIfunCoe :: RelevCoe
              _exprIfvS :: FvS
              _exprIgUniq :: UID
              _exprIgathLamMp :: LamMp
              _exprImbFFIApp :: (Maybe ( Ty
                                                                   , Bool
                                                                   , FFIWay
                                                                   , ForeignEnt
                                                                   , [Ty]
                                                                   ))
              _exprImbFunVar :: (Maybe HsName)
              _exprImbLam :: (Maybe [HsName])
              _exprImbVar :: (Maybe HsName)
              _exprIoTrf :: CExpr
              _exprIqualS :: RelevQualS
              _exprIrvarMp :: RVarMp
              _exprIty :: RelevTy
              _exprIwhatBelow :: WhatExpr
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 27, column 17)
              _exprOisTopApp =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 27, column 17)
              _exprOisTopTup =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 90, column 17)
              _whatAbove =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 99, column 17)
              _exprOevalCtx =
                  EvalCtx_Eval
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 204, column 17)
              _exprOknTy =
                  RelevTy_None
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 313, column 17)
              _altMbScrutTy =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 492, column 17)
              _exprOboundRelevTyVarS =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
              _lhsOfvS =
                  _exprIfvS
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
              _lhsOqualS =
                  _exprIqualS
              -- self rule
              _cTrf =
                  CModule_Mod moduleNm_ _exportsIcTrf _importsIcTrf _declMetasIcTrf _exprIcTrf
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- copy rule (up)
              _lhsOgUniq =
                  _exprIgUniq
              -- copy rule (up)
              _lhsOgathLamMp =
                  _exprIgathLamMp
              -- copy rule (up)
              _lhsOrvarMp =
                  _exprIrvarMp
              -- copy rule (from local)
              _exprOaltMbScrutTy =
                  _altMbScrutTy
              -- copy rule (down)
              _exprOdataGam =
                  _lhsIdataGam
              -- copy rule (down)
              _exprOenv =
                  _lhsIenv
              -- copy rule (down)
              _exprOfinalRVarMp =
                  _lhsIfinalRVarMp
              -- copy rule (down)
              _exprOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _exprOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _exprOlev =
                  _lhsIlev
              -- copy rule (down)
              _exprOopts =
                  _lhsIopts
              -- copy rule (down)
              _exprOrvarMp =
                  _lhsIrvarMp
              -- copy rule (from local)
              _exprOwhatAbove =
                  _whatAbove
              -- copy rule (down)
              _exprOwhatTo =
                  _lhsIwhatTo
              ( _exportsIcTrf) =
                  exports_
              ( _importsIcTrf) =
                  imports_
              ( _declMetasIcTrf) =
                  declMetas_
              ( _exprIappFunKind,_exprIargL,_exprIcTrf,_exprIcoe,_exprIfunCoe,_exprIfvS,_exprIgUniq,_exprIgathLamMp,_exprImbFFIApp,_exprImbFunVar,_exprImbLam,_exprImbVar,_exprIoTrf,_exprIqualS,_exprIrvarMp,_exprIty,_exprIwhatBelow) =
                  expr_ _exprOaltMbScrutTy _exprOboundRelevTyVarS _exprOdataGam _exprOenv _exprOevalCtx _exprOfinalRVarMp _exprOgUniq _exprOisTopApp _exprOisTopTup _exprOknTy _exprOlamMp _exprOlev _exprOopts _exprOrvarMp _exprOwhatAbove _exprOwhatTo
          in  ( _lhsOcTrf,_lhsOfvS,_lhsOgUniq,_lhsOgathLamMp,_lhsOqualS,_lhsOrvarMp)))
-- CPat --------------------------------------------------------
{-
   visit 0:
      inherited attributes:
         boundRelevTyVarS     : UIDS
         dataGam              : DataGam
         env                  : REnv
         finalRVarMp          : RVarMp
         knTy                 : RelevTy
         knTyCase             : RelevTy
         lamMp                : LamMp
         lev                  : Int
         opts                 : EHCOpts
         whatTo               : [WhatToRelevInfer]
      chained attributes:
         gUniq                : UID
         patFldTyL            : [(RelevTy,RelevTy)]
         rvarMp               : RVarMp
      synthesized attributes:
         cTrf                 : CPat 
         fldNmL               : [HsName]
         fvS                  : FvS
         mbCTag               : Maybe CTag
         nmL                  : [HsName]
         oTrf                 : CPat 
         qualS                : RelevQualS
   alternatives:
      alternative Var:
         child pnm            : {HsName}
         visit 0:
            local cTrf        : _
            local oTrf        : _
      alternative Con:
         child tag            : {CTag}
         child rest           : CPatRest 
         child binds          : CPatFldL 
         visit 0:
            local cTrf        : _
            local oTrf        : _
      alternative Int:
         child int            : {Int}
         visit 0:
            local cTrf        : _
            local oTrf        : _
      alternative Char:
         child char           : {Char}
         visit 0:
            local cTrf        : _
            local oTrf        : _
      alternative BoolExpr:
         child cexpr          : {CExpr}
         visit 0:
            local cTrf        : _
            local oTrf        : _
-}
-- cata
sem_CPat :: CPat ->
            T_CPat
sem_CPat (CPat_Var _pnm) =
    (sem_CPat_Var _pnm)
sem_CPat (CPat_Con _tag _rest _binds) =
    (sem_CPat_Con _tag (sem_CPatRest _rest) (sem_CPatFldL _binds))
sem_CPat (CPat_Int _int) =
    (sem_CPat_Int _int)
sem_CPat (CPat_Char _char) =
    (sem_CPat_Char _char)
sem_CPat (CPat_BoolExpr _cexpr) =
    (sem_CPat_BoolExpr _cexpr)
-- semantic domain
type T_CPat = UIDS ->
              DataGam ->
              REnv ->
              RVarMp ->
              UID ->
              RelevTy ->
              RelevTy ->
              LamMp ->
              Int ->
              EHCOpts ->
              ([(RelevTy,RelevTy)]) ->
              RVarMp ->
              ([WhatToRelevInfer]) ->
              ( CPat,([HsName]),FvS,UID,(Maybe CTag),([HsName]),CPat,([(RelevTy,RelevTy)]),RelevQualS,RVarMp)
sem_CPat_Var :: HsName ->
                T_CPat
sem_CPat_Var pnm_ =
    (\ _lhsIboundRelevTyVarS
       _lhsIdataGam
       _lhsIenv
       _lhsIfinalRVarMp
       _lhsIgUniq
       _lhsIknTy
       _lhsIknTyCase
       _lhsIlamMp
       _lhsIlev
       _lhsIopts
       _lhsIpatFldTyL
       _lhsIrvarMp
       _lhsIwhatTo ->
         (let _lhsOnmL :: ([HsName])
              _lhsOmbCTag :: (Maybe CTag)
              _lhsOfldNmL :: ([HsName])
              _lhsOfvS :: FvS
              _lhsOqualS :: RelevQualS
              _lhsOcTrf :: CPat
              _lhsOoTrf :: CPat
              _lhsOgUniq :: UID
              _lhsOpatFldTyL :: ([(RelevTy,RelevTy)])
              _lhsOrvarMp :: RVarMp
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 28, column 17)
              _lhsOnmL =
                  [pnm_]
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonStructureInfo.ag"(line 22, column 33)
              _lhsOmbCTag =
                  Nothing
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonBindNm.ag"(line 25, column 41)
              _lhsOfldNmL =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
              _lhsOfvS =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
              _lhsOqualS =
                  Set.empty
              -- self rule
              _cTrf =
                  CPat_Var pnm_
              -- self rule
              _oTrf =
                  CPat_Var pnm_
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- self rule
              _lhsOoTrf =
                  _oTrf
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOpatFldTyL =
                  _lhsIpatFldTyL
              -- copy rule (chain)
              _lhsOrvarMp =
                  _lhsIrvarMp
          in  ( _lhsOcTrf,_lhsOfldNmL,_lhsOfvS,_lhsOgUniq,_lhsOmbCTag,_lhsOnmL,_lhsOoTrf,_lhsOpatFldTyL,_lhsOqualS,_lhsOrvarMp)))
sem_CPat_Con :: CTag ->
                T_CPatRest ->
                T_CPatFldL ->
                T_CPat
sem_CPat_Con tag_ rest_ binds_ =
    (\ _lhsIboundRelevTyVarS
       _lhsIdataGam
       _lhsIenv
       _lhsIfinalRVarMp
       _lhsIgUniq
       _lhsIknTy
       _lhsIknTyCase
       _lhsIlamMp
       _lhsIlev
       _lhsIopts
       _lhsIpatFldTyL
       _lhsIrvarMp
       _lhsIwhatTo ->
         (let _lhsOnmL :: ([HsName])
              _lhsOmbCTag :: (Maybe CTag)
              _lhsOfldNmL :: ([HsName])
              _lhsOfvS :: FvS
              _lhsOqualS :: RelevQualS
              _lhsOcTrf :: CPat
              _lhsOoTrf :: CPat
              _lhsOgUniq :: UID
              _lhsOpatFldTyL :: ([(RelevTy,RelevTy)])
              _lhsOrvarMp :: RVarMp
              _restOboundRelevTyVarS :: UIDS
              _restOdataGam :: DataGam
              _restOenv :: REnv
              _restOfinalRVarMp :: RVarMp
              _restOgUniq :: UID
              _restOknTy :: RelevTy
              _restOknTyCase :: RelevTy
              _restOlamMp :: LamMp
              _restOlev :: Int
              _restOopts :: EHCOpts
              _restOrvarMp :: RVarMp
              _restOwhatTo :: ([WhatToRelevInfer])
              _bindsOboundRelevTyVarS :: UIDS
              _bindsOdataGam :: DataGam
              _bindsOenv :: REnv
              _bindsOfinalRVarMp :: RVarMp
              _bindsOgUniq :: UID
              _bindsOknTy :: RelevTy
              _bindsOknTyCase :: RelevTy
              _bindsOlamMp :: LamMp
              _bindsOlev :: Int
              _bindsOopts :: EHCOpts
              _bindsOpatFldTyL :: ([(RelevTy,RelevTy)])
              _bindsOrvarMp :: RVarMp
              _bindsOwhatTo :: ([WhatToRelevInfer])
              _restIcTrf :: CPatRest
              _restIfvS :: FvS
              _restIgUniq :: UID
              _restInmL :: ([HsName])
              _restIoTrf :: CPatRest
              _restIqualS :: RelevQualS
              _restIrvarMp :: RVarMp
              _bindsIcTrf :: CPatFldL
              _bindsIfldNmL :: ([HsName])
              _bindsIfvS :: FvS
              _bindsIgUniq :: UID
              _bindsInmL :: ([HsName])
              _bindsIoTrf :: CPatFldL
              _bindsIpatFldTyL :: ([(RelevTy,RelevTy)])
              _bindsIqualS :: RelevQualS
              _bindsIrvarMp :: RVarMp
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 29, column 17)
              _lhsOnmL =
                  _restInmL ++ _bindsInmL
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonStructureInfo.ag"(line 20, column 25)
              _lhsOmbCTag =
                  Just tag_
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonBindNm.ag"(line 25, column 41)
              _lhsOfldNmL =
                  _bindsIfldNmL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
              _lhsOfvS =
                  _restIfvS `Set.union` _bindsIfvS
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
              _lhsOqualS =
                  _restIqualS `Set.union` _bindsIqualS
              -- self rule
              _cTrf =
                  CPat_Con tag_ _restIcTrf _bindsIcTrf
              -- self rule
              _oTrf =
                  CPat_Con tag_ _restIoTrf _bindsIoTrf
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- self rule
              _lhsOoTrf =
                  _oTrf
              -- copy rule (up)
              _lhsOgUniq =
                  _bindsIgUniq
              -- copy rule (up)
              _lhsOpatFldTyL =
                  _bindsIpatFldTyL
              -- copy rule (up)
              _lhsOrvarMp =
                  _bindsIrvarMp
              -- copy rule (down)
              _restOboundRelevTyVarS =
                  _lhsIboundRelevTyVarS
              -- copy rule (down)
              _restOdataGam =
                  _lhsIdataGam
              -- copy rule (down)
              _restOenv =
                  _lhsIenv
              -- copy rule (down)
              _restOfinalRVarMp =
                  _lhsIfinalRVarMp
              -- copy rule (down)
              _restOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _restOknTy =
                  _lhsIknTy
              -- copy rule (down)
              _restOknTyCase =
                  _lhsIknTyCase
              -- copy rule (down)
              _restOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _restOlev =
                  _lhsIlev
              -- copy rule (down)
              _restOopts =
                  _lhsIopts
              -- copy rule (down)
              _restOrvarMp =
                  _lhsIrvarMp
              -- copy rule (down)
              _restOwhatTo =
                  _lhsIwhatTo
              -- copy rule (down)
              _bindsOboundRelevTyVarS =
                  _lhsIboundRelevTyVarS
              -- copy rule (down)
              _bindsOdataGam =
                  _lhsIdataGam
              -- copy rule (down)
              _bindsOenv =
                  _lhsIenv
              -- copy rule (down)
              _bindsOfinalRVarMp =
                  _lhsIfinalRVarMp
              -- copy rule (chain)
              _bindsOgUniq =
                  _restIgUniq
              -- copy rule (down)
              _bindsOknTy =
                  _lhsIknTy
              -- copy rule (down)
              _bindsOknTyCase =
                  _lhsIknTyCase
              -- copy rule (down)
              _bindsOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _bindsOlev =
                  _lhsIlev
              -- copy rule (down)
              _bindsOopts =
                  _lhsIopts
              -- copy rule (down)
              _bindsOpatFldTyL =
                  _lhsIpatFldTyL
              -- copy rule (chain)
              _bindsOrvarMp =
                  _restIrvarMp
              -- copy rule (down)
              _bindsOwhatTo =
                  _lhsIwhatTo
              ( _restIcTrf,_restIfvS,_restIgUniq,_restInmL,_restIoTrf,_restIqualS,_restIrvarMp) =
                  rest_ _restOboundRelevTyVarS _restOdataGam _restOenv _restOfinalRVarMp _restOgUniq _restOknTy _restOknTyCase _restOlamMp _restOlev _restOopts _restOrvarMp _restOwhatTo
              ( _bindsIcTrf,_bindsIfldNmL,_bindsIfvS,_bindsIgUniq,_bindsInmL,_bindsIoTrf,_bindsIpatFldTyL,_bindsIqualS,_bindsIrvarMp) =
                  binds_ _bindsOboundRelevTyVarS _bindsOdataGam _bindsOenv _bindsOfinalRVarMp _bindsOgUniq _bindsOknTy _bindsOknTyCase _bindsOlamMp _bindsOlev _bindsOopts _bindsOpatFldTyL _bindsOrvarMp _bindsOwhatTo
          in  ( _lhsOcTrf,_lhsOfldNmL,_lhsOfvS,_lhsOgUniq,_lhsOmbCTag,_lhsOnmL,_lhsOoTrf,_lhsOpatFldTyL,_lhsOqualS,_lhsOrvarMp)))
sem_CPat_Int :: Int ->
                T_CPat
sem_CPat_Int int_ =
    (\ _lhsIboundRelevTyVarS
       _lhsIdataGam
       _lhsIenv
       _lhsIfinalRVarMp
       _lhsIgUniq
       _lhsIknTy
       _lhsIknTyCase
       _lhsIlamMp
       _lhsIlev
       _lhsIopts
       _lhsIpatFldTyL
       _lhsIrvarMp
       _lhsIwhatTo ->
         (let _lhsOmbCTag :: (Maybe CTag)
              _lhsOfldNmL :: ([HsName])
              _lhsOfvS :: FvS
              _lhsOnmL :: ([HsName])
              _lhsOqualS :: RelevQualS
              _lhsOcTrf :: CPat
              _lhsOoTrf :: CPat
              _lhsOgUniq :: UID
              _lhsOpatFldTyL :: ([(RelevTy,RelevTy)])
              _lhsOrvarMp :: RVarMp
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonStructureInfo.ag"(line 22, column 33)
              _lhsOmbCTag =
                  Nothing
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonBindNm.ag"(line 25, column 41)
              _lhsOfldNmL =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
              _lhsOfvS =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 16, column 31)
              _lhsOnmL =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
              _lhsOqualS =
                  Set.empty
              -- self rule
              _cTrf =
                  CPat_Int int_
              -- self rule
              _oTrf =
                  CPat_Int int_
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- self rule
              _lhsOoTrf =
                  _oTrf
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOpatFldTyL =
                  _lhsIpatFldTyL
              -- copy rule (chain)
              _lhsOrvarMp =
                  _lhsIrvarMp
          in  ( _lhsOcTrf,_lhsOfldNmL,_lhsOfvS,_lhsOgUniq,_lhsOmbCTag,_lhsOnmL,_lhsOoTrf,_lhsOpatFldTyL,_lhsOqualS,_lhsOrvarMp)))
sem_CPat_Char :: Char ->
                 T_CPat
sem_CPat_Char char_ =
    (\ _lhsIboundRelevTyVarS
       _lhsIdataGam
       _lhsIenv
       _lhsIfinalRVarMp
       _lhsIgUniq
       _lhsIknTy
       _lhsIknTyCase
       _lhsIlamMp
       _lhsIlev
       _lhsIopts
       _lhsIpatFldTyL
       _lhsIrvarMp
       _lhsIwhatTo ->
         (let _lhsOmbCTag :: (Maybe CTag)
              _lhsOfldNmL :: ([HsName])
              _lhsOfvS :: FvS
              _lhsOnmL :: ([HsName])
              _lhsOqualS :: RelevQualS
              _lhsOcTrf :: CPat
              _lhsOoTrf :: CPat
              _lhsOgUniq :: UID
              _lhsOpatFldTyL :: ([(RelevTy,RelevTy)])
              _lhsOrvarMp :: RVarMp
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonStructureInfo.ag"(line 22, column 33)
              _lhsOmbCTag =
                  Nothing
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonBindNm.ag"(line 25, column 41)
              _lhsOfldNmL =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
              _lhsOfvS =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 16, column 31)
              _lhsOnmL =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
              _lhsOqualS =
                  Set.empty
              -- self rule
              _cTrf =
                  CPat_Char char_
              -- self rule
              _oTrf =
                  CPat_Char char_
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- self rule
              _lhsOoTrf =
                  _oTrf
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOpatFldTyL =
                  _lhsIpatFldTyL
              -- copy rule (chain)
              _lhsOrvarMp =
                  _lhsIrvarMp
          in  ( _lhsOcTrf,_lhsOfldNmL,_lhsOfvS,_lhsOgUniq,_lhsOmbCTag,_lhsOnmL,_lhsOoTrf,_lhsOpatFldTyL,_lhsOqualS,_lhsOrvarMp)))
sem_CPat_BoolExpr :: CExpr ->
                     T_CPat
sem_CPat_BoolExpr cexpr_ =
    (\ _lhsIboundRelevTyVarS
       _lhsIdataGam
       _lhsIenv
       _lhsIfinalRVarMp
       _lhsIgUniq
       _lhsIknTy
       _lhsIknTyCase
       _lhsIlamMp
       _lhsIlev
       _lhsIopts
       _lhsIpatFldTyL
       _lhsIrvarMp
       _lhsIwhatTo ->
         (let _lhsOmbCTag :: (Maybe CTag)
              _lhsOfldNmL :: ([HsName])
              _lhsOfvS :: FvS
              _lhsOnmL :: ([HsName])
              _lhsOqualS :: RelevQualS
              _lhsOcTrf :: CPat
              _lhsOoTrf :: CPat
              _lhsOgUniq :: UID
              _lhsOpatFldTyL :: ([(RelevTy,RelevTy)])
              _lhsOrvarMp :: RVarMp
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonStructureInfo.ag"(line 22, column 33)
              _lhsOmbCTag =
                  Nothing
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonBindNm.ag"(line 25, column 41)
              _lhsOfldNmL =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
              _lhsOfvS =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 16, column 31)
              _lhsOnmL =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
              _lhsOqualS =
                  Set.empty
              -- self rule
              _cTrf =
                  CPat_BoolExpr cexpr_
              -- self rule
              _oTrf =
                  CPat_BoolExpr cexpr_
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- self rule
              _lhsOoTrf =
                  _oTrf
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOpatFldTyL =
                  _lhsIpatFldTyL
              -- copy rule (chain)
              _lhsOrvarMp =
                  _lhsIrvarMp
          in  ( _lhsOcTrf,_lhsOfldNmL,_lhsOfvS,_lhsOgUniq,_lhsOmbCTag,_lhsOnmL,_lhsOoTrf,_lhsOpatFldTyL,_lhsOqualS,_lhsOrvarMp)))
-- CPatFld -----------------------------------------------------
{-
   visit 0:
      inherited attributes:
         boundRelevTyVarS     : UIDS
         dataGam              : DataGam
         env                  : REnv
         finalRVarMp          : RVarMp
         knTy                 : RelevTy
         knTyCase             : RelevTy
         lamMp                : LamMp
         lev                  : Int
         opts                 : EHCOpts
         whatTo               : [WhatToRelevInfer]
      chained attributes:
         gUniq                : UID
         patFldTyL            : [(RelevTy,RelevTy)]
         rvarMp               : RVarMp
      synthesized attributes:
         cTrf                 : CPatFld 
         fldNmL               : [HsName]
         fvS                  : FvS
         nmL                  : [HsName]
         oTrf                 : CPatFld 
         qualS                : RelevQualS
   alternatives:
      alternative Fld:
         child lbl            : {HsName}
         child offset         : CExpr 
         child bind           : CBind 
         child fldAnns        : CBindAnnL 
         visit 0:
            local whatAbove   : {WhatExpr}
            local fldNm       : _
            local _tup25      : _
            local patFldTy    : _
            local fldCoe      : _
            local altMbScrutTy : _
            local hereOffCoe  : _
            local hereFldCoe  : _
            local cTrf        : _
            local oTrf        : _
-}
-- cata
sem_CPatFld :: CPatFld ->
               T_CPatFld
sem_CPatFld (CPatFld_Fld _lbl _offset _bind _fldAnns) =
    (sem_CPatFld_Fld _lbl (sem_CExpr _offset) (sem_CBind _bind) (sem_CBindAnnL _fldAnns))
-- semantic domain
type T_CPatFld = UIDS ->
                 DataGam ->
                 REnv ->
                 RVarMp ->
                 UID ->
                 RelevTy ->
                 RelevTy ->
                 LamMp ->
                 Int ->
                 EHCOpts ->
                 ([(RelevTy,RelevTy)]) ->
                 RVarMp ->
                 ([WhatToRelevInfer]) ->
                 ( CPatFld,([HsName]),FvS,UID,([HsName]),CPatFld,([(RelevTy,RelevTy)]),RelevQualS,RVarMp)
sem_CPatFld_Fld :: HsName ->
                   T_CExpr ->
                   T_CBind ->
                   T_CBindAnnL ->
                   T_CPatFld
sem_CPatFld_Fld lbl_ offset_ bind_ fldAnns_ =
    (\ _lhsIboundRelevTyVarS
       _lhsIdataGam
       _lhsIenv
       _lhsIfinalRVarMp
       _lhsIgUniq
       _lhsIknTy
       _lhsIknTyCase
       _lhsIlamMp
       _lhsIlev
       _lhsIopts
       _lhsIpatFldTyL
       _lhsIrvarMp
       _lhsIwhatTo ->
         (let _lhsOnmL :: ([HsName])
              _bindOletBindingsCateg :: CBindCateg
              _offsetOisTopApp :: Bool
              _offsetOisTopTup :: Bool
              _whatAbove :: WhatExpr
              _offsetOevalCtx :: EvalCtx
              _bindOevalCtx :: EvalCtx
              _lhsOfldNmL :: ([HsName])
              _bindOisGlobal :: Bool
              _lhsOpatFldTyL :: ([(RelevTy,RelevTy)])
              _offsetOknTy :: RelevTy
              _bindOforQuantRVarMp :: RVarMp
              _lhsOcTrf :: CPatFld
              _lhsOfvS :: FvS
              _lhsOqualS :: RelevQualS
              _lhsOoTrf :: CPatFld
              _lhsOgUniq :: UID
              _lhsOrvarMp :: RVarMp
              _offsetOaltMbScrutTy :: MbRelevTy
              _offsetOboundRelevTyVarS :: UIDS
              _offsetOdataGam :: DataGam
              _offsetOenv :: REnv
              _offsetOfinalRVarMp :: RVarMp
              _offsetOgUniq :: UID
              _offsetOlamMp :: LamMp
              _offsetOlev :: Int
              _offsetOopts :: EHCOpts
              _offsetOrvarMp :: RVarMp
              _offsetOwhatAbove :: WhatExpr
              _offsetOwhatTo :: ([WhatToRelevInfer])
              _bindOboundRelevTyVarS :: UIDS
              _bindOdataGam :: DataGam
              _bindOenv :: REnv
              _bindOfinalRVarMp :: RVarMp
              _bindOgUniq :: UID
              _bindOknTy :: RelevTy
              _bindOlamMp :: LamMp
              _bindOlev :: Int
              _bindOopts :: EHCOpts
              _bindOrvarMp :: RVarMp
              _bindOwhatTo :: ([WhatToRelevInfer])
              _fldAnnsOboundRelevTyVarS :: UIDS
              _fldAnnsOdataGam :: DataGam
              _fldAnnsOenv :: REnv
              _fldAnnsOfinalRVarMp :: RVarMp
              _fldAnnsOgUniq :: UID
              _fldAnnsOknTy :: RelevTy
              _fldAnnsOknTyCase :: RelevTy
              _fldAnnsOlamMp :: LamMp
              _fldAnnsOlev :: Int
              _fldAnnsOopts :: EHCOpts
              _fldAnnsOrvarMp :: RVarMp
              _fldAnnsOwhatTo :: ([WhatToRelevInfer])
              _offsetIappFunKind :: AppFunKind
              _offsetIargL :: ([CBound])
              _offsetIcTrf :: CExpr
              _offsetIcoe :: RelevCoe
              _offsetIfunCoe :: RelevCoe
              _offsetIfvS :: FvS
              _offsetIgUniq :: UID
              _offsetIgathLamMp :: LamMp
              _offsetImbFFIApp :: (Maybe ( Ty
                                                                     , Bool
                                                                     , FFIWay
                                                                     , ForeignEnt
                                                                     , [Ty]
                                                                     ))
              _offsetImbFunVar :: (Maybe HsName)
              _offsetImbLam :: (Maybe [HsName])
              _offsetImbVar :: (Maybe HsName)
              _offsetIoTrf :: CExpr
              _offsetIqualS :: RelevQualS
              _offsetIrvarMp :: RVarMp
              _offsetIty :: RelevTy
              _offsetIwhatBelow :: WhatExpr
              _bindIaltMbScrutTy :: MbRelevTy
              _bindIbindLamMp :: LamMp
              _bindIcTrf :: CBind
              _bindIextraBindRVarMp :: RVarMp
              _bindIfvS :: FvS
              _bindIfvSMp :: FvSMp
              _bindIgUniq :: UID
              _bindIgathEnv :: REnv
              _bindIgathRecEnv :: REnv
              _bindInm :: HsName
              _bindInmL :: ([HsName])
              _bindIoTrf :: CBind
              _bindIqualS :: RelevQualS
              _bindIrvarMp :: RVarMp
              _fldAnnsIcTrf :: CBindAnnL
              _fldAnnsIfvS :: FvS
              _fldAnnsIgUniq :: UID
              _fldAnnsInmL :: ([HsName])
              _fldAnnsIoTrf :: CBindAnnL
              _fldAnnsIqualS :: RelevQualS
              _fldAnnsIrvarMp :: RVarMp
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 22, column 17)
              _lhsOnmL =
                  [_fldNm]
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 9, column 17)
              _bindOletBindingsCateg =
                  acoreBindcategPlain
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 41, column 17)
              _offsetOisTopApp =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 41, column 17)
              _offsetOisTopTup =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 84, column 17)
              _whatAbove =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 102, column 17)
              _offsetOevalCtx =
                  EvalCtx_Eval
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 103, column 33)
              _bindOevalCtx =
                  EvalCtx_None
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonBindNm.ag"(line 23, column 17)
              _fldNm =
                  _bindInm
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonBindNm.ag"(line 28, column 17)
              _lhsOfldNmL =
                  [_fldNm]
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonLev.ag"(line 15, column 17)
              _bindOisGlobal =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 188, column 17)
              __tup25 =
                  hdAndTl' (panic $ "patFldTyL: " ++ show _fldNm) _lhsIpatFldTyL
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 188, column 17)
              (_patFldTy,_) =
                  __tup25
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 188, column 17)
              (_,_lhsOpatFldTyL) =
                  __tup25
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 189, column 17)
              _fldCoe =
                  let (tgiven,tused) = _patFldTy
                  in  RelevCoe_CastTy tgiven tused
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 219, column 17)
              _offsetOknTy =
                  _lhsIknTy
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 313, column 17)
              _altMbScrutTy =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 343, column 17)
              _hereOffCoe =
                  _lhsIfinalRVarMp `varUpd` _offsetIcoe
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 343, column 17)
              _hereFldCoe =
                  _lhsIfinalRVarMp `varUpd` _fldCoe
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 397, column 25)
              _bindOforQuantRVarMp =
                  emptyRVarMp
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 628, column 17)
              _lhsOcTrf =
                  CPatFld_Fld lbl_ (annCoe _hereOffCoe _offsetIcTrf) _bindIcTrf [CBindAnn_Coe _hereFldCoe]
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
              _lhsOfvS =
                  _offsetIfvS `Set.union` _bindIfvS `Set.union` _fldAnnsIfvS
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
              _lhsOqualS =
                  _offsetIqualS `Set.union` _bindIqualS `Set.union` _fldAnnsIqualS
              -- self rule
              _cTrf =
                  CPatFld_Fld lbl_ _offsetIcTrf _bindIcTrf _fldAnnsIcTrf
              -- self rule
              _oTrf =
                  CPatFld_Fld lbl_ _offsetIoTrf _bindIoTrf _fldAnnsIoTrf
              -- self rule
              _lhsOoTrf =
                  _oTrf
              -- copy rule (up)
              _lhsOgUniq =
                  _fldAnnsIgUniq
              -- copy rule (up)
              _lhsOrvarMp =
                  _fldAnnsIrvarMp
              -- copy rule (from local)
              _offsetOaltMbScrutTy =
                  _altMbScrutTy
              -- copy rule (down)
              _offsetOboundRelevTyVarS =
                  _lhsIboundRelevTyVarS
              -- copy rule (down)
              _offsetOdataGam =
                  _lhsIdataGam
              -- copy rule (down)
              _offsetOenv =
                  _lhsIenv
              -- copy rule (down)
              _offsetOfinalRVarMp =
                  _lhsIfinalRVarMp
              -- copy rule (down)
              _offsetOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _offsetOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _offsetOlev =
                  _lhsIlev
              -- copy rule (down)
              _offsetOopts =
                  _lhsIopts
              -- copy rule (down)
              _offsetOrvarMp =
                  _lhsIrvarMp
              -- copy rule (from local)
              _offsetOwhatAbove =
                  _whatAbove
              -- copy rule (down)
              _offsetOwhatTo =
                  _lhsIwhatTo
              -- copy rule (down)
              _bindOboundRelevTyVarS =
                  _lhsIboundRelevTyVarS
              -- copy rule (down)
              _bindOdataGam =
                  _lhsIdataGam
              -- copy rule (down)
              _bindOenv =
                  _lhsIenv
              -- copy rule (down)
              _bindOfinalRVarMp =
                  _lhsIfinalRVarMp
              -- copy rule (chain)
              _bindOgUniq =
                  _offsetIgUniq
              -- copy rule (down)
              _bindOknTy =
                  _lhsIknTy
              -- copy rule (down)
              _bindOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _bindOlev =
                  _lhsIlev
              -- copy rule (down)
              _bindOopts =
                  _lhsIopts
              -- copy rule (chain)
              _bindOrvarMp =
                  _offsetIrvarMp
              -- copy rule (down)
              _bindOwhatTo =
                  _lhsIwhatTo
              -- copy rule (down)
              _fldAnnsOboundRelevTyVarS =
                  _lhsIboundRelevTyVarS
              -- copy rule (down)
              _fldAnnsOdataGam =
                  _lhsIdataGam
              -- copy rule (down)
              _fldAnnsOenv =
                  _lhsIenv
              -- copy rule (down)
              _fldAnnsOfinalRVarMp =
                  _lhsIfinalRVarMp
              -- copy rule (chain)
              _fldAnnsOgUniq =
                  _bindIgUniq
              -- copy rule (down)
              _fldAnnsOknTy =
                  _lhsIknTy
              -- copy rule (down)
              _fldAnnsOknTyCase =
                  _lhsIknTyCase
              -- copy rule (down)
              _fldAnnsOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _fldAnnsOlev =
                  _lhsIlev
              -- copy rule (down)
              _fldAnnsOopts =
                  _lhsIopts
              -- copy rule (chain)
              _fldAnnsOrvarMp =
                  _bindIrvarMp
              -- copy rule (down)
              _fldAnnsOwhatTo =
                  _lhsIwhatTo
              ( _offsetIappFunKind,_offsetIargL,_offsetIcTrf,_offsetIcoe,_offsetIfunCoe,_offsetIfvS,_offsetIgUniq,_offsetIgathLamMp,_offsetImbFFIApp,_offsetImbFunVar,_offsetImbLam,_offsetImbVar,_offsetIoTrf,_offsetIqualS,_offsetIrvarMp,_offsetIty,_offsetIwhatBelow) =
                  offset_ _offsetOaltMbScrutTy _offsetOboundRelevTyVarS _offsetOdataGam _offsetOenv _offsetOevalCtx _offsetOfinalRVarMp _offsetOgUniq _offsetOisTopApp _offsetOisTopTup _offsetOknTy _offsetOlamMp _offsetOlev _offsetOopts _offsetOrvarMp _offsetOwhatAbove _offsetOwhatTo
              ( _bindIaltMbScrutTy,_bindIbindLamMp,_bindIcTrf,_bindIextraBindRVarMp,_bindIfvS,_bindIfvSMp,_bindIgUniq,_bindIgathEnv,_bindIgathRecEnv,_bindInm,_bindInmL,_bindIoTrf,_bindIqualS,_bindIrvarMp) =
                  bind_ _bindOboundRelevTyVarS _bindOdataGam _bindOenv _bindOevalCtx _bindOfinalRVarMp _bindOforQuantRVarMp _bindOgUniq _bindOisGlobal _bindOknTy _bindOlamMp _bindOletBindingsCateg _bindOlev _bindOopts _bindOrvarMp _bindOwhatTo
              ( _fldAnnsIcTrf,_fldAnnsIfvS,_fldAnnsIgUniq,_fldAnnsInmL,_fldAnnsIoTrf,_fldAnnsIqualS,_fldAnnsIrvarMp) =
                  fldAnns_ _fldAnnsOboundRelevTyVarS _fldAnnsOdataGam _fldAnnsOenv _fldAnnsOfinalRVarMp _fldAnnsOgUniq _fldAnnsOknTy _fldAnnsOknTyCase _fldAnnsOlamMp _fldAnnsOlev _fldAnnsOopts _fldAnnsOrvarMp _fldAnnsOwhatTo
          in  ( _lhsOcTrf,_lhsOfldNmL,_lhsOfvS,_lhsOgUniq,_lhsOnmL,_lhsOoTrf,_lhsOpatFldTyL,_lhsOqualS,_lhsOrvarMp)))
-- CPatFldL ----------------------------------------------------
{-
   visit 0:
      inherited attributes:
         boundRelevTyVarS     : UIDS
         dataGam              : DataGam
         env                  : REnv
         finalRVarMp          : RVarMp
         knTy                 : RelevTy
         knTyCase             : RelevTy
         lamMp                : LamMp
         lev                  : Int
         opts                 : EHCOpts
         whatTo               : [WhatToRelevInfer]
      chained attributes:
         gUniq                : UID
         patFldTyL            : [(RelevTy,RelevTy)]
         rvarMp               : RVarMp
      synthesized attributes:
         cTrf                 : CPatFldL 
         fldNmL               : [HsName]
         fvS                  : FvS
         nmL                  : [HsName]
         oTrf                 : CPatFldL 
         qualS                : RelevQualS
   alternatives:
      alternative Cons:
         child hd             : CPatFld 
         child tl             : CPatFldL 
         visit 0:
            local cTrf        : _
            local oTrf        : _
      alternative Nil:
         visit 0:
            local cTrf        : _
            local oTrf        : _
-}
-- cata
sem_CPatFldL :: CPatFldL ->
                T_CPatFldL
sem_CPatFldL list =
    (Prelude.foldr sem_CPatFldL_Cons sem_CPatFldL_Nil (Prelude.map sem_CPatFld list))
-- semantic domain
type T_CPatFldL = UIDS ->
                  DataGam ->
                  REnv ->
                  RVarMp ->
                  UID ->
                  RelevTy ->
                  RelevTy ->
                  LamMp ->
                  Int ->
                  EHCOpts ->
                  ([(RelevTy,RelevTy)]) ->
                  RVarMp ->
                  ([WhatToRelevInfer]) ->
                  ( CPatFldL,([HsName]),FvS,UID,([HsName]),CPatFldL,([(RelevTy,RelevTy)]),RelevQualS,RVarMp)
sem_CPatFldL_Cons :: T_CPatFld ->
                     T_CPatFldL ->
                     T_CPatFldL
sem_CPatFldL_Cons hd_ tl_ =
    (\ _lhsIboundRelevTyVarS
       _lhsIdataGam
       _lhsIenv
       _lhsIfinalRVarMp
       _lhsIgUniq
       _lhsIknTy
       _lhsIknTyCase
       _lhsIlamMp
       _lhsIlev
       _lhsIopts
       _lhsIpatFldTyL
       _lhsIrvarMp
       _lhsIwhatTo ->
         (let _lhsOfldNmL :: ([HsName])
              _lhsOfvS :: FvS
              _lhsOnmL :: ([HsName])
              _lhsOqualS :: RelevQualS
              _lhsOcTrf :: CPatFldL
              _lhsOoTrf :: CPatFldL
              _lhsOgUniq :: UID
              _lhsOpatFldTyL :: ([(RelevTy,RelevTy)])
              _lhsOrvarMp :: RVarMp
              _hdOboundRelevTyVarS :: UIDS
              _hdOdataGam :: DataGam
              _hdOenv :: REnv
              _hdOfinalRVarMp :: RVarMp
              _hdOgUniq :: UID
              _hdOknTy :: RelevTy
              _hdOknTyCase :: RelevTy
              _hdOlamMp :: LamMp
              _hdOlev :: Int
              _hdOopts :: EHCOpts
              _hdOpatFldTyL :: ([(RelevTy,RelevTy)])
              _hdOrvarMp :: RVarMp
              _hdOwhatTo :: ([WhatToRelevInfer])
              _tlOboundRelevTyVarS :: UIDS
              _tlOdataGam :: DataGam
              _tlOenv :: REnv
              _tlOfinalRVarMp :: RVarMp
              _tlOgUniq :: UID
              _tlOknTy :: RelevTy
              _tlOknTyCase :: RelevTy
              _tlOlamMp :: LamMp
              _tlOlev :: Int
              _tlOopts :: EHCOpts
              _tlOpatFldTyL :: ([(RelevTy,RelevTy)])
              _tlOrvarMp :: RVarMp
              _tlOwhatTo :: ([WhatToRelevInfer])
              _hdIcTrf :: CPatFld
              _hdIfldNmL :: ([HsName])
              _hdIfvS :: FvS
              _hdIgUniq :: UID
              _hdInmL :: ([HsName])
              _hdIoTrf :: CPatFld
              _hdIpatFldTyL :: ([(RelevTy,RelevTy)])
              _hdIqualS :: RelevQualS
              _hdIrvarMp :: RVarMp
              _tlIcTrf :: CPatFldL
              _tlIfldNmL :: ([HsName])
              _tlIfvS :: FvS
              _tlIgUniq :: UID
              _tlInmL :: ([HsName])
              _tlIoTrf :: CPatFldL
              _tlIpatFldTyL :: ([(RelevTy,RelevTy)])
              _tlIqualS :: RelevQualS
              _tlIrvarMp :: RVarMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonBindNm.ag"(line 25, column 41)
              _lhsOfldNmL =
                  _hdIfldNmL ++ _tlIfldNmL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
              _lhsOfvS =
                  _hdIfvS `Set.union` _tlIfvS
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 16, column 31)
              _lhsOnmL =
                  _hdInmL ++ _tlInmL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
              _lhsOqualS =
                  _hdIqualS `Set.union` _tlIqualS
              -- self rule
              _cTrf =
                  (:) _hdIcTrf _tlIcTrf
              -- self rule
              _oTrf =
                  (:) _hdIoTrf _tlIoTrf
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- self rule
              _lhsOoTrf =
                  _oTrf
              -- copy rule (up)
              _lhsOgUniq =
                  _tlIgUniq
              -- copy rule (up)
              _lhsOpatFldTyL =
                  _tlIpatFldTyL
              -- copy rule (up)
              _lhsOrvarMp =
                  _tlIrvarMp
              -- copy rule (down)
              _hdOboundRelevTyVarS =
                  _lhsIboundRelevTyVarS
              -- copy rule (down)
              _hdOdataGam =
                  _lhsIdataGam
              -- copy rule (down)
              _hdOenv =
                  _lhsIenv
              -- copy rule (down)
              _hdOfinalRVarMp =
                  _lhsIfinalRVarMp
              -- copy rule (down)
              _hdOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _hdOknTy =
                  _lhsIknTy
              -- copy rule (down)
              _hdOknTyCase =
                  _lhsIknTyCase
              -- copy rule (down)
              _hdOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _hdOlev =
                  _lhsIlev
              -- copy rule (down)
              _hdOopts =
                  _lhsIopts
              -- copy rule (down)
              _hdOpatFldTyL =
                  _lhsIpatFldTyL
              -- copy rule (down)
              _hdOrvarMp =
                  _lhsIrvarMp
              -- copy rule (down)
              _hdOwhatTo =
                  _lhsIwhatTo
              -- copy rule (down)
              _tlOboundRelevTyVarS =
                  _lhsIboundRelevTyVarS
              -- copy rule (down)
              _tlOdataGam =
                  _lhsIdataGam
              -- copy rule (down)
              _tlOenv =
                  _lhsIenv
              -- copy rule (down)
              _tlOfinalRVarMp =
                  _lhsIfinalRVarMp
              -- copy rule (chain)
              _tlOgUniq =
                  _hdIgUniq
              -- copy rule (down)
              _tlOknTy =
                  _lhsIknTy
              -- copy rule (down)
              _tlOknTyCase =
                  _lhsIknTyCase
              -- copy rule (down)
              _tlOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _tlOlev =
                  _lhsIlev
              -- copy rule (down)
              _tlOopts =
                  _lhsIopts
              -- copy rule (chain)
              _tlOpatFldTyL =
                  _hdIpatFldTyL
              -- copy rule (chain)
              _tlOrvarMp =
                  _hdIrvarMp
              -- copy rule (down)
              _tlOwhatTo =
                  _lhsIwhatTo
              ( _hdIcTrf,_hdIfldNmL,_hdIfvS,_hdIgUniq,_hdInmL,_hdIoTrf,_hdIpatFldTyL,_hdIqualS,_hdIrvarMp) =
                  hd_ _hdOboundRelevTyVarS _hdOdataGam _hdOenv _hdOfinalRVarMp _hdOgUniq _hdOknTy _hdOknTyCase _hdOlamMp _hdOlev _hdOopts _hdOpatFldTyL _hdOrvarMp _hdOwhatTo
              ( _tlIcTrf,_tlIfldNmL,_tlIfvS,_tlIgUniq,_tlInmL,_tlIoTrf,_tlIpatFldTyL,_tlIqualS,_tlIrvarMp) =
                  tl_ _tlOboundRelevTyVarS _tlOdataGam _tlOenv _tlOfinalRVarMp _tlOgUniq _tlOknTy _tlOknTyCase _tlOlamMp _tlOlev _tlOopts _tlOpatFldTyL _tlOrvarMp _tlOwhatTo
          in  ( _lhsOcTrf,_lhsOfldNmL,_lhsOfvS,_lhsOgUniq,_lhsOnmL,_lhsOoTrf,_lhsOpatFldTyL,_lhsOqualS,_lhsOrvarMp)))
sem_CPatFldL_Nil :: T_CPatFldL
sem_CPatFldL_Nil =
    (\ _lhsIboundRelevTyVarS
       _lhsIdataGam
       _lhsIenv
       _lhsIfinalRVarMp
       _lhsIgUniq
       _lhsIknTy
       _lhsIknTyCase
       _lhsIlamMp
       _lhsIlev
       _lhsIopts
       _lhsIpatFldTyL
       _lhsIrvarMp
       _lhsIwhatTo ->
         (let _lhsOfldNmL :: ([HsName])
              _lhsOfvS :: FvS
              _lhsOnmL :: ([HsName])
              _lhsOqualS :: RelevQualS
              _lhsOcTrf :: CPatFldL
              _lhsOoTrf :: CPatFldL
              _lhsOgUniq :: UID
              _lhsOpatFldTyL :: ([(RelevTy,RelevTy)])
              _lhsOrvarMp :: RVarMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonBindNm.ag"(line 25, column 41)
              _lhsOfldNmL =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
              _lhsOfvS =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 16, column 31)
              _lhsOnmL =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
              _lhsOqualS =
                  Set.empty
              -- self rule
              _cTrf =
                  []
              -- self rule
              _oTrf =
                  []
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- self rule
              _lhsOoTrf =
                  _oTrf
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOpatFldTyL =
                  _lhsIpatFldTyL
              -- copy rule (chain)
              _lhsOrvarMp =
                  _lhsIrvarMp
          in  ( _lhsOcTrf,_lhsOfldNmL,_lhsOfvS,_lhsOgUniq,_lhsOnmL,_lhsOoTrf,_lhsOpatFldTyL,_lhsOqualS,_lhsOrvarMp)))
-- CPatRest ----------------------------------------------------
{-
   visit 0:
      inherited attributes:
         boundRelevTyVarS     : UIDS
         dataGam              : DataGam
         env                  : REnv
         finalRVarMp          : RVarMp
         knTy                 : RelevTy
         knTyCase             : RelevTy
         lamMp                : LamMp
         lev                  : Int
         opts                 : EHCOpts
         whatTo               : [WhatToRelevInfer]
      chained attributes:
         gUniq                : UID
         rvarMp               : RVarMp
      synthesized attributes:
         cTrf                 : CPatRest 
         fvS                  : FvS
         nmL                  : [HsName]
         oTrf                 : CPatRest 
         qualS                : RelevQualS
   alternatives:
      alternative Var:
         child nm             : {HsName}
         visit 0:
            local cTrf        : _
            local oTrf        : _
      alternative Empty:
         visit 0:
            local cTrf        : _
            local oTrf        : _
-}
-- cata
sem_CPatRest :: CPatRest ->
                T_CPatRest
sem_CPatRest (CPatRest_Var _nm) =
    (sem_CPatRest_Var _nm)
sem_CPatRest (CPatRest_Empty) =
    (sem_CPatRest_Empty)
-- semantic domain
type T_CPatRest = UIDS ->
                  DataGam ->
                  REnv ->
                  RVarMp ->
                  UID ->
                  RelevTy ->
                  RelevTy ->
                  LamMp ->
                  Int ->
                  EHCOpts ->
                  RVarMp ->
                  ([WhatToRelevInfer]) ->
                  ( CPatRest,FvS,UID,([HsName]),CPatRest,RelevQualS,RVarMp)
sem_CPatRest_Var :: HsName ->
                    T_CPatRest
sem_CPatRest_Var nm_ =
    (\ _lhsIboundRelevTyVarS
       _lhsIdataGam
       _lhsIenv
       _lhsIfinalRVarMp
       _lhsIgUniq
       _lhsIknTy
       _lhsIknTyCase
       _lhsIlamMp
       _lhsIlev
       _lhsIopts
       _lhsIrvarMp
       _lhsIwhatTo ->
         (let _lhsOnmL :: ([HsName])
              _lhsOfvS :: FvS
              _lhsOqualS :: RelevQualS
              _lhsOcTrf :: CPatRest
              _lhsOoTrf :: CPatRest
              _lhsOgUniq :: UID
              _lhsOrvarMp :: RVarMp
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 25, column 17)
              _lhsOnmL =
                  [nm_]
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
              _lhsOfvS =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
              _lhsOqualS =
                  Set.empty
              -- self rule
              _cTrf =
                  CPatRest_Var nm_
              -- self rule
              _oTrf =
                  CPatRest_Var nm_
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- self rule
              _lhsOoTrf =
                  _oTrf
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOrvarMp =
                  _lhsIrvarMp
          in  ( _lhsOcTrf,_lhsOfvS,_lhsOgUniq,_lhsOnmL,_lhsOoTrf,_lhsOqualS,_lhsOrvarMp)))
sem_CPatRest_Empty :: T_CPatRest
sem_CPatRest_Empty =
    (\ _lhsIboundRelevTyVarS
       _lhsIdataGam
       _lhsIenv
       _lhsIfinalRVarMp
       _lhsIgUniq
       _lhsIknTy
       _lhsIknTyCase
       _lhsIlamMp
       _lhsIlev
       _lhsIopts
       _lhsIrvarMp
       _lhsIwhatTo ->
         (let _lhsOfvS :: FvS
              _lhsOnmL :: ([HsName])
              _lhsOqualS :: RelevQualS
              _lhsOcTrf :: CPatRest
              _lhsOoTrf :: CPatRest
              _lhsOgUniq :: UID
              _lhsOrvarMp :: RVarMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
              _lhsOfvS =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 16, column 31)
              _lhsOnmL =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
              _lhsOqualS =
                  Set.empty
              -- self rule
              _cTrf =
                  CPatRest_Empty
              -- self rule
              _oTrf =
                  CPatRest_Empty
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- self rule
              _lhsOoTrf =
                  _oTrf
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOrvarMp =
                  _lhsIrvarMp
          in  ( _lhsOcTrf,_lhsOfvS,_lhsOgUniq,_lhsOnmL,_lhsOoTrf,_lhsOqualS,_lhsOrvarMp)))
-- CodeAGItf ---------------------------------------------------
{-
   visit 0:
      inherited attributes:
         dataGam              : DataGam
         lamMp                : LamMp
         opts                 : EHCOpts
      synthesized attributes:
         cTrf                 : CModule 
         gathLamMp            : LamMp
   alternatives:
      alternative AGItf:
         child module         : CModule 
         visit 0:
            local gathLamMp   : _
            local whatTo      : _
            local howUnionGathLamInfo : _
            local howMergeLamInfo : _
            local gUniq       : _
            local env         : _
            local rvarMp      : _
-}
-- cata
sem_CodeAGItf :: CodeAGItf ->
                 T_CodeAGItf
sem_CodeAGItf (CodeAGItf_AGItf _module) =
    (sem_CodeAGItf_AGItf (sem_CModule _module))
-- semantic domain
type T_CodeAGItf = DataGam ->
                   LamMp ->
                   EHCOpts ->
                   ( CModule,LamMp)
data Inh_CodeAGItf = Inh_CodeAGItf {dataGam_Inh_CodeAGItf :: !(DataGam),lamMp_Inh_CodeAGItf :: !(LamMp),opts_Inh_CodeAGItf :: !(EHCOpts)}
data Syn_CodeAGItf = Syn_CodeAGItf {cTrf_Syn_CodeAGItf :: !(CModule),gathLamMp_Syn_CodeAGItf :: !(LamMp)}
wrap_CodeAGItf :: T_CodeAGItf ->
                  Inh_CodeAGItf ->
                  Syn_CodeAGItf
wrap_CodeAGItf sem (Inh_CodeAGItf _lhsIdataGam _lhsIlamMp _lhsIopts) =
    (let ( _lhsOcTrf,_lhsOgathLamMp) = sem _lhsIdataGam _lhsIlamMp _lhsIopts
     in  (Syn_CodeAGItf _lhsOcTrf _lhsOgathLamMp))
sem_CodeAGItf_AGItf :: T_CModule ->
                       T_CodeAGItf
sem_CodeAGItf_AGItf module_ =
    (\ _lhsIdataGam
       _lhsIlamMp
       _lhsIopts ->
         (let _moduleOlamMp :: LamMp
              _moduleOlev :: Int
              _moduleOfinalRVarMp :: RVarMp
              _lhsOcTrf :: CModule
              _lhsOgathLamMp :: LamMp
              _moduleOdataGam :: DataGam
              _moduleOenv :: REnv
              _moduleOgUniq :: UID
              _moduleOopts :: EHCOpts
              _moduleOrvarMp :: RVarMp
              _moduleOwhatTo :: ([WhatToRelevInfer])
              _moduleIcTrf :: CModule
              _moduleIfvS :: FvS
              _moduleIgUniq :: UID
              _moduleIgathLamMp :: LamMp
              _moduleIqualS :: RelevQualS
              _moduleIrvarMp :: RVarMp
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 15, column 17)
              _gathLamMp =
                  lamMpMergeInto _howMergeLamInfo const _moduleIgathLamMp _lhsIlamMp
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 16, column 17)
              _moduleOlamMp =
                  _howUnionGathLamInfo _lhsIlamMp
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonLev.ag"(line 4, column 17)
              _moduleOlev =
                  cLevModule
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 104, column 17)
              _whatTo =
                  case optimizeOptionStictnessAnalysisQuant (ehcOptOptimizeOptionMp _lhsIopts) of
                    OptimizeOptionValue_StrictnessAnalysis_NoQuant          -> [                                                    ]
                    OptimizeOptionValue_StrictnessAnalysis_QuantInstantiate -> [ WhatToRelevInfer_Quant, WhatToRelevInfer_InstToBot ]
                    _                                                       -> [ WhatToRelevInfer_Quant                             ]
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 110, column 17)
              _howUnionGathLamInfo =
                  id
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 114, column 17)
              _howMergeLamInfo =
                  (\(LamInfo {laminfoBindAspMp=m}) i -> i {laminfoBindAspMp = m `Map.union` laminfoBindAspMp i})
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 146, column 17)
              _gUniq =
                  uidStart
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 153, column 17)
              _env =
                  emptyGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 375, column 17)
              _rvarMp =
                  emptyRVarMp
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 402, column 17)
              _moduleOfinalRVarMp =
                  _moduleIrvarMp
              -- copy rule (up)
              _lhsOcTrf =
                  _moduleIcTrf
              -- copy rule (from local)
              _lhsOgathLamMp =
                  _gathLamMp
              -- copy rule (down)
              _moduleOdataGam =
                  _lhsIdataGam
              -- copy rule (from local)
              _moduleOenv =
                  _env
              -- copy rule (from local)
              _moduleOgUniq =
                  _gUniq
              -- copy rule (down)
              _moduleOopts =
                  _lhsIopts
              -- copy rule (from local)
              _moduleOrvarMp =
                  _rvarMp
              -- copy rule (from local)
              _moduleOwhatTo =
                  _whatTo
              ( _moduleIcTrf,_moduleIfvS,_moduleIgUniq,_moduleIgathLamMp,_moduleIqualS,_moduleIrvarMp) =
                  module_ _moduleOdataGam _moduleOenv _moduleOfinalRVarMp _moduleOgUniq _moduleOlamMp _moduleOlev _moduleOopts _moduleOrvarMp _moduleOwhatTo
          in  ( _lhsOcTrf,_lhsOgathLamMp)))