packages feed

uhc-light-1.1.9.3: src/UHC/Light/Compiler/EH/MainAG_TyExprs.hs



module UHC.Light.Compiler.EH.MainAG_TyExprs 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.RedGraph (redPruneReductionsUntil)
import UHC.Util.CHR
import UHC.Light.Compiler.CHR.Constraint
import UHC.Light.Compiler.CHR.Guard
import UHC.Light.Compiler.Pred.ToCHR
import UHC.Light.Compiler.Pred.Heuristics
import UHC.Light.Compiler.Pred.Evidence
import UHC.Light.Compiler.CHR.Solve
import UHC.Light.Compiler.Pred.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

-- TyExprs -----------------------------------------------------
{-
   visit 0:
      synthesized attribute:
         range                : Range
   visit 1:
      chained attribute:
         gUniq                : UID
   visit 2:
      chained attribute:
         tyGam                : TyGam
      synthesized attributes:
         polVarL              : [Polarity]
         tyL                  : TyL
   visit 3:
      inherited attribute:
         polGam               : PolGam
      chained attribute:
         polVarMp             : VarMp
   visit 4:
      chained attribute:
         tyKiGam              : TyKiGam
      synthesized attribute:
         intlTyKiGam          : TyKiGam
   visit 5:
      chained attribute:
         kiVarMp              : VarMp
      synthesized attributes:
         gathTyVarPolGam      : PolGam
         kiL                  : TyL
         tyVarWildMp          : TyVarWildMp
   visit 6:
      inherited attributes:
         clGam                : ClGam
         finKiVarMp           : VarMp
         finTyKiGam           : TyKiGam
         finTyVarMp           : VarMp
         kiGam                : KiGam
         knPolCtx             : Polarity
         moduleNm             : HsName
         opts                 : EHCOpts
         sysfEnv              : ToSysfEnv
         tr                   : TraceOn -> [PP_Doc] -> TrPP
         tyKiGlobFreeTvarS    : TyVarIdS
         tyTyGlobFreeTvarS    : TyVarIdS
         tyTyTySigFreeTvarS   : TyVarIdS
         valTyGlobFreeTvarS   : TyVarIdS
      synthesized attributes:
         allErrSq             : ErrSq
         clMissNmS            : HsNameS
         clNmS                : HsNameS
         errSq                : ErrSq
         gathMentrelFilterMp  : ModEntRelFilterMp
         pp                   : PP_Doc
         ppAST                : PP_Doc
         ppL                  : [PP_Doc]
         trpp                 : TrPP
   alternatives:
      alternative Cons:
         child hd             : TyExpr 
         child tl             : TyExprs 
         visit 1:
            local _tup252     : _
         visit 2:
            local lUniq_17_polCtx : {UID}
            local polCtxVar   : {Polarity}
            intra _tup252     : _
         visit 6:
            local trppHere    : _
      alternative Nil:
         visit 6:
            local trppHere    : _
-}
sem_TyExprs_Cons :: T_TyExpr ->
                    T_TyExprs ->
                    T_TyExprs

sem_TyExprs_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_TyExprs_Cons_1 :: T_TyExprs_1
                           sem_TyExprs_Cons_1 =
                               (\ _lhsIgUniq ->
                                    _lhsIgUniq `seq`
                                    ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq_17_polCtx) -> (__cont,lUniq_17_polCtx)} )) of
                                      { __tup252 | __tup252 `seq` (True) ->
                                      (case (__tup252) 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_TyExprs_Cons_2 :: T_TyExprs_2
                                                               sem_TyExprs_Cons_2 =
                                                                   (\ _lhsItyGam ->
                                                                        _lhsItyGam `seq`
                                                                        ((case (_lhsItyGam) of
                                                                          { _hdOtyGam | _hdOtyGam `seq` (True) ->
                                                                          (case (hd_2 _hdOtyGam) of
                                                                           { ( _hdIty,_hdItyGam,hd_3) | True ->
                                                                               (case (_hdItyGam) of
                                                                                { _tlOtyGam | _tlOtyGam `seq` (True) ->
                                                                                (case (__tup252) of
                                                                                 { (_,_lUniq_17_polCtx) | _lUniq_17_polCtx `seq` (True) ->
                                                                                 (case (mkPolVar _lUniq_17_polCtx) of
                                                                                  { _polCtxVar | _polCtxVar `seq` (True) ->
                                                                                  (case (_polCtxVar) of
                                                                                   { _hdOknPolCtx | _hdOknPolCtx `seq` (True) ->
                                                                                   (case (tl_2 _tlOtyGam) of
                                                                                    { ( _tlIpolVarL,_tlItyGam,_tlItyL,tl_3) | True ->
                                                                                        (case (hd_3 _hdOknPolCtx) of
                                                                                         { ( _hdIpolVarL,hd_4) | True ->
                                                                                             (case (_hdIpolVarL ++ _tlIpolVarL) of
                                                                                              { _lhsOpolVarL | _lhsOpolVarL `seq` (True) ->
                                                                                              (case (_tlItyGam) of
                                                                                               { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
                                                                                               (case (_hdIty : _tlItyL) of
                                                                                                { _lhsOtyL | _lhsOtyL `seq` (True) ->
                                                                                                (case ((let sem_TyExprs_Cons_3 :: T_TyExprs_3
                                                                                                            sem_TyExprs_Cons_3 =
                                                                                                                (\ _lhsIpolGam
                                                                                                                   _lhsIpolVarMp ->
                                                                                                                     _lhsIpolGam `seq`
                                                                                                                     (_lhsIpolVarMp `seq`
                                                                                                                      ((case (_lhsIpolVarMp) of
                                                                                                                        { _hdOpolVarMp | _hdOpolVarMp `seq` (True) ->
                                                                                                                        (case (_lhsIpolGam) of
                                                                                                                         { _hdOpolGam | _hdOpolGam `seq` (True) ->
                                                                                                                         (case (hd_4 _hdOpolGam _hdOpolVarMp) of
                                                                                                                          { ( _hdImbStrictness,_hdIpolVarMp,hd_5) | True ->
                                                                                                                              (case (_hdIpolVarMp) of
                                                                                                                               { _tlOpolVarMp | _tlOpolVarMp `seq` (True) ->
                                                                                                                               (case (_lhsIpolGam) of
                                                                                                                                { _tlOpolGam | _tlOpolGam `seq` (True) ->
                                                                                                                                (case (tl_3 _tlOpolGam _tlOpolVarMp) of
                                                                                                                                 { ( _tlIpolVarMp,tl_4) | True ->
                                                                                                                                     (case (_tlIpolVarMp) of
                                                                                                                                      { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
                                                                                                                                      (case ((let sem_TyExprs_Cons_4 :: T_TyExprs_4
                                                                                                                                                  sem_TyExprs_Cons_4 =
                                                                                                                                                      (\ _lhsItyKiGam ->
                                                                                                                                                           _lhsItyKiGam `seq`
                                                                                                                                                           ((case (_lhsItyKiGam) of
                                                                                                                                                             { _hdOtyKiGam | _hdOtyKiGam `seq` (True) ->
                                                                                                                                                             (case (hd_5 _hdOtyKiGam) of
                                                                                                                                                              { ( _hdIintlTyKiGam,_hdItyKiGam,hd_6) | True ->
                                                                                                                                                                  (case (_hdItyKiGam) of
                                                                                                                                                                   { _tlOtyKiGam | _tlOtyKiGam `seq` (True) ->
                                                                                                                                                                   (case (tl_4 _tlOtyKiGam) of
                                                                                                                                                                    { ( _tlIintlTyKiGam,_tlItyKiGam,tl_5) | True ->
                                                                                                                                                                        (case (_hdIintlTyKiGam `gamUnion` _tlIintlTyKiGam) of
                                                                                                                                                                         { _lhsOintlTyKiGam | _lhsOintlTyKiGam `seq` (True) ->
                                                                                                                                                                         (case (_tlItyKiGam) of
                                                                                                                                                                          { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
                                                                                                                                                                          (case ((let sem_TyExprs_Cons_5 :: T_TyExprs_5
                                                                                                                                                                                      sem_TyExprs_Cons_5 =
                                                                                                                                                                                          (\ _lhsIkiVarMp ->
                                                                                                                                                                                               _lhsIkiVarMp `seq`
                                                                                                                                                                                               ((case (_lhsIkiVarMp) of
                                                                                                                                                                                                 { _hdOkiVarMp | _hdOkiVarMp `seq` (True) ->
                                                                                                                                                                                                 (case (hd_6 _hdOkiVarMp) of
                                                                                                                                                                                                  { ( _hdIgathTyVarPolGam,_hdIki,_hdIkiVarMp,_hdIpol,_hdItyVarWildMp,hd_7) | True ->
                                                                                                                                                                                                      (case (_hdIkiVarMp) of
                                                                                                                                                                                                       { _tlOkiVarMp | _tlOkiVarMp `seq` (True) ->
                                                                                                                                                                                                       (case (tl_5 _tlOkiVarMp) of
                                                                                                                                                                                                        { ( _tlIgathTyVarPolGam,_tlIkiL,_tlIkiVarMp,_tlItyVarWildMp,tl_6) | True ->
                                                                                                                                                                                                            (case (_hdIgathTyVarPolGam `gamUnion` _tlIgathTyVarPolGam) of
                                                                                                                                                                                                             { _lhsOgathTyVarPolGam | _lhsOgathTyVarPolGam `seq` (True) ->
                                                                                                                                                                                                             (case (_hdIki : _tlIkiL) of
                                                                                                                                                                                                              { _lhsOkiL | _lhsOkiL `seq` (True) ->
                                                                                                                                                                                                              (case (_tlIkiVarMp) of
                                                                                                                                                                                                               { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
                                                                                                                                                                                                               (case (_hdItyVarWildMp `Map.union` _tlItyVarWildMp) of
                                                                                                                                                                                                                { _lhsOtyVarWildMp | _lhsOtyVarWildMp `seq` (True) ->
                                                                                                                                                                                                                (case ((let sem_TyExprs_Cons_6 :: T_TyExprs_6
                                                                                                                                                                                                                            sem_TyExprs_Cons_6 =
                                                                                                                                                                                                                                (\ _lhsIclGam
                                                                                                                                                                                                                                   _lhsIfinKiVarMp
                                                                                                                                                                                                                                   _lhsIfinTyKiGam
                                                                                                                                                                                                                                   _lhsIfinTyVarMp
                                                                                                                                                                                                                                   _lhsIkiGam
                                                                                                                                                                                                                                   _lhsIknPolCtx
                                                                                                                                                                                                                                   _lhsImoduleNm
                                                                                                                                                                                                                                   _lhsIopts
                                                                                                                                                                                                                                   _lhsIsysfEnv
                                                                                                                                                                                                                                   _lhsItr
                                                                                                                                                                                                                                   _lhsItyKiGlobFreeTvarS
                                                                                                                                                                                                                                   _lhsItyTyGlobFreeTvarS
                                                                                                                                                                                                                                   _lhsItyTyTySigFreeTvarS
                                                                                                                                                                                                                                   _lhsIvalTyGlobFreeTvarS ->
                                                                                                                                                                                                                                     _lhsIclGam `seq`
                                                                                                                                                                                                                                     (_lhsIfinKiVarMp `seq`
                                                                                                                                                                                                                                      (_lhsIfinTyKiGam `seq`
                                                                                                                                                                                                                                       (_lhsIfinTyVarMp `seq`
                                                                                                                                                                                                                                        (_lhsIkiGam `seq`
                                                                                                                                                                                                                                         (_lhsIknPolCtx `seq`
                                                                                                                                                                                                                                          (_lhsImoduleNm `seq`
                                                                                                                                                                                                                                           (_lhsIopts `seq`
                                                                                                                                                                                                                                            (_lhsIsysfEnv `seq`
                                                                                                                                                                                                                                             (_lhsItr `seq`
                                                                                                                                                                                                                                              (_lhsItyKiGlobFreeTvarS `seq`
                                                                                                                                                                                                                                               (_lhsItyTyGlobFreeTvarS `seq`
                                                                                                                                                                                                                                                (_lhsItyTyTySigFreeTvarS `seq`
                                                                                                                                                                                                                                                 (_lhsIvalTyGlobFreeTvarS `seq`
                                                                                                                                                                                                                                                  ((case (_lhsIvalTyGlobFreeTvarS) of
                                                                                                                                                                                                                                                    { _tlOvalTyGlobFreeTvarS | _tlOvalTyGlobFreeTvarS `seq` (True) ->
                                                                                                                                                                                                                                                    (case (_lhsItyTyTySigFreeTvarS) of
                                                                                                                                                                                                                                                     { _tlOtyTyTySigFreeTvarS | _tlOtyTyTySigFreeTvarS `seq` (True) ->
                                                                                                                                                                                                                                                     (case (_lhsItyTyGlobFreeTvarS) of
                                                                                                                                                                                                                                                      { _tlOtyTyGlobFreeTvarS | _tlOtyTyGlobFreeTvarS `seq` (True) ->
                                                                                                                                                                                                                                                      (case (_lhsItyKiGlobFreeTvarS) of
                                                                                                                                                                                                                                                       { _tlOtyKiGlobFreeTvarS | _tlOtyKiGlobFreeTvarS `seq` (True) ->
                                                                                                                                                                                                                                                       (case (_lhsItr) of
                                                                                                                                                                                                                                                        { _tlOtr | _tlOtr `seq` (True) ->
                                                                                                                                                                                                                                                        (case (_lhsIsysfEnv) of
                                                                                                                                                                                                                                                         { _tlOsysfEnv | _tlOsysfEnv `seq` (True) ->
                                                                                                                                                                                                                                                         (case (_lhsIopts) of
                                                                                                                                                                                                                                                          { _tlOopts | _tlOopts `seq` (True) ->
                                                                                                                                                                                                                                                          (case (_lhsImoduleNm) of
                                                                                                                                                                                                                                                           { _tlOmoduleNm | _tlOmoduleNm `seq` (True) ->
                                                                                                                                                                                                                                                           (case (_lhsIknPolCtx) of
                                                                                                                                                                                                                                                            { _tlOknPolCtx | _tlOknPolCtx `seq` (True) ->
                                                                                                                                                                                                                                                            (case (_lhsIkiGam) of
                                                                                                                                                                                                                                                             { _tlOkiGam | _tlOkiGam `seq` (True) ->
                                                                                                                                                                                                                                                             (case (_lhsIfinTyVarMp) of
                                                                                                                                                                                                                                                              { _tlOfinTyVarMp | _tlOfinTyVarMp `seq` (True) ->
                                                                                                                                                                                                                                                              (case (_lhsIfinTyKiGam) of
                                                                                                                                                                                                                                                               { _tlOfinTyKiGam | _tlOfinTyKiGam `seq` (True) ->
                                                                                                                                                                                                                                                               (case (_lhsIfinKiVarMp) of
                                                                                                                                                                                                                                                                { _tlOfinKiVarMp | _tlOfinKiVarMp `seq` (True) ->
                                                                                                                                                                                                                                                                (case (_lhsIclGam) of
                                                                                                                                                                                                                                                                 { _tlOclGam | _tlOclGam `seq` (True) ->
                                                                                                                                                                                                                                                                 (case (tl_6 _tlOclGam _tlOfinKiVarMp _tlOfinTyKiGam _tlOfinTyVarMp _tlOkiGam _tlOknPolCtx _tlOmoduleNm _tlOopts _tlOsysfEnv _tlOtr _tlOtyKiGlobFreeTvarS _tlOtyTyGlobFreeTvarS _tlOtyTyTySigFreeTvarS _tlOvalTyGlobFreeTvarS) of
                                                                                                                                                                                                                                                                  { ( _tlIallErrSq,_tlIclMissNmS,_tlIclNmS,_tlIerrSq,_tlIgathMentrelFilterMp,_tlIpp,_tlIppAST,_tlIppL,_tlItrpp) | True ->
                                                                                                                                                                                                                                                                      (case (_lhsIclGam) of
                                                                                                                                                                                                                                                                       { _hdOclGam | _hdOclGam `seq` (True) ->
                                                                                                                                                                                                                                                                       (case (hd_7 _hdOclGam) of
                                                                                                                                                                                                                                                                        { ( _hdIevTy,hd_8) | True ->
                                                                                                                                                                                                                                                                            (case (_lhsIvalTyGlobFreeTvarS) of
                                                                                                                                                                                                                                                                             { _hdOvalTyGlobFreeTvarS | _hdOvalTyGlobFreeTvarS `seq` (True) ->
                                                                                                                                                                                                                                                                             (case (_lhsItyTyTySigFreeTvarS) of
                                                                                                                                                                                                                                                                              { _hdOtyTyTySigFreeTvarS | _hdOtyTyTySigFreeTvarS `seq` (True) ->
                                                                                                                                                                                                                                                                              (case (_lhsItyTyGlobFreeTvarS) of
                                                                                                                                                                                                                                                                               { _hdOtyTyGlobFreeTvarS | _hdOtyTyGlobFreeTvarS `seq` (True) ->
                                                                                                                                                                                                                                                                               (case (_lhsItyKiGlobFreeTvarS) of
                                                                                                                                                                                                                                                                                { _hdOtyKiGlobFreeTvarS | _hdOtyKiGlobFreeTvarS `seq` (True) ->
                                                                                                                                                                                                                                                                                (case (_lhsItr) of
                                                                                                                                                                                                                                                                                 { _hdOtr | _hdOtr `seq` (True) ->
                                                                                                                                                                                                                                                                                 (case (_lhsIsysfEnv) of
                                                                                                                                                                                                                                                                                  { _hdOsysfEnv | _hdOsysfEnv `seq` (True) ->
                                                                                                                                                                                                                                                                                  (case (_lhsIopts) of
                                                                                                                                                                                                                                                                                   { _hdOopts | _hdOopts `seq` (True) ->
                                                                                                                                                                                                                                                                                   (case (_lhsImoduleNm) of
                                                                                                                                                                                                                                                                                    { _hdOmoduleNm | _hdOmoduleNm `seq` (True) ->
                                                                                                                                                                                                                                                                                    (case (_lhsIkiGam) of
                                                                                                                                                                                                                                                                                     { _hdOkiGam | _hdOkiGam `seq` (True) ->
                                                                                                                                                                                                                                                                                     (case (_lhsIfinTyVarMp) of
                                                                                                                                                                                                                                                                                      { _hdOfinTyVarMp | _hdOfinTyVarMp `seq` (True) ->
                                                                                                                                                                                                                                                                                      (case (_lhsIfinTyKiGam) of
                                                                                                                                                                                                                                                                                       { _hdOfinTyKiGam | _hdOfinTyKiGam `seq` (True) ->
                                                                                                                                                                                                                                                                                       (case (_lhsIfinKiVarMp) of
                                                                                                                                                                                                                                                                                        { _hdOfinKiVarMp | _hdOfinKiVarMp `seq` (True) ->
                                                                                                                                                                                                                                                                                        (case (hd_8 _hdOfinKiVarMp _hdOfinTyKiGam _hdOfinTyVarMp _hdOkiGam _hdOmoduleNm _hdOopts _hdOsysfEnv _hdOtr _hdOtyKiGlobFreeTvarS _hdOtyTyGlobFreeTvarS _hdOtyTyTySigFreeTvarS _hdOvalTyGlobFreeTvarS) of
                                                                                                                                                                                                                                                                                         { ( _hdIallErrSq,_hdIappArgPPL,_hdIappFunNm,_hdIappFunPP,_hdIclMissNmS,_hdIclNmS,_hdIerrSq,_hdIgathMentrelFilterMp,_hdIpp,_hdIppAST,_hdItrpp,_hdItyWildL) | True ->
                                                                                                                                                                                                                                                                                             (case (_hdIallErrSq `Seq.union` _tlIallErrSq) of
                                                                                                                                                                                                                                                                                              { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
                                                                                                                                                                                                                                                                                              (case (_hdIclMissNmS `Set.union` _tlIclMissNmS) of
                                                                                                                                                                                                                                                                                               { _lhsOclMissNmS | _lhsOclMissNmS `seq` (True) ->
                                                                                                                                                                                                                                                                                               (case (_hdIclNmS `Set.union` _tlIclNmS) of
                                                                                                                                                                                                                                                                                                { _lhsOclNmS | _lhsOclNmS `seq` (True) ->
                                                                                                                                                                                                                                                                                                (case (_hdIerrSq `Seq.union` _tlIerrSq) of
                                                                                                                                                                                                                                                                                                 { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
                                                                                                                                                                                                                                                                                                 (case (_hdIgathMentrelFilterMp `mentrelFilterMpUnion` _tlIgathMentrelFilterMp) of
                                                                                                                                                                                                                                                                                                  { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
                                                                                                                                                                                                                                                                                                  (case (_hdIpp >-< _tlIpp) of
                                                                                                                                                                                                                                                                                                   { _lhsOpp | _lhsOpp `seq` (True) ->
                                                                                                                                                                                                                                                                                                   (case (trppEmpty) of
                                                                                                                                                                                                                                                                                                    { _trppHere | _trppHere `seq` (True) ->
                                                                                                                                                                                                                                                                                                    (case (ppNestTrPP ["TyExprs","Cons"] [] [_hdIppAST,_tlIppAST] _trppHere) of
                                                                                                                                                                                                                                                                                                     { _lhsOppAST | _lhsOppAST `seq` (True) ->
                                                                                                                                                                                                                                                                                                     (case (_hdIpp : _tlIppL) of
                                                                                                                                                                                                                                                                                                      { _lhsOppL | _lhsOppL `seq` (True) ->
                                                                                                                                                                                                                                                                                                      (case (_hdItrpp >< _tlItrpp) of
                                                                                                                                                                                                                                                                                                       { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
                                                                                                                                                                                                                                                                                                       ( _lhsOallErrSq,_lhsOclMissNmS,_lhsOclNmS,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOppAST,_lhsOppL,_lhsOtrpp) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))))))
                                                                                                                                                                                                                        in  sem_TyExprs_Cons_6)) of
                                                                                                                                                                                                                 { ( sem_TyExprs_6) | True ->
                                                                                                                                                                                                                 ( _lhsOgathTyVarPolGam,_lhsOkiL,_lhsOkiVarMp,_lhsOtyVarWildMp,sem_TyExprs_6) }) }) }) }) }) }) }) }) })))
                                                                                                                                                                                  in  sem_TyExprs_Cons_5)) of
                                                                                                                                                                           { ( sem_TyExprs_5) | True ->
                                                                                                                                                                           ( _lhsOintlTyKiGam,_lhsOtyKiGam,sem_TyExprs_5) }) }) }) }) }) }) })))
                                                                                                                                              in  sem_TyExprs_Cons_4)) of
                                                                                                                                       { ( sem_TyExprs_4) | True ->
                                                                                                                                       ( _lhsOpolVarMp,sem_TyExprs_4) }) }) }) }) }) }) }) }))))
                                                                                                        in  sem_TyExprs_Cons_3)) of
                                                                                                 { ( sem_TyExprs_3) | True ->
                                                                                                 ( _lhsOpolVarL,_lhsOtyGam,_lhsOtyL,sem_TyExprs_3) }) }) }) }) }) }) }) }) }) }) }) })))
                                                           in  sem_TyExprs_Cons_2)) of
                                                    { ( sem_TyExprs_2) | True ->
                                                    ( _lhsOgUniq,sem_TyExprs_2) }) }) }) }) }) }) })))
                       in  sem_TyExprs_Cons_1)) of
                { ( sem_TyExprs_1) | True ->
                ( _lhsOrange,sem_TyExprs_1) }) }) }) })

sem_TyExprs_Nil :: T_TyExprs

sem_TyExprs_Nil =
    (case (emptyRange) of
     { _lhsOrange | _lhsOrange `seq` (True) ->
     (case ((let sem_TyExprs_Nil_1 :: T_TyExprs_1
                 sem_TyExprs_Nil_1 =
                     (\ _lhsIgUniq ->
                          _lhsIgUniq `seq`
                          ((case (_lhsIgUniq) of
                            { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
                            (case ((let sem_TyExprs_Nil_2 :: T_TyExprs_2
                                        sem_TyExprs_Nil_2 =
                                            (\ _lhsItyGam ->
                                                 _lhsItyGam `seq`
                                                 ((case ([]) of
                                                   { _lhsOpolVarL | _lhsOpolVarL `seq` (True) ->
                                                   (case (_lhsItyGam) of
                                                    { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
                                                    (case ([]) of
                                                     { _lhsOtyL | _lhsOtyL `seq` (True) ->
                                                     (case ((let sem_TyExprs_Nil_3 :: T_TyExprs_3
                                                                 sem_TyExprs_Nil_3 =
                                                                     (\ _lhsIpolGam
                                                                        _lhsIpolVarMp ->
                                                                          _lhsIpolGam `seq`
                                                                          (_lhsIpolVarMp `seq`
                                                                           ((case (_lhsIpolVarMp) of
                                                                             { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
                                                                             (case ((let sem_TyExprs_Nil_4 :: T_TyExprs_4
                                                                                         sem_TyExprs_Nil_4 =
                                                                                             (\ _lhsItyKiGam ->
                                                                                                  _lhsItyKiGam `seq`
                                                                                                  ((case (emptyGam) of
                                                                                                    { _lhsOintlTyKiGam | _lhsOintlTyKiGam `seq` (True) ->
                                                                                                    (case (_lhsItyKiGam) of
                                                                                                     { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
                                                                                                     (case ((let sem_TyExprs_Nil_5 :: T_TyExprs_5
                                                                                                                 sem_TyExprs_Nil_5 =
                                                                                                                     (\ _lhsIkiVarMp ->
                                                                                                                          _lhsIkiVarMp `seq`
                                                                                                                          ((case (emptyGam) of
                                                                                                                            { _lhsOgathTyVarPolGam | _lhsOgathTyVarPolGam `seq` (True) ->
                                                                                                                            (case ([]) of
                                                                                                                             { _lhsOkiL | _lhsOkiL `seq` (True) ->
                                                                                                                             (case (_lhsIkiVarMp) of
                                                                                                                              { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
                                                                                                                              (case (Map.empty) of
                                                                                                                               { _lhsOtyVarWildMp | _lhsOtyVarWildMp `seq` (True) ->
                                                                                                                               (case ((let sem_TyExprs_Nil_6 :: T_TyExprs_6
                                                                                                                                           sem_TyExprs_Nil_6 =
                                                                                                                                               (\ _lhsIclGam
                                                                                                                                                  _lhsIfinKiVarMp
                                                                                                                                                  _lhsIfinTyKiGam
                                                                                                                                                  _lhsIfinTyVarMp
                                                                                                                                                  _lhsIkiGam
                                                                                                                                                  _lhsIknPolCtx
                                                                                                                                                  _lhsImoduleNm
                                                                                                                                                  _lhsIopts
                                                                                                                                                  _lhsIsysfEnv
                                                                                                                                                  _lhsItr
                                                                                                                                                  _lhsItyKiGlobFreeTvarS
                                                                                                                                                  _lhsItyTyGlobFreeTvarS
                                                                                                                                                  _lhsItyTyTySigFreeTvarS
                                                                                                                                                  _lhsIvalTyGlobFreeTvarS ->
                                                                                                                                                    _lhsIclGam `seq`
                                                                                                                                                    (_lhsIfinKiVarMp `seq`
                                                                                                                                                     (_lhsIfinTyKiGam `seq`
                                                                                                                                                      (_lhsIfinTyVarMp `seq`
                                                                                                                                                       (_lhsIkiGam `seq`
                                                                                                                                                        (_lhsIknPolCtx `seq`
                                                                                                                                                         (_lhsImoduleNm `seq`
                                                                                                                                                          (_lhsIopts `seq`
                                                                                                                                                           (_lhsIsysfEnv `seq`
                                                                                                                                                            (_lhsItr `seq`
                                                                                                                                                             (_lhsItyKiGlobFreeTvarS `seq`
                                                                                                                                                              (_lhsItyTyGlobFreeTvarS `seq`
                                                                                                                                                               (_lhsItyTyTySigFreeTvarS `seq`
                                                                                                                                                                (_lhsIvalTyGlobFreeTvarS `seq`
                                                                                                                                                                 ((case (Seq.empty) of
                                                                                                                                                                   { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
                                                                                                                                                                   (case (Set.empty) of
                                                                                                                                                                    { _lhsOclMissNmS | _lhsOclMissNmS `seq` (True) ->
                                                                                                                                                                    (case (Set.empty) of
                                                                                                                                                                     { _lhsOclNmS | _lhsOclNmS `seq` (True) ->
                                                                                                                                                                     (case (Seq.empty) of
                                                                                                                                                                      { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
                                                                                                                                                                      (case (Map.empty) of
                                                                                                                                                                       { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
                                                                                                                                                                       (case (empty) of
                                                                                                                                                                        { _lhsOpp | _lhsOpp `seq` (True) ->
                                                                                                                                                                        (case (trppEmpty) of
                                                                                                                                                                         { _trppHere | _trppHere `seq` (True) ->
                                                                                                                                                                         (case (ppNestTrPP ["TyExprs","Nil"] [] [] _trppHere) of
                                                                                                                                                                          { _lhsOppAST | _lhsOppAST `seq` (True) ->
                                                                                                                                                                          (case ([]) of
                                                                                                                                                                           { _lhsOppL | _lhsOppL `seq` (True) ->
                                                                                                                                                                           (case (trppEmpty) of
                                                                                                                                                                            { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
                                                                                                                                                                            ( _lhsOallErrSq,_lhsOclMissNmS,_lhsOclNmS,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOppAST,_lhsOppL,_lhsOtrpp) }) }) }) }) }) }) }) }) }) }))))))))))))))))
                                                                                                                                       in  sem_TyExprs_Nil_6)) of
                                                                                                                                { ( sem_TyExprs_6) | True ->
                                                                                                                                ( _lhsOgathTyVarPolGam,_lhsOkiL,_lhsOkiVarMp,_lhsOtyVarWildMp,sem_TyExprs_6) }) }) }) }) })))
                                                                                                             in  sem_TyExprs_Nil_5)) of
                                                                                                      { ( sem_TyExprs_5) | True ->
                                                                                                      ( _lhsOintlTyKiGam,_lhsOtyKiGam,sem_TyExprs_5) }) }) })))
                                                                                     in  sem_TyExprs_Nil_4)) of
                                                                              { ( sem_TyExprs_4) | True ->
                                                                              ( _lhsOpolVarMp,sem_TyExprs_4) }) }))))
                                                             in  sem_TyExprs_Nil_3)) of
                                                      { ( sem_TyExprs_3) | True ->
                                                      ( _lhsOpolVarL,_lhsOtyGam,_lhsOtyL,sem_TyExprs_3) }) }) }) })))
                                    in  sem_TyExprs_Nil_2)) of
                             { ( sem_TyExprs_2) | True ->
                             ( _lhsOgUniq,sem_TyExprs_2) }) })))
             in  sem_TyExprs_Nil_1)) of
      { ( sem_TyExprs_1) | True ->
      ( _lhsOrange,sem_TyExprs_1) }) })