packages feed

uhc-light-1.1.9.3: src/UHC/Light/Compiler/Core/Trf/RenUniq.hs


-- UUAGC 0.9.52.2 (build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/RenUn)
module UHC.Light.Compiler.Core.Trf.RenUniq(RenUniqOpts (..), emptyRenUniqOpts
, cmodTrfRenUniq) where

import Data.Maybe
import Data.Char
import Control.Monad (liftM)
import qualified Data.Map as Map
import UHC.Util.Utils
import UHC.Light.Compiler.Base.Common
import UHC.Light.Compiler.Base.HsName.Builtin
import UHC.Light.Compiler.Core
import UHC.Light.Compiler.Ty
import UHC.Light.Compiler.AbstractCore











data RenUniqOpts
  = RenUniqOpts
      { renuniqOptResetOnlyInLam    :: Bool             -- restart numbering in lambda only, throwing away all name modifiers previously added
      }

emptyRenUniqOpts :: RenUniqOpts
emptyRenUniqOpts = RenUniqOpts False



cmodTrfRenUniq :: RenUniqOpts -> CModule -> CModule
cmodTrfRenUniq ropts cmod
  =  let  t = wrap_CodeAGItf  (sem_CodeAGItf (CodeAGItf_AGItf cmod))
                              (Inh_CodeAGItf { gIniq_Inh_CodeAGItf = 1
                                             -- , gUniq_Inh_CodeAGItf = uidStart
                                             , ropts_Inh_CodeAGItf = ropts
                                             })
     in   cTrf_Syn_CodeAGItf t



newIniq :: Int -> Int -> (Int,[Int])
newIniq nr seed = (seed+nr, [seed .. seed + nr -1])



type NmMp = Map.Map HsName HsName
type ARenMp
  = ( NmMp          -- forward map, from old -> new
    , NmMp          -- backward map, from new -> old
    )

emptyARenMp :: ARenMp
emptyARenMp = (Map.empty, Map.empty)



-- breaks assumption that globals are qualified, locals not. Problem in future when records are used for globals and access differs.
mkUniqGlob :: NmMp -> HsName -> HsName -> Maybe Int -> (HsName,NmMp)
mkUniqGlob mb q n mbU
  = (
      (if hsnIsQual n
       then id
       else hsnSetQual q
      ) $
      maybe n (\u -> hsnUniqifyInt HsNameUniqifier_GloballyUnique u n) mbU
    , mb
    )



-- breaks assumption that globals are qualified, locals not. Problem in future when records are used for globals and access differs.
mkUniqLoc :: NmMp -> HsName -> HsName -> Maybe Int -> (HsName,NmMp)
mkUniqLoc mb q n mbU
  = ( -- tr "mkUniqLoc" (n >#< n2 >#< n3 >#< n5) $
      n5
    , Map.insert n5 n mb
    )
  where n2 = hsnStripUniqifiers $ hsnQualified n
        n3 = case hsnBaseUnpack n2 of
               Just ('_':_, _) -> mkHNm "_"
               _               -> n2
        n5 | Map.member n3 mb = hsnUniqifyInt HsNameUniqifier_Blank (panicJust "RenUniq.mkUniqLoc" mbU) $ hsnStripUniqifiers n3
           | otherwise        = n3
           -- where mbExists@(~(Just n4)) = Map.lookup n3 mb



aRenAdd :: RenUniqOpts -> Bool -> HsName -> [HsName] -> [Int] -> ARenMp -> ARenMp
aRenAdd ropts isGlob q nL uL mfb@(mf,mb)
  = foldr (\(n,u) (mf,mb) -> let (n',mb') = mkNm mb n u in (Map.insert n n' mf,mb')) mfb $ zip nL uL
  where mkNm mb n u
          | doChng && isUnqualifiedGlob
                       = mkUniq mb q n Nothing
          | doChng     = mkUniq mb q n (Just u)
          | otherwise  = (n,mb)
          where doChng
                   = isChangeable
                     || isUnqualifiedGlob
                isUnqualifiedGlob = isGlob && not onlyLam && isNothing (hsnQualifier n) && n /= hsnMain
                isChangeable = not isGlob || n `Map.member` mf
                onlyLam = renuniqOptResetOnlyInLam ropts
                mkUniq | onlyLam   = mkUniqLoc
                       | otherwise = mkUniqGlob



aRenRepl :: ARenMp -> HsName -> HsName
aRenRepl (mf,_) n = maybe n id . Map.lookup n $ mf

-- CAlt --------------------------------------------------------
{-
   visit 0:
      inherited attributes:
         protectedBindingNames : [HsName]
         ropts                : RenUniqOpts
      chained attribute:
         gIniq                : Int
   visit 1:
      inherited attributes:
         aRenMp               : ARenMp
         lev                  : Int
         moduleNm             : HsName
      synthesized attribute:
         cTrf                 : CAlt 
   alternatives:
      alternative Alt:
         child pat            : CPat 
         child expr           : CExpr 
         visit 0:
            local _tup1       : _
         visit 1:
            local lIniq       : _
            local aRenMp      : _
            local cTrf        : _
            intra _tup1       : _
-}
-- 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 = Int ->
              ([HsName]) ->
              RenUniqOpts ->
              ( Int,T_CAlt_1)
type T_CAlt_1 = ARenMp ->
                Int ->
                HsName ->
                ( CAlt)
sem_CAlt_Alt :: T_CPat ->
                T_CExpr ->
                T_CAlt
sem_CAlt_Alt pat_ expr_ =
    (\ _lhsIgIniq
       _lhsIprotectedBindingNames
       _lhsIropts ->
         (case (_lhsIropts) of
          { _exprOropts | _exprOropts `seq` (True) ->
          (case (_lhsIprotectedBindingNames) of
           { _exprOprotectedBindingNames | _exprOprotectedBindingNames `seq` (True) ->
           (case (_lhsIropts) of
            { _patOropts | _patOropts `seq` (True) ->
            (case (pat_) of
             { ( _patInmL,pat_1) | True ->
                 (case (newIniq (length _patInmL) _lhsIgIniq) of
                  { __tup1 | __tup1 `seq` (True) ->
                  (case (__tup1) of
                   { (_patOgIniq,_) | _patOgIniq `seq` (True) ->
                   (case (pat_1 _patOgIniq _patOropts) of
                    { ( _patIgIniq,pat_2) | True ->
                        (case (_patIgIniq) of
                         { _exprOgIniq | _exprOgIniq `seq` (True) ->
                         (case (expr_ _exprOgIniq _exprOprotectedBindingNames _exprOropts) of
                          { ( _exprIgIniq,_exprIisLamBody,expr_1) | True ->
                              (case (_exprIgIniq) of
                               { _lhsOgIniq | _lhsOgIniq `seq` (True) ->
                               (case ((let sem_CAlt_Alt_1 :: T_CAlt_1
                                           sem_CAlt_Alt_1 =
                                               (\ _lhsIaRenMp
                                                  _lhsIlev
                                                  _lhsImoduleNm ->
                                                    (case (_lhsImoduleNm) of
                                                     { _exprOmoduleNm | _exprOmoduleNm `seq` (True) ->
                                                     (case (_lhsIlev + 1) of
                                                      { _exprOlev | _exprOlev `seq` (True) ->
                                                      (case (__tup1) of
                                                       { (_,_lIniq) | _lIniq `seq` (True) ->
                                                       (case (aRenAdd _lhsIropts False
                                                                      _lhsImoduleNm
                                                                      _patInmL _lIniq _lhsIaRenMp) of
                                                        { _exprOaccumARenMp | _exprOaccumARenMp `seq` (True) ->
                                                        (case (expr_1 _exprOaccumARenMp _exprOlev _exprOmoduleNm) of
                                                         { ( _exprIaccumARenMp,expr_2) | True ->
                                                             (case (_exprIaccumARenMp) of
                                                              { _aRenMp | _aRenMp `seq` (True) ->
                                                              (case (_aRenMp) of
                                                               { _exprOaRenMp | _exprOaRenMp `seq` (True) ->
                                                               (case (_lhsImoduleNm) of
                                                                { _patOmoduleNm | _patOmoduleNm `seq` (True) ->
                                                                (case (_lhsIlev) of
                                                                 { _patOlev | _patOlev `seq` (True) ->
                                                                 (case (_aRenMp) of
                                                                  { _patOaRenMp | _patOaRenMp `seq` (True) ->
                                                                  (case (expr_2 _exprOaRenMp) of
                                                                   { ( _exprIcTrf) | True ->
                                                                       (case (pat_2 _patOaRenMp _patOlev _patOmoduleNm) of
                                                                        { ( _patIcTrf,_patIfldNmL) | True ->
                                                                            (case (CAlt_Alt _patIcTrf _exprIcTrf) of
                                                                             { _cTrf | _cTrf `seq` (True) ->
                                                                             (case (_cTrf) of
                                                                              { _lhsOcTrf | _lhsOcTrf `seq` (True) ->
                                                                              ( _lhsOcTrf) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
                                       in  sem_CAlt_Alt_1)) of
                                { ( sem_CAlt_1) | True ->
                                ( _lhsOgIniq,sem_CAlt_1) }) }) }) }) }) }) }) }) }) }) }))
-- CAltL -------------------------------------------------------
{-
   visit 0:
      inherited attributes:
         protectedBindingNames : [HsName]
         ropts                : RenUniqOpts
      chained attribute:
         gIniq                : Int
   visit 1:
      inherited attributes:
         aRenMp               : ARenMp
         lev                  : Int
         moduleNm             : HsName
      synthesized attribute:
         cTrf                 : CAltL 
   alternatives:
      alternative Cons:
         child hd             : CAlt 
         child tl             : CAltL 
         visit 1:
            local cTrf        : _
      alternative Nil:
         visit 1:
            local cTrf        : _
-}
-- 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 = Int ->
               ([HsName]) ->
               RenUniqOpts ->
               ( Int,T_CAltL_1)
type T_CAltL_1 = ARenMp ->
                 Int ->
                 HsName ->
                 ( CAltL)
sem_CAltL_Cons :: T_CAlt ->
                  T_CAltL ->
                  T_CAltL
sem_CAltL_Cons hd_ tl_ =
    (\ _lhsIgIniq
       _lhsIprotectedBindingNames
       _lhsIropts ->
         (case (_lhsIropts) of
          { _tlOropts | _tlOropts `seq` (True) ->
          (case (_lhsIprotectedBindingNames) of
           { _tlOprotectedBindingNames | _tlOprotectedBindingNames `seq` (True) ->
           (case (_lhsIropts) of
            { _hdOropts | _hdOropts `seq` (True) ->
            (case (_lhsIprotectedBindingNames) of
             { _hdOprotectedBindingNames | _hdOprotectedBindingNames `seq` (True) ->
             (case (_lhsIgIniq) of
              { _hdOgIniq | _hdOgIniq `seq` (True) ->
              (case (hd_ _hdOgIniq _hdOprotectedBindingNames _hdOropts) of
               { ( _hdIgIniq,hd_1) | True ->
                   (case (_hdIgIniq) of
                    { _tlOgIniq | _tlOgIniq `seq` (True) ->
                    (case (tl_ _tlOgIniq _tlOprotectedBindingNames _tlOropts) of
                     { ( _tlIgIniq,tl_1) | True ->
                         (case (_tlIgIniq) of
                          { _lhsOgIniq | _lhsOgIniq `seq` (True) ->
                          (case ((let sem_CAltL_Cons_1 :: T_CAltL_1
                                      sem_CAltL_Cons_1 =
                                          (\ _lhsIaRenMp
                                             _lhsIlev
                                             _lhsImoduleNm ->
                                               (case (_lhsImoduleNm) of
                                                { _tlOmoduleNm | _tlOmoduleNm `seq` (True) ->
                                                (case (_lhsIlev) of
                                                 { _tlOlev | _tlOlev `seq` (True) ->
                                                 (case (_lhsIaRenMp) of
                                                  { _tlOaRenMp | _tlOaRenMp `seq` (True) ->
                                                  (case (_lhsImoduleNm) of
                                                   { _hdOmoduleNm | _hdOmoduleNm `seq` (True) ->
                                                   (case (_lhsIlev) of
                                                    { _hdOlev | _hdOlev `seq` (True) ->
                                                    (case (_lhsIaRenMp) of
                                                     { _hdOaRenMp | _hdOaRenMp `seq` (True) ->
                                                     (case (tl_1 _tlOaRenMp _tlOlev _tlOmoduleNm) of
                                                      { ( _tlIcTrf) | True ->
                                                          (case (hd_1 _hdOaRenMp _hdOlev _hdOmoduleNm) of
                                                           { ( _hdIcTrf) | True ->
                                                               (case ((:) _hdIcTrf _tlIcTrf) of
                                                                { _cTrf | _cTrf `seq` (True) ->
                                                                (case (_cTrf) of
                                                                 { _lhsOcTrf | _lhsOcTrf `seq` (True) ->
                                                                 ( _lhsOcTrf) }) }) }) }) }) }) }) }) }) }))
                                  in  sem_CAltL_Cons_1)) of
                           { ( sem_CAltL_1) | True ->
                           ( _lhsOgIniq,sem_CAltL_1) }) }) }) }) }) }) }) }) }) }))
sem_CAltL_Nil :: T_CAltL
sem_CAltL_Nil =
    (\ _lhsIgIniq
       _lhsIprotectedBindingNames
       _lhsIropts ->
         (case (_lhsIgIniq) of
          { _lhsOgIniq | _lhsOgIniq `seq` (True) ->
          (case ((let sem_CAltL_Nil_1 :: T_CAltL_1
                      sem_CAltL_Nil_1 =
                          (\ _lhsIaRenMp
                             _lhsIlev
                             _lhsImoduleNm ->
                               (case ([]) of
                                { _cTrf | _cTrf `seq` (True) ->
                                (case (_cTrf) of
                                 { _lhsOcTrf | _lhsOcTrf `seq` (True) ->
                                 ( _lhsOcTrf) }) }))
                  in  sem_CAltL_Nil_1)) of
           { ( sem_CAltL_1) | True ->
           ( _lhsOgIniq,sem_CAltL_1) }) }))
-- CBind -------------------------------------------------------
{-
   visit 0:
      inherited attribute:
         protectedBindingNames : [HsName]
      synthesized attributes:
         nm                   : HsName
         nmL                  : [HsName]
   visit 1:
      inherited attribute:
         ropts                : RenUniqOpts
      chained attribute:
         gIniq                : Int
   visit 2:
      inherited attributes:
         aRenMp               : ARenMp
         lev                  : Int
         moduleNm             : HsName
      synthesized attribute:
         cTrf                 : CBind 
   alternatives:
      alternative Bind:
         child nm             : {HsName}
         child bindAspects    : CBoundL 
-}
-- cata
sem_CBind :: CBind ->
             T_CBind
sem_CBind (CBind_Bind _nm _bindAspects) =
    (sem_CBind_Bind _nm (sem_CBoundL _bindAspects))
-- semantic domain
type T_CBind = ([HsName]) ->
               ( HsName,([HsName]),T_CBind_1)
type T_CBind_1 = Int ->
                 RenUniqOpts ->
                 ( Int,T_CBind_2)
type T_CBind_2 = ARenMp ->
                 Int ->
                 HsName ->
                 ( CBind)
sem_CBind_Bind :: HsName ->
                  T_CBoundL ->
                  T_CBind
sem_CBind_Bind nm_ bindAspects_ =
    (\ _lhsIprotectedBindingNames ->
         (case (nm_) of
          { _lhsOnm | _lhsOnm `seq` (True) ->
          (case (if   nm_ `elem` _lhsIprotectedBindingNames
                 then []
                 else [nm_]) of
           { _lhsOnmL | _lhsOnmL `seq` (True) ->
           (case ((let sem_CBind_Bind_1 :: T_CBind_1
                       sem_CBind_Bind_1 =
                           (\ _lhsIgIniq
                              _lhsIropts ->
                                (case (_lhsIropts) of
                                 { _bindAspectsOropts | _bindAspectsOropts `seq` (True) ->
                                 (case (_lhsIprotectedBindingNames) of
                                  { _bindAspectsOprotectedBindingNames | _bindAspectsOprotectedBindingNames `seq` (True) ->
                                  (case (_lhsIgIniq) of
                                   { _bindAspectsOgIniq | _bindAspectsOgIniq `seq` (True) ->
                                   (case (bindAspects_ _bindAspectsOgIniq _bindAspectsOprotectedBindingNames _bindAspectsOropts) of
                                    { ( _bindAspectsIgIniq,bindAspects_1) | True ->
                                        (case (_bindAspectsIgIniq) of
                                         { _lhsOgIniq | _lhsOgIniq `seq` (True) ->
                                         (case ((let sem_CBind_Bind_2 :: T_CBind_2
                                                     sem_CBind_Bind_2 =
                                                         (\ _lhsIaRenMp
                                                            _lhsIlev
                                                            _lhsImoduleNm ->
                                                              (case (_lhsImoduleNm) of
                                                               { _bindAspectsOmoduleNm | _bindAspectsOmoduleNm `seq` (True) ->
                                                               (case (_lhsIlev) of
                                                                { _bindAspectsOlev | _bindAspectsOlev `seq` (True) ->
                                                                (case (_lhsIaRenMp) of
                                                                 { _bindAspectsOaRenMp | _bindAspectsOaRenMp `seq` (True) ->
                                                                 (case (nm_) of
                                                                  { _bindAspectsOnm | _bindAspectsOnm `seq` (True) ->
                                                                  (case (bindAspects_1 _bindAspectsOaRenMp _bindAspectsOlev _bindAspectsOmoduleNm _bindAspectsOnm) of
                                                                   { ( _bindAspectsIcTrf,_bindAspectsInmL) | True ->
                                                                       (case (CBind_Bind (aRenRepl _lhsIaRenMp nm_) _bindAspectsIcTrf) of
                                                                        { _lhsOcTrf | _lhsOcTrf `seq` (True) ->
                                                                        ( _lhsOcTrf) }) }) }) }) }) }))
                                                 in  sem_CBind_Bind_2)) of
                                          { ( sem_CBind_2) | True ->
                                          ( _lhsOgIniq,sem_CBind_2) }) }) }) }) }) }))
                   in  sem_CBind_Bind_1)) of
            { ( sem_CBind_1) | True ->
            ( _lhsOnm,_lhsOnmL,sem_CBind_1) }) }) }))
-- CBindAnn ----------------------------------------------------
{-
   visit 0:
      chained attribute:
         gIniq                : Int
   visit 1:
      inherited attributes:
         aRenMp               : ARenMp
         lev                  : Int
         moduleNm             : HsName
         ropts                : RenUniqOpts
      synthesized attributes:
         cTrf                 : CBindAnn 
         nmL                  : [HsName]
   alternatives:
      alternative Coe:
         child coe            : {()}
         visit 1:
            local cTrf        : _
-}
-- cata
sem_CBindAnn :: CBindAnn ->
                T_CBindAnn
sem_CBindAnn (CBindAnn_Coe _coe) =
    (sem_CBindAnn_Coe _coe)
-- semantic domain
type T_CBindAnn = Int ->
                  ( Int,T_CBindAnn_1)
type T_CBindAnn_1 = ARenMp ->
                    Int ->
                    HsName ->
                    RenUniqOpts ->
                    ( CBindAnn,([HsName]))
sem_CBindAnn_Coe :: (()) ->
                    T_CBindAnn
sem_CBindAnn_Coe coe_ =
    (\ _lhsIgIniq ->
         (case (_lhsIgIniq) of
          { _lhsOgIniq | _lhsOgIniq `seq` (True) ->
          (case ((let sem_CBindAnn_Coe_1 :: T_CBindAnn_1
                      sem_CBindAnn_Coe_1 =
                          (\ _lhsIaRenMp
                             _lhsIlev
                             _lhsImoduleNm
                             _lhsIropts ->
                               (case (CBindAnn_Coe coe_) of
                                { _cTrf | _cTrf `seq` (True) ->
                                (case (_cTrf) of
                                 { _lhsOcTrf | _lhsOcTrf `seq` (True) ->
                                 (case ([]) of
                                  { _lhsOnmL | _lhsOnmL `seq` (True) ->
                                  ( _lhsOcTrf,_lhsOnmL) }) }) }))
                  in  sem_CBindAnn_Coe_1)) of
           { ( sem_CBindAnn_1) | True ->
           ( _lhsOgIniq,sem_CBindAnn_1) }) }))
-- CBindAnnL ---------------------------------------------------
{-
   visit 0:
      chained attribute:
         gIniq                : Int
   visit 1:
      inherited attributes:
         aRenMp               : ARenMp
         lev                  : Int
         moduleNm             : HsName
         ropts                : RenUniqOpts
      synthesized attributes:
         cTrf                 : CBindAnnL 
         nmL                  : [HsName]
   alternatives:
      alternative Cons:
         child hd             : CBindAnn 
         child tl             : CBindAnnL 
         visit 1:
            local cTrf        : _
      alternative Nil:
         visit 1:
            local cTrf        : _
-}
-- 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 = Int ->
                   ( Int,T_CBindAnnL_1)
type T_CBindAnnL_1 = ARenMp ->
                     Int ->
                     HsName ->
                     RenUniqOpts ->
                     ( CBindAnnL,([HsName]))
sem_CBindAnnL_Cons :: T_CBindAnn ->
                      T_CBindAnnL ->
                      T_CBindAnnL
sem_CBindAnnL_Cons hd_ tl_ =
    (\ _lhsIgIniq ->
         (case (_lhsIgIniq) of
          { _hdOgIniq | _hdOgIniq `seq` (True) ->
          (case (hd_ _hdOgIniq) of
           { ( _hdIgIniq,hd_1) | True ->
               (case (_hdIgIniq) of
                { _tlOgIniq | _tlOgIniq `seq` (True) ->
                (case (tl_ _tlOgIniq) of
                 { ( _tlIgIniq,tl_1) | True ->
                     (case (_tlIgIniq) of
                      { _lhsOgIniq | _lhsOgIniq `seq` (True) ->
                      (case ((let sem_CBindAnnL_Cons_1 :: T_CBindAnnL_1
                                  sem_CBindAnnL_Cons_1 =
                                      (\ _lhsIaRenMp
                                         _lhsIlev
                                         _lhsImoduleNm
                                         _lhsIropts ->
                                           (case (_lhsIropts) of
                                            { _tlOropts | _tlOropts `seq` (True) ->
                                            (case (_lhsImoduleNm) of
                                             { _tlOmoduleNm | _tlOmoduleNm `seq` (True) ->
                                             (case (_lhsIlev) of
                                              { _tlOlev | _tlOlev `seq` (True) ->
                                              (case (_lhsIaRenMp) of
                                               { _tlOaRenMp | _tlOaRenMp `seq` (True) ->
                                               (case (tl_1 _tlOaRenMp _tlOlev _tlOmoduleNm _tlOropts) of
                                                { ( _tlIcTrf,_tlInmL) | True ->
                                                    (case (_lhsIropts) of
                                                     { _hdOropts | _hdOropts `seq` (True) ->
                                                     (case (_lhsImoduleNm) of
                                                      { _hdOmoduleNm | _hdOmoduleNm `seq` (True) ->
                                                      (case (_lhsIlev) of
                                                       { _hdOlev | _hdOlev `seq` (True) ->
                                                       (case (_lhsIaRenMp) of
                                                        { _hdOaRenMp | _hdOaRenMp `seq` (True) ->
                                                        (case (hd_1 _hdOaRenMp _hdOlev _hdOmoduleNm _hdOropts) of
                                                         { ( _hdIcTrf,_hdInmL) | True ->
                                                             (case ((:) _hdIcTrf _tlIcTrf) of
                                                              { _cTrf | _cTrf `seq` (True) ->
                                                              (case (_cTrf) of
                                                               { _lhsOcTrf | _lhsOcTrf `seq` (True) ->
                                                               (case (_hdInmL ++ _tlInmL) of
                                                                { _lhsOnmL | _lhsOnmL `seq` (True) ->
                                                                ( _lhsOcTrf,_lhsOnmL) }) }) }) }) }) }) }) }) }) }) }) }) }))
                              in  sem_CBindAnnL_Cons_1)) of
                       { ( sem_CBindAnnL_1) | True ->
                       ( _lhsOgIniq,sem_CBindAnnL_1) }) }) }) }) }) }))
sem_CBindAnnL_Nil :: T_CBindAnnL
sem_CBindAnnL_Nil =
    (\ _lhsIgIniq ->
         (case (_lhsIgIniq) of
          { _lhsOgIniq | _lhsOgIniq `seq` (True) ->
          (case ((let sem_CBindAnnL_Nil_1 :: T_CBindAnnL_1
                      sem_CBindAnnL_Nil_1 =
                          (\ _lhsIaRenMp
                             _lhsIlev
                             _lhsImoduleNm
                             _lhsIropts ->
                               (case ([]) of
                                { _cTrf | _cTrf `seq` (True) ->
                                (case (_cTrf) of
                                 { _lhsOcTrf | _lhsOcTrf `seq` (True) ->
                                 (case ([]) of
                                  { _lhsOnmL | _lhsOnmL `seq` (True) ->
                                  ( _lhsOcTrf,_lhsOnmL) }) }) }))
                  in  sem_CBindAnnL_Nil_1)) of
           { ( sem_CBindAnnL_1) | True ->
           ( _lhsOgIniq,sem_CBindAnnL_1) }) }))
-- CBindL ------------------------------------------------------
{-
   visit 0:
      inherited attribute:
         protectedBindingNames : [HsName]
      synthesized attribute:
         nmL                  : [HsName]
   visit 1:
      inherited attribute:
         ropts                : RenUniqOpts
      chained attribute:
         gIniq                : Int
   visit 2:
      inherited attributes:
         aRenMp               : ARenMp
         lev                  : Int
         moduleNm             : HsName
      synthesized attribute:
         cTrf                 : CBindL 
   alternatives:
      alternative Cons:
         child hd             : CBind 
         child tl             : CBindL 
         visit 2:
            local cTrf        : _
      alternative Nil:
         visit 2:
            local cTrf        : _
-}
-- 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 = ([HsName]) ->
                ( ([HsName]),T_CBindL_1)
type T_CBindL_1 = Int ->
                  RenUniqOpts ->
                  ( Int,T_CBindL_2)
type T_CBindL_2 = ARenMp ->
                  Int ->
                  HsName ->
                  ( CBindL)
sem_CBindL_Cons :: T_CBind ->
                   T_CBindL ->
                   T_CBindL
sem_CBindL_Cons hd_ tl_ =
    (\ _lhsIprotectedBindingNames ->
         (case (_lhsIprotectedBindingNames) of
          { _tlOprotectedBindingNames | _tlOprotectedBindingNames `seq` (True) ->
          (case (_lhsIprotectedBindingNames) of
           { _hdOprotectedBindingNames | _hdOprotectedBindingNames `seq` (True) ->
           (case (tl_ _tlOprotectedBindingNames) of
            { ( _tlInmL,tl_1) | True ->
                (case (hd_ _hdOprotectedBindingNames) of
                 { ( _hdInm,_hdInmL,hd_1) | True ->
                     (case (_hdInmL ++ _tlInmL) of
                      { _lhsOnmL | _lhsOnmL `seq` (True) ->
                      (case ((let sem_CBindL_Cons_1 :: T_CBindL_1
                                  sem_CBindL_Cons_1 =
                                      (\ _lhsIgIniq
                                         _lhsIropts ->
                                           (case (_lhsIropts) of
                                            { _tlOropts | _tlOropts `seq` (True) ->
                                            (case (_lhsIropts) of
                                             { _hdOropts | _hdOropts `seq` (True) ->
                                             (case (_lhsIgIniq) of
                                              { _hdOgIniq | _hdOgIniq `seq` (True) ->
                                              (case (hd_1 _hdOgIniq _hdOropts) of
                                               { ( _hdIgIniq,hd_2) | True ->
                                                   (case (_hdIgIniq) of
                                                    { _tlOgIniq | _tlOgIniq `seq` (True) ->
                                                    (case (tl_1 _tlOgIniq _tlOropts) of
                                                     { ( _tlIgIniq,tl_2) | True ->
                                                         (case (_tlIgIniq) of
                                                          { _lhsOgIniq | _lhsOgIniq `seq` (True) ->
                                                          (case ((let sem_CBindL_Cons_2 :: T_CBindL_2
                                                                      sem_CBindL_Cons_2 =
                                                                          (\ _lhsIaRenMp
                                                                             _lhsIlev
                                                                             _lhsImoduleNm ->
                                                                               (case (_lhsImoduleNm) of
                                                                                { _tlOmoduleNm | _tlOmoduleNm `seq` (True) ->
                                                                                (case (_lhsIlev) of
                                                                                 { _tlOlev | _tlOlev `seq` (True) ->
                                                                                 (case (_lhsIaRenMp) of
                                                                                  { _tlOaRenMp | _tlOaRenMp `seq` (True) ->
                                                                                  (case (_lhsImoduleNm) of
                                                                                   { _hdOmoduleNm | _hdOmoduleNm `seq` (True) ->
                                                                                   (case (_lhsIlev) of
                                                                                    { _hdOlev | _hdOlev `seq` (True) ->
                                                                                    (case (_lhsIaRenMp) of
                                                                                     { _hdOaRenMp | _hdOaRenMp `seq` (True) ->
                                                                                     (case (tl_2 _tlOaRenMp _tlOlev _tlOmoduleNm) of
                                                                                      { ( _tlIcTrf) | True ->
                                                                                          (case (hd_2 _hdOaRenMp _hdOlev _hdOmoduleNm) of
                                                                                           { ( _hdIcTrf) | True ->
                                                                                               (case ((:) _hdIcTrf _tlIcTrf) of
                                                                                                { _cTrf | _cTrf `seq` (True) ->
                                                                                                (case (_cTrf) of
                                                                                                 { _lhsOcTrf | _lhsOcTrf `seq` (True) ->
                                                                                                 ( _lhsOcTrf) }) }) }) }) }) }) }) }) }) }))
                                                                  in  sem_CBindL_Cons_2)) of
                                                           { ( sem_CBindL_2) | True ->
                                                           ( _lhsOgIniq,sem_CBindL_2) }) }) }) }) }) }) }) }))
                              in  sem_CBindL_Cons_1)) of
                       { ( sem_CBindL_1) | True ->
                       ( _lhsOnmL,sem_CBindL_1) }) }) }) }) }) }))
sem_CBindL_Nil :: T_CBindL
sem_CBindL_Nil =
    (\ _lhsIprotectedBindingNames ->
         (case ([]) of
          { _lhsOnmL | _lhsOnmL `seq` (True) ->
          (case ((let sem_CBindL_Nil_1 :: T_CBindL_1
                      sem_CBindL_Nil_1 =
                          (\ _lhsIgIniq
                             _lhsIropts ->
                               (case (_lhsIgIniq) of
                                { _lhsOgIniq | _lhsOgIniq `seq` (True) ->
                                (case ((let sem_CBindL_Nil_2 :: T_CBindL_2
                                            sem_CBindL_Nil_2 =
                                                (\ _lhsIaRenMp
                                                   _lhsIlev
                                                   _lhsImoduleNm ->
                                                     (case ([]) of
                                                      { _cTrf | _cTrf `seq` (True) ->
                                                      (case (_cTrf) of
                                                       { _lhsOcTrf | _lhsOcTrf `seq` (True) ->
                                                       ( _lhsOcTrf) }) }))
                                        in  sem_CBindL_Nil_2)) of
                                 { ( sem_CBindL_2) | True ->
                                 ( _lhsOgIniq,sem_CBindL_2) }) }))
                  in  sem_CBindL_Nil_1)) of
           { ( sem_CBindL_1) | True ->
           ( _lhsOnmL,sem_CBindL_1) }) }))
-- CBound ------------------------------------------------------
{-
   visit 0:
      inherited attributes:
         protectedBindingNames : [HsName]
         ropts                : RenUniqOpts
      chained attribute:
         gIniq                : Int
   visit 1:
      inherited attributes:
         aRenMp               : ARenMp
         lev                  : Int
         moduleNm             : HsName
         nm                   : HsName
      synthesized attributes:
         cTrf                 : CBound 
         nmL                  : [HsName]
   alternatives:
      alternative Bind:
         child expr           : CExpr 
         visit 1:
            local aRenMp      : _
            local cTrf        : _
      alternative Val:
         child aspectKeyS     : {ACoreBindAspectKeyS}
         child mlev           : {MetaLev}
         child lbl            : {CLbl}
         child expr           : CExpr 
         visit 1:
            local aRenMp      : _
            local cTrf        : _
      alternative Ty:
         child aspectKeyS     : {ACoreBindAspectKeyS}
         child ty             : {Ty}
         visit 1:
            local cTrf        : _
      alternative FFE:
         child callconv       : {FFIWay}
         child expEnt         : {ForeignEnt}
         child expr           : CExpr 
         child ty             : {Ty}
         visit 1:
            local aRenMp      : _
            local cTrf        : _
-}
-- cata
sem_CBound :: CBound ->
              T_CBound
sem_CBound (CBound_Bind _expr) =
    (sem_CBound_Bind (sem_CExpr _expr))
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 = Int ->
                ([HsName]) ->
                RenUniqOpts ->
                ( Int,T_CBound_1)
type T_CBound_1 = ARenMp ->
                  Int ->
                  HsName ->
                  HsName ->
                  ( CBound,([HsName]))
sem_CBound_Bind :: T_CExpr ->
                   T_CBound
sem_CBound_Bind expr_ =
    (\ _lhsIgIniq
       _lhsIprotectedBindingNames
       _lhsIropts ->
         (case (_lhsIropts) of
          { _exprOropts | _exprOropts `seq` (True) ->
          (case (_lhsIprotectedBindingNames) of
           { _exprOprotectedBindingNames | _exprOprotectedBindingNames `seq` (True) ->
           (case (if   renuniqOptResetOnlyInLam _lhsIropts
                  then 1
                  else _lhsIgIniq) of
            { _exprOgIniq | _exprOgIniq `seq` (True) ->
            (case (expr_ _exprOgIniq _exprOprotectedBindingNames _exprOropts) of
             { ( _exprIgIniq,_exprIisLamBody,expr_1) | True ->
                 (case (if   renuniqOptResetOnlyInLam _lhsIropts
                        then _lhsIgIniq
                        else _exprIgIniq) of
                  { _lhsOgIniq | _lhsOgIniq `seq` (True) ->
                  (case ((let sem_CBound_Bind_1 :: T_CBound_1
                              sem_CBound_Bind_1 =
                                  (\ _lhsIaRenMp
                                     _lhsIlev
                                     _lhsImoduleNm
                                     _lhsInm ->
                                       (case (_lhsImoduleNm) of
                                        { _exprOmoduleNm | _exprOmoduleNm `seq` (True) ->
                                        (case (_lhsIlev) of
                                         { _exprOlev | _exprOlev `seq` (True) ->
                                         (case (_lhsIaRenMp) of
                                          { _exprOaccumARenMp | _exprOaccumARenMp `seq` (True) ->
                                          (case (expr_1 _exprOaccumARenMp _exprOlev _exprOmoduleNm) of
                                           { ( _exprIaccumARenMp,expr_2) | True ->
                                               (case (_exprIaccumARenMp) of
                                                { _aRenMp | _aRenMp `seq` (True) ->
                                                (case (_aRenMp) of
                                                 { _exprOaRenMp | _exprOaRenMp `seq` (True) ->
                                                 (case (expr_2 _exprOaRenMp) of
                                                  { ( _exprIcTrf) | True ->
                                                      (case (CBound_Bind _exprIcTrf) of
                                                       { _cTrf | _cTrf `seq` (True) ->
                                                       (case (_cTrf) of
                                                        { _lhsOcTrf | _lhsOcTrf `seq` (True) ->
                                                        (case ([]) of
                                                         { _lhsOnmL | _lhsOnmL `seq` (True) ->
                                                         ( _lhsOcTrf,_lhsOnmL) }) }) }) }) }) }) }) }) }) }))
                          in  sem_CBound_Bind_1)) of
                   { ( sem_CBound_1) | True ->
                   ( _lhsOgIniq,sem_CBound_1) }) }) }) }) }) }))
sem_CBound_Val :: ACoreBindAspectKeyS ->
                  MetaLev ->
                  CLbl ->
                  T_CExpr ->
                  T_CBound
sem_CBound_Val aspectKeyS_ mlev_ lbl_ expr_ =
    (\ _lhsIgIniq
       _lhsIprotectedBindingNames
       _lhsIropts ->
         (case (_lhsIropts) of
          { _exprOropts | _exprOropts `seq` (True) ->
          (case (_lhsIprotectedBindingNames) of
           { _exprOprotectedBindingNames | _exprOprotectedBindingNames `seq` (True) ->
           (case (if   renuniqOptResetOnlyInLam _lhsIropts
                  then 1
                  else _lhsIgIniq) of
            { _exprOgIniq | _exprOgIniq `seq` (True) ->
            (case (expr_ _exprOgIniq _exprOprotectedBindingNames _exprOropts) of
             { ( _exprIgIniq,_exprIisLamBody,expr_1) | True ->
                 (case (if   renuniqOptResetOnlyInLam _lhsIropts
                        then _lhsIgIniq
                        else _exprIgIniq) of
                  { _lhsOgIniq | _lhsOgIniq `seq` (True) ->
                  (case ((let sem_CBound_Val_1 :: T_CBound_1
                              sem_CBound_Val_1 =
                                  (\ _lhsIaRenMp
                                     _lhsIlev
                                     _lhsImoduleNm
                                     _lhsInm ->
                                       (case (_lhsImoduleNm) of
                                        { _exprOmoduleNm | _exprOmoduleNm `seq` (True) ->
                                        (case (_lhsIlev) of
                                         { _exprOlev | _exprOlev `seq` (True) ->
                                         (case (_lhsIaRenMp) of
                                          { _exprOaccumARenMp | _exprOaccumARenMp `seq` (True) ->
                                          (case (expr_1 _exprOaccumARenMp _exprOlev _exprOmoduleNm) of
                                           { ( _exprIaccumARenMp,expr_2) | True ->
                                               (case (_exprIaccumARenMp) of
                                                { _aRenMp | _aRenMp `seq` (True) ->
                                                (case (_aRenMp) of
                                                 { _exprOaRenMp | _exprOaRenMp `seq` (True) ->
                                                 (case (expr_2 _exprOaRenMp) of
                                                  { ( _exprIcTrf) | True ->
                                                      (case (CBound_Val aspectKeyS_ mlev_ lbl_ _exprIcTrf) of
                                                       { _cTrf | _cTrf `seq` (True) ->
                                                       (case (_cTrf) of
                                                        { _lhsOcTrf | _lhsOcTrf `seq` (True) ->
                                                        (case ([]) of
                                                         { _lhsOnmL | _lhsOnmL `seq` (True) ->
                                                         ( _lhsOcTrf,_lhsOnmL) }) }) }) }) }) }) }) }) }) }))
                          in  sem_CBound_Val_1)) of
                   { ( sem_CBound_1) | True ->
                   ( _lhsOgIniq,sem_CBound_1) }) }) }) }) }) }))
sem_CBound_Ty :: ACoreBindAspectKeyS ->
                 Ty ->
                 T_CBound
sem_CBound_Ty aspectKeyS_ ty_ =
    (\ _lhsIgIniq
       _lhsIprotectedBindingNames
       _lhsIropts ->
         (case (_lhsIgIniq) of
          { _lhsOgIniq | _lhsOgIniq `seq` (True) ->
          (case ((let sem_CBound_Ty_1 :: T_CBound_1
                      sem_CBound_Ty_1 =
                          (\ _lhsIaRenMp
                             _lhsIlev
                             _lhsImoduleNm
                             _lhsInm ->
                               (case (CBound_Ty aspectKeyS_ ty_) of
                                { _cTrf | _cTrf `seq` (True) ->
                                (case (_cTrf) of
                                 { _lhsOcTrf | _lhsOcTrf `seq` (True) ->
                                 (case ([]) of
                                  { _lhsOnmL | _lhsOnmL `seq` (True) ->
                                  ( _lhsOcTrf,_lhsOnmL) }) }) }))
                  in  sem_CBound_Ty_1)) of
           { ( sem_CBound_1) | True ->
           ( _lhsOgIniq,sem_CBound_1) }) }))
sem_CBound_FFE :: FFIWay ->
                  ForeignEnt ->
                  T_CExpr ->
                  Ty ->
                  T_CBound
sem_CBound_FFE callconv_ expEnt_ expr_ ty_ =
    (\ _lhsIgIniq
       _lhsIprotectedBindingNames
       _lhsIropts ->
         (case (_lhsIropts) of
          { _exprOropts | _exprOropts `seq` (True) ->
          (case (_lhsIprotectedBindingNames) of
           { _exprOprotectedBindingNames | _exprOprotectedBindingNames `seq` (True) ->
           (case (_lhsIgIniq) of
            { _exprOgIniq | _exprOgIniq `seq` (True) ->
            (case (expr_ _exprOgIniq _exprOprotectedBindingNames _exprOropts) of
             { ( _exprIgIniq,_exprIisLamBody,expr_1) | True ->
                 (case (_exprIgIniq) of
                  { _lhsOgIniq | _lhsOgIniq `seq` (True) ->
                  (case ((let sem_CBound_FFE_1 :: T_CBound_1
                              sem_CBound_FFE_1 =
                                  (\ _lhsIaRenMp
                                     _lhsIlev
                                     _lhsImoduleNm
                                     _lhsInm ->
                                       (case (_lhsImoduleNm) of
                                        { _exprOmoduleNm | _exprOmoduleNm `seq` (True) ->
                                        (case (_lhsIlev) of
                                         { _exprOlev | _exprOlev `seq` (True) ->
                                         (case (_lhsIaRenMp) of
                                          { _exprOaccumARenMp | _exprOaccumARenMp `seq` (True) ->
                                          (case (expr_1 _exprOaccumARenMp _exprOlev _exprOmoduleNm) of
                                           { ( _exprIaccumARenMp,expr_2) | True ->
                                               (case (_exprIaccumARenMp) of
                                                { _aRenMp | _aRenMp `seq` (True) ->
                                                (case (_aRenMp) of
                                                 { _exprOaRenMp | _exprOaRenMp `seq` (True) ->
                                                 (case (expr_2 _exprOaRenMp) of
                                                  { ( _exprIcTrf) | True ->
                                                      (case (CBound_FFE callconv_ expEnt_ _exprIcTrf ty_) of
                                                       { _cTrf | _cTrf `seq` (True) ->
                                                       (case (_cTrf) of
                                                        { _lhsOcTrf | _lhsOcTrf `seq` (True) ->
                                                        (case ([]) of
                                                         { _lhsOnmL | _lhsOnmL `seq` (True) ->
                                                         ( _lhsOcTrf,_lhsOnmL) }) }) }) }) }) }) }) }) }) }))
                          in  sem_CBound_FFE_1)) of
                   { ( sem_CBound_1) | True ->
                   ( _lhsOgIniq,sem_CBound_1) }) }) }) }) }) }))
-- CBoundL -----------------------------------------------------
{-
   visit 0:
      inherited attributes:
         protectedBindingNames : [HsName]
         ropts                : RenUniqOpts
      chained attribute:
         gIniq                : Int
   visit 1:
      inherited attributes:
         aRenMp               : ARenMp
         lev                  : Int
         moduleNm             : HsName
         nm                   : HsName
      synthesized attributes:
         cTrf                 : CBoundL 
         nmL                  : [HsName]
   alternatives:
      alternative Cons:
         child hd             : CBound 
         child tl             : CBoundL 
         visit 1:
            local cTrf        : _
      alternative Nil:
         visit 1:
            local cTrf        : _
-}
-- 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 = Int ->
                 ([HsName]) ->
                 RenUniqOpts ->
                 ( Int,T_CBoundL_1)
type T_CBoundL_1 = ARenMp ->
                   Int ->
                   HsName ->
                   HsName ->
                   ( CBoundL,([HsName]))
sem_CBoundL_Cons :: T_CBound ->
                    T_CBoundL ->
                    T_CBoundL
sem_CBoundL_Cons hd_ tl_ =
    (\ _lhsIgIniq
       _lhsIprotectedBindingNames
       _lhsIropts ->
         (case (_lhsIropts) of
          { _tlOropts | _tlOropts `seq` (True) ->
          (case (_lhsIprotectedBindingNames) of
           { _tlOprotectedBindingNames | _tlOprotectedBindingNames `seq` (True) ->
           (case (_lhsIropts) of
            { _hdOropts | _hdOropts `seq` (True) ->
            (case (_lhsIprotectedBindingNames) of
             { _hdOprotectedBindingNames | _hdOprotectedBindingNames `seq` (True) ->
             (case (_lhsIgIniq) of
              { _hdOgIniq | _hdOgIniq `seq` (True) ->
              (case (hd_ _hdOgIniq _hdOprotectedBindingNames _hdOropts) of
               { ( _hdIgIniq,hd_1) | True ->
                   (case (_hdIgIniq) of
                    { _tlOgIniq | _tlOgIniq `seq` (True) ->
                    (case (tl_ _tlOgIniq _tlOprotectedBindingNames _tlOropts) of
                     { ( _tlIgIniq,tl_1) | True ->
                         (case (_tlIgIniq) of
                          { _lhsOgIniq | _lhsOgIniq `seq` (True) ->
                          (case ((let sem_CBoundL_Cons_1 :: T_CBoundL_1
                                      sem_CBoundL_Cons_1 =
                                          (\ _lhsIaRenMp
                                             _lhsIlev
                                             _lhsImoduleNm
                                             _lhsInm ->
                                               (case (_lhsImoduleNm) of
                                                { _tlOmoduleNm | _tlOmoduleNm `seq` (True) ->
                                                (case (_lhsIlev) of
                                                 { _tlOlev | _tlOlev `seq` (True) ->
                                                 (case (_lhsIaRenMp) of
                                                  { _tlOaRenMp | _tlOaRenMp `seq` (True) ->
                                                  (case (_lhsImoduleNm) of
                                                   { _hdOmoduleNm | _hdOmoduleNm `seq` (True) ->
                                                   (case (_lhsIlev) of
                                                    { _hdOlev | _hdOlev `seq` (True) ->
                                                    (case (_lhsIaRenMp) of
                                                     { _hdOaRenMp | _hdOaRenMp `seq` (True) ->
                                                     (case (_lhsInm) of
                                                      { _tlOnm | _tlOnm `seq` (True) ->
                                                      (case (tl_1 _tlOaRenMp _tlOlev _tlOmoduleNm _tlOnm) of
                                                       { ( _tlIcTrf,_tlInmL) | True ->
                                                           (case (_lhsInm) of
                                                            { _hdOnm | _hdOnm `seq` (True) ->
                                                            (case (hd_1 _hdOaRenMp _hdOlev _hdOmoduleNm _hdOnm) of
                                                             { ( _hdIcTrf,_hdInmL) | True ->
                                                                 (case ((:) _hdIcTrf _tlIcTrf) of
                                                                  { _cTrf | _cTrf `seq` (True) ->
                                                                  (case (_cTrf) of
                                                                   { _lhsOcTrf | _lhsOcTrf `seq` (True) ->
                                                                   (case (_hdInmL ++ _tlInmL) of
                                                                    { _lhsOnmL | _lhsOnmL `seq` (True) ->
                                                                    ( _lhsOcTrf,_lhsOnmL) }) }) }) }) }) }) }) }) }) }) }) }) }))
                                  in  sem_CBoundL_Cons_1)) of
                           { ( sem_CBoundL_1) | True ->
                           ( _lhsOgIniq,sem_CBoundL_1) }) }) }) }) }) }) }) }) }) }))
sem_CBoundL_Nil :: T_CBoundL
sem_CBoundL_Nil =
    (\ _lhsIgIniq
       _lhsIprotectedBindingNames
       _lhsIropts ->
         (case (_lhsIgIniq) of
          { _lhsOgIniq | _lhsOgIniq `seq` (True) ->
          (case ((let sem_CBoundL_Nil_1 :: T_CBoundL_1
                      sem_CBoundL_Nil_1 =
                          (\ _lhsIaRenMp
                             _lhsIlev
                             _lhsImoduleNm
                             _lhsInm ->
                               (case ([]) of
                                { _cTrf | _cTrf `seq` (True) ->
                                (case (_cTrf) of
                                 { _lhsOcTrf | _lhsOcTrf `seq` (True) ->
                                 (case ([]) of
                                  { _lhsOnmL | _lhsOnmL `seq` (True) ->
                                  ( _lhsOcTrf,_lhsOnmL) }) }) }))
                  in  sem_CBoundL_Nil_1)) of
           { ( sem_CBoundL_1) | True ->
           ( _lhsOgIniq,sem_CBoundL_1) }) }))
-- 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_ =
    (case (CDataCon_Con conNm_ tagNr_ arity_) of
     { _cTrf | _cTrf `seq` (True) ->
     (case (_cTrf) of
      { _lhsOcTrf | _lhsOcTrf `seq` (True) ->
      ( _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_ =
    (case (tl_) of
     { ( _tlIcTrf) | True ->
         (case (hd_) of
          { ( _hdIcTrf) | True ->
              (case ((:) _hdIcTrf _tlIcTrf) of
               { _cTrf | _cTrf `seq` (True) ->
               (case (_cTrf) of
                { _lhsOcTrf | _lhsOcTrf `seq` (True) ->
                ( _lhsOcTrf) }) }) }) })
sem_CDataConL_Nil :: T_CDataConL
sem_CDataConL_Nil =
    (case ([]) of
     { _cTrf | _cTrf `seq` (True) ->
     (case (_cTrf) of
      { _lhsOcTrf | _lhsOcTrf `seq` (True) ->
      ( _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_ =
    (case (dataCons_) of
     { ( _dataConsIcTrf) | True ->
         (case (CDeclMeta_Data tyNm_ _dataConsIcTrf) of
          { _cTrf | _cTrf `seq` (True) ->
          (case (_cTrf) of
           { _lhsOcTrf | _lhsOcTrf `seq` (True) ->
           ( _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_ =
    (case (tl_) of
     { ( _tlIcTrf) | True ->
         (case (hd_) of
          { ( _hdIcTrf) | True ->
              (case ((:) _hdIcTrf _tlIcTrf) of
               { _cTrf | _cTrf `seq` (True) ->
               (case (_cTrf) of
                { _lhsOcTrf | _lhsOcTrf `seq` (True) ->
                ( _lhsOcTrf) }) }) }) })
sem_CDeclMetaL_Nil :: T_CDeclMetaL
sem_CDeclMetaL_Nil =
    (case ([]) of
     { _cTrf | _cTrf `seq` (True) ->
     (case (_cTrf) of
      { _lhsOcTrf | _lhsOcTrf `seq` (True) ->
      ( _lhsOcTrf) }) })
-- CExport -----------------------------------------------------
{-
   visit 0:
      synthesized attribute:
         cTrf                 : CExport 
   alternatives:
      alternative Export:
         child nm             : {HsName}
         visit 0:
            local cTrf        : _
      alternative ExportData:
         child nm             : {HsName}
         child mbConNmL       : {Maybe [HsName]}
         visit 0:
            local cTrf        : _
-}
-- cata
sem_CExport :: CExport ->
               T_CExport
sem_CExport (CExport_Export _nm) =
    (sem_CExport_Export _nm)
sem_CExport (CExport_ExportData _nm _mbConNmL) =
    (sem_CExport_ExportData _nm _mbConNmL)
-- semantic domain
type T_CExport = ( CExport)
sem_CExport_Export :: HsName ->
                      T_CExport
sem_CExport_Export nm_ =
    (case (CExport_Export nm_) of
     { _cTrf | _cTrf `seq` (True) ->
     (case (_cTrf) of
      { _lhsOcTrf | _lhsOcTrf `seq` (True) ->
      ( _lhsOcTrf) }) })
sem_CExport_ExportData :: HsName ->
                          (Maybe [HsName]) ->
                          T_CExport
sem_CExport_ExportData nm_ mbConNmL_ =
    (case (CExport_ExportData nm_ mbConNmL_) of
     { _cTrf | _cTrf `seq` (True) ->
     (case (_cTrf) of
      { _lhsOcTrf | _lhsOcTrf `seq` (True) ->
      ( _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_ =
    (case (tl_) of
     { ( _tlIcTrf) | True ->
         (case (hd_) of
          { ( _hdIcTrf) | True ->
              (case ((:) _hdIcTrf _tlIcTrf) of
               { _cTrf | _cTrf `seq` (True) ->
               (case (_cTrf) of
                { _lhsOcTrf | _lhsOcTrf `seq` (True) ->
                ( _lhsOcTrf) }) }) }) })
sem_CExportL_Nil :: T_CExportL
sem_CExportL_Nil =
    (case ([]) of
     { _cTrf | _cTrf `seq` (True) ->
     (case (_cTrf) of
      { _lhsOcTrf | _lhsOcTrf `seq` (True) ->
      ( _lhsOcTrf) }) })
-- CExpr -------------------------------------------------------
{-
   visit 0:
      inherited attributes:
         protectedBindingNames : [HsName]
         ropts                : RenUniqOpts
      chained attribute:
         gIniq                : Int
      synthesized attribute:
         isLamBody            : Bool
   visit 1:
      inherited attributes:
         lev                  : Int
         moduleNm             : HsName
      chained attribute:
         accumARenMp          : ARenMp
   visit 2:
      inherited attribute:
         aRenMp               : ARenMp
      synthesized attribute:
         cTrf                 : CExpr 
   alternatives:
      alternative Var:
         child ref            : {ACoreBindRef}
         visit 2:
            local nm          : {HsName}
      alternative Int:
         child int            : {Int}
         visit 2:
            local cTrf        : _
      alternative Char:
         child char           : {Char}
         visit 2:
            local cTrf        : _
      alternative String:
         child str            : {String}
         visit 2:
            local cTrf        : _
      alternative Integer:
         child integer        : {Integer}
         visit 2:
            local cTrf        : _
      alternative Tup:
         child tag            : {CTag}
         visit 2:
            local cTrf        : _
      alternative Let:
         child categ          : {CBindCateg}
         child binds          : CBindL 
         child body           : CExpr 
         visit 0:
            local _tup2       : _
         visit 1:
            local isGlobal    : _
            local lIniq       : _
            local addToARenMp : _
            intra _tup2       : _
         visit 2:
            local aRenMp      : _
            local cTrf        : _
            intra addToARenMp : _
            intra isGlobal    : _
      alternative App:
         child func           : CExpr 
         child arg            : CBound 
         visit 2:
            local aRenMp      : _
            local cTrf        : _
      alternative Lam:
         child bind           : CBind 
         child body           : CExpr 
         visit 0:
            local _tup3       : _
         visit 1:
            intra _tup3       : _
         visit 2:
            local lIniq       : _
            local argNm       : _
            local aRenMp      : _
            intra _tup3       : _
      alternative Case:
         child expr           : CExpr 
         child alts           : CAltL 
         child dflt           : CExpr 
         visit 2:
            local accumARenMp : _
            local aRenMp      : _
            local cTrf        : _
      alternative CaseAltFail:
         child failReason     : {CaseAltFailReason}
         child errorExpr      : CExpr 
         visit 2:
            local aRenMp      : _
            local cTrf        : _
      alternative TupDel:
         child expr           : CExpr 
         child tag            : {CTag}
         child nm             : {HsName}
         child offset         : CExpr 
         visit 2:
            local accumARenMp : _
            local aRenMp      : _
            local cTrf        : _
      alternative TupIns:
         child expr           : CExpr 
         child tag            : {CTag}
         child nm             : {HsName}
         child offset         : CExpr 
         child fldExpr        : CExpr 
         visit 2:
            local accumARenMp : _
            local aRenMp      : _
            local cTrf        : _
      alternative TupUpd:
         child expr           : CExpr 
         child tag            : {CTag}
         child nm             : {HsName}
         child offset         : CExpr 
         child fldExpr        : CExpr 
         visit 2:
            local accumARenMp : _
            local aRenMp      : _
            local cTrf        : _
      alternative FFI:
         child callconv       : {FFIWay}
         child safety         : {String}
         child impEnt         : {ForeignEnt}
         child ty             : {Ty}
         visit 2:
            local cTrf        : _
      alternative Dbg:
         child info           : {String}
         visit 2:
            local cTrf        : _
      alternative Hole:
         child uid            : {UID}
         visit 2:
            local cTrf        : _
      alternative HoleLet:
         child bindsUid       : {UID}
         child body           : CExpr 
         visit 2:
            local aRenMp      : _
            local cTrf        : _
      alternative CoeArg:
         visit 2:
            local cTrf        : _
      alternative ImplsApp:
         child func           : CExpr 
         child uid            : {ImplsVarId}
         visit 2:
            local aRenMp      : _
            local cTrf        : _
      alternative ImplsLam:
         child uid            : {ImplsVarId}
         child body           : CExpr 
         visit 2:
            local aRenMp      : _
            local cTrf        : _
      alternative Ann:
         child ann            : CExprAnn 
         child expr           : CExpr 
         visit 2:
            local cTrf        : _
-}
-- 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 = Int ->
               ([HsName]) ->
               RenUniqOpts ->
               ( Int,Bool,T_CExpr_1)
type T_CExpr_1 = ARenMp ->
                 Int ->
                 HsName ->
                 ( ARenMp,T_CExpr_2)
type T_CExpr_2 = ARenMp ->
                 ( CExpr)
sem_CExpr_Var :: ACoreBindRef ->
                 T_CExpr
sem_CExpr_Var ref_ =
    (\ _lhsIgIniq
       _lhsIprotectedBindingNames
       _lhsIropts ->
         (case (_lhsIgIniq) of
          { _lhsOgIniq | _lhsOgIniq `seq` (True) ->
          (case (True) of
           { _lhsOisLamBody | _lhsOisLamBody `seq` (True) ->
           (case ((let sem_CExpr_Var_1 :: T_CExpr_1
                       sem_CExpr_Var_1 =
                           (\ _lhsIaccumARenMp
                              _lhsIlev
                              _lhsImoduleNm ->
                                (case (_lhsIaccumARenMp) of
                                 { _lhsOaccumARenMp | _lhsOaccumARenMp `seq` (True) ->
                                 (case ((let sem_CExpr_Var_2 :: T_CExpr_2
                                             sem_CExpr_Var_2 =
                                                 (\ _lhsIaRenMp ->
                                                      (case (acbrefNm ref_) of
                                                       { _nm | _nm `seq` (True) ->
                                                       (case (acoreVar (aRenRepl _lhsIaRenMp _nm)) of
                                                        { _lhsOcTrf | _lhsOcTrf `seq` (True) ->
                                                        ( _lhsOcTrf) }) }))
                                         in  sem_CExpr_Var_2)) of
                                  { ( sem_CExpr_2) | True ->
                                  ( _lhsOaccumARenMp,sem_CExpr_2) }) }))
                   in  sem_CExpr_Var_1)) of
            { ( sem_CExpr_1) | True ->
            ( _lhsOgIniq,_lhsOisLamBody,sem_CExpr_1) }) }) }))
sem_CExpr_Int :: Int ->
                 T_CExpr
sem_CExpr_Int int_ =
    (\ _lhsIgIniq
       _lhsIprotectedBindingNames
       _lhsIropts ->
         (case (_lhsIgIniq) of
          { _lhsOgIniq | _lhsOgIniq `seq` (True) ->
          (case (True) of
           { _lhsOisLamBody | _lhsOisLamBody `seq` (True) ->
           (case ((let sem_CExpr_Int_1 :: T_CExpr_1
                       sem_CExpr_Int_1 =
                           (\ _lhsIaccumARenMp
                              _lhsIlev
                              _lhsImoduleNm ->
                                (case (_lhsIaccumARenMp) of
                                 { _lhsOaccumARenMp | _lhsOaccumARenMp `seq` (True) ->
                                 (case ((let sem_CExpr_Int_2 :: T_CExpr_2
                                             sem_CExpr_Int_2 =
                                                 (\ _lhsIaRenMp ->
                                                      (case (CExpr_Int int_) of
                                                       { _cTrf | _cTrf `seq` (True) ->
                                                       (case (_cTrf) of
                                                        { _lhsOcTrf | _lhsOcTrf `seq` (True) ->
                                                        ( _lhsOcTrf) }) }))
                                         in  sem_CExpr_Int_2)) of
                                  { ( sem_CExpr_2) | True ->
                                  ( _lhsOaccumARenMp,sem_CExpr_2) }) }))
                   in  sem_CExpr_Int_1)) of
            { ( sem_CExpr_1) | True ->
            ( _lhsOgIniq,_lhsOisLamBody,sem_CExpr_1) }) }) }))
sem_CExpr_Char :: Char ->
                  T_CExpr
sem_CExpr_Char char_ =
    (\ _lhsIgIniq
       _lhsIprotectedBindingNames
       _lhsIropts ->
         (case (_lhsIgIniq) of
          { _lhsOgIniq | _lhsOgIniq `seq` (True) ->
          (case (True) of
           { _lhsOisLamBody | _lhsOisLamBody `seq` (True) ->
           (case ((let sem_CExpr_Char_1 :: T_CExpr_1
                       sem_CExpr_Char_1 =
                           (\ _lhsIaccumARenMp
                              _lhsIlev
                              _lhsImoduleNm ->
                                (case (_lhsIaccumARenMp) of
                                 { _lhsOaccumARenMp | _lhsOaccumARenMp `seq` (True) ->
                                 (case ((let sem_CExpr_Char_2 :: T_CExpr_2
                                             sem_CExpr_Char_2 =
                                                 (\ _lhsIaRenMp ->
                                                      (case (CExpr_Char char_) of
                                                       { _cTrf | _cTrf `seq` (True) ->
                                                       (case (_cTrf) of
                                                        { _lhsOcTrf | _lhsOcTrf `seq` (True) ->
                                                        ( _lhsOcTrf) }) }))
                                         in  sem_CExpr_Char_2)) of
                                  { ( sem_CExpr_2) | True ->
                                  ( _lhsOaccumARenMp,sem_CExpr_2) }) }))
                   in  sem_CExpr_Char_1)) of
            { ( sem_CExpr_1) | True ->
            ( _lhsOgIniq,_lhsOisLamBody,sem_CExpr_1) }) }) }))
sem_CExpr_String :: String ->
                    T_CExpr
sem_CExpr_String str_ =
    (\ _lhsIgIniq
       _lhsIprotectedBindingNames
       _lhsIropts ->
         (case (_lhsIgIniq) of
          { _lhsOgIniq | _lhsOgIniq `seq` (True) ->
          (case (True) of
           { _lhsOisLamBody | _lhsOisLamBody `seq` (True) ->
           (case ((let sem_CExpr_String_1 :: T_CExpr_1
                       sem_CExpr_String_1 =
                           (\ _lhsIaccumARenMp
                              _lhsIlev
                              _lhsImoduleNm ->
                                (case (_lhsIaccumARenMp) of
                                 { _lhsOaccumARenMp | _lhsOaccumARenMp `seq` (True) ->
                                 (case ((let sem_CExpr_String_2 :: T_CExpr_2
                                             sem_CExpr_String_2 =
                                                 (\ _lhsIaRenMp ->
                                                      (case (CExpr_String str_) of
                                                       { _cTrf | _cTrf `seq` (True) ->
                                                       (case (_cTrf) of
                                                        { _lhsOcTrf | _lhsOcTrf `seq` (True) ->
                                                        ( _lhsOcTrf) }) }))
                                         in  sem_CExpr_String_2)) of
                                  { ( sem_CExpr_2) | True ->
                                  ( _lhsOaccumARenMp,sem_CExpr_2) }) }))
                   in  sem_CExpr_String_1)) of
            { ( sem_CExpr_1) | True ->
            ( _lhsOgIniq,_lhsOisLamBody,sem_CExpr_1) }) }) }))
sem_CExpr_Integer :: Integer ->
                     T_CExpr
sem_CExpr_Integer integer_ =
    (\ _lhsIgIniq
       _lhsIprotectedBindingNames
       _lhsIropts ->
         (case (_lhsIgIniq) of
          { _lhsOgIniq | _lhsOgIniq `seq` (True) ->
          (case (True) of
           { _lhsOisLamBody | _lhsOisLamBody `seq` (True) ->
           (case ((let sem_CExpr_Integer_1 :: T_CExpr_1
                       sem_CExpr_Integer_1 =
                           (\ _lhsIaccumARenMp
                              _lhsIlev
                              _lhsImoduleNm ->
                                (case (_lhsIaccumARenMp) of
                                 { _lhsOaccumARenMp | _lhsOaccumARenMp `seq` (True) ->
                                 (case ((let sem_CExpr_Integer_2 :: T_CExpr_2
                                             sem_CExpr_Integer_2 =
                                                 (\ _lhsIaRenMp ->
                                                      (case (CExpr_Integer integer_) of
                                                       { _cTrf | _cTrf `seq` (True) ->
                                                       (case (_cTrf) of
                                                        { _lhsOcTrf | _lhsOcTrf `seq` (True) ->
                                                        ( _lhsOcTrf) }) }))
                                         in  sem_CExpr_Integer_2)) of
                                  { ( sem_CExpr_2) | True ->
                                  ( _lhsOaccumARenMp,sem_CExpr_2) }) }))
                   in  sem_CExpr_Integer_1)) of
            { ( sem_CExpr_1) | True ->
            ( _lhsOgIniq,_lhsOisLamBody,sem_CExpr_1) }) }) }))
sem_CExpr_Tup :: CTag ->
                 T_CExpr
sem_CExpr_Tup tag_ =
    (\ _lhsIgIniq
       _lhsIprotectedBindingNames
       _lhsIropts ->
         (case (_lhsIgIniq) of
          { _lhsOgIniq | _lhsOgIniq `seq` (True) ->
          (case (True) of
           { _lhsOisLamBody | _lhsOisLamBody `seq` (True) ->
           (case ((let sem_CExpr_Tup_1 :: T_CExpr_1
                       sem_CExpr_Tup_1 =
                           (\ _lhsIaccumARenMp
                              _lhsIlev
                              _lhsImoduleNm ->
                                (case (_lhsIaccumARenMp) of
                                 { _lhsOaccumARenMp | _lhsOaccumARenMp `seq` (True) ->
                                 (case ((let sem_CExpr_Tup_2 :: T_CExpr_2
                                             sem_CExpr_Tup_2 =
                                                 (\ _lhsIaRenMp ->
                                                      (case (CExpr_Tup tag_) of
                                                       { _cTrf | _cTrf `seq` (True) ->
                                                       (case (_cTrf) of
                                                        { _lhsOcTrf | _lhsOcTrf `seq` (True) ->
                                                        ( _lhsOcTrf) }) }))
                                         in  sem_CExpr_Tup_2)) of
                                  { ( sem_CExpr_2) | True ->
                                  ( _lhsOaccumARenMp,sem_CExpr_2) }) }))
                   in  sem_CExpr_Tup_1)) of
            { ( sem_CExpr_1) | True ->
            ( _lhsOgIniq,_lhsOisLamBody,sem_CExpr_1) }) }) }))
sem_CExpr_Let :: CBindCateg ->
                 T_CBindL ->
                 T_CExpr ->
                 T_CExpr
sem_CExpr_Let categ_ binds_ body_ =
    (\ _lhsIgIniq
       _lhsIprotectedBindingNames
       _lhsIropts ->
         (case (_lhsIropts) of
          { _bodyOropts | _bodyOropts `seq` (True) ->
          (case (_lhsIprotectedBindingNames) of
           { _bodyOprotectedBindingNames | _bodyOprotectedBindingNames `seq` (True) ->
           (case (_lhsIropts) of
            { _bindsOropts | _bindsOropts `seq` (True) ->
            (case (_lhsIprotectedBindingNames) of
             { _bindsOprotectedBindingNames | _bindsOprotectedBindingNames `seq` (True) ->
             (case (binds_ _bindsOprotectedBindingNames) of
              { ( _bindsInmL,binds_1) | True ->
                  (case (newIniq (length _bindsInmL) _lhsIgIniq) of
                   { __tup2 | __tup2 `seq` (True) ->
                   (case (__tup2) of
                    { (_bindsOgIniq,_) | _bindsOgIniq `seq` (True) ->
                    (case (binds_1 _bindsOgIniq _bindsOropts) of
                     { ( _bindsIgIniq,binds_2) | True ->
                         (case (_bindsIgIniq) of
                          { _bodyOgIniq | _bodyOgIniq `seq` (True) ->
                          (case (body_ _bodyOgIniq _bodyOprotectedBindingNames _bodyOropts) of
                           { ( _bodyIgIniq,_bodyIisLamBody,body_1) | True ->
                               (case (_bodyIgIniq) of
                                { _lhsOgIniq | _lhsOgIniq `seq` (True) ->
                                (case (True) of
                                 { _lhsOisLamBody | _lhsOisLamBody `seq` (True) ->
                                 (case ((let sem_CExpr_Let_1 :: T_CExpr_1
                                             sem_CExpr_Let_1 =
                                                 (\ _lhsIaccumARenMp
                                                    _lhsIlev
                                                    _lhsImoduleNm ->
                                                      (case (_lhsImoduleNm) of
                                                       { _bodyOmoduleNm | _bodyOmoduleNm `seq` (True) ->
                                                       (case (_lhsIlev) of
                                                        { _bodyOlev | _bodyOlev `seq` (True) ->
                                                        (case (_lhsIlev == cLevModule) of
                                                         { _isGlobal | _isGlobal `seq` (True) ->
                                                         (case (__tup2) of
                                                          { (_,_lIniq) | _lIniq `seq` (True) ->
                                                          (case (\m -> aRenAdd _lhsIropts _isGlobal
                                                                               _lhsImoduleNm
                                                                               _bindsInmL _lIniq m) of
                                                           { _addToARenMp | _addToARenMp `seq` (True) ->
                                                           (case (if   _isGlobal
                                                                  then _addToARenMp _lhsIaccumARenMp
                                                                  else              _lhsIaccumARenMp) of
                                                            { _bodyOaccumARenMp | _bodyOaccumARenMp `seq` (True) ->
                                                            (case (body_1 _bodyOaccumARenMp _bodyOlev _bodyOmoduleNm) of
                                                             { ( _bodyIaccumARenMp,body_2) | True ->
                                                                 (case (_bodyIaccumARenMp) of
                                                                  { _lhsOaccumARenMp | _lhsOaccumARenMp `seq` (True) ->
                                                                  (case ((let sem_CExpr_Let_2 :: T_CExpr_2
                                                                              sem_CExpr_Let_2 =
                                                                                  (\ _lhsIaRenMp ->
                                                                                       (case (if   _isGlobal
                                                                                              then              _lhsIaRenMp
                                                                                              else _addToARenMp _lhsIaRenMp) of
                                                                                        { _aRenMp | _aRenMp `seq` (True) ->
                                                                                        (case (_aRenMp) of
                                                                                         { _bodyOaRenMp | _bodyOaRenMp `seq` (True) ->
                                                                                         (case (_lhsImoduleNm) of
                                                                                          { _bindsOmoduleNm | _bindsOmoduleNm `seq` (True) ->
                                                                                          (case (_aRenMp) of
                                                                                           { _bindsOaRenMp | _bindsOaRenMp `seq` (True) ->
                                                                                           (case (_lhsIlev + 1) of
                                                                                            { _bindsOlev | _bindsOlev `seq` (True) ->
                                                                                            (case (body_2 _bodyOaRenMp) of
                                                                                             { ( _bodyIcTrf) | True ->
                                                                                                 (case (binds_2 _bindsOaRenMp _bindsOlev _bindsOmoduleNm) of
                                                                                                  { ( _bindsIcTrf) | True ->
                                                                                                      (case (CExpr_Let categ_ _bindsIcTrf _bodyIcTrf) of
                                                                                                       { _cTrf | _cTrf `seq` (True) ->
                                                                                                       (case (_cTrf) of
                                                                                                        { _lhsOcTrf | _lhsOcTrf `seq` (True) ->
                                                                                                        ( _lhsOcTrf) }) }) }) }) }) }) }) }) }))
                                                                          in  sem_CExpr_Let_2)) of
                                                                   { ( sem_CExpr_2) | True ->
                                                                   ( _lhsOaccumARenMp,sem_CExpr_2) }) }) }) }) }) }) }) }) }))
                                         in  sem_CExpr_Let_1)) of
                                  { ( sem_CExpr_1) | True ->
                                  ( _lhsOgIniq,_lhsOisLamBody,sem_CExpr_1) }) }) }) }) }) }) }) }) }) }) }) }) }))
sem_CExpr_App :: T_CExpr ->
                 T_CBound ->
                 T_CExpr
sem_CExpr_App func_ arg_ =
    (\ _lhsIgIniq
       _lhsIprotectedBindingNames
       _lhsIropts ->
         (case (_lhsIropts) of
          { _argOropts | _argOropts `seq` (True) ->
          (case (_lhsIprotectedBindingNames) of
           { _argOprotectedBindingNames | _argOprotectedBindingNames `seq` (True) ->
           (case (_lhsIropts) of
            { _funcOropts | _funcOropts `seq` (True) ->
            (case (_lhsIprotectedBindingNames) of
             { _funcOprotectedBindingNames | _funcOprotectedBindingNames `seq` (True) ->
             (case (_lhsIgIniq) of
              { _funcOgIniq | _funcOgIniq `seq` (True) ->
              (case (func_ _funcOgIniq _funcOprotectedBindingNames _funcOropts) of
               { ( _funcIgIniq,_funcIisLamBody,func_1) | True ->
                   (case (_funcIgIniq) of
                    { _argOgIniq | _argOgIniq `seq` (True) ->
                    (case (arg_ _argOgIniq _argOprotectedBindingNames _argOropts) of
                     { ( _argIgIniq,arg_1) | True ->
                         (case (_argIgIniq) of
                          { _lhsOgIniq | _lhsOgIniq `seq` (True) ->
                          (case (True) of
                           { _lhsOisLamBody | _lhsOisLamBody `seq` (True) ->
                           (case ((let sem_CExpr_App_1 :: T_CExpr_1
                                       sem_CExpr_App_1 =
                                           (\ _lhsIaccumARenMp
                                              _lhsIlev
                                              _lhsImoduleNm ->
                                                (case (_lhsIaccumARenMp) of
                                                 { _lhsOaccumARenMp | _lhsOaccumARenMp `seq` (True) ->
                                                 (case ((let sem_CExpr_App_2 :: T_CExpr_2
                                                             sem_CExpr_App_2 =
                                                                 (\ _lhsIaRenMp ->
                                                                      (case (_lhsImoduleNm) of
                                                                       { _argOmoduleNm | _argOmoduleNm `seq` (True) ->
                                                                       (case (_lhsIlev) of
                                                                        { _argOlev | _argOlev `seq` (True) ->
                                                                        (case (_lhsImoduleNm) of
                                                                         { _funcOmoduleNm | _funcOmoduleNm `seq` (True) ->
                                                                         (case (_lhsIlev) of
                                                                          { _funcOlev | _funcOlev `seq` (True) ->
                                                                          (case (_lhsIaRenMp) of
                                                                           { _funcOaccumARenMp | _funcOaccumARenMp `seq` (True) ->
                                                                           (case (func_1 _funcOaccumARenMp _funcOlev _funcOmoduleNm) of
                                                                            { ( _funcIaccumARenMp,func_2) | True ->
                                                                                (case (_funcIaccumARenMp) of
                                                                                 { _aRenMp | _aRenMp `seq` (True) ->
                                                                                 (case (_aRenMp) of
                                                                                  { _argOaRenMp | _argOaRenMp `seq` (True) ->
                                                                                  (case (_aRenMp) of
                                                                                   { _funcOaRenMp | _funcOaRenMp `seq` (True) ->
                                                                                   (case (hsnUnknown) of
                                                                                    { _argOnm | _argOnm `seq` (True) ->
                                                                                    (case (arg_1 _argOaRenMp _argOlev _argOmoduleNm _argOnm) of
                                                                                     { ( _argIcTrf,_argInmL) | True ->
                                                                                         (case (func_2 _funcOaRenMp) of
                                                                                          { ( _funcIcTrf) | True ->
                                                                                              (case (CExpr_App _funcIcTrf _argIcTrf) of
                                                                                               { _cTrf | _cTrf `seq` (True) ->
                                                                                               (case (_cTrf) of
                                                                                                { _lhsOcTrf | _lhsOcTrf `seq` (True) ->
                                                                                                ( _lhsOcTrf) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
                                                         in  sem_CExpr_App_2)) of
                                                  { ( sem_CExpr_2) | True ->
                                                  ( _lhsOaccumARenMp,sem_CExpr_2) }) }))
                                   in  sem_CExpr_App_1)) of
                            { ( sem_CExpr_1) | True ->
                            ( _lhsOgIniq,_lhsOisLamBody,sem_CExpr_1) }) }) }) }) }) }) }) }) }) }) }))
sem_CExpr_Lam :: T_CBind ->
                 T_CExpr ->
                 T_CExpr
sem_CExpr_Lam bind_ body_ =
    (\ _lhsIgIniq
       _lhsIprotectedBindingNames
       _lhsIropts ->
         (case (_lhsIropts) of
          { _bodyOropts | _bodyOropts `seq` (True) ->
          (case (_lhsIprotectedBindingNames) of
           { _bodyOprotectedBindingNames | _bodyOprotectedBindingNames `seq` (True) ->
           (case (newIniq 1 _lhsIgIniq) of
            { __tup3 | __tup3 `seq` (True) ->
            (case (__tup3) of
             { (_bodyOgIniq,_) | _bodyOgIniq `seq` (True) ->
             (case (body_ _bodyOgIniq _bodyOprotectedBindingNames _bodyOropts) of
              { ( _bodyIgIniq,_bodyIisLamBody,body_1) | True ->
                  (case (_bodyIgIniq) of
                   { _lhsOgIniq | _lhsOgIniq `seq` (True) ->
                   (case (False) of
                    { _lhsOisLamBody | _lhsOisLamBody `seq` (True) ->
                    (case ((let sem_CExpr_Lam_1 :: T_CExpr_1
                                sem_CExpr_Lam_1 =
                                    (\ _lhsIaccumARenMp
                                       _lhsIlev
                                       _lhsImoduleNm ->
                                         (case (_lhsIaccumARenMp) of
                                          { _lhsOaccumARenMp | _lhsOaccumARenMp `seq` (True) ->
                                          (case ((let sem_CExpr_Lam_2 :: T_CExpr_2
                                                      sem_CExpr_Lam_2 =
                                                          (\ _lhsIaRenMp ->
                                                               (case (_lhsImoduleNm) of
                                                                { _bodyOmoduleNm | _bodyOmoduleNm `seq` (True) ->
                                                                (case (if _bodyIisLamBody then _lhsIlev + 1 else _lhsIlev) of
                                                                 { _bodyOlev | _bodyOlev `seq` (True) ->
                                                                 (case (__tup3) of
                                                                  { (_,_lIniq) | _lIniq `seq` (True) ->
                                                                  (case (_lhsIprotectedBindingNames) of
                                                                   { _bindOprotectedBindingNames | _bindOprotectedBindingNames `seq` (True) ->
                                                                   (case (bind_ _bindOprotectedBindingNames) of
                                                                    { ( _bindInm,_bindInmL,bind_1) | True ->
                                                                        (case (_bindInm) of
                                                                         { _argNm | _argNm `seq` (True) ->
                                                                         (case (aRenAdd _lhsIropts False
                                                                                        _lhsImoduleNm
                                                                                        [_argNm] _lIniq _lhsIaRenMp) of
                                                                          { _bodyOaccumARenMp | _bodyOaccumARenMp `seq` (True) ->
                                                                          (case (body_1 _bodyOaccumARenMp _bodyOlev _bodyOmoduleNm) of
                                                                           { ( _bodyIaccumARenMp,body_2) | True ->
                                                                               (case (_bodyIaccumARenMp) of
                                                                                { _aRenMp | _aRenMp `seq` (True) ->
                                                                                (case (_aRenMp) of
                                                                                 { _bodyOaRenMp | _bodyOaRenMp `seq` (True) ->
                                                                                 (case (body_2 _bodyOaRenMp) of
                                                                                  { ( _bodyIcTrf) | True ->
                                                                                      (case (acoreLam1 (aRenRepl _aRenMp _argNm) _bodyIcTrf) of
                                                                                       { _lhsOcTrf | _lhsOcTrf `seq` (True) ->
                                                                                       ( _lhsOcTrf) }) }) }) }) }) }) }) }) }) }) }) }))
                                                  in  sem_CExpr_Lam_2)) of
                                           { ( sem_CExpr_2) | True ->
                                           ( _lhsOaccumARenMp,sem_CExpr_2) }) }))
                            in  sem_CExpr_Lam_1)) of
                     { ( sem_CExpr_1) | True ->
                     ( _lhsOgIniq,_lhsOisLamBody,sem_CExpr_1) }) }) }) }) }) }) }) }))
sem_CExpr_Case :: T_CExpr ->
                  T_CAltL ->
                  T_CExpr ->
                  T_CExpr
sem_CExpr_Case expr_ alts_ dflt_ =
    (\ _lhsIgIniq
       _lhsIprotectedBindingNames
       _lhsIropts ->
         (case (_lhsIropts) of
          { _dfltOropts | _dfltOropts `seq` (True) ->
          (case (_lhsIprotectedBindingNames) of
           { _dfltOprotectedBindingNames | _dfltOprotectedBindingNames `seq` (True) ->
           (case (_lhsIropts) of
            { _altsOropts | _altsOropts `seq` (True) ->
            (case (_lhsIprotectedBindingNames) of
             { _altsOprotectedBindingNames | _altsOprotectedBindingNames `seq` (True) ->
             (case (_lhsIropts) of
              { _exprOropts | _exprOropts `seq` (True) ->
              (case (_lhsIprotectedBindingNames) of
               { _exprOprotectedBindingNames | _exprOprotectedBindingNames `seq` (True) ->
               (case (_lhsIgIniq) of
                { _exprOgIniq | _exprOgIniq `seq` (True) ->
                (case (expr_ _exprOgIniq _exprOprotectedBindingNames _exprOropts) of
                 { ( _exprIgIniq,_exprIisLamBody,expr_1) | True ->
                     (case (_exprIgIniq) of
                      { _altsOgIniq | _altsOgIniq `seq` (True) ->
                      (case (alts_ _altsOgIniq _altsOprotectedBindingNames _altsOropts) of
                       { ( _altsIgIniq,alts_1) | True ->
                           (case (_altsIgIniq) of
                            { _dfltOgIniq | _dfltOgIniq `seq` (True) ->
                            (case (dflt_ _dfltOgIniq _dfltOprotectedBindingNames _dfltOropts) of
                             { ( _dfltIgIniq,_dfltIisLamBody,dflt_1) | True ->
                                 (case (_dfltIgIniq) of
                                  { _lhsOgIniq | _lhsOgIniq `seq` (True) ->
                                  (case (True) of
                                   { _lhsOisLamBody | _lhsOisLamBody `seq` (True) ->
                                   (case ((let sem_CExpr_Case_1 :: T_CExpr_1
                                               sem_CExpr_Case_1 =
                                                   (\ _lhsIaccumARenMp
                                                      _lhsIlev
                                                      _lhsImoduleNm ->
                                                        (case (_lhsIaccumARenMp) of
                                                         { _lhsOaccumARenMp | _lhsOaccumARenMp `seq` (True) ->
                                                         (case ((let sem_CExpr_Case_2 :: T_CExpr_2
                                                                     sem_CExpr_Case_2 =
                                                                         (\ _lhsIaRenMp ->
                                                                              (case (_lhsImoduleNm) of
                                                                               { _dfltOmoduleNm | _dfltOmoduleNm `seq` (True) ->
                                                                               (case (_lhsIlev) of
                                                                                { _dfltOlev | _dfltOlev `seq` (True) ->
                                                                                (case (_lhsIaRenMp) of
                                                                                 { _accumARenMp | _accumARenMp `seq` (True) ->
                                                                                 (case (_accumARenMp) of
                                                                                  { _dfltOaccumARenMp | _dfltOaccumARenMp `seq` (True) ->
                                                                                  (case (dflt_1 _dfltOaccumARenMp _dfltOlev _dfltOmoduleNm) of
                                                                                   { ( _dfltIaccumARenMp,dflt_2) | True ->
                                                                                       (case (_dfltIaccumARenMp) of
                                                                                        { _aRenMp | _aRenMp `seq` (True) ->
                                                                                        (case (_aRenMp) of
                                                                                         { _dfltOaRenMp | _dfltOaRenMp `seq` (True) ->
                                                                                         (case (_lhsImoduleNm) of
                                                                                          { _altsOmoduleNm | _altsOmoduleNm `seq` (True) ->
                                                                                          (case (_lhsIlev) of
                                                                                           { _altsOlev | _altsOlev `seq` (True) ->
                                                                                           (case (_aRenMp) of
                                                                                            { _altsOaRenMp | _altsOaRenMp `seq` (True) ->
                                                                                            (case (_lhsImoduleNm) of
                                                                                             { _exprOmoduleNm | _exprOmoduleNm `seq` (True) ->
                                                                                             (case (_lhsIlev) of
                                                                                              { _exprOlev | _exprOlev `seq` (True) ->
                                                                                              (case (_aRenMp) of
                                                                                               { _exprOaRenMp | _exprOaRenMp `seq` (True) ->
                                                                                               (case (_lhsIaRenMp) of
                                                                                                { _exprOaccumARenMp | _exprOaccumARenMp `seq` (True) ->
                                                                                                (case (dflt_2 _dfltOaRenMp) of
                                                                                                 { ( _dfltIcTrf) | True ->
                                                                                                     (case (alts_1 _altsOaRenMp _altsOlev _altsOmoduleNm) of
                                                                                                      { ( _altsIcTrf) | True ->
                                                                                                          (case (expr_1 _exprOaccumARenMp _exprOlev _exprOmoduleNm) of
                                                                                                           { ( _exprIaccumARenMp,expr_2) | True ->
                                                                                                               (case (expr_2 _exprOaRenMp) of
                                                                                                                { ( _exprIcTrf) | True ->
                                                                                                                    (case (CExpr_Case _exprIcTrf _altsIcTrf _dfltIcTrf) of
                                                                                                                     { _cTrf | _cTrf `seq` (True) ->
                                                                                                                     (case (_cTrf) of
                                                                                                                      { _lhsOcTrf | _lhsOcTrf `seq` (True) ->
                                                                                                                      ( _lhsOcTrf) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
                                                                 in  sem_CExpr_Case_2)) of
                                                          { ( sem_CExpr_2) | True ->
                                                          ( _lhsOaccumARenMp,sem_CExpr_2) }) }))
                                           in  sem_CExpr_Case_1)) of
                                    { ( sem_CExpr_1) | True ->
                                    ( _lhsOgIniq,_lhsOisLamBody,sem_CExpr_1) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
sem_CExpr_CaseAltFail :: CaseAltFailReason ->
                         T_CExpr ->
                         T_CExpr
sem_CExpr_CaseAltFail failReason_ errorExpr_ =
    (\ _lhsIgIniq
       _lhsIprotectedBindingNames
       _lhsIropts ->
         (case (_lhsIropts) of
          { _errorExprOropts | _errorExprOropts `seq` (True) ->
          (case (_lhsIprotectedBindingNames) of
           { _errorExprOprotectedBindingNames | _errorExprOprotectedBindingNames `seq` (True) ->
           (case (_lhsIgIniq) of
            { _errorExprOgIniq | _errorExprOgIniq `seq` (True) ->
            (case (errorExpr_ _errorExprOgIniq _errorExprOprotectedBindingNames _errorExprOropts) of
             { ( _errorExprIgIniq,_errorExprIisLamBody,errorExpr_1) | True ->
                 (case (_errorExprIgIniq) of
                  { _lhsOgIniq | _lhsOgIniq `seq` (True) ->
                  (case (True) of
                   { _lhsOisLamBody | _lhsOisLamBody `seq` (True) ->
                   (case ((let sem_CExpr_CaseAltFail_1 :: T_CExpr_1
                               sem_CExpr_CaseAltFail_1 =
                                   (\ _lhsIaccumARenMp
                                      _lhsIlev
                                      _lhsImoduleNm ->
                                        (case (_lhsIaccumARenMp) of
                                         { _lhsOaccumARenMp | _lhsOaccumARenMp `seq` (True) ->
                                         (case ((let sem_CExpr_CaseAltFail_2 :: T_CExpr_2
                                                     sem_CExpr_CaseAltFail_2 =
                                                         (\ _lhsIaRenMp ->
                                                              (case (_lhsImoduleNm) of
                                                               { _errorExprOmoduleNm | _errorExprOmoduleNm `seq` (True) ->
                                                               (case (_lhsIlev) of
                                                                { _errorExprOlev | _errorExprOlev `seq` (True) ->
                                                                (case (_lhsIaRenMp) of
                                                                 { _errorExprOaccumARenMp | _errorExprOaccumARenMp `seq` (True) ->
                                                                 (case (errorExpr_1 _errorExprOaccumARenMp _errorExprOlev _errorExprOmoduleNm) of
                                                                  { ( _errorExprIaccumARenMp,errorExpr_2) | True ->
                                                                      (case (_errorExprIaccumARenMp) of
                                                                       { _aRenMp | _aRenMp `seq` (True) ->
                                                                       (case (_aRenMp) of
                                                                        { _errorExprOaRenMp | _errorExprOaRenMp `seq` (True) ->
                                                                        (case (errorExpr_2 _errorExprOaRenMp) of
                                                                         { ( _errorExprIcTrf) | True ->
                                                                             (case (CExpr_CaseAltFail failReason_ _errorExprIcTrf) of
                                                                              { _cTrf | _cTrf `seq` (True) ->
                                                                              (case (_cTrf) of
                                                                               { _lhsOcTrf | _lhsOcTrf `seq` (True) ->
                                                                               ( _lhsOcTrf) }) }) }) }) }) }) }) }) }))
                                                 in  sem_CExpr_CaseAltFail_2)) of
                                          { ( sem_CExpr_2) | True ->
                                          ( _lhsOaccumARenMp,sem_CExpr_2) }) }))
                           in  sem_CExpr_CaseAltFail_1)) of
                    { ( sem_CExpr_1) | True ->
                    ( _lhsOgIniq,_lhsOisLamBody,sem_CExpr_1) }) }) }) }) }) }) }))
sem_CExpr_TupDel :: T_CExpr ->
                    CTag ->
                    HsName ->
                    T_CExpr ->
                    T_CExpr
sem_CExpr_TupDel expr_ tag_ nm_ offset_ =
    (\ _lhsIgIniq
       _lhsIprotectedBindingNames
       _lhsIropts ->
         (case (_lhsIropts) of
          { _offsetOropts | _offsetOropts `seq` (True) ->
          (case (_lhsIprotectedBindingNames) of
           { _offsetOprotectedBindingNames | _offsetOprotectedBindingNames `seq` (True) ->
           (case (_lhsIropts) of
            { _exprOropts | _exprOropts `seq` (True) ->
            (case (_lhsIprotectedBindingNames) of
             { _exprOprotectedBindingNames | _exprOprotectedBindingNames `seq` (True) ->
             (case (_lhsIgIniq) of
              { _exprOgIniq | _exprOgIniq `seq` (True) ->
              (case (expr_ _exprOgIniq _exprOprotectedBindingNames _exprOropts) of
               { ( _exprIgIniq,_exprIisLamBody,expr_1) | True ->
                   (case (_exprIgIniq) of
                    { _offsetOgIniq | _offsetOgIniq `seq` (True) ->
                    (case (offset_ _offsetOgIniq _offsetOprotectedBindingNames _offsetOropts) of
                     { ( _offsetIgIniq,_offsetIisLamBody,offset_1) | True ->
                         (case (_offsetIgIniq) of
                          { _lhsOgIniq | _lhsOgIniq `seq` (True) ->
                          (case (True) of
                           { _lhsOisLamBody | _lhsOisLamBody `seq` (True) ->
                           (case ((let sem_CExpr_TupDel_1 :: T_CExpr_1
                                       sem_CExpr_TupDel_1 =
                                           (\ _lhsIaccumARenMp
                                              _lhsIlev
                                              _lhsImoduleNm ->
                                                (case (_lhsIaccumARenMp) of
                                                 { _lhsOaccumARenMp | _lhsOaccumARenMp `seq` (True) ->
                                                 (case ((let sem_CExpr_TupDel_2 :: T_CExpr_2
                                                             sem_CExpr_TupDel_2 =
                                                                 (\ _lhsIaRenMp ->
                                                                      (case (_lhsImoduleNm) of
                                                                       { _offsetOmoduleNm | _offsetOmoduleNm `seq` (True) ->
                                                                       (case (_lhsIlev) of
                                                                        { _offsetOlev | _offsetOlev `seq` (True) ->
                                                                        (case (_lhsIaRenMp) of
                                                                         { _accumARenMp | _accumARenMp `seq` (True) ->
                                                                         (case (_accumARenMp) of
                                                                          { _offsetOaccumARenMp | _offsetOaccumARenMp `seq` (True) ->
                                                                          (case (offset_1 _offsetOaccumARenMp _offsetOlev _offsetOmoduleNm) of
                                                                           { ( _offsetIaccumARenMp,offset_2) | True ->
                                                                               (case (_offsetIaccumARenMp) of
                                                                                { _aRenMp | _aRenMp `seq` (True) ->
                                                                                (case (_aRenMp) of
                                                                                 { _offsetOaRenMp | _offsetOaRenMp `seq` (True) ->
                                                                                 (case (_lhsImoduleNm) of
                                                                                  { _exprOmoduleNm | _exprOmoduleNm `seq` (True) ->
                                                                                  (case (_lhsIlev) of
                                                                                   { _exprOlev | _exprOlev `seq` (True) ->
                                                                                   (case (_aRenMp) of
                                                                                    { _exprOaRenMp | _exprOaRenMp `seq` (True) ->
                                                                                    (case (_lhsIaRenMp) of
                                                                                     { _exprOaccumARenMp | _exprOaccumARenMp `seq` (True) ->
                                                                                     (case (offset_2 _offsetOaRenMp) of
                                                                                      { ( _offsetIcTrf) | True ->
                                                                                          (case (expr_1 _exprOaccumARenMp _exprOlev _exprOmoduleNm) of
                                                                                           { ( _exprIaccumARenMp,expr_2) | True ->
                                                                                               (case (expr_2 _exprOaRenMp) of
                                                                                                { ( _exprIcTrf) | True ->
                                                                                                    (case (CExpr_TupDel _exprIcTrf tag_ nm_ _offsetIcTrf) of
                                                                                                     { _cTrf | _cTrf `seq` (True) ->
                                                                                                     (case (_cTrf) of
                                                                                                      { _lhsOcTrf | _lhsOcTrf `seq` (True) ->
                                                                                                      ( _lhsOcTrf) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
                                                         in  sem_CExpr_TupDel_2)) of
                                                  { ( sem_CExpr_2) | True ->
                                                  ( _lhsOaccumARenMp,sem_CExpr_2) }) }))
                                   in  sem_CExpr_TupDel_1)) of
                            { ( sem_CExpr_1) | True ->
                            ( _lhsOgIniq,_lhsOisLamBody,sem_CExpr_1) }) }) }) }) }) }) }) }) }) }) }))
sem_CExpr_TupIns :: T_CExpr ->
                    CTag ->
                    HsName ->
                    T_CExpr ->
                    T_CExpr ->
                    T_CExpr
sem_CExpr_TupIns expr_ tag_ nm_ offset_ fldExpr_ =
    (\ _lhsIgIniq
       _lhsIprotectedBindingNames
       _lhsIropts ->
         (case (_lhsIropts) of
          { _fldExprOropts | _fldExprOropts `seq` (True) ->
          (case (_lhsIprotectedBindingNames) of
           { _fldExprOprotectedBindingNames | _fldExprOprotectedBindingNames `seq` (True) ->
           (case (_lhsIropts) of
            { _offsetOropts | _offsetOropts `seq` (True) ->
            (case (_lhsIprotectedBindingNames) of
             { _offsetOprotectedBindingNames | _offsetOprotectedBindingNames `seq` (True) ->
             (case (_lhsIropts) of
              { _exprOropts | _exprOropts `seq` (True) ->
              (case (_lhsIprotectedBindingNames) of
               { _exprOprotectedBindingNames | _exprOprotectedBindingNames `seq` (True) ->
               (case (_lhsIgIniq) of
                { _exprOgIniq | _exprOgIniq `seq` (True) ->
                (case (expr_ _exprOgIniq _exprOprotectedBindingNames _exprOropts) of
                 { ( _exprIgIniq,_exprIisLamBody,expr_1) | True ->
                     (case (_exprIgIniq) of
                      { _offsetOgIniq | _offsetOgIniq `seq` (True) ->
                      (case (offset_ _offsetOgIniq _offsetOprotectedBindingNames _offsetOropts) of
                       { ( _offsetIgIniq,_offsetIisLamBody,offset_1) | True ->
                           (case (_offsetIgIniq) of
                            { _fldExprOgIniq | _fldExprOgIniq `seq` (True) ->
                            (case (fldExpr_ _fldExprOgIniq _fldExprOprotectedBindingNames _fldExprOropts) of
                             { ( _fldExprIgIniq,_fldExprIisLamBody,fldExpr_1) | True ->
                                 (case (_fldExprIgIniq) of
                                  { _lhsOgIniq | _lhsOgIniq `seq` (True) ->
                                  (case (True) of
                                   { _lhsOisLamBody | _lhsOisLamBody `seq` (True) ->
                                   (case ((let sem_CExpr_TupIns_1 :: T_CExpr_1
                                               sem_CExpr_TupIns_1 =
                                                   (\ _lhsIaccumARenMp
                                                      _lhsIlev
                                                      _lhsImoduleNm ->
                                                        (case (_lhsIaccumARenMp) of
                                                         { _lhsOaccumARenMp | _lhsOaccumARenMp `seq` (True) ->
                                                         (case ((let sem_CExpr_TupIns_2 :: T_CExpr_2
                                                                     sem_CExpr_TupIns_2 =
                                                                         (\ _lhsIaRenMp ->
                                                                              (case (_lhsImoduleNm) of
                                                                               { _fldExprOmoduleNm | _fldExprOmoduleNm `seq` (True) ->
                                                                               (case (_lhsIlev) of
                                                                                { _fldExprOlev | _fldExprOlev `seq` (True) ->
                                                                                (case (_lhsIaRenMp) of
                                                                                 { _accumARenMp | _accumARenMp `seq` (True) ->
                                                                                 (case (_accumARenMp) of
                                                                                  { _fldExprOaccumARenMp | _fldExprOaccumARenMp `seq` (True) ->
                                                                                  (case (fldExpr_1 _fldExprOaccumARenMp _fldExprOlev _fldExprOmoduleNm) of
                                                                                   { ( _fldExprIaccumARenMp,fldExpr_2) | True ->
                                                                                       (case (_fldExprIaccumARenMp) of
                                                                                        { _aRenMp | _aRenMp `seq` (True) ->
                                                                                        (case (_aRenMp) of
                                                                                         { _fldExprOaRenMp | _fldExprOaRenMp `seq` (True) ->
                                                                                         (case (_lhsImoduleNm) of
                                                                                          { _offsetOmoduleNm | _offsetOmoduleNm `seq` (True) ->
                                                                                          (case (_lhsIlev) of
                                                                                           { _offsetOlev | _offsetOlev `seq` (True) ->
                                                                                           (case (_accumARenMp) of
                                                                                            { _offsetOaccumARenMp | _offsetOaccumARenMp `seq` (True) ->
                                                                                            (case (_aRenMp) of
                                                                                             { _offsetOaRenMp | _offsetOaRenMp `seq` (True) ->
                                                                                             (case (_lhsImoduleNm) of
                                                                                              { _exprOmoduleNm | _exprOmoduleNm `seq` (True) ->
                                                                                              (case (_lhsIlev) of
                                                                                               { _exprOlev | _exprOlev `seq` (True) ->
                                                                                               (case (_aRenMp) of
                                                                                                { _exprOaRenMp | _exprOaRenMp `seq` (True) ->
                                                                                                (case (_lhsIaRenMp) of
                                                                                                 { _exprOaccumARenMp | _exprOaccumARenMp `seq` (True) ->
                                                                                                 (case (fldExpr_2 _fldExprOaRenMp) of
                                                                                                  { ( _fldExprIcTrf) | True ->
                                                                                                      (case (offset_1 _offsetOaccumARenMp _offsetOlev _offsetOmoduleNm) of
                                                                                                       { ( _offsetIaccumARenMp,offset_2) | True ->
                                                                                                           (case (offset_2 _offsetOaRenMp) of
                                                                                                            { ( _offsetIcTrf) | True ->
                                                                                                                (case (expr_1 _exprOaccumARenMp _exprOlev _exprOmoduleNm) of
                                                                                                                 { ( _exprIaccumARenMp,expr_2) | True ->
                                                                                                                     (case (expr_2 _exprOaRenMp) of
                                                                                                                      { ( _exprIcTrf) | True ->
                                                                                                                          (case (CExpr_TupIns _exprIcTrf tag_ nm_ _offsetIcTrf _fldExprIcTrf) of
                                                                                                                           { _cTrf | _cTrf `seq` (True) ->
                                                                                                                           (case (_cTrf) of
                                                                                                                            { _lhsOcTrf | _lhsOcTrf `seq` (True) ->
                                                                                                                            ( _lhsOcTrf) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
                                                                 in  sem_CExpr_TupIns_2)) of
                                                          { ( sem_CExpr_2) | True ->
                                                          ( _lhsOaccumARenMp,sem_CExpr_2) }) }))
                                           in  sem_CExpr_TupIns_1)) of
                                    { ( sem_CExpr_1) | True ->
                                    ( _lhsOgIniq,_lhsOisLamBody,sem_CExpr_1) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
sem_CExpr_TupUpd :: T_CExpr ->
                    CTag ->
                    HsName ->
                    T_CExpr ->
                    T_CExpr ->
                    T_CExpr
sem_CExpr_TupUpd expr_ tag_ nm_ offset_ fldExpr_ =
    (\ _lhsIgIniq
       _lhsIprotectedBindingNames
       _lhsIropts ->
         (case (_lhsIropts) of
          { _fldExprOropts | _fldExprOropts `seq` (True) ->
          (case (_lhsIprotectedBindingNames) of
           { _fldExprOprotectedBindingNames | _fldExprOprotectedBindingNames `seq` (True) ->
           (case (_lhsIropts) of
            { _offsetOropts | _offsetOropts `seq` (True) ->
            (case (_lhsIprotectedBindingNames) of
             { _offsetOprotectedBindingNames | _offsetOprotectedBindingNames `seq` (True) ->
             (case (_lhsIropts) of
              { _exprOropts | _exprOropts `seq` (True) ->
              (case (_lhsIprotectedBindingNames) of
               { _exprOprotectedBindingNames | _exprOprotectedBindingNames `seq` (True) ->
               (case (_lhsIgIniq) of
                { _exprOgIniq | _exprOgIniq `seq` (True) ->
                (case (expr_ _exprOgIniq _exprOprotectedBindingNames _exprOropts) of
                 { ( _exprIgIniq,_exprIisLamBody,expr_1) | True ->
                     (case (_exprIgIniq) of
                      { _offsetOgIniq | _offsetOgIniq `seq` (True) ->
                      (case (offset_ _offsetOgIniq _offsetOprotectedBindingNames _offsetOropts) of
                       { ( _offsetIgIniq,_offsetIisLamBody,offset_1) | True ->
                           (case (_offsetIgIniq) of
                            { _fldExprOgIniq | _fldExprOgIniq `seq` (True) ->
                            (case (fldExpr_ _fldExprOgIniq _fldExprOprotectedBindingNames _fldExprOropts) of
                             { ( _fldExprIgIniq,_fldExprIisLamBody,fldExpr_1) | True ->
                                 (case (_fldExprIgIniq) of
                                  { _lhsOgIniq | _lhsOgIniq `seq` (True) ->
                                  (case (True) of
                                   { _lhsOisLamBody | _lhsOisLamBody `seq` (True) ->
                                   (case ((let sem_CExpr_TupUpd_1 :: T_CExpr_1
                                               sem_CExpr_TupUpd_1 =
                                                   (\ _lhsIaccumARenMp
                                                      _lhsIlev
                                                      _lhsImoduleNm ->
                                                        (case (_lhsIaccumARenMp) of
                                                         { _lhsOaccumARenMp | _lhsOaccumARenMp `seq` (True) ->
                                                         (case ((let sem_CExpr_TupUpd_2 :: T_CExpr_2
                                                                     sem_CExpr_TupUpd_2 =
                                                                         (\ _lhsIaRenMp ->
                                                                              (case (_lhsImoduleNm) of
                                                                               { _fldExprOmoduleNm | _fldExprOmoduleNm `seq` (True) ->
                                                                               (case (_lhsIlev) of
                                                                                { _fldExprOlev | _fldExprOlev `seq` (True) ->
                                                                                (case (_lhsIaRenMp) of
                                                                                 { _accumARenMp | _accumARenMp `seq` (True) ->
                                                                                 (case (_accumARenMp) of
                                                                                  { _fldExprOaccumARenMp | _fldExprOaccumARenMp `seq` (True) ->
                                                                                  (case (fldExpr_1 _fldExprOaccumARenMp _fldExprOlev _fldExprOmoduleNm) of
                                                                                   { ( _fldExprIaccumARenMp,fldExpr_2) | True ->
                                                                                       (case (_fldExprIaccumARenMp) of
                                                                                        { _aRenMp | _aRenMp `seq` (True) ->
                                                                                        (case (_aRenMp) of
                                                                                         { _fldExprOaRenMp | _fldExprOaRenMp `seq` (True) ->
                                                                                         (case (_lhsImoduleNm) of
                                                                                          { _offsetOmoduleNm | _offsetOmoduleNm `seq` (True) ->
                                                                                          (case (_lhsIlev) of
                                                                                           { _offsetOlev | _offsetOlev `seq` (True) ->
                                                                                           (case (_accumARenMp) of
                                                                                            { _offsetOaccumARenMp | _offsetOaccumARenMp `seq` (True) ->
                                                                                            (case (_aRenMp) of
                                                                                             { _offsetOaRenMp | _offsetOaRenMp `seq` (True) ->
                                                                                             (case (_lhsImoduleNm) of
                                                                                              { _exprOmoduleNm | _exprOmoduleNm `seq` (True) ->
                                                                                              (case (_lhsIlev) of
                                                                                               { _exprOlev | _exprOlev `seq` (True) ->
                                                                                               (case (_aRenMp) of
                                                                                                { _exprOaRenMp | _exprOaRenMp `seq` (True) ->
                                                                                                (case (_lhsIaRenMp) of
                                                                                                 { _exprOaccumARenMp | _exprOaccumARenMp `seq` (True) ->
                                                                                                 (case (fldExpr_2 _fldExprOaRenMp) of
                                                                                                  { ( _fldExprIcTrf) | True ->
                                                                                                      (case (offset_1 _offsetOaccumARenMp _offsetOlev _offsetOmoduleNm) of
                                                                                                       { ( _offsetIaccumARenMp,offset_2) | True ->
                                                                                                           (case (offset_2 _offsetOaRenMp) of
                                                                                                            { ( _offsetIcTrf) | True ->
                                                                                                                (case (expr_1 _exprOaccumARenMp _exprOlev _exprOmoduleNm) of
                                                                                                                 { ( _exprIaccumARenMp,expr_2) | True ->
                                                                                                                     (case (expr_2 _exprOaRenMp) of
                                                                                                                      { ( _exprIcTrf) | True ->
                                                                                                                          (case (CExpr_TupUpd _exprIcTrf tag_ nm_ _offsetIcTrf _fldExprIcTrf) of
                                                                                                                           { _cTrf | _cTrf `seq` (True) ->
                                                                                                                           (case (_cTrf) of
                                                                                                                            { _lhsOcTrf | _lhsOcTrf `seq` (True) ->
                                                                                                                            ( _lhsOcTrf) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
                                                                 in  sem_CExpr_TupUpd_2)) of
                                                          { ( sem_CExpr_2) | True ->
                                                          ( _lhsOaccumARenMp,sem_CExpr_2) }) }))
                                           in  sem_CExpr_TupUpd_1)) of
                                    { ( sem_CExpr_1) | True ->
                                    ( _lhsOgIniq,_lhsOisLamBody,sem_CExpr_1) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
sem_CExpr_FFI :: FFIWay ->
                 String ->
                 ForeignEnt ->
                 Ty ->
                 T_CExpr
sem_CExpr_FFI callconv_ safety_ impEnt_ ty_ =
    (\ _lhsIgIniq
       _lhsIprotectedBindingNames
       _lhsIropts ->
         (case (_lhsIgIniq) of
          { _lhsOgIniq | _lhsOgIniq `seq` (True) ->
          (case (True) of
           { _lhsOisLamBody | _lhsOisLamBody `seq` (True) ->
           (case ((let sem_CExpr_FFI_1 :: T_CExpr_1
                       sem_CExpr_FFI_1 =
                           (\ _lhsIaccumARenMp
                              _lhsIlev
                              _lhsImoduleNm ->
                                (case (_lhsIaccumARenMp) of
                                 { _lhsOaccumARenMp | _lhsOaccumARenMp `seq` (True) ->
                                 (case ((let sem_CExpr_FFI_2 :: T_CExpr_2
                                             sem_CExpr_FFI_2 =
                                                 (\ _lhsIaRenMp ->
                                                      (case (CExpr_FFI callconv_ safety_ impEnt_ ty_) of
                                                       { _cTrf | _cTrf `seq` (True) ->
                                                       (case (_cTrf) of
                                                        { _lhsOcTrf | _lhsOcTrf `seq` (True) ->
                                                        ( _lhsOcTrf) }) }))
                                         in  sem_CExpr_FFI_2)) of
                                  { ( sem_CExpr_2) | True ->
                                  ( _lhsOaccumARenMp,sem_CExpr_2) }) }))
                   in  sem_CExpr_FFI_1)) of
            { ( sem_CExpr_1) | True ->
            ( _lhsOgIniq,_lhsOisLamBody,sem_CExpr_1) }) }) }))
sem_CExpr_Dbg :: String ->
                 T_CExpr
sem_CExpr_Dbg info_ =
    (\ _lhsIgIniq
       _lhsIprotectedBindingNames
       _lhsIropts ->
         (case (_lhsIgIniq) of
          { _lhsOgIniq | _lhsOgIniq `seq` (True) ->
          (case (True) of
           { _lhsOisLamBody | _lhsOisLamBody `seq` (True) ->
           (case ((let sem_CExpr_Dbg_1 :: T_CExpr_1
                       sem_CExpr_Dbg_1 =
                           (\ _lhsIaccumARenMp
                              _lhsIlev
                              _lhsImoduleNm ->
                                (case (_lhsIaccumARenMp) of
                                 { _lhsOaccumARenMp | _lhsOaccumARenMp `seq` (True) ->
                                 (case ((let sem_CExpr_Dbg_2 :: T_CExpr_2
                                             sem_CExpr_Dbg_2 =
                                                 (\ _lhsIaRenMp ->
                                                      (case (CExpr_Dbg info_) of
                                                       { _cTrf | _cTrf `seq` (True) ->
                                                       (case (_cTrf) of
                                                        { _lhsOcTrf | _lhsOcTrf `seq` (True) ->
                                                        ( _lhsOcTrf) }) }))
                                         in  sem_CExpr_Dbg_2)) of
                                  { ( sem_CExpr_2) | True ->
                                  ( _lhsOaccumARenMp,sem_CExpr_2) }) }))
                   in  sem_CExpr_Dbg_1)) of
            { ( sem_CExpr_1) | True ->
            ( _lhsOgIniq,_lhsOisLamBody,sem_CExpr_1) }) }) }))
sem_CExpr_Hole :: UID ->
                  T_CExpr
sem_CExpr_Hole uid_ =
    (\ _lhsIgIniq
       _lhsIprotectedBindingNames
       _lhsIropts ->
         (case (_lhsIgIniq) of
          { _lhsOgIniq | _lhsOgIniq `seq` (True) ->
          (case (True) of
           { _lhsOisLamBody | _lhsOisLamBody `seq` (True) ->
           (case ((let sem_CExpr_Hole_1 :: T_CExpr_1
                       sem_CExpr_Hole_1 =
                           (\ _lhsIaccumARenMp
                              _lhsIlev
                              _lhsImoduleNm ->
                                (case (_lhsIaccumARenMp) of
                                 { _lhsOaccumARenMp | _lhsOaccumARenMp `seq` (True) ->
                                 (case ((let sem_CExpr_Hole_2 :: T_CExpr_2
                                             sem_CExpr_Hole_2 =
                                                 (\ _lhsIaRenMp ->
                                                      (case (CExpr_Hole uid_) of
                                                       { _cTrf | _cTrf `seq` (True) ->
                                                       (case (_cTrf) of
                                                        { _lhsOcTrf | _lhsOcTrf `seq` (True) ->
                                                        ( _lhsOcTrf) }) }))
                                         in  sem_CExpr_Hole_2)) of
                                  { ( sem_CExpr_2) | True ->
                                  ( _lhsOaccumARenMp,sem_CExpr_2) }) }))
                   in  sem_CExpr_Hole_1)) of
            { ( sem_CExpr_1) | True ->
            ( _lhsOgIniq,_lhsOisLamBody,sem_CExpr_1) }) }) }))
sem_CExpr_HoleLet :: UID ->
                     T_CExpr ->
                     T_CExpr
sem_CExpr_HoleLet bindsUid_ body_ =
    (\ _lhsIgIniq
       _lhsIprotectedBindingNames
       _lhsIropts ->
         (case (_lhsIropts) of
          { _bodyOropts | _bodyOropts `seq` (True) ->
          (case (_lhsIprotectedBindingNames) of
           { _bodyOprotectedBindingNames | _bodyOprotectedBindingNames `seq` (True) ->
           (case (_lhsIgIniq) of
            { _bodyOgIniq | _bodyOgIniq `seq` (True) ->
            (case (body_ _bodyOgIniq _bodyOprotectedBindingNames _bodyOropts) of
             { ( _bodyIgIniq,_bodyIisLamBody,body_1) | True ->
                 (case (_bodyIgIniq) of
                  { _lhsOgIniq | _lhsOgIniq `seq` (True) ->
                  (case (True) of
                   { _lhsOisLamBody | _lhsOisLamBody `seq` (True) ->
                   (case ((let sem_CExpr_HoleLet_1 :: T_CExpr_1
                               sem_CExpr_HoleLet_1 =
                                   (\ _lhsIaccumARenMp
                                      _lhsIlev
                                      _lhsImoduleNm ->
                                        (case (_lhsIaccumARenMp) of
                                         { _lhsOaccumARenMp | _lhsOaccumARenMp `seq` (True) ->
                                         (case ((let sem_CExpr_HoleLet_2 :: T_CExpr_2
                                                     sem_CExpr_HoleLet_2 =
                                                         (\ _lhsIaRenMp ->
                                                              (case (_lhsImoduleNm) of
                                                               { _bodyOmoduleNm | _bodyOmoduleNm `seq` (True) ->
                                                               (case (_lhsIlev) of
                                                                { _bodyOlev | _bodyOlev `seq` (True) ->
                                                                (case (_lhsIaRenMp) of
                                                                 { _bodyOaccumARenMp | _bodyOaccumARenMp `seq` (True) ->
                                                                 (case (body_1 _bodyOaccumARenMp _bodyOlev _bodyOmoduleNm) of
                                                                  { ( _bodyIaccumARenMp,body_2) | True ->
                                                                      (case (_bodyIaccumARenMp) of
                                                                       { _aRenMp | _aRenMp `seq` (True) ->
                                                                       (case (_aRenMp) of
                                                                        { _bodyOaRenMp | _bodyOaRenMp `seq` (True) ->
                                                                        (case (body_2 _bodyOaRenMp) of
                                                                         { ( _bodyIcTrf) | True ->
                                                                             (case (CExpr_HoleLet bindsUid_ _bodyIcTrf) of
                                                                              { _cTrf | _cTrf `seq` (True) ->
                                                                              (case (_cTrf) of
                                                                               { _lhsOcTrf | _lhsOcTrf `seq` (True) ->
                                                                               ( _lhsOcTrf) }) }) }) }) }) }) }) }) }))
                                                 in  sem_CExpr_HoleLet_2)) of
                                          { ( sem_CExpr_2) | True ->
                                          ( _lhsOaccumARenMp,sem_CExpr_2) }) }))
                           in  sem_CExpr_HoleLet_1)) of
                    { ( sem_CExpr_1) | True ->
                    ( _lhsOgIniq,_lhsOisLamBody,sem_CExpr_1) }) }) }) }) }) }) }))
sem_CExpr_CoeArg :: T_CExpr
sem_CExpr_CoeArg =
    (\ _lhsIgIniq
       _lhsIprotectedBindingNames
       _lhsIropts ->
         (case (_lhsIgIniq) of
          { _lhsOgIniq | _lhsOgIniq `seq` (True) ->
          (case (True) of
           { _lhsOisLamBody | _lhsOisLamBody `seq` (True) ->
           (case ((let sem_CExpr_CoeArg_1 :: T_CExpr_1
                       sem_CExpr_CoeArg_1 =
                           (\ _lhsIaccumARenMp
                              _lhsIlev
                              _lhsImoduleNm ->
                                (case (_lhsIaccumARenMp) of
                                 { _lhsOaccumARenMp | _lhsOaccumARenMp `seq` (True) ->
                                 (case ((let sem_CExpr_CoeArg_2 :: T_CExpr_2
                                             sem_CExpr_CoeArg_2 =
                                                 (\ _lhsIaRenMp ->
                                                      (case (CExpr_CoeArg) of
                                                       { _cTrf | _cTrf `seq` (True) ->
                                                       (case (_cTrf) of
                                                        { _lhsOcTrf | _lhsOcTrf `seq` (True) ->
                                                        ( _lhsOcTrf) }) }))
                                         in  sem_CExpr_CoeArg_2)) of
                                  { ( sem_CExpr_2) | True ->
                                  ( _lhsOaccumARenMp,sem_CExpr_2) }) }))
                   in  sem_CExpr_CoeArg_1)) of
            { ( sem_CExpr_1) | True ->
            ( _lhsOgIniq,_lhsOisLamBody,sem_CExpr_1) }) }) }))
sem_CExpr_ImplsApp :: T_CExpr ->
                      ImplsVarId ->
                      T_CExpr
sem_CExpr_ImplsApp func_ uid_ =
    (\ _lhsIgIniq
       _lhsIprotectedBindingNames
       _lhsIropts ->
         (case (_lhsIropts) of
          { _funcOropts | _funcOropts `seq` (True) ->
          (case (_lhsIprotectedBindingNames) of
           { _funcOprotectedBindingNames | _funcOprotectedBindingNames `seq` (True) ->
           (case (_lhsIgIniq) of
            { _funcOgIniq | _funcOgIniq `seq` (True) ->
            (case (func_ _funcOgIniq _funcOprotectedBindingNames _funcOropts) of
             { ( _funcIgIniq,_funcIisLamBody,func_1) | True ->
                 (case (_funcIgIniq) of
                  { _lhsOgIniq | _lhsOgIniq `seq` (True) ->
                  (case (True) of
                   { _lhsOisLamBody | _lhsOisLamBody `seq` (True) ->
                   (case ((let sem_CExpr_ImplsApp_1 :: T_CExpr_1
                               sem_CExpr_ImplsApp_1 =
                                   (\ _lhsIaccumARenMp
                                      _lhsIlev
                                      _lhsImoduleNm ->
                                        (case (_lhsIaccumARenMp) of
                                         { _lhsOaccumARenMp | _lhsOaccumARenMp `seq` (True) ->
                                         (case ((let sem_CExpr_ImplsApp_2 :: T_CExpr_2
                                                     sem_CExpr_ImplsApp_2 =
                                                         (\ _lhsIaRenMp ->
                                                              (case (_lhsImoduleNm) of
                                                               { _funcOmoduleNm | _funcOmoduleNm `seq` (True) ->
                                                               (case (_lhsIlev) of
                                                                { _funcOlev | _funcOlev `seq` (True) ->
                                                                (case (_lhsIaRenMp) of
                                                                 { _funcOaccumARenMp | _funcOaccumARenMp `seq` (True) ->
                                                                 (case (func_1 _funcOaccumARenMp _funcOlev _funcOmoduleNm) of
                                                                  { ( _funcIaccumARenMp,func_2) | True ->
                                                                      (case (_funcIaccumARenMp) of
                                                                       { _aRenMp | _aRenMp `seq` (True) ->
                                                                       (case (_aRenMp) of
                                                                        { _funcOaRenMp | _funcOaRenMp `seq` (True) ->
                                                                        (case (func_2 _funcOaRenMp) of
                                                                         { ( _funcIcTrf) | True ->
                                                                             (case (CExpr_ImplsApp _funcIcTrf uid_) of
                                                                              { _cTrf | _cTrf `seq` (True) ->
                                                                              (case (_cTrf) of
                                                                               { _lhsOcTrf | _lhsOcTrf `seq` (True) ->
                                                                               ( _lhsOcTrf) }) }) }) }) }) }) }) }) }))
                                                 in  sem_CExpr_ImplsApp_2)) of
                                          { ( sem_CExpr_2) | True ->
                                          ( _lhsOaccumARenMp,sem_CExpr_2) }) }))
                           in  sem_CExpr_ImplsApp_1)) of
                    { ( sem_CExpr_1) | True ->
                    ( _lhsOgIniq,_lhsOisLamBody,sem_CExpr_1) }) }) }) }) }) }) }))
sem_CExpr_ImplsLam :: ImplsVarId ->
                      T_CExpr ->
                      T_CExpr
sem_CExpr_ImplsLam uid_ body_ =
    (\ _lhsIgIniq
       _lhsIprotectedBindingNames
       _lhsIropts ->
         (case (_lhsIropts) of
          { _bodyOropts | _bodyOropts `seq` (True) ->
          (case (_lhsIprotectedBindingNames) of
           { _bodyOprotectedBindingNames | _bodyOprotectedBindingNames `seq` (True) ->
           (case (_lhsIgIniq) of
            { _bodyOgIniq | _bodyOgIniq `seq` (True) ->
            (case (body_ _bodyOgIniq _bodyOprotectedBindingNames _bodyOropts) of
             { ( _bodyIgIniq,_bodyIisLamBody,body_1) | True ->
                 (case (_bodyIgIniq) of
                  { _lhsOgIniq | _lhsOgIniq `seq` (True) ->
                  (case (True) of
                   { _lhsOisLamBody | _lhsOisLamBody `seq` (True) ->
                   (case ((let sem_CExpr_ImplsLam_1 :: T_CExpr_1
                               sem_CExpr_ImplsLam_1 =
                                   (\ _lhsIaccumARenMp
                                      _lhsIlev
                                      _lhsImoduleNm ->
                                        (case (_lhsIaccumARenMp) of
                                         { _lhsOaccumARenMp | _lhsOaccumARenMp `seq` (True) ->
                                         (case ((let sem_CExpr_ImplsLam_2 :: T_CExpr_2
                                                     sem_CExpr_ImplsLam_2 =
                                                         (\ _lhsIaRenMp ->
                                                              (case (_lhsImoduleNm) of
                                                               { _bodyOmoduleNm | _bodyOmoduleNm `seq` (True) ->
                                                               (case (_lhsIlev) of
                                                                { _bodyOlev | _bodyOlev `seq` (True) ->
                                                                (case (_lhsIaRenMp) of
                                                                 { _bodyOaccumARenMp | _bodyOaccumARenMp `seq` (True) ->
                                                                 (case (body_1 _bodyOaccumARenMp _bodyOlev _bodyOmoduleNm) of
                                                                  { ( _bodyIaccumARenMp,body_2) | True ->
                                                                      (case (_bodyIaccumARenMp) of
                                                                       { _aRenMp | _aRenMp `seq` (True) ->
                                                                       (case (_aRenMp) of
                                                                        { _bodyOaRenMp | _bodyOaRenMp `seq` (True) ->
                                                                        (case (body_2 _bodyOaRenMp) of
                                                                         { ( _bodyIcTrf) | True ->
                                                                             (case (CExpr_ImplsLam uid_ _bodyIcTrf) of
                                                                              { _cTrf | _cTrf `seq` (True) ->
                                                                              (case (_cTrf) of
                                                                               { _lhsOcTrf | _lhsOcTrf `seq` (True) ->
                                                                               ( _lhsOcTrf) }) }) }) }) }) }) }) }) }))
                                                 in  sem_CExpr_ImplsLam_2)) of
                                          { ( sem_CExpr_2) | True ->
                                          ( _lhsOaccumARenMp,sem_CExpr_2) }) }))
                           in  sem_CExpr_ImplsLam_1)) of
                    { ( sem_CExpr_1) | True ->
                    ( _lhsOgIniq,_lhsOisLamBody,sem_CExpr_1) }) }) }) }) }) }) }))
sem_CExpr_Ann :: T_CExprAnn ->
                 T_CExpr ->
                 T_CExpr
sem_CExpr_Ann ann_ expr_ =
    (\ _lhsIgIniq
       _lhsIprotectedBindingNames
       _lhsIropts ->
         (case (_lhsIropts) of
          { _exprOropts | _exprOropts `seq` (True) ->
          (case (_lhsIprotectedBindingNames) of
           { _exprOprotectedBindingNames | _exprOprotectedBindingNames `seq` (True) ->
           (case (_lhsIgIniq) of
            { _annOgIniq | _annOgIniq `seq` (True) ->
            (case (ann_ _annOgIniq) of
             { ( _annIgIniq,ann_1) | True ->
                 (case (_annIgIniq) of
                  { _exprOgIniq | _exprOgIniq `seq` (True) ->
                  (case (expr_ _exprOgIniq _exprOprotectedBindingNames _exprOropts) of
                   { ( _exprIgIniq,_exprIisLamBody,expr_1) | True ->
                       (case (_exprIgIniq) of
                        { _lhsOgIniq | _lhsOgIniq `seq` (True) ->
                        (case (_exprIisLamBody) of
                         { _lhsOisLamBody | _lhsOisLamBody `seq` (True) ->
                         (case ((let sem_CExpr_Ann_1 :: T_CExpr_1
                                     sem_CExpr_Ann_1 =
                                         (\ _lhsIaccumARenMp
                                            _lhsIlev
                                            _lhsImoduleNm ->
                                              (case (_lhsImoduleNm) of
                                               { _exprOmoduleNm | _exprOmoduleNm `seq` (True) ->
                                               (case (_lhsIlev) of
                                                { _exprOlev | _exprOlev `seq` (True) ->
                                                (case (_lhsIaccumARenMp) of
                                                 { _exprOaccumARenMp | _exprOaccumARenMp `seq` (True) ->
                                                 (case (expr_1 _exprOaccumARenMp _exprOlev _exprOmoduleNm) of
                                                  { ( _exprIaccumARenMp,expr_2) | True ->
                                                      (case (_exprIaccumARenMp) of
                                                       { _lhsOaccumARenMp | _lhsOaccumARenMp `seq` (True) ->
                                                       (case ((let sem_CExpr_Ann_2 :: T_CExpr_2
                                                                   sem_CExpr_Ann_2 =
                                                                       (\ _lhsIaRenMp ->
                                                                            (case (_lhsIaRenMp) of
                                                                             { _exprOaRenMp | _exprOaRenMp `seq` (True) ->
                                                                             (case (expr_2 _exprOaRenMp) of
                                                                              { ( _exprIcTrf) | True ->
                                                                                  (case (_lhsIropts) of
                                                                                   { _annOropts | _annOropts `seq` (True) ->
                                                                                   (case (_lhsImoduleNm) of
                                                                                    { _annOmoduleNm | _annOmoduleNm `seq` (True) ->
                                                                                    (case (_lhsIlev) of
                                                                                     { _annOlev | _annOlev `seq` (True) ->
                                                                                     (case (_lhsIaRenMp) of
                                                                                      { _annOaRenMp | _annOaRenMp `seq` (True) ->
                                                                                      (case (ann_1 _annOaRenMp _annOlev _annOmoduleNm _annOropts) of
                                                                                       { ( _annIcTrf) | True ->
                                                                                           (case (CExpr_Ann _annIcTrf _exprIcTrf) of
                                                                                            { _cTrf | _cTrf `seq` (True) ->
                                                                                            (case (_cTrf) of
                                                                                             { _lhsOcTrf | _lhsOcTrf `seq` (True) ->
                                                                                             ( _lhsOcTrf) }) }) }) }) }) }) }) }) }))
                                                               in  sem_CExpr_Ann_2)) of
                                                        { ( sem_CExpr_2) | True ->
                                                        ( _lhsOaccumARenMp,sem_CExpr_2) }) }) }) }) }) }))
                                 in  sem_CExpr_Ann_1)) of
                          { ( sem_CExpr_1) | True ->
                          ( _lhsOgIniq,_lhsOisLamBody,sem_CExpr_1) }) }) }) }) }) }) }) }) }))
-- CExprAnn ----------------------------------------------------
{-
   visit 0:
      chained attribute:
         gIniq                : Int
   visit 1:
      inherited attributes:
         aRenMp               : ARenMp
         lev                  : Int
         moduleNm             : HsName
         ropts                : RenUniqOpts
      synthesized attribute:
         cTrf                 : CExprAnn 
   alternatives:
      alternative Ty:
         child ty             : {Ty}
         visit 1:
            local cTrf        : _
      alternative Debug:
         child info           : {String}
         visit 1:
            local cTrf        : _
-}
-- cata
sem_CExprAnn :: CExprAnn ->
                T_CExprAnn
sem_CExprAnn (CExprAnn_Ty _ty) =
    (sem_CExprAnn_Ty _ty)
sem_CExprAnn (CExprAnn_Debug _info) =
    (sem_CExprAnn_Debug _info)
-- semantic domain
type T_CExprAnn = Int ->
                  ( Int,T_CExprAnn_1)
type T_CExprAnn_1 = ARenMp ->
                    Int ->
                    HsName ->
                    RenUniqOpts ->
                    ( CExprAnn)
sem_CExprAnn_Ty :: Ty ->
                   T_CExprAnn
sem_CExprAnn_Ty ty_ =
    (\ _lhsIgIniq ->
         (case (_lhsIgIniq) of
          { _lhsOgIniq | _lhsOgIniq `seq` (True) ->
          (case ((let sem_CExprAnn_Ty_1 :: T_CExprAnn_1
                      sem_CExprAnn_Ty_1 =
                          (\ _lhsIaRenMp
                             _lhsIlev
                             _lhsImoduleNm
                             _lhsIropts ->
                               (case (CExprAnn_Ty ty_) of
                                { _cTrf | _cTrf `seq` (True) ->
                                (case (_cTrf) of
                                 { _lhsOcTrf | _lhsOcTrf `seq` (True) ->
                                 ( _lhsOcTrf) }) }))
                  in  sem_CExprAnn_Ty_1)) of
           { ( sem_CExprAnn_1) | True ->
           ( _lhsOgIniq,sem_CExprAnn_1) }) }))
sem_CExprAnn_Debug :: String ->
                      T_CExprAnn
sem_CExprAnn_Debug info_ =
    (\ _lhsIgIniq ->
         (case (_lhsIgIniq) of
          { _lhsOgIniq | _lhsOgIniq `seq` (True) ->
          (case ((let sem_CExprAnn_Debug_1 :: T_CExprAnn_1
                      sem_CExprAnn_Debug_1 =
                          (\ _lhsIaRenMp
                             _lhsIlev
                             _lhsImoduleNm
                             _lhsIropts ->
                               (case (CExprAnn_Debug info_) of
                                { _cTrf | _cTrf `seq` (True) ->
                                (case (_cTrf) of
                                 { _lhsOcTrf | _lhsOcTrf `seq` (True) ->
                                 ( _lhsOcTrf) }) }))
                  in  sem_CExprAnn_Debug_1)) of
           { ( sem_CExprAnn_1) | True ->
           ( _lhsOgIniq,sem_CExprAnn_1) }) }))
-- 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_ =
    (case (CImport_Import nm_) of
     { _cTrf | _cTrf `seq` (True) ->
     (case (_cTrf) of
      { _lhsOcTrf | _lhsOcTrf `seq` (True) ->
      ( _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_ =
    (case (tl_) of
     { ( _tlIcTrf) | True ->
         (case (hd_) of
          { ( _hdIcTrf) | True ->
              (case ((:) _hdIcTrf _tlIcTrf) of
               { _cTrf | _cTrf `seq` (True) ->
               (case (_cTrf) of
                { _lhsOcTrf | _lhsOcTrf `seq` (True) ->
                ( _lhsOcTrf) }) }) }) })
sem_CImportL_Nil :: T_CImportL
sem_CImportL_Nil =
    (case ([]) of
     { _cTrf | _cTrf `seq` (True) ->
     (case (_cTrf) of
      { _lhsOcTrf | _lhsOcTrf `seq` (True) ->
      ( _lhsOcTrf) }) })
-- CModule -----------------------------------------------------
{-
   visit 0:
      inherited attributes:
         aRenMp               : ARenMp
         lev                  : Int
         ropts                : RenUniqOpts
      chained attribute:
         gIniq                : Int
      synthesized attribute:
         cTrf                 : CModule 
   alternatives:
      alternative Mod:
         child moduleNm       : {HsName}
         child exports        : CExportL 
         child imports        : CImportL 
         child declMetas      : CDeclMetaL 
         child expr           : CExpr 
         visit 0:
            local aRenMp      : _
            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 = ARenMp ->
                 Int ->
                 Int ->
                 RenUniqOpts ->
                 ( CModule,Int)
sem_CModule_Mod :: HsName ->
                   T_CExportL ->
                   T_CImportL ->
                   T_CDeclMetaL ->
                   T_CExpr ->
                   T_CModule
sem_CModule_Mod moduleNm_ exports_ imports_ declMetas_ expr_ =
    (\ _lhsIaRenMp
       _lhsIgIniq
       _lhsIlev
       _lhsIropts ->
         (case (_lhsIropts) of
          { _exprOropts | _exprOropts `seq` (True) ->
          (case (_lhsIlev) of
           { _exprOlev | _exprOlev `seq` (True) ->
           (case (_lhsIgIniq) of
            { _exprOgIniq | _exprOgIniq `seq` (True) ->
            (case ([]) of
             { _exprOprotectedBindingNames | _exprOprotectedBindingNames `seq` (True) ->
             (case (_lhsIaRenMp) of
              { _exprOaccumARenMp | _exprOaccumARenMp `seq` (True) ->
              (case (moduleNm_) of
               { _exprOmoduleNm | _exprOmoduleNm `seq` (True) ->
               (case (expr_ _exprOgIniq _exprOprotectedBindingNames _exprOropts) of
                { ( _exprIgIniq,_exprIisLamBody,expr_1) | True ->
                    (case (expr_1 _exprOaccumARenMp _exprOlev _exprOmoduleNm) of
                     { ( _exprIaccumARenMp,expr_2) | True ->
                         (case (_exprIaccumARenMp) of
                          { _aRenMp | _aRenMp `seq` (True) ->
                          (case (_aRenMp) of
                           { _exprOaRenMp | _exprOaRenMp `seq` (True) ->
                           (case (expr_2 _exprOaRenMp) of
                            { ( _exprIcTrf) | True ->
                                (case (declMetas_) of
                                 { ( _declMetasIcTrf) | True ->
                                     (case (imports_) of
                                      { ( _importsIcTrf) | True ->
                                          (case (exports_) of
                                           { ( _exportsIcTrf) | True ->
                                               (case (CModule_Mod moduleNm_ _exportsIcTrf _importsIcTrf _declMetasIcTrf _exprIcTrf) of
                                                { _cTrf | _cTrf `seq` (True) ->
                                                (case (_cTrf) of
                                                 { _lhsOcTrf | _lhsOcTrf `seq` (True) ->
                                                 (case (_exprIgIniq) of
                                                  { _lhsOgIniq | _lhsOgIniq `seq` (True) ->
                                                  ( _lhsOcTrf,_lhsOgIniq) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
-- CPat --------------------------------------------------------
{-
   visit 0:
      synthesized attribute:
         nmL                  : [HsName]
   visit 1:
      inherited attribute:
         ropts                : RenUniqOpts
      chained attribute:
         gIniq                : Int
   visit 2:
      inherited attributes:
         aRenMp               : ARenMp
         lev                  : Int
         moduleNm             : HsName
      synthesized attributes:
         cTrf                 : CPat 
         fldNmL               : [HsName]
   alternatives:
      alternative Var:
         child pnm            : {HsName}
      alternative Con:
         child tag            : {CTag}
         child rest           : CPatRest 
         child binds          : CPatFldL 
         visit 2:
            local cTrf        : _
      alternative Int:
         child int            : {Int}
         visit 2:
            local cTrf        : _
      alternative Char:
         child char           : {Char}
         visit 2:
            local cTrf        : _
      alternative BoolExpr:
         child cexpr          : {CExpr}
         visit 2:
            local cTrf        : _
-}
-- 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 = ( ([HsName]),T_CPat_1)
type T_CPat_1 = Int ->
                RenUniqOpts ->
                ( Int,T_CPat_2)
type T_CPat_2 = ARenMp ->
                Int ->
                HsName ->
                ( CPat,([HsName]))
sem_CPat_Var :: HsName ->
                T_CPat
sem_CPat_Var pnm_ =
    (case ([pnm_]) of
     { _lhsOnmL | _lhsOnmL `seq` (True) ->
     (case ((let sem_CPat_Var_1 :: T_CPat_1
                 sem_CPat_Var_1 =
                     (\ _lhsIgIniq
                        _lhsIropts ->
                          (case (_lhsIgIniq) of
                           { _lhsOgIniq | _lhsOgIniq `seq` (True) ->
                           (case ((let sem_CPat_Var_2 :: T_CPat_2
                                       sem_CPat_Var_2 =
                                           (\ _lhsIaRenMp
                                              _lhsIlev
                                              _lhsImoduleNm ->
                                                (case (CPat_Var (aRenRepl _lhsIaRenMp $ pnm_)) of
                                                 { _lhsOcTrf | _lhsOcTrf `seq` (True) ->
                                                 (case ([]) of
                                                  { _lhsOfldNmL | _lhsOfldNmL `seq` (True) ->
                                                  ( _lhsOcTrf,_lhsOfldNmL) }) }))
                                   in  sem_CPat_Var_2)) of
                            { ( sem_CPat_2) | True ->
                            ( _lhsOgIniq,sem_CPat_2) }) }))
             in  sem_CPat_Var_1)) of
      { ( sem_CPat_1) | True ->
      ( _lhsOnmL,sem_CPat_1) }) })
sem_CPat_Con :: CTag ->
                T_CPatRest ->
                T_CPatFldL ->
                T_CPat
sem_CPat_Con tag_ rest_ binds_ =
    (case (binds_) of
     { ( _bindsInmL,binds_1) | True ->
         (case (rest_) of
          { ( _restInmL,rest_1) | True ->
              (case (_restInmL ++ _bindsInmL) of
               { _lhsOnmL | _lhsOnmL `seq` (True) ->
               (case ((let sem_CPat_Con_1 :: T_CPat_1
                           sem_CPat_Con_1 =
                               (\ _lhsIgIniq
                                  _lhsIropts ->
                                    (case (_lhsIropts) of
                                     { _bindsOropts | _bindsOropts `seq` (True) ->
                                     (case (_lhsIgIniq) of
                                      { _restOgIniq | _restOgIniq `seq` (True) ->
                                      (case (rest_1 _restOgIniq) of
                                       { ( _restIgIniq,rest_2) | True ->
                                           (case (_restIgIniq) of
                                            { _bindsOgIniq | _bindsOgIniq `seq` (True) ->
                                            (case (binds_1 _bindsOgIniq _bindsOropts) of
                                             { ( _bindsIgIniq,binds_2) | True ->
                                                 (case (_bindsIgIniq) of
                                                  { _lhsOgIniq | _lhsOgIniq `seq` (True) ->
                                                  (case ((let sem_CPat_Con_2 :: T_CPat_2
                                                              sem_CPat_Con_2 =
                                                                  (\ _lhsIaRenMp
                                                                     _lhsIlev
                                                                     _lhsImoduleNm ->
                                                                       (case (_lhsImoduleNm) of
                                                                        { _bindsOmoduleNm | _bindsOmoduleNm `seq` (True) ->
                                                                        (case (_lhsIlev) of
                                                                         { _bindsOlev | _bindsOlev `seq` (True) ->
                                                                         (case (_lhsIaRenMp) of
                                                                          { _bindsOaRenMp | _bindsOaRenMp `seq` (True) ->
                                                                          (case (_lhsIaRenMp) of
                                                                           { _restOaRenMp | _restOaRenMp `seq` (True) ->
                                                                           (case (binds_2 _bindsOaRenMp _bindsOlev _bindsOmoduleNm) of
                                                                            { ( _bindsIcTrf,_bindsIfldNmL) | True ->
                                                                                (case (_lhsIropts) of
                                                                                 { _restOropts | _restOropts `seq` (True) ->
                                                                                 (case (_lhsImoduleNm) of
                                                                                  { _restOmoduleNm | _restOmoduleNm `seq` (True) ->
                                                                                  (case (_lhsIlev) of
                                                                                   { _restOlev | _restOlev `seq` (True) ->
                                                                                   (case (rest_2 _restOaRenMp _restOlev _restOmoduleNm _restOropts) of
                                                                                    { ( _restIcTrf) | True ->
                                                                                        (case (CPat_Con tag_ _restIcTrf _bindsIcTrf) of
                                                                                         { _cTrf | _cTrf `seq` (True) ->
                                                                                         (case (_cTrf) of
                                                                                          { _lhsOcTrf | _lhsOcTrf `seq` (True) ->
                                                                                          (case (_bindsIfldNmL) of
                                                                                           { _lhsOfldNmL | _lhsOfldNmL `seq` (True) ->
                                                                                           ( _lhsOcTrf,_lhsOfldNmL) }) }) }) }) }) }) }) }) }) }) }) }))
                                                          in  sem_CPat_Con_2)) of
                                                   { ( sem_CPat_2) | True ->
                                                   ( _lhsOgIniq,sem_CPat_2) }) }) }) }) }) }) }))
                       in  sem_CPat_Con_1)) of
                { ( sem_CPat_1) | True ->
                ( _lhsOnmL,sem_CPat_1) }) }) }) })
sem_CPat_Int :: Int ->
                T_CPat
sem_CPat_Int int_ =
    (case ([]) of
     { _lhsOnmL | _lhsOnmL `seq` (True) ->
     (case ((let sem_CPat_Int_1 :: T_CPat_1
                 sem_CPat_Int_1 =
                     (\ _lhsIgIniq
                        _lhsIropts ->
                          (case (_lhsIgIniq) of
                           { _lhsOgIniq | _lhsOgIniq `seq` (True) ->
                           (case ((let sem_CPat_Int_2 :: T_CPat_2
                                       sem_CPat_Int_2 =
                                           (\ _lhsIaRenMp
                                              _lhsIlev
                                              _lhsImoduleNm ->
                                                (case (CPat_Int int_) of
                                                 { _cTrf | _cTrf `seq` (True) ->
                                                 (case (_cTrf) of
                                                  { _lhsOcTrf | _lhsOcTrf `seq` (True) ->
                                                  (case ([]) of
                                                   { _lhsOfldNmL | _lhsOfldNmL `seq` (True) ->
                                                   ( _lhsOcTrf,_lhsOfldNmL) }) }) }))
                                   in  sem_CPat_Int_2)) of
                            { ( sem_CPat_2) | True ->
                            ( _lhsOgIniq,sem_CPat_2) }) }))
             in  sem_CPat_Int_1)) of
      { ( sem_CPat_1) | True ->
      ( _lhsOnmL,sem_CPat_1) }) })
sem_CPat_Char :: Char ->
                 T_CPat
sem_CPat_Char char_ =
    (case ([]) of
     { _lhsOnmL | _lhsOnmL `seq` (True) ->
     (case ((let sem_CPat_Char_1 :: T_CPat_1
                 sem_CPat_Char_1 =
                     (\ _lhsIgIniq
                        _lhsIropts ->
                          (case (_lhsIgIniq) of
                           { _lhsOgIniq | _lhsOgIniq `seq` (True) ->
                           (case ((let sem_CPat_Char_2 :: T_CPat_2
                                       sem_CPat_Char_2 =
                                           (\ _lhsIaRenMp
                                              _lhsIlev
                                              _lhsImoduleNm ->
                                                (case (CPat_Char char_) of
                                                 { _cTrf | _cTrf `seq` (True) ->
                                                 (case (_cTrf) of
                                                  { _lhsOcTrf | _lhsOcTrf `seq` (True) ->
                                                  (case ([]) of
                                                   { _lhsOfldNmL | _lhsOfldNmL `seq` (True) ->
                                                   ( _lhsOcTrf,_lhsOfldNmL) }) }) }))
                                   in  sem_CPat_Char_2)) of
                            { ( sem_CPat_2) | True ->
                            ( _lhsOgIniq,sem_CPat_2) }) }))
             in  sem_CPat_Char_1)) of
      { ( sem_CPat_1) | True ->
      ( _lhsOnmL,sem_CPat_1) }) })
sem_CPat_BoolExpr :: CExpr ->
                     T_CPat
sem_CPat_BoolExpr cexpr_ =
    (case ([]) of
     { _lhsOnmL | _lhsOnmL `seq` (True) ->
     (case ((let sem_CPat_BoolExpr_1 :: T_CPat_1
                 sem_CPat_BoolExpr_1 =
                     (\ _lhsIgIniq
                        _lhsIropts ->
                          (case (_lhsIgIniq) of
                           { _lhsOgIniq | _lhsOgIniq `seq` (True) ->
                           (case ((let sem_CPat_BoolExpr_2 :: T_CPat_2
                                       sem_CPat_BoolExpr_2 =
                                           (\ _lhsIaRenMp
                                              _lhsIlev
                                              _lhsImoduleNm ->
                                                (case (CPat_BoolExpr cexpr_) of
                                                 { _cTrf | _cTrf `seq` (True) ->
                                                 (case (_cTrf) of
                                                  { _lhsOcTrf | _lhsOcTrf `seq` (True) ->
                                                  (case ([]) of
                                                   { _lhsOfldNmL | _lhsOfldNmL `seq` (True) ->
                                                   ( _lhsOcTrf,_lhsOfldNmL) }) }) }))
                                   in  sem_CPat_BoolExpr_2)) of
                            { ( sem_CPat_2) | True ->
                            ( _lhsOgIniq,sem_CPat_2) }) }))
             in  sem_CPat_BoolExpr_1)) of
      { ( sem_CPat_1) | True ->
      ( _lhsOnmL,sem_CPat_1) }) })
-- CPatFld -----------------------------------------------------
{-
   visit 0:
      synthesized attribute:
         nmL                  : [HsName]
   visit 1:
      inherited attribute:
         ropts                : RenUniqOpts
      chained attribute:
         gIniq                : Int
   visit 2:
      inherited attributes:
         aRenMp               : ARenMp
         lev                  : Int
         moduleNm             : HsName
      synthesized attributes:
         cTrf                 : CPatFld 
         fldNmL               : [HsName]
   alternatives:
      alternative Fld:
         child lbl            : {HsName}
         child offset         : CExpr 
         child bind           : CBind 
         child fldAnns        : CBindAnnL 
         visit 0:
            local fldNm       : _
         visit 1:
            intra fldNm       : _
         visit 2:
            local aRenMp      : _
            intra fldNm       : _
-}
-- 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 = ( ([HsName]),T_CPatFld_1)
type T_CPatFld_1 = Int ->
                   RenUniqOpts ->
                   ( Int,T_CPatFld_2)
type T_CPatFld_2 = ARenMp ->
                   Int ->
                   HsName ->
                   ( CPatFld,([HsName]))
sem_CPatFld_Fld :: HsName ->
                   T_CExpr ->
                   T_CBind ->
                   T_CBindAnnL ->
                   T_CPatFld
sem_CPatFld_Fld lbl_ offset_ bind_ fldAnns_ =
    (case ([]) of
     { _bindOprotectedBindingNames | _bindOprotectedBindingNames `seq` (True) ->
     (case (bind_ _bindOprotectedBindingNames) of
      { ( _bindInm,_bindInmL,bind_1) | True ->
          (case (_bindInm) of
           { _fldNm | _fldNm `seq` (True) ->
           (case ([_fldNm]) of
            { _lhsOnmL | _lhsOnmL `seq` (True) ->
            (case ((let sem_CPatFld_Fld_1 :: T_CPatFld_1
                        sem_CPatFld_Fld_1 =
                            (\ _lhsIgIniq
                               _lhsIropts ->
                                 (case (_lhsIropts) of
                                  { _bindOropts | _bindOropts `seq` (True) ->
                                  (case (_lhsIropts) of
                                   { _offsetOropts | _offsetOropts `seq` (True) ->
                                   (case (_lhsIgIniq) of
                                    { _offsetOgIniq | _offsetOgIniq `seq` (True) ->
                                    (case ([]) of
                                     { _offsetOprotectedBindingNames | _offsetOprotectedBindingNames `seq` (True) ->
                                     (case (offset_ _offsetOgIniq _offsetOprotectedBindingNames _offsetOropts) of
                                      { ( _offsetIgIniq,_offsetIisLamBody,offset_1) | True ->
                                          (case (_offsetIgIniq) of
                                           { _bindOgIniq | _bindOgIniq `seq` (True) ->
                                           (case (bind_1 _bindOgIniq _bindOropts) of
                                            { ( _bindIgIniq,bind_2) | True ->
                                                (case (_bindIgIniq) of
                                                 { _fldAnnsOgIniq | _fldAnnsOgIniq `seq` (True) ->
                                                 (case (fldAnns_ _fldAnnsOgIniq) of
                                                  { ( _fldAnnsIgIniq,fldAnns_1) | True ->
                                                      (case (_fldAnnsIgIniq) of
                                                       { _lhsOgIniq | _lhsOgIniq `seq` (True) ->
                                                       (case ((let sem_CPatFld_Fld_2 :: T_CPatFld_2
                                                                   sem_CPatFld_Fld_2 =
                                                                       (\ _lhsIaRenMp
                                                                          _lhsIlev
                                                                          _lhsImoduleNm ->
                                                                            (case (_lhsImoduleNm) of
                                                                             { _offsetOmoduleNm | _offsetOmoduleNm `seq` (True) ->
                                                                             (case (_lhsIlev) of
                                                                              { _offsetOlev | _offsetOlev `seq` (True) ->
                                                                              (case (_lhsIaRenMp) of
                                                                               { _offsetOaccumARenMp | _offsetOaccumARenMp `seq` (True) ->
                                                                               (case (offset_1 _offsetOaccumARenMp _offsetOlev _offsetOmoduleNm) of
                                                                                { ( _offsetIaccumARenMp,offset_2) | True ->
                                                                                    (case (_offsetIaccumARenMp) of
                                                                                     { _aRenMp | _aRenMp `seq` (True) ->
                                                                                     (case (_aRenMp) of
                                                                                      { _offsetOaRenMp | _offsetOaRenMp `seq` (True) ->
                                                                                      (case (_lhsIropts) of
                                                                                       { _fldAnnsOropts | _fldAnnsOropts `seq` (True) ->
                                                                                       (case (_lhsImoduleNm) of
                                                                                        { _fldAnnsOmoduleNm | _fldAnnsOmoduleNm `seq` (True) ->
                                                                                        (case (_lhsIlev) of
                                                                                         { _fldAnnsOlev | _fldAnnsOlev `seq` (True) ->
                                                                                         (case (_aRenMp) of
                                                                                          { _fldAnnsOaRenMp | _fldAnnsOaRenMp `seq` (True) ->
                                                                                          (case (fldAnns_1 _fldAnnsOaRenMp _fldAnnsOlev _fldAnnsOmoduleNm _fldAnnsOropts) of
                                                                                           { ( _fldAnnsIcTrf,_fldAnnsInmL) | True ->
                                                                                               (case (offset_2 _offsetOaRenMp) of
                                                                                                { ( _offsetIcTrf) | True ->
                                                                                                    (case (CPatFld_Fld lbl_ _offsetIcTrf (acoreBind1Nm1 $ aRenRepl _aRenMp _fldNm) _fldAnnsIcTrf) of
                                                                                                     { _lhsOcTrf | _lhsOcTrf `seq` (True) ->
                                                                                                     (case ([_fldNm]) of
                                                                                                      { _lhsOfldNmL | _lhsOfldNmL `seq` (True) ->
                                                                                                      ( _lhsOcTrf,_lhsOfldNmL) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
                                                               in  sem_CPatFld_Fld_2)) of
                                                        { ( sem_CPatFld_2) | True ->
                                                        ( _lhsOgIniq,sem_CPatFld_2) }) }) }) }) }) }) }) }) }) }) }))
                    in  sem_CPatFld_Fld_1)) of
             { ( sem_CPatFld_1) | True ->
             ( _lhsOnmL,sem_CPatFld_1) }) }) }) }) })
-- CPatFldL ----------------------------------------------------
{-
   visit 0:
      synthesized attribute:
         nmL                  : [HsName]
   visit 1:
      inherited attribute:
         ropts                : RenUniqOpts
      chained attribute:
         gIniq                : Int
   visit 2:
      inherited attributes:
         aRenMp               : ARenMp
         lev                  : Int
         moduleNm             : HsName
      synthesized attributes:
         cTrf                 : CPatFldL 
         fldNmL               : [HsName]
   alternatives:
      alternative Cons:
         child hd             : CPatFld 
         child tl             : CPatFldL 
         visit 2:
            local cTrf        : _
      alternative Nil:
         visit 2:
            local cTrf        : _
-}
-- 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 = ( ([HsName]),T_CPatFldL_1)
type T_CPatFldL_1 = Int ->
                    RenUniqOpts ->
                    ( Int,T_CPatFldL_2)
type T_CPatFldL_2 = ARenMp ->
                    Int ->
                    HsName ->
                    ( CPatFldL,([HsName]))
sem_CPatFldL_Cons :: T_CPatFld ->
                     T_CPatFldL ->
                     T_CPatFldL
sem_CPatFldL_Cons hd_ tl_ =
    (case (tl_) of
     { ( _tlInmL,tl_1) | True ->
         (case (hd_) of
          { ( _hdInmL,hd_1) | True ->
              (case (_hdInmL ++ _tlInmL) of
               { _lhsOnmL | _lhsOnmL `seq` (True) ->
               (case ((let sem_CPatFldL_Cons_1 :: T_CPatFldL_1
                           sem_CPatFldL_Cons_1 =
                               (\ _lhsIgIniq
                                  _lhsIropts ->
                                    (case (_lhsIropts) of
                                     { _tlOropts | _tlOropts `seq` (True) ->
                                     (case (_lhsIropts) of
                                      { _hdOropts | _hdOropts `seq` (True) ->
                                      (case (_lhsIgIniq) of
                                       { _hdOgIniq | _hdOgIniq `seq` (True) ->
                                       (case (hd_1 _hdOgIniq _hdOropts) of
                                        { ( _hdIgIniq,hd_2) | True ->
                                            (case (_hdIgIniq) of
                                             { _tlOgIniq | _tlOgIniq `seq` (True) ->
                                             (case (tl_1 _tlOgIniq _tlOropts) of
                                              { ( _tlIgIniq,tl_2) | True ->
                                                  (case (_tlIgIniq) of
                                                   { _lhsOgIniq | _lhsOgIniq `seq` (True) ->
                                                   (case ((let sem_CPatFldL_Cons_2 :: T_CPatFldL_2
                                                               sem_CPatFldL_Cons_2 =
                                                                   (\ _lhsIaRenMp
                                                                      _lhsIlev
                                                                      _lhsImoduleNm ->
                                                                        (case (_lhsImoduleNm) of
                                                                         { _tlOmoduleNm | _tlOmoduleNm `seq` (True) ->
                                                                         (case (_lhsIlev) of
                                                                          { _tlOlev | _tlOlev `seq` (True) ->
                                                                          (case (_lhsIaRenMp) of
                                                                           { _tlOaRenMp | _tlOaRenMp `seq` (True) ->
                                                                           (case (_lhsImoduleNm) of
                                                                            { _hdOmoduleNm | _hdOmoduleNm `seq` (True) ->
                                                                            (case (_lhsIlev) of
                                                                             { _hdOlev | _hdOlev `seq` (True) ->
                                                                             (case (_lhsIaRenMp) of
                                                                              { _hdOaRenMp | _hdOaRenMp `seq` (True) ->
                                                                              (case (tl_2 _tlOaRenMp _tlOlev _tlOmoduleNm) of
                                                                               { ( _tlIcTrf,_tlIfldNmL) | True ->
                                                                                   (case (hd_2 _hdOaRenMp _hdOlev _hdOmoduleNm) of
                                                                                    { ( _hdIcTrf,_hdIfldNmL) | True ->
                                                                                        (case ((:) _hdIcTrf _tlIcTrf) of
                                                                                         { _cTrf | _cTrf `seq` (True) ->
                                                                                         (case (_cTrf) of
                                                                                          { _lhsOcTrf | _lhsOcTrf `seq` (True) ->
                                                                                          (case (_hdIfldNmL ++ _tlIfldNmL) of
                                                                                           { _lhsOfldNmL | _lhsOfldNmL `seq` (True) ->
                                                                                           ( _lhsOcTrf,_lhsOfldNmL) }) }) }) }) }) }) }) }) }) }) }))
                                                           in  sem_CPatFldL_Cons_2)) of
                                                    { ( sem_CPatFldL_2) | True ->
                                                    ( _lhsOgIniq,sem_CPatFldL_2) }) }) }) }) }) }) }) }))
                       in  sem_CPatFldL_Cons_1)) of
                { ( sem_CPatFldL_1) | True ->
                ( _lhsOnmL,sem_CPatFldL_1) }) }) }) })
sem_CPatFldL_Nil :: T_CPatFldL
sem_CPatFldL_Nil =
    (case ([]) of
     { _lhsOnmL | _lhsOnmL `seq` (True) ->
     (case ((let sem_CPatFldL_Nil_1 :: T_CPatFldL_1
                 sem_CPatFldL_Nil_1 =
                     (\ _lhsIgIniq
                        _lhsIropts ->
                          (case (_lhsIgIniq) of
                           { _lhsOgIniq | _lhsOgIniq `seq` (True) ->
                           (case ((let sem_CPatFldL_Nil_2 :: T_CPatFldL_2
                                       sem_CPatFldL_Nil_2 =
                                           (\ _lhsIaRenMp
                                              _lhsIlev
                                              _lhsImoduleNm ->
                                                (case ([]) of
                                                 { _cTrf | _cTrf `seq` (True) ->
                                                 (case (_cTrf) of
                                                  { _lhsOcTrf | _lhsOcTrf `seq` (True) ->
                                                  (case ([]) of
                                                   { _lhsOfldNmL | _lhsOfldNmL `seq` (True) ->
                                                   ( _lhsOcTrf,_lhsOfldNmL) }) }) }))
                                   in  sem_CPatFldL_Nil_2)) of
                            { ( sem_CPatFldL_2) | True ->
                            ( _lhsOgIniq,sem_CPatFldL_2) }) }))
             in  sem_CPatFldL_Nil_1)) of
      { ( sem_CPatFldL_1) | True ->
      ( _lhsOnmL,sem_CPatFldL_1) }) })
-- CPatRest ----------------------------------------------------
{-
   visit 0:
      synthesized attribute:
         nmL                  : [HsName]
   visit 1:
      chained attribute:
         gIniq                : Int
   visit 2:
      inherited attributes:
         aRenMp               : ARenMp
         lev                  : Int
         moduleNm             : HsName
         ropts                : RenUniqOpts
      synthesized attribute:
         cTrf                 : CPatRest 
   alternatives:
      alternative Var:
         child nm             : {HsName}
      alternative Empty:
         visit 2:
            local cTrf        : _
-}
-- 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 = ( ([HsName]),T_CPatRest_1)
type T_CPatRest_1 = Int ->
                    ( Int,T_CPatRest_2)
type T_CPatRest_2 = ARenMp ->
                    Int ->
                    HsName ->
                    RenUniqOpts ->
                    ( CPatRest)
sem_CPatRest_Var :: HsName ->
                    T_CPatRest
sem_CPatRest_Var nm_ =
    (case ([nm_]) of
     { _lhsOnmL | _lhsOnmL `seq` (True) ->
     (case ((let sem_CPatRest_Var_1 :: T_CPatRest_1
                 sem_CPatRest_Var_1 =
                     (\ _lhsIgIniq ->
                          (case (_lhsIgIniq) of
                           { _lhsOgIniq | _lhsOgIniq `seq` (True) ->
                           (case ((let sem_CPatRest_Var_2 :: T_CPatRest_2
                                       sem_CPatRest_Var_2 =
                                           (\ _lhsIaRenMp
                                              _lhsIlev
                                              _lhsImoduleNm
                                              _lhsIropts ->
                                                (case (CPatRest_Var (aRenRepl _lhsIaRenMp nm_)) of
                                                 { _lhsOcTrf | _lhsOcTrf `seq` (True) ->
                                                 ( _lhsOcTrf) }))
                                   in  sem_CPatRest_Var_2)) of
                            { ( sem_CPatRest_2) | True ->
                            ( _lhsOgIniq,sem_CPatRest_2) }) }))
             in  sem_CPatRest_Var_1)) of
      { ( sem_CPatRest_1) | True ->
      ( _lhsOnmL,sem_CPatRest_1) }) })
sem_CPatRest_Empty :: T_CPatRest
sem_CPatRest_Empty =
    (case ([]) of
     { _lhsOnmL | _lhsOnmL `seq` (True) ->
     (case ((let sem_CPatRest_Empty_1 :: T_CPatRest_1
                 sem_CPatRest_Empty_1 =
                     (\ _lhsIgIniq ->
                          (case (_lhsIgIniq) of
                           { _lhsOgIniq | _lhsOgIniq `seq` (True) ->
                           (case ((let sem_CPatRest_Empty_2 :: T_CPatRest_2
                                       sem_CPatRest_Empty_2 =
                                           (\ _lhsIaRenMp
                                              _lhsIlev
                                              _lhsImoduleNm
                                              _lhsIropts ->
                                                (case (CPatRest_Empty) of
                                                 { _cTrf | _cTrf `seq` (True) ->
                                                 (case (_cTrf) of
                                                  { _lhsOcTrf | _lhsOcTrf `seq` (True) ->
                                                  ( _lhsOcTrf) }) }))
                                   in  sem_CPatRest_Empty_2)) of
                            { ( sem_CPatRest_2) | True ->
                            ( _lhsOgIniq,sem_CPatRest_2) }) }))
             in  sem_CPatRest_Empty_1)) of
      { ( sem_CPatRest_1) | True ->
      ( _lhsOnmL,sem_CPatRest_1) }) })
-- CodeAGItf ---------------------------------------------------
{-
   visit 0:
      inherited attributes:
         gIniq                : Int
         ropts                : RenUniqOpts
      synthesized attribute:
         cTrf                 : CModule 
   alternatives:
      alternative AGItf:
         child module         : CModule 
-}
-- cata
sem_CodeAGItf :: CodeAGItf ->
                 T_CodeAGItf
sem_CodeAGItf (CodeAGItf_AGItf _module) =
    (sem_CodeAGItf_AGItf (sem_CModule _module))
-- semantic domain
type T_CodeAGItf = Int ->
                   RenUniqOpts ->
                   ( CModule)
data Inh_CodeAGItf = Inh_CodeAGItf {gIniq_Inh_CodeAGItf :: !(Int),ropts_Inh_CodeAGItf :: !(RenUniqOpts)}
data Syn_CodeAGItf = Syn_CodeAGItf {cTrf_Syn_CodeAGItf :: !(CModule)}
wrap_CodeAGItf :: T_CodeAGItf ->
                  Inh_CodeAGItf ->
                  Syn_CodeAGItf
wrap_CodeAGItf sem (Inh_CodeAGItf _lhsIgIniq _lhsIropts) =
    (let ( _lhsOcTrf) | True = sem _lhsIgIniq _lhsIropts
     in  (Syn_CodeAGItf _lhsOcTrf))
sem_CodeAGItf_AGItf :: T_CModule ->
                       T_CodeAGItf
sem_CodeAGItf_AGItf module_ =
    (\ _lhsIgIniq
       _lhsIropts ->
         (case (_lhsIropts) of
          { _moduleOropts | _moduleOropts `seq` (True) ->
          (case (_lhsIgIniq) of
           { _moduleOgIniq | _moduleOgIniq `seq` (True) ->
           (case (cLevModule) of
            { _moduleOlev | _moduleOlev `seq` (True) ->
            (case (emptyARenMp) of
             { _moduleOaRenMp | _moduleOaRenMp `seq` (True) ->
             (case (module_ _moduleOaRenMp _moduleOgIniq _moduleOlev _moduleOropts) of
              { ( _moduleIcTrf,_moduleIgIniq) | True ->
                  (case (_moduleIcTrf) of
                   { _lhsOcTrf | _lhsOcTrf `seq` (True) ->
                   ( _lhsOcTrf) }) }) }) }) }) }))