packages feed

uhc-light-1.1.9.4: src/UHC/Light/Compiler/EH/MainAG_CaseAlts.hs



module UHC.Light.Compiler.EH.MainAG_CaseAlts where

import Data.Char
import Data.List as List
import UHC.Util.Pretty
import UHC.Light.Compiler.Base.Common
import UHC.Light.Compiler.Base.TermLike
import UHC.Light.Compiler.Base.HsName.Builtin
import UHC.Light.Compiler.Opts
import UHC.Light.Compiler.Gam.Full
import UHC.Light.Compiler.Error
import UHC.Light.Compiler.Error.Pretty
import UHC.Light.Compiler.EH
import UHC.Light.Compiler.Ty.Pretty
import UHC.Light.Compiler.Ty.FitsInCommon
import UHC.Light.Compiler.Ty.FitsIn
import qualified UHC.Util.FastSeq as Seq
import UHC.Util.Utils
import UHC.Light.Compiler.Base.Trace
import UHC.Light.Compiler.Base.UnderDev
import UHC.Light.Compiler.VarMp
import UHC.Light.Compiler.Substitutable
import Data.Maybe
import UHC.Light.Compiler.Ty.Utils1
import UHC.Light.Compiler.Ty.Trf.Quantify
import UHC.Light.Compiler.Ty.Trf.Instantiate
import UHC.Light.Compiler.Ty
import UHC.Light.Compiler.Ty.FitsInCommon2
import UHC.Light.Compiler.Ty.FIEnv2
import qualified Data.Set as Set
import qualified Data.Map as Map
import Data.Set (Set)
import Data.Map (Map)
import UHC.Light.Compiler.Ty.Trf.FreshVar
import UHC.Light.Compiler.Ty.Ftv
import UHC.Util.Utils (groupSortOn)
import Control.Applicative ((<|>))
import UHC.Light.Compiler.AbstractCore
import UHC.Light.Compiler.AbstractCore.Utils
import UHC.Light.Compiler.Core
import UHC.Light.Compiler.Core.FFI
import UHC.Light.Compiler.Core.Utils
import UHC.Light.Compiler.Core.Pretty
import UHC.Light.Compiler.Foreign.Extract
import UHC.Light.Compiler.LamInfo
import UHC.Light.Compiler.CodeGen.RefGenerator
import qualified UHC.Light.Compiler.Core.SysF.AsTy as SysF
import UHC.Light.Compiler.FinalEnv
import UHC.Light.Compiler.Core.BindExtract
import UHC.Light.Compiler.Core.Subst
import Control.Monad.State
import UHC.Light.Compiler.Ty.Utils2
import UHC.Light.Compiler.Base.Target
import UHC.Light.Compiler.Core.Coercion
import UHC.Light.Compiler.Ty.Trf.MergePreds
import UHC.Light.Compiler.Ty.Trf.Canonic
import UHC.Light.Compiler.Gam.ClGam
import UHC.Light.Compiler.Pred
import UHC.Light.Compiler.Pred.CtxtRedOnly.RedGraph (redPruneReductionsUntil)
import UHC.Util.CHR
import UHC.Light.Compiler.CHR.CtxtRedOnly.Constraint
import UHC.Light.Compiler.CHR.CtxtRedOnly.Guard
import UHC.Light.Compiler.Pred.CtxtRedOnly.ToCHR
import UHC.Light.Compiler.Pred.CtxtRedOnly.Heuristics
import UHC.Light.Compiler.Pred.CtxtRedOnly.Evidence
import UHC.Light.Compiler.CHR.CtxtRedOnly.Solve
import UHC.Light.Compiler.Pred.CtxtRedOnly.EvidenceToCore
import UHC.Light.Compiler.Gam.ClassDefaultGam
import UHC.Light.Compiler.Ty.Trf.BetaReduce (tyBetaRedFull)
import UHC.Light.Compiler.Module.ImportExport
import UHC.Light.Compiler.Ty.UsedNames
import UHC.Light.Compiler.CodeGen.ImportUsedModules
import UHC.Light.Compiler.CodeGen.ModuleImportExportImpl
import UHC.Light.Compiler.CodeGen.BuiltinPrims
import UHC.Light.Compiler.Foreign
import UHC.Light.Compiler.Foreign
import UHC.Light.Compiler.Foreign.Pretty
import UHC.Light.Compiler.Deriving
import UHC.Light.Compiler.Generics
import UHC.Light.Compiler.VarMp.Utils

import UHC.Light.Compiler.EH.MainAG_common

-- CaseAlts ----------------------------------------------------
{-
   visit 0:
      synthesized attribute:
         range                : Range
   visit 1:
      chained attribute:
         gUniq                : UID
   visit 2:
      inherited attributes:
         kiGam                : KiGam
         lexLev               : Int
      chained attribute:
         predSameScopeCounter : Int
   visit 3:
      inherited attributes:
         opts                 : EHCOpts
         polGam               : PolGam
         predScope            : PredScope
         tyGam                : TyGam
         tyKiGam              : TyKiGam
         tyKiGlobFreeTvarS    : TyVarIdS
      chained attributes:
         generDataInfoMp      : GenerDataInfoMp
         kiVarMp              : VarMp
         polVarMp             : VarMp
   visit 4:
      inherited attributes:
         clGam                : ClGam
         dataGam              : DataGam
         finKiVarMp           : VarMp
         finTyKiGam           : TyKiGam
         tyTyTySigFreeTvarS   : TyVarIdS
      synthesized attribute:
         chrInstDeclSq        : Seq.FastSeq (CHRScopedInstanceDecl)
   visit 5:
      inherited attributes:
         knPatTy              : Ty
         knTy                 : Ty
         valGam               : ValGam
      chained attribute:
         patTyVarMp           : VarMp
      synthesized attribute:
         ty                   : Ty
   visit 6:
      inherited attributes:
         chrStore             : CHRStore
         clDfGam              : ClassDefaultGam
         fiOpts               : FIOpts
         tvKiVarMp            : VarMp
         tyTyGlobFreeTvarS    : TyVarIdS
         valTyGlobFreeTvarS   : TyVarIdS
      chained attribute:
         tyVarMp              : VarMp
      synthesized attributes:
         gathCnstrMp          : ConstraintToInfoMap
         gathRangeMp          : RangeMp
   visit 7:
      inherited attributes:
         chrEvidBindMp        : EvidKeyToCBindMap
         chrScopeBindMp       : PredScopeToCBindMap
         finTyVarMp           : VarMp
         finValGam            : ValGam
         moduleNm             : HsName
         rangeMp              : RangeMp
         sysfEnv              : ToSysfEnv
         tr                   : TraceOn -> [PP_Doc] -> TrPP
      chained attribute:
         cSubst               : CSubst
      synthesized attributes:
         allErrSq             : ErrSq
         errSq                : ErrSq
         gathMentrelFilterMp  : ModEntRelFilterMp
         gathTvKiVarMp        : VarMp
         patTy                : Ty
         pp                   : PP_Doc
         ppAST                : PP_Doc
         ppL                  : [PP_Doc]
         raltL                : [RAlt]
         raltL'               : [RAlt]
         trpp                 : TrPP
   alternatives:
      alternative Cons:
         child hd             : CaseAlt 
         child tl             : CaseAlts 
         visit 7:
            local trppHere    : _
            local extraPP     : _
      alternative Nil:
         visit 7:
            local trppHere    : _
-}
sem_CaseAlts_Cons :: T_CaseAlt ->
                     T_CaseAlts ->
                     T_CaseAlts

sem_CaseAlts_Cons hd_ tl_ | hd_ `seq` (tl_ `seq` (True)) =
    (case (tl_) of
     { ( _tlIrange,tl_1) | True ->
         (case (hd_) of
          { ( _hdIrange,hd_1) | True ->
              (case (_hdIrange `rangeUnion` _tlIrange) of
               { _lhsOrange | _lhsOrange `seq` (True) ->
               (case ((let sem_CaseAlts_Cons_1 :: T_CaseAlts_1
                           sem_CaseAlts_Cons_1 =
                               (\ _lhsIgUniq ->
                                    _lhsIgUniq `seq`
                                    ((case (_lhsIgUniq) of
                                      { _hdOgUniq | _hdOgUniq `seq` (True) ->
                                      (case (hd_1 _hdOgUniq) of
                                       { ( _hdIgUniq,hd_2) | True ->
                                           (case (_hdIgUniq) of
                                            { _tlOgUniq | _tlOgUniq `seq` (True) ->
                                            (case (tl_1 _tlOgUniq) of
                                             { ( _tlIgUniq,tl_2) | True ->
                                                 (case (_tlIgUniq) of
                                                  { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
                                                  (case ((let sem_CaseAlts_Cons_2 :: T_CaseAlts_2
                                                              sem_CaseAlts_Cons_2 =
                                                                  (\ _lhsIkiGam
                                                                     _lhsIlexLev
                                                                     _lhsIpredSameScopeCounter ->
                                                                       _lhsIkiGam `seq`
                                                                       (_lhsIlexLev `seq`
                                                                        (_lhsIpredSameScopeCounter `seq`
                                                                         ((case (_lhsIpredSameScopeCounter) of
                                                                           { _hdOpredSameScopeCounter | _hdOpredSameScopeCounter `seq` (True) ->
                                                                           (case (_lhsIlexLev) of
                                                                            { _hdOlexLev | _hdOlexLev `seq` (True) ->
                                                                            (case (_lhsIkiGam) of
                                                                             { _hdOkiGam | _hdOkiGam `seq` (True) ->
                                                                             (case (hd_2 _hdOkiGam _hdOlexLev _hdOpredSameScopeCounter) of
                                                                              { ( _hdIpredSameScopeCounter,hd_3) | True ->
                                                                                  (case (_hdIpredSameScopeCounter) of
                                                                                   { _tlOpredSameScopeCounter | _tlOpredSameScopeCounter `seq` (True) ->
                                                                                   (case (_lhsIlexLev) of
                                                                                    { _tlOlexLev | _tlOlexLev `seq` (True) ->
                                                                                    (case (_lhsIkiGam) of
                                                                                     { _tlOkiGam | _tlOkiGam `seq` (True) ->
                                                                                     (case (tl_2 _tlOkiGam _tlOlexLev _tlOpredSameScopeCounter) of
                                                                                      { ( _tlIpredSameScopeCounter,tl_3) | True ->
                                                                                          (case (_tlIpredSameScopeCounter) of
                                                                                           { _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
                                                                                           (case ((let sem_CaseAlts_Cons_3 :: T_CaseAlts_3
                                                                                                       sem_CaseAlts_Cons_3 =
                                                                                                           (\ _lhsIgenerDataInfoMp
                                                                                                              _lhsIkiVarMp
                                                                                                              _lhsIopts
                                                                                                              _lhsIpolGam
                                                                                                              _lhsIpolVarMp
                                                                                                              _lhsIpredScope
                                                                                                              _lhsItyGam
                                                                                                              _lhsItyKiGam
                                                                                                              _lhsItyKiGlobFreeTvarS ->
                                                                                                                _lhsIgenerDataInfoMp `seq`
                                                                                                                (_lhsIkiVarMp `seq`
                                                                                                                 (_lhsIopts `seq`
                                                                                                                  (_lhsIpolGam `seq`
                                                                                                                   (_lhsIpolVarMp `seq`
                                                                                                                    (_lhsIpredScope `seq`
                                                                                                                     (_lhsItyGam `seq`
                                                                                                                      (_lhsItyKiGam `seq`
                                                                                                                       (_lhsItyKiGlobFreeTvarS `seq`
                                                                                                                        ((case (_lhsItyKiGlobFreeTvarS) of
                                                                                                                          { _tlOtyKiGlobFreeTvarS | _tlOtyKiGlobFreeTvarS `seq` (True) ->
                                                                                                                          (case (_lhsItyKiGam) of
                                                                                                                           { _tlOtyKiGam | _tlOtyKiGam `seq` (True) ->
                                                                                                                           (case (_lhsItyGam) of
                                                                                                                            { _tlOtyGam | _tlOtyGam `seq` (True) ->
                                                                                                                            (case (_lhsIpredScope) of
                                                                                                                             { _tlOpredScope | _tlOpredScope `seq` (True) ->
                                                                                                                             (case (_lhsItyKiGlobFreeTvarS) of
                                                                                                                              { _hdOtyKiGlobFreeTvarS | _hdOtyKiGlobFreeTvarS `seq` (True) ->
                                                                                                                              (case (_lhsItyKiGam) of
                                                                                                                               { _hdOtyKiGam | _hdOtyKiGam `seq` (True) ->
                                                                                                                               (case (_lhsItyGam) of
                                                                                                                                { _hdOtyGam | _hdOtyGam `seq` (True) ->
                                                                                                                                (case (_lhsIpredScope) of
                                                                                                                                 { _hdOpredScope | _hdOpredScope `seq` (True) ->
                                                                                                                                 (case (_lhsIpolVarMp) of
                                                                                                                                  { _hdOpolVarMp | _hdOpolVarMp `seq` (True) ->
                                                                                                                                  (case (_lhsIpolGam) of
                                                                                                                                   { _hdOpolGam | _hdOpolGam `seq` (True) ->
                                                                                                                                   (case (_lhsIopts) of
                                                                                                                                    { _hdOopts | _hdOopts `seq` (True) ->
                                                                                                                                    (case (_lhsIkiVarMp) of
                                                                                                                                     { _hdOkiVarMp | _hdOkiVarMp `seq` (True) ->
                                                                                                                                     (case (_lhsIgenerDataInfoMp) of
                                                                                                                                      { _hdOgenerDataInfoMp | _hdOgenerDataInfoMp `seq` (True) ->
                                                                                                                                      (case (hd_3 _hdOgenerDataInfoMp _hdOkiVarMp _hdOopts _hdOpolGam _hdOpolVarMp _hdOpredScope _hdOtyGam _hdOtyKiGam _hdOtyKiGlobFreeTvarS) of
                                                                                                                                       { ( _hdIgenerDataInfoMp,_hdIkiVarMp,_hdIpolVarMp,hd_4) | True ->
                                                                                                                                           (case (_hdIpolVarMp) of
                                                                                                                                            { _tlOpolVarMp | _tlOpolVarMp `seq` (True) ->
                                                                                                                                            (case (_lhsIpolGam) of
                                                                                                                                             { _tlOpolGam | _tlOpolGam `seq` (True) ->
                                                                                                                                             (case (_lhsIopts) of
                                                                                                                                              { _tlOopts | _tlOopts `seq` (True) ->
                                                                                                                                              (case (_hdIkiVarMp) of
                                                                                                                                               { _tlOkiVarMp | _tlOkiVarMp `seq` (True) ->
                                                                                                                                               (case (_hdIgenerDataInfoMp) of
                                                                                                                                                { _tlOgenerDataInfoMp | _tlOgenerDataInfoMp `seq` (True) ->
                                                                                                                                                (case (tl_3 _tlOgenerDataInfoMp _tlOkiVarMp _tlOopts _tlOpolGam _tlOpolVarMp _tlOpredScope _tlOtyGam _tlOtyKiGam _tlOtyKiGlobFreeTvarS) of
                                                                                                                                                 { ( _tlIgenerDataInfoMp,_tlIkiVarMp,_tlIpolVarMp,tl_4) | True ->
                                                                                                                                                     (case (_tlIgenerDataInfoMp) of
                                                                                                                                                      { _lhsOgenerDataInfoMp | _lhsOgenerDataInfoMp `seq` (True) ->
                                                                                                                                                      (case (_tlIkiVarMp) of
                                                                                                                                                       { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
                                                                                                                                                       (case (_tlIpolVarMp) of
                                                                                                                                                        { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
                                                                                                                                                        (case ((let sem_CaseAlts_Cons_4 :: T_CaseAlts_4
                                                                                                                                                                    sem_CaseAlts_Cons_4 =
                                                                                                                                                                        (\ _lhsIclGam
                                                                                                                                                                           _lhsIdataGam
                                                                                                                                                                           _lhsIfinKiVarMp
                                                                                                                                                                           _lhsIfinTyKiGam
                                                                                                                                                                           _lhsItyTyTySigFreeTvarS ->
                                                                                                                                                                             _lhsIclGam `seq`
                                                                                                                                                                             (_lhsIdataGam `seq`
                                                                                                                                                                              (_lhsIfinKiVarMp `seq`
                                                                                                                                                                               (_lhsIfinTyKiGam `seq`
                                                                                                                                                                                (_lhsItyTyTySigFreeTvarS `seq`
                                                                                                                                                                                 ((case (_lhsItyTyTySigFreeTvarS) of
                                                                                                                                                                                   { _tlOtyTyTySigFreeTvarS | _tlOtyTyTySigFreeTvarS `seq` (True) ->
                                                                                                                                                                                   (case (_lhsIfinTyKiGam) of
                                                                                                                                                                                    { _tlOfinTyKiGam | _tlOfinTyKiGam `seq` (True) ->
                                                                                                                                                                                    (case (_lhsIfinKiVarMp) of
                                                                                                                                                                                     { _tlOfinKiVarMp | _tlOfinKiVarMp `seq` (True) ->
                                                                                                                                                                                     (case (_lhsIdataGam) of
                                                                                                                                                                                      { _tlOdataGam | _tlOdataGam `seq` (True) ->
                                                                                                                                                                                      (case (_lhsIclGam) of
                                                                                                                                                                                       { _tlOclGam | _tlOclGam `seq` (True) ->
                                                                                                                                                                                       (case (_lhsItyTyTySigFreeTvarS) of
                                                                                                                                                                                        { _hdOtyTyTySigFreeTvarS | _hdOtyTyTySigFreeTvarS `seq` (True) ->
                                                                                                                                                                                        (case (_lhsIfinTyKiGam) of
                                                                                                                                                                                         { _hdOfinTyKiGam | _hdOfinTyKiGam `seq` (True) ->
                                                                                                                                                                                         (case (_lhsIfinKiVarMp) of
                                                                                                                                                                                          { _hdOfinKiVarMp | _hdOfinKiVarMp `seq` (True) ->
                                                                                                                                                                                          (case (_lhsIdataGam) of
                                                                                                                                                                                           { _hdOdataGam | _hdOdataGam `seq` (True) ->
                                                                                                                                                                                           (case (_lhsIclGam) of
                                                                                                                                                                                            { _hdOclGam | _hdOclGam `seq` (True) ->
                                                                                                                                                                                            (case (tl_4 _tlOclGam _tlOdataGam _tlOfinKiVarMp _tlOfinTyKiGam _tlOtyTyTySigFreeTvarS) of
                                                                                                                                                                                             { ( _tlIchrInstDeclSq,tl_5) | True ->
                                                                                                                                                                                                 (case (hd_4 _hdOclGam _hdOdataGam _hdOfinKiVarMp _hdOfinTyKiGam _hdOtyTyTySigFreeTvarS) of
                                                                                                                                                                                                  { ( _hdIchrInstDeclSq,hd_5) | True ->
                                                                                                                                                                                                      (case (_hdIchrInstDeclSq `Seq.union` _tlIchrInstDeclSq) of
                                                                                                                                                                                                       { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
                                                                                                                                                                                                       (case ((let sem_CaseAlts_Cons_5 :: T_CaseAlts_5
                                                                                                                                                                                                                   sem_CaseAlts_Cons_5 =
                                                                                                                                                                                                                       (\ _lhsIknPatTy
                                                                                                                                                                                                                          _lhsIknTy
                                                                                                                                                                                                                          _lhsIpatTyVarMp
                                                                                                                                                                                                                          _lhsIvalGam ->
                                                                                                                                                                                                                            _lhsIknPatTy `seq`
                                                                                                                                                                                                                            (_lhsIknTy `seq`
                                                                                                                                                                                                                             (_lhsIpatTyVarMp `seq`
                                                                                                                                                                                                                              (_lhsIvalGam `seq`
                                                                                                                                                                                                                               ((case (_lhsIvalGam) of
                                                                                                                                                                                                                                 { _tlOvalGam | _tlOvalGam `seq` (True) ->
                                                                                                                                                                                                                                 (case (_lhsIvalGam) of
                                                                                                                                                                                                                                  { _hdOvalGam | _hdOvalGam `seq` (True) ->
                                                                                                                                                                                                                                  (case (_lhsIpatTyVarMp) of
                                                                                                                                                                                                                                   { _hdOpatTyVarMp | _hdOpatTyVarMp `seq` (True) ->
                                                                                                                                                                                                                                   (case (_lhsIknPatTy) of
                                                                                                                                                                                                                                    { _hdOknPatTy | _hdOknPatTy `seq` (True) ->
                                                                                                                                                                                                                                    (case (hd_5 _hdOknPatTy _hdOpatTyVarMp _hdOvalGam) of
                                                                                                                                                                                                                                     { ( _hdIpatTyVarMp,hd_6) | True ->
                                                                                                                                                                                                                                         (case (_hdIpatTyVarMp) of
                                                                                                                                                                                                                                          { _tlOpatTyVarMp | _tlOpatTyVarMp `seq` (True) ->
                                                                                                                                                                                                                                          (case (_lhsIknPatTy) of
                                                                                                                                                                                                                                           { _tlOknPatTy | _tlOknPatTy `seq` (True) ->
                                                                                                                                                                                                                                           (case (_lhsIknTy) of
                                                                                                                                                                                                                                            { _tlOknTy | _tlOknTy `seq` (True) ->
                                                                                                                                                                                                                                            (case (tl_5 _tlOknPatTy _tlOknTy _tlOpatTyVarMp _tlOvalGam) of
                                                                                                                                                                                                                                             { ( _tlIpatTyVarMp,_tlIty,tl_6) | True ->
                                                                                                                                                                                                                                                 (case (_tlIpatTyVarMp) of
                                                                                                                                                                                                                                                  { _lhsOpatTyVarMp | _lhsOpatTyVarMp `seq` (True) ->
                                                                                                                                                                                                                                                  (case (_tlIty) of
                                                                                                                                                                                                                                                   { _lhsOty | _lhsOty `seq` (True) ->
                                                                                                                                                                                                                                                   (case ((let sem_CaseAlts_Cons_6 :: T_CaseAlts_6
                                                                                                                                                                                                                                                               sem_CaseAlts_Cons_6 =
                                                                                                                                                                                                                                                                   (\ _lhsIchrStore
                                                                                                                                                                                                                                                                      _lhsIclDfGam
                                                                                                                                                                                                                                                                      _lhsIfiOpts
                                                                                                                                                                                                                                                                      _lhsItvKiVarMp
                                                                                                                                                                                                                                                                      _lhsItyTyGlobFreeTvarS
                                                                                                                                                                                                                                                                      _lhsItyVarMp
                                                                                                                                                                                                                                                                      _lhsIvalTyGlobFreeTvarS ->
                                                                                                                                                                                                                                                                        _lhsIchrStore `seq`
                                                                                                                                                                                                                                                                        (_lhsIclDfGam `seq`
                                                                                                                                                                                                                                                                         (_lhsIfiOpts `seq`
                                                                                                                                                                                                                                                                          (_lhsItvKiVarMp `seq`
                                                                                                                                                                                                                                                                           (_lhsItyTyGlobFreeTvarS `seq`
                                                                                                                                                                                                                                                                            (_lhsItyVarMp `seq`
                                                                                                                                                                                                                                                                             (_lhsIvalTyGlobFreeTvarS `seq`
                                                                                                                                                                                                                                                                              ((case (_lhsIvalTyGlobFreeTvarS) of
                                                                                                                                                                                                                                                                                { _tlOvalTyGlobFreeTvarS | _tlOvalTyGlobFreeTvarS `seq` (True) ->
                                                                                                                                                                                                                                                                                (case (_lhsIvalTyGlobFreeTvarS) of
                                                                                                                                                                                                                                                                                 { _hdOvalTyGlobFreeTvarS | _hdOvalTyGlobFreeTvarS `seq` (True) ->
                                                                                                                                                                                                                                                                                 (case (_lhsItyVarMp) of
                                                                                                                                                                                                                                                                                  { _hdOtyVarMp | _hdOtyVarMp `seq` (True) ->
                                                                                                                                                                                                                                                                                  (case (_lhsItyTyGlobFreeTvarS) of
                                                                                                                                                                                                                                                                                   { _hdOtyTyGlobFreeTvarS | _hdOtyTyGlobFreeTvarS `seq` (True) ->
                                                                                                                                                                                                                                                                                   (case (_lhsItvKiVarMp) of
                                                                                                                                                                                                                                                                                    { _hdOtvKiVarMp | _hdOtvKiVarMp `seq` (True) ->
                                                                                                                                                                                                                                                                                    (case (_lhsIfiOpts) of
                                                                                                                                                                                                                                                                                     { _hdOfiOpts | _hdOfiOpts `seq` (True) ->
                                                                                                                                                                                                                                                                                     (case (_lhsIclDfGam) of
                                                                                                                                                                                                                                                                                      { _hdOclDfGam | _hdOclDfGam `seq` (True) ->
                                                                                                                                                                                                                                                                                      (case (_lhsIchrStore) of
                                                                                                                                                                                                                                                                                       { _hdOchrStore | _hdOchrStore `seq` (True) ->
                                                                                                                                                                                                                                                                                       (case (_lhsIknTy) of
                                                                                                                                                                                                                                                                                        { _hdOknTy | _hdOknTy `seq` (True) ->
                                                                                                                                                                                                                                                                                        (case (hd_6 _hdOchrStore _hdOclDfGam _hdOfiOpts _hdOknTy _hdOtvKiVarMp _hdOtyTyGlobFreeTvarS _hdOtyVarMp _hdOvalTyGlobFreeTvarS) of
                                                                                                                                                                                                                                                                                         { ( _hdIgathCnstrMp,_hdIgathRangeMp,_hdItyVarMp,hd_7) | True ->
                                                                                                                                                                                                                                                                                             (case (_hdItyVarMp) of
                                                                                                                                                                                                                                                                                              { _tlOtyVarMp | _tlOtyVarMp `seq` (True) ->
                                                                                                                                                                                                                                                                                              (case (_lhsItyTyGlobFreeTvarS) of
                                                                                                                                                                                                                                                                                               { _tlOtyTyGlobFreeTvarS | _tlOtyTyGlobFreeTvarS `seq` (True) ->
                                                                                                                                                                                                                                                                                               (case (_lhsItvKiVarMp) of
                                                                                                                                                                                                                                                                                                { _tlOtvKiVarMp | _tlOtvKiVarMp `seq` (True) ->
                                                                                                                                                                                                                                                                                                (case (_lhsIfiOpts) of
                                                                                                                                                                                                                                                                                                 { _tlOfiOpts | _tlOfiOpts `seq` (True) ->
                                                                                                                                                                                                                                                                                                 (case (_lhsIclDfGam) of
                                                                                                                                                                                                                                                                                                  { _tlOclDfGam | _tlOclDfGam `seq` (True) ->
                                                                                                                                                                                                                                                                                                  (case (_lhsIchrStore) of
                                                                                                                                                                                                                                                                                                   { _tlOchrStore | _tlOchrStore `seq` (True) ->
                                                                                                                                                                                                                                                                                                   (case (tl_6 _tlOchrStore _tlOclDfGam _tlOfiOpts _tlOtvKiVarMp _tlOtyTyGlobFreeTvarS _tlOtyVarMp _tlOvalTyGlobFreeTvarS) of
                                                                                                                                                                                                                                                                                                    { ( _tlIgathCnstrMp,_tlIgathRangeMp,_tlItyVarMp,tl_7) | True ->
                                                                                                                                                                                                                                                                                                        (case (_hdIgathCnstrMp `cnstrMpUnion` _tlIgathCnstrMp) of
                                                                                                                                                                                                                                                                                                         { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
                                                                                                                                                                                                                                                                                                         (case (_hdIgathRangeMp `Map.union` _tlIgathRangeMp) of
                                                                                                                                                                                                                                                                                                          { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
                                                                                                                                                                                                                                                                                                          (case (_tlItyVarMp) of
                                                                                                                                                                                                                                                                                                           { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
                                                                                                                                                                                                                                                                                                           (case ((let sem_CaseAlts_Cons_7 :: T_CaseAlts_7
                                                                                                                                                                                                                                                                                                                       sem_CaseAlts_Cons_7 =
                                                                                                                                                                                                                                                                                                                           (\ _lhsIcSubst
                                                                                                                                                                                                                                                                                                                              _lhsIchrEvidBindMp
                                                                                                                                                                                                                                                                                                                              _lhsIchrScopeBindMp
                                                                                                                                                                                                                                                                                                                              _lhsIfinTyVarMp
                                                                                                                                                                                                                                                                                                                              _lhsIfinValGam
                                                                                                                                                                                                                                                                                                                              _lhsImoduleNm
                                                                                                                                                                                                                                                                                                                              _lhsIrangeMp
                                                                                                                                                                                                                                                                                                                              _lhsIsysfEnv
                                                                                                                                                                                                                                                                                                                              _lhsItr ->
                                                                                                                                                                                                                                                                                                                                _lhsIcSubst `seq`
                                                                                                                                                                                                                                                                                                                                (_lhsIchrEvidBindMp `seq`
                                                                                                                                                                                                                                                                                                                                 (_lhsIchrScopeBindMp `seq`
                                                                                                                                                                                                                                                                                                                                  (_lhsIfinTyVarMp `seq`
                                                                                                                                                                                                                                                                                                                                   (_lhsIfinValGam `seq`
                                                                                                                                                                                                                                                                                                                                    (_lhsImoduleNm `seq`
                                                                                                                                                                                                                                                                                                                                     (_lhsIrangeMp `seq`
                                                                                                                                                                                                                                                                                                                                      (_lhsIsysfEnv `seq`
                                                                                                                                                                                                                                                                                                                                       (_lhsItr `seq`
                                                                                                                                                                                                                                                                                                                                        ((case (_lhsIsysfEnv) of
                                                                                                                                                                                                                                                                                                                                          { _tlOsysfEnv | _tlOsysfEnv `seq` (True) ->
                                                                                                                                                                                                                                                                                                                                          (case (_lhsIrangeMp) of
                                                                                                                                                                                                                                                                                                                                           { _tlOrangeMp | _tlOrangeMp `seq` (True) ->
                                                                                                                                                                                                                                                                                                                                           (case (_lhsIfinValGam) of
                                                                                                                                                                                                                                                                                                                                            { _tlOfinValGam | _tlOfinValGam `seq` (True) ->
                                                                                                                                                                                                                                                                                                                                            (case (_lhsIfinTyVarMp) of
                                                                                                                                                                                                                                                                                                                                             { _tlOfinTyVarMp | _tlOfinTyVarMp `seq` (True) ->
                                                                                                                                                                                                                                                                                                                                             (case (_lhsIsysfEnv) of
                                                                                                                                                                                                                                                                                                                                              { _hdOsysfEnv | _hdOsysfEnv `seq` (True) ->
                                                                                                                                                                                                                                                                                                                                              (case (_lhsIrangeMp) of
                                                                                                                                                                                                                                                                                                                                               { _hdOrangeMp | _hdOrangeMp `seq` (True) ->
                                                                                                                                                                                                                                                                                                                                               (case (_lhsIfinValGam) of
                                                                                                                                                                                                                                                                                                                                                { _hdOfinValGam | _hdOfinValGam `seq` (True) ->
                                                                                                                                                                                                                                                                                                                                                (case (_lhsIfinTyVarMp) of
                                                                                                                                                                                                                                                                                                                                                 { _hdOfinTyVarMp | _hdOfinTyVarMp `seq` (True) ->
                                                                                                                                                                                                                                                                                                                                                 (case (_lhsItr) of
                                                                                                                                                                                                                                                                                                                                                  { _tlOtr | _tlOtr `seq` (True) ->
                                                                                                                                                                                                                                                                                                                                                  (case (_lhsImoduleNm) of
                                                                                                                                                                                                                                                                                                                                                   { _tlOmoduleNm | _tlOmoduleNm `seq` (True) ->
                                                                                                                                                                                                                                                                                                                                                   (case (_lhsIchrScopeBindMp) of
                                                                                                                                                                                                                                                                                                                                                    { _tlOchrScopeBindMp | _tlOchrScopeBindMp `seq` (True) ->
                                                                                                                                                                                                                                                                                                                                                    (case (_lhsIchrEvidBindMp) of
                                                                                                                                                                                                                                                                                                                                                     { _tlOchrEvidBindMp | _tlOchrEvidBindMp `seq` (True) ->
                                                                                                                                                                                                                                                                                                                                                     (case (_lhsIchrScopeBindMp) of
                                                                                                                                                                                                                                                                                                                                                      { _hdOchrScopeBindMp | _hdOchrScopeBindMp `seq` (True) ->
                                                                                                                                                                                                                                                                                                                                                      (case (_lhsIchrEvidBindMp) of
                                                                                                                                                                                                                                                                                                                                                       { _hdOchrEvidBindMp | _hdOchrEvidBindMp `seq` (True) ->
                                                                                                                                                                                                                                                                                                                                                       (case (_lhsIcSubst) of
                                                                                                                                                                                                                                                                                                                                                        { _hdOcSubst | _hdOcSubst `seq` (True) ->
                                                                                                                                                                                                                                                                                                                                                        (case (_lhsItr) of
                                                                                                                                                                                                                                                                                                                                                         { _hdOtr | _hdOtr `seq` (True) ->
                                                                                                                                                                                                                                                                                                                                                         (case (_lhsImoduleNm) of
                                                                                                                                                                                                                                                                                                                                                          { _hdOmoduleNm | _hdOmoduleNm `seq` (True) ->
                                                                                                                                                                                                                                                                                                                                                          (case (hd_7 _hdOcSubst _hdOchrEvidBindMp _hdOchrScopeBindMp _hdOfinTyVarMp _hdOfinValGam _hdOmoduleNm _hdOrangeMp _hdOsysfEnv _hdOtr) of
                                                                                                                                                                                                                                                                                                                                                           { ( _hdIallErrSq,_hdIcSubst,_hdIerrSq,_hdIgathMentrelFilterMp,_hdIgathTvKiVarMp,_hdIpatTy,_hdIpp,_hdIppAST,_hdIralt,_hdIralt',_hdItrpp,_hdIty) | True ->
                                                                                                                                                                                                                                                                                                                                                               (case (_hdIcSubst) of
                                                                                                                                                                                                                                                                                                                                                                { _tlOcSubst | _tlOcSubst `seq` (True) ->
                                                                                                                                                                                                                                                                                                                                                                (case (tl_7 _tlOcSubst _tlOchrEvidBindMp _tlOchrScopeBindMp _tlOfinTyVarMp _tlOfinValGam _tlOmoduleNm _tlOrangeMp _tlOsysfEnv _tlOtr) of
                                                                                                                                                                                                                                                                                                                                                                 { ( _tlIallErrSq,_tlIcSubst,_tlIerrSq,_tlIgathMentrelFilterMp,_tlIgathTvKiVarMp,_tlIpatTy,_tlIpp,_tlIppAST,_tlIppL,_tlIraltL,_tlIraltL',_tlItrpp) | True ->
                                                                                                                                                                                                                                                                                                                                                                     (case (_hdIallErrSq `Seq.union` _tlIallErrSq) of
                                                                                                                                                                                                                                                                                                                                                                      { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
                                                                                                                                                                                                                                                                                                                                                                      (case (_tlIcSubst) of
                                                                                                                                                                                                                                                                                                                                                                       { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
                                                                                                                                                                                                                                                                                                                                                                       (case (_hdIerrSq `Seq.union` _tlIerrSq) of
                                                                                                                                                                                                                                                                                                                                                                        { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
                                                                                                                                                                                                                                                                                                                                                                        (case (_hdIgathMentrelFilterMp `mentrelFilterMpUnion` _tlIgathMentrelFilterMp) of
                                                                                                                                                                                                                                                                                                                                                                         { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
                                                                                                                                                                                                                                                                                                                                                                         (case (_hdIgathTvKiVarMp `varmpUnion` _tlIgathTvKiVarMp) of
                                                                                                                                                                                                                                                                                                                                                                          { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
                                                                                                                                                                                                                                                                                                                                                                          (case (_tlIpatTy) of
                                                                                                                                                                                                                                                                                                                                                                           { _lhsOpatTy | _lhsOpatTy `seq` (True) ->
                                                                                                                                                                                                                                                                                                                                                                           (case (_hdIpp >-< _tlIpp) of
                                                                                                                                                                                                                                                                                                                                                                            { _lhsOpp | _lhsOpp `seq` (True) ->
                                                                                                                                                                                                                                                                                                                                                                            (case (trppEmpty) of
                                                                                                                                                                                                                                                                                                                                                                             { _trppHere | _trppHere `seq` (True) ->
                                                                                                                                                                                                                                                                                                                                                                             (case (ppNestTrPP ["CaseAlts","Cons"] [] [_hdIppAST,_tlIppAST] _trppHere) of
                                                                                                                                                                                                                                                                                                                                                                              { _lhsOppAST | _lhsOppAST `seq` (True) ->
                                                                                                                                                                                                                                                                                                                                                                              (case (empty) of
                                                                                                                                                                                                                                                                                                                                                                               { _extraPP | _extraPP `seq` (True) ->
                                                                                                                                                                                                                                                                                                                                                                               (case ((_hdIpp >|< _extraPP) : _tlIppL) of
                                                                                                                                                                                                                                                                                                                                                                                { _lhsOppL | _lhsOppL `seq` (True) ->
                                                                                                                                                                                                                                                                                                                                                                                (case (_hdIralt  : _tlIraltL) of
                                                                                                                                                                                                                                                                                                                                                                                 { _lhsOraltL | _lhsOraltL `seq` (True) ->
                                                                                                                                                                                                                                                                                                                                                                                 (case (_hdIralt' : _tlIraltL') of
                                                                                                                                                                                                                                                                                                                                                                                  { _lhsOraltL' | _lhsOraltL' `seq` (True) ->
                                                                                                                                                                                                                                                                                                                                                                                  (case (_hdItrpp >< _tlItrpp) of
                                                                                                                                                                                                                                                                                                                                                                                   { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
                                                                                                                                                                                                                                                                                                                                                                                   ( _lhsOallErrSq,_lhsOcSubst,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOpatTy,_lhsOpp,_lhsOppAST,_lhsOppL,_lhsOraltL,_lhsOraltL',_lhsOtrpp) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))
                                                                                                                                                                                                                                                                                                                   in  sem_CaseAlts_Cons_7)) of
                                                                                                                                                                                                                                                                                                            { ( sem_CaseAlts_7) | True ->
                                                                                                                                                                                                                                                                                                            ( _lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOtyVarMp,sem_CaseAlts_7) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))
                                                                                                                                                                                                                                                           in  sem_CaseAlts_Cons_6)) of
                                                                                                                                                                                                                                                    { ( sem_CaseAlts_6) | True ->
                                                                                                                                                                                                                                                    ( _lhsOpatTyVarMp,_lhsOty,sem_CaseAlts_6) }) }) }) }) }) }) }) }) }) }) }) }))))))
                                                                                                                                                                                                               in  sem_CaseAlts_Cons_5)) of
                                                                                                                                                                                                        { ( sem_CaseAlts_5) | True ->
                                                                                                                                                                                                        ( _lhsOchrInstDeclSq,sem_CaseAlts_5) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))
                                                                                                                                                                in  sem_CaseAlts_Cons_4)) of
                                                                                                                                                         { ( sem_CaseAlts_4) | True ->
                                                                                                                                                         ( _lhsOgenerDataInfoMp,_lhsOkiVarMp,_lhsOpolVarMp,sem_CaseAlts_4) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))
                                                                                                   in  sem_CaseAlts_Cons_3)) of
                                                                                            { ( sem_CaseAlts_3) | True ->
                                                                                            ( _lhsOpredSameScopeCounter,sem_CaseAlts_3) }) }) }) }) }) }) }) }) }) })))))
                                                          in  sem_CaseAlts_Cons_2)) of
                                                   { ( sem_CaseAlts_2) | True ->
                                                   ( _lhsOgUniq,sem_CaseAlts_2) }) }) }) }) }) })))
                       in  sem_CaseAlts_Cons_1)) of
                { ( sem_CaseAlts_1) | True ->
                ( _lhsOrange,sem_CaseAlts_1) }) }) }) })

sem_CaseAlts_Nil :: T_CaseAlts

sem_CaseAlts_Nil =
    (case (emptyRange) of
     { _lhsOrange | _lhsOrange `seq` (True) ->
     (case ((let sem_CaseAlts_Nil_1 :: T_CaseAlts_1
                 sem_CaseAlts_Nil_1 =
                     (\ _lhsIgUniq ->
                          _lhsIgUniq `seq`
                          ((case (_lhsIgUniq) of
                            { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
                            (case ((let sem_CaseAlts_Nil_2 :: T_CaseAlts_2
                                        sem_CaseAlts_Nil_2 =
                                            (\ _lhsIkiGam
                                               _lhsIlexLev
                                               _lhsIpredSameScopeCounter ->
                                                 _lhsIkiGam `seq`
                                                 (_lhsIlexLev `seq`
                                                  (_lhsIpredSameScopeCounter `seq`
                                                   ((case (_lhsIpredSameScopeCounter) of
                                                     { _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
                                                     (case ((let sem_CaseAlts_Nil_3 :: T_CaseAlts_3
                                                                 sem_CaseAlts_Nil_3 =
                                                                     (\ _lhsIgenerDataInfoMp
                                                                        _lhsIkiVarMp
                                                                        _lhsIopts
                                                                        _lhsIpolGam
                                                                        _lhsIpolVarMp
                                                                        _lhsIpredScope
                                                                        _lhsItyGam
                                                                        _lhsItyKiGam
                                                                        _lhsItyKiGlobFreeTvarS ->
                                                                          _lhsIgenerDataInfoMp `seq`
                                                                          (_lhsIkiVarMp `seq`
                                                                           (_lhsIopts `seq`
                                                                            (_lhsIpolGam `seq`
                                                                             (_lhsIpolVarMp `seq`
                                                                              (_lhsIpredScope `seq`
                                                                               (_lhsItyGam `seq`
                                                                                (_lhsItyKiGam `seq`
                                                                                 (_lhsItyKiGlobFreeTvarS `seq`
                                                                                  ((case (_lhsIgenerDataInfoMp) of
                                                                                    { _lhsOgenerDataInfoMp | _lhsOgenerDataInfoMp `seq` (True) ->
                                                                                    (case (_lhsIkiVarMp) of
                                                                                     { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
                                                                                     (case (_lhsIpolVarMp) of
                                                                                      { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
                                                                                      (case ((let sem_CaseAlts_Nil_4 :: T_CaseAlts_4
                                                                                                  sem_CaseAlts_Nil_4 =
                                                                                                      (\ _lhsIclGam
                                                                                                         _lhsIdataGam
                                                                                                         _lhsIfinKiVarMp
                                                                                                         _lhsIfinTyKiGam
                                                                                                         _lhsItyTyTySigFreeTvarS ->
                                                                                                           _lhsIclGam `seq`
                                                                                                           (_lhsIdataGam `seq`
                                                                                                            (_lhsIfinKiVarMp `seq`
                                                                                                             (_lhsIfinTyKiGam `seq`
                                                                                                              (_lhsItyTyTySigFreeTvarS `seq`
                                                                                                               ((case (Seq.empty) of
                                                                                                                 { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
                                                                                                                 (case ((let sem_CaseAlts_Nil_5 :: T_CaseAlts_5
                                                                                                                             sem_CaseAlts_Nil_5 =
                                                                                                                                 (\ _lhsIknPatTy
                                                                                                                                    _lhsIknTy
                                                                                                                                    _lhsIpatTyVarMp
                                                                                                                                    _lhsIvalGam ->
                                                                                                                                      _lhsIknPatTy `seq`
                                                                                                                                      (_lhsIknTy `seq`
                                                                                                                                       (_lhsIpatTyVarMp `seq`
                                                                                                                                        (_lhsIvalGam `seq`
                                                                                                                                         ((case (_lhsIpatTyVarMp) of
                                                                                                                                           { _lhsOpatTyVarMp | _lhsOpatTyVarMp `seq` (True) ->
                                                                                                                                           (case (_lhsIknTy) of
                                                                                                                                            { _lhsOty | _lhsOty `seq` (True) ->
                                                                                                                                            (case ((let sem_CaseAlts_Nil_6 :: T_CaseAlts_6
                                                                                                                                                        sem_CaseAlts_Nil_6 =
                                                                                                                                                            (\ _lhsIchrStore
                                                                                                                                                               _lhsIclDfGam
                                                                                                                                                               _lhsIfiOpts
                                                                                                                                                               _lhsItvKiVarMp
                                                                                                                                                               _lhsItyTyGlobFreeTvarS
                                                                                                                                                               _lhsItyVarMp
                                                                                                                                                               _lhsIvalTyGlobFreeTvarS ->
                                                                                                                                                                 _lhsIchrStore `seq`
                                                                                                                                                                 (_lhsIclDfGam `seq`
                                                                                                                                                                  (_lhsIfiOpts `seq`
                                                                                                                                                                   (_lhsItvKiVarMp `seq`
                                                                                                                                                                    (_lhsItyTyGlobFreeTvarS `seq`
                                                                                                                                                                     (_lhsItyVarMp `seq`
                                                                                                                                                                      (_lhsIvalTyGlobFreeTvarS `seq`
                                                                                                                                                                       ((case (Map.empty) of
                                                                                                                                                                         { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
                                                                                                                                                                         (case (Map.empty) of
                                                                                                                                                                          { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
                                                                                                                                                                          (case (_lhsItyVarMp) of
                                                                                                                                                                           { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
                                                                                                                                                                           (case ((let sem_CaseAlts_Nil_7 :: T_CaseAlts_7
                                                                                                                                                                                       sem_CaseAlts_Nil_7 =
                                                                                                                                                                                           (\ _lhsIcSubst
                                                                                                                                                                                              _lhsIchrEvidBindMp
                                                                                                                                                                                              _lhsIchrScopeBindMp
                                                                                                                                                                                              _lhsIfinTyVarMp
                                                                                                                                                                                              _lhsIfinValGam
                                                                                                                                                                                              _lhsImoduleNm
                                                                                                                                                                                              _lhsIrangeMp
                                                                                                                                                                                              _lhsIsysfEnv
                                                                                                                                                                                              _lhsItr ->
                                                                                                                                                                                                _lhsIcSubst `seq`
                                                                                                                                                                                                (_lhsIchrEvidBindMp `seq`
                                                                                                                                                                                                 (_lhsIchrScopeBindMp `seq`
                                                                                                                                                                                                  (_lhsIfinTyVarMp `seq`
                                                                                                                                                                                                   (_lhsIfinValGam `seq`
                                                                                                                                                                                                    (_lhsImoduleNm `seq`
                                                                                                                                                                                                     (_lhsIrangeMp `seq`
                                                                                                                                                                                                      (_lhsIsysfEnv `seq`
                                                                                                                                                                                                       (_lhsItr `seq`
                                                                                                                                                                                                        ((case (Seq.empty) of
                                                                                                                                                                                                          { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
                                                                                                                                                                                                          (case (_lhsIcSubst) of
                                                                                                                                                                                                           { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
                                                                                                                                                                                                           (case (Seq.empty) of
                                                                                                                                                                                                            { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
                                                                                                                                                                                                            (case (Map.empty) of
                                                                                                                                                                                                             { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
                                                                                                                                                                                                             (case (emptyVarMp) of
                                                                                                                                                                                                              { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
                                                                                                                                                                                                              (case (_lhsIknPatTy) of
                                                                                                                                                                                                               { _lhsOpatTy | _lhsOpatTy `seq` (True) ->
                                                                                                                                                                                                               (case (empty) of
                                                                                                                                                                                                                { _lhsOpp | _lhsOpp `seq` (True) ->
                                                                                                                                                                                                                (case (trppEmpty) of
                                                                                                                                                                                                                 { _trppHere | _trppHere `seq` (True) ->
                                                                                                                                                                                                                 (case (ppNestTrPP ["CaseAlts","Nil"] [] [] _trppHere) of
                                                                                                                                                                                                                  { _lhsOppAST | _lhsOppAST `seq` (True) ->
                                                                                                                                                                                                                  (case ([]) of
                                                                                                                                                                                                                   { _lhsOppL | _lhsOppL `seq` (True) ->
                                                                                                                                                                                                                   (case ([]) of
                                                                                                                                                                                                                    { _lhsOraltL | _lhsOraltL `seq` (True) ->
                                                                                                                                                                                                                    (case ([]) of
                                                                                                                                                                                                                     { _lhsOraltL' | _lhsOraltL' `seq` (True) ->
                                                                                                                                                                                                                     (case (trppEmpty) of
                                                                                                                                                                                                                      { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
                                                                                                                                                                                                                      ( _lhsOallErrSq,_lhsOcSubst,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOpatTy,_lhsOpp,_lhsOppAST,_lhsOppL,_lhsOraltL,_lhsOraltL',_lhsOtrpp) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))
                                                                                                                                                                                   in  sem_CaseAlts_Nil_7)) of
                                                                                                                                                                            { ( sem_CaseAlts_7) | True ->
                                                                                                                                                                            ( _lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOtyVarMp,sem_CaseAlts_7) }) }) }) })))))))))
                                                                                                                                                    in  sem_CaseAlts_Nil_6)) of
                                                                                                                                             { ( sem_CaseAlts_6) | True ->
                                                                                                                                             ( _lhsOpatTyVarMp,_lhsOty,sem_CaseAlts_6) }) }) }))))))
                                                                                                                         in  sem_CaseAlts_Nil_5)) of
                                                                                                                  { ( sem_CaseAlts_5) | True ->
                                                                                                                  ( _lhsOchrInstDeclSq,sem_CaseAlts_5) }) })))))))
                                                                                              in  sem_CaseAlts_Nil_4)) of
                                                                                       { ( sem_CaseAlts_4) | True ->
                                                                                       ( _lhsOgenerDataInfoMp,_lhsOkiVarMp,_lhsOpolVarMp,sem_CaseAlts_4) }) }) }) })))))))))))
                                                             in  sem_CaseAlts_Nil_3)) of
                                                      { ( sem_CaseAlts_3) | True ->
                                                      ( _lhsOpredSameScopeCounter,sem_CaseAlts_3) }) })))))
                                    in  sem_CaseAlts_Nil_2)) of
                             { ( sem_CaseAlts_2) | True ->
                             ( _lhsOgUniq,sem_CaseAlts_2) }) })))
             in  sem_CaseAlts_Nil_1)) of
      { ( sem_CaseAlts_1) | True ->
      ( _lhsOrange,sem_CaseAlts_1) }) })