hamlet/GRAMMAR_CORE-sig.ss
(module GRAMMAR_CORE-sig (planet chongkai/sml)
  (#%module-begin
   (Program:
    (SIGDECTopDec:
     (SigDec:
      (SigBind:
       (SigId: GRAMMAR_CORE-sig)
       (SIGSigExp:
        (SEQSpec:
         (TYPESpec: (TypDec: (TyVarseq:) (TyCon: Info-type)))
         (SEQSpec:
          (SEQSpec:
           (INCLUDESpec:
            (WHERETYPESigExp:
             (SIGSigExp: (TYPESpec: (TypDec: (TyVarseq:) (TyCon: SCon-type))))
             (TyVarseq:)
             (LongTyCon: SCon-type)
             (RECORDTy: (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: Info-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: SCon.SCon-type)))))))
           (EMPTYSpec:))
          (SEQSpec:
           (SEQSpec:
            (INCLUDESpec:
             (WHERETYPESigExp:
              (SIGSigExp: (TYPESpec: (TypDec: (TyVarseq:) (TyCon: Lab-type))))
              (TyVarseq:)
              (LongTyCon: Lab-type)
              (RECORDTy: (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: Info-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: Lab.Lab-type)))))))
            (EMPTYSpec:))
           (SEQSpec:
            (SEQSpec:
             (INCLUDESpec:
              (WHERETYPESigExp:
               (SIGSigExp: (TYPESpec: (TypDec: (TyVarseq:) (TyCon: VId-type))))
               (TyVarseq:)
               (LongTyCon: VId-type)
               (RECORDTy: (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: Info-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: VId.Id-type)))))))
             (EMPTYSpec:))
            (SEQSpec:
             (SEQSpec:
              (INCLUDESpec:
               (WHERETYPESigExp:
                (SIGSigExp: (TYPESpec: (TypDec: (TyVarseq:) (TyCon: TyCon-type))))
                (TyVarseq:)
                (LongTyCon: TyCon-type)
                (RECORDTy: (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: Info-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: TyCon.Id-type)))))))
              (EMPTYSpec:))
             (SEQSpec:
              (SEQSpec:
               (INCLUDESpec:
                (WHERETYPESigExp:
                 (SIGSigExp: (TYPESpec: (TypDec: (TyVarseq:) (TyCon: TyVar-type))))
                 (TyVarseq:)
                 (LongTyCon: TyVar-type)
                 (RECORDTy:
                  (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: Info-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: TyVar.TyVar-type)))))))
               (EMPTYSpec:))
              (SEQSpec:
               (SEQSpec:
                (INCLUDESpec:
                 (WHERETYPESigExp:
                  (SIGSigExp: (TYPESpec: (TypDec: (TyVarseq:) (TyCon: StrId-type))))
                  (TyVarseq:)
                  (LongTyCon: StrId-type)
                  (RECORDTy: (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: Info-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: StrId.Id-type)))))))
                (EMPTYSpec:))
               (SEQSpec:
                (SEQSpec:
                 (INCLUDESpec:
                  (WHERETYPESigExp:
                   (SIGSigExp: (TYPESpec: (TypDec: (TyVarseq:) (TyCon: longVId-type))))
                   (TyVarseq:)
                   (LongTyCon: longVId-type)
                   (RECORDTy:
                    (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: Info-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: LongVId.longId-type)))))))
                 (EMPTYSpec:))
                (SEQSpec:
                 (SEQSpec:
                  (INCLUDESpec:
                   (WHERETYPESigExp:
                    (SIGSigExp: (TYPESpec: (TypDec: (TyVarseq:) (TyCon: longTyCon-type))))
                    (TyVarseq:)
                    (LongTyCon: longTyCon-type)
                    (RECORDTy:
                     (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: Info-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: LongTyCon.longId-type)))))))
                  (EMPTYSpec:))
                 (SEQSpec:
                  (SEQSpec:
                   (INCLUDESpec:
                    (WHERETYPESigExp:
                     (SIGSigExp: (TYPESpec: (TypDec: (TyVarseq:) (TyCon: longStrId-type))))
                     (TyVarseq:)
                     (LongTyCon: longStrId-type)
                     (RECORDTy:
                      (TyRow:
                       (Lab: |1|)
                       (CONTy: (Tyseq:) (LongTyCon: Info-type))
                       (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: LongStrId.longId-type)))))))
                   (EMPTYSpec:))
                  (SEQSpec:
                   (DATATYPESpec: (DatDesc: (TyVarseq:) (TyCon: Op-type) (ConDesc: (VId: SANSOp) (ConDesc: (VId: WITHOp)))))
                   (SEQSpec:
                    (DATATYPESpec:
                     (DatDesc:
                      (TyVarseq:)
                      (TyCon: AtExp-type)
                      (ConDesc:
                       (VId: SCONAtExp)
                       (RECORDTy: (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: Info-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: SCon-type)))))
                       (ConDesc:
                        (VId: IDAtExp)
                        (RECORDTy:
                         (TyRow:
                          (Lab: |1|)
                          (CONTy: (Tyseq:) (LongTyCon: Info-type))
                          (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: Op-type)) (TyRow: (Lab: |3|) (CONTy: (Tyseq:) (LongTyCon: longVId-type))))))
                        (ConDesc:
                         (VId: RECORDAtExp)
                         (RECORDTy:
                          (TyRow:
                           (Lab: |1|)
                           (CONTy: (Tyseq:) (LongTyCon: Info-type))
                           (TyRow: (Lab: |2|) (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: ExpRow-type))) (LongTyCon: option-type)))))
                         (ConDesc:
                          (VId: LETAtExp)
                          (RECORDTy:
                           (TyRow:
                            (Lab: |1|)
                            (CONTy: (Tyseq:) (LongTyCon: Info-type))
                            (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: Dec-type)) (TyRow: (Lab: |3|) (CONTy: (Tyseq:) (LongTyCon: Exp-type))))))
                          (ConDesc:
                           (VId: PARAtExp)
                           (RECORDTy:
                            (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: Info-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: Exp-type)))))
                           (ConDesc:
                            (VId: SEQAtExp)
                            (RECORDTy:
                             (TyRow:
                              (Lab: |1|)
                              (CONTy: (Tyseq:) (LongTyCon: Info-type))
                              (TyRow:
                               (Lab: |2|)
                               (CONTy: (Tyseq:) (LongTyCon: Exp-type))
                               (TyRow: (Lab: |3|) (CONTy: (Tyseq:) (LongTyCon: AtExp-type))))))))))))
                      (DatDesc:
                       (TyVarseq:)
                       (TyCon: ExpRow-type)
                       (ConDesc:
                        (VId: ExpRow)
                        (RECORDTy:
                         (TyRow:
                          (Lab: |1|)
                          (CONTy: (Tyseq:) (LongTyCon: Info-type))
                          (TyRow:
                           (Lab: |2|)
                           (CONTy: (Tyseq:) (LongTyCon: Lab-type))
                           (TyRow:
                            (Lab: |3|)
                            (CONTy: (Tyseq:) (LongTyCon: Exp-type))
                            (TyRow: (Lab: |4|) (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: ExpRow-type))) (LongTyCon: option-type))))))))
                       (DatDesc:
                        (TyVarseq:)
                        (TyCon: Exp-type)
                        (ConDesc:
                         (VId: ATExp)
                         (RECORDTy:
                          (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: Info-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: AtExp-type)))))
                         (ConDesc:
                          (VId: APPExp)
                          (RECORDTy:
                           (TyRow:
                            (Lab: |1|)
                            (CONTy: (Tyseq:) (LongTyCon: Info-type))
                            (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: Exp-type)) (TyRow: (Lab: |3|) (CONTy: (Tyseq:) (LongTyCon: AtExp-type))))))
                          (ConDesc:
                           (VId: COLONExp)
                           (RECORDTy:
                            (TyRow:
                             (Lab: |1|)
                             (CONTy: (Tyseq:) (LongTyCon: Info-type))
                             (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: Exp-type)) (TyRow: (Lab: |3|) (CONTy: (Tyseq:) (LongTyCon: Ty-type))))))
                           (ConDesc:
                            (VId: HANDLEExp)
                            (RECORDTy:
                             (TyRow:
                              (Lab: |1|)
                              (CONTy: (Tyseq:) (LongTyCon: Info-type))
                              (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: Exp-type)) (TyRow: (Lab: |3|) (CONTy: (Tyseq:) (LongTyCon: Match-type))))))
                            (ConDesc:
                             (VId: RAISEExp)
                             (RECORDTy:
                              (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: Info-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: Exp-type)))))
                             (ConDesc:
                              (VId: FNExp)
                              (RECORDTy:
                               (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: Info-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: Match-type)))))
                              (ConDesc:
                               (VId: IFExp)
                               (RECORDTy:
                                (TyRow:
                                 (Lab: |1|)
                                 (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                 (TyRow:
                                  (Lab: |2|)
                                  (CONTy: (Tyseq:) (LongTyCon: Exp-type))
                                  (TyRow:
                                   (Lab: |3|)
                                   (CONTy: (Tyseq:) (LongTyCon: Exp-type))
                                   (TyRow: (Lab: |4|) (CONTy: (Tyseq:) (LongTyCon: Exp-type))))))))))))))
                        (DatDesc:
                         (TyVarseq:)
                         (TyCon: Match-type)
                         (ConDesc:
                          (VId: Match)
                          (RECORDTy:
                           (TyRow:
                            (Lab: |1|)
                            (CONTy: (Tyseq:) (LongTyCon: Info-type))
                            (TyRow:
                             (Lab: |2|)
                             (CONTy: (Tyseq:) (LongTyCon: Mrule-type))
                             (TyRow: (Lab: |3|) (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: Match-type))) (LongTyCon: option-type)))))))
                         (DatDesc:
                          (TyVarseq:)
                          (TyCon: Mrule-type)
                          (ConDesc:
                           (VId: Mrule)
                           (RECORDTy:
                            (TyRow:
                             (Lab: |1|)
                             (CONTy: (Tyseq:) (LongTyCon: Info-type))
                             (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: Pat-type)) (TyRow: (Lab: |3|) (CONTy: (Tyseq:) (LongTyCon: Exp-type)))))))
                          (DatDesc:
                           (TyVarseq:)
                           (TyCon: Dec-type)
                           (ConDesc:
                            (VId: VALDec)
                            (RECORDTy:
                             (TyRow:
                              (Lab: |1|)
                              (CONTy: (Tyseq:) (LongTyCon: Info-type))
                              (TyRow:
                               (Lab: |2|)
                               (CONTy: (Tyseq:) (LongTyCon: TyVarseq-type))
                               (TyRow: (Lab: |3|) (CONTy: (Tyseq:) (LongTyCon: ValBind-type))))))
                            (ConDesc:
                             (VId: TYPEDec)
                             (RECORDTy:
                              (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: Info-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: TypBind-type)))))
                             (ConDesc:
                              (VId: DATATYPEDec)
                              (RECORDTy:
                               (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: Info-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: DatBind-type)))))
                              (ConDesc:
                               (VId: DATATYPE2Dec)
                               (RECORDTy:
                                (TyRow:
                                 (Lab: |1|)
                                 (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                 (TyRow:
                                  (Lab: |2|)
                                  (CONTy: (Tyseq:) (LongTyCon: TyCon-type))
                                  (TyRow: (Lab: |3|) (CONTy: (Tyseq:) (LongTyCon: longTyCon-type))))))
                               (ConDesc:
                                (VId: ABSTYPEDec)
                                (RECORDTy:
                                 (TyRow:
                                  (Lab: |1|)
                                  (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                  (TyRow:
                                   (Lab: |2|)
                                   (CONTy: (Tyseq:) (LongTyCon: DatBind-type))
                                   (TyRow: (Lab: |3|) (CONTy: (Tyseq:) (LongTyCon: Dec-type))))))
                                (ConDesc:
                                 (VId: EXCEPTIONDec)
                                 (RECORDTy:
                                  (TyRow:
                                   (Lab: |1|)
                                   (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                   (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: ExBind-type)))))
                                 (ConDesc:
                                  (VId: LOCALDec)
                                  (RECORDTy:
                                   (TyRow:
                                    (Lab: |1|)
                                    (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                    (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: Dec-type)) (TyRow: (Lab: |3|) (CONTy: (Tyseq:) (LongTyCon: Dec-type))))))
                                  (ConDesc:
                                   (VId: OPENDec)
                                   (RECORDTy:
                                    (TyRow:
                                     (Lab: |1|)
                                     (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                     (TyRow: (Lab: |2|) (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: longStrId-type))) (LongTyCon: list-type)))))
                                   (ConDesc:
                                    (VId: EMPTYDec)
                                    (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                    (ConDesc:
                                     (VId: SEQDec)
                                     (RECORDTy:
                                      (TyRow:
                                       (Lab: |1|)
                                       (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                       (TyRow:
                                        (Lab: |2|)
                                        (CONTy: (Tyseq:) (LongTyCon: Dec-type))
                                        (TyRow: (Lab: |3|) (CONTy: (Tyseq:) (LongTyCon: Dec-type))))))))))))))))
                           (DatDesc:
                            (TyVarseq:)
                            (TyCon: ValBind-type)
                            (ConDesc:
                             (VId: PLAINValBind)
                             (RECORDTy:
                              (TyRow:
                               (Lab: |1|)
                               (CONTy: (Tyseq:) (LongTyCon: Info-type))
                               (TyRow:
                                (Lab: |2|)
                                (CONTy: (Tyseq:) (LongTyCon: Pat-type))
                                (TyRow:
                                 (Lab: |3|)
                                 (CONTy: (Tyseq:) (LongTyCon: Exp-type))
                                 (TyRow: (Lab: |4|) (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: ValBind-type))) (LongTyCon: option-type)))))))
                             (ConDesc:
                              (VId: RECValBind)
                              (RECORDTy:
                               (TyRow:
                                (Lab: |1|)
                                (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: ValBind-type)))))))
                            (DatDesc:
                             (TyVarseq:)
                             (TyCon: TypBind-type)
                             (ConDesc:
                              (VId: TypBind)
                              (RECORDTy:
                               (TyRow:
                                (Lab: |1|)
                                (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                (TyRow:
                                 (Lab: |2|)
                                 (CONTy: (Tyseq:) (LongTyCon: TyVarseq-type))
                                 (TyRow:
                                  (Lab: |3|)
                                  (CONTy: (Tyseq:) (LongTyCon: TyCon-type))
                                  (TyRow:
                                   (Lab: |4|)
                                   (CONTy: (Tyseq:) (LongTyCon: Ty-type))
                                   (TyRow: (Lab: |5|) (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: TypBind-type))) (LongTyCon: option-type)))))))))
                             (DatDesc:
                              (TyVarseq:)
                              (TyCon: DatBind-type)
                              (ConDesc:
                               (VId: DatBind)
                               (RECORDTy:
                                (TyRow:
                                 (Lab: |1|)
                                 (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                 (TyRow:
                                  (Lab: |2|)
                                  (CONTy: (Tyseq:) (LongTyCon: TyVarseq-type))
                                  (TyRow:
                                   (Lab: |3|)
                                   (CONTy: (Tyseq:) (LongTyCon: TyCon-type))
                                   (TyRow:
                                    (Lab: |4|)
                                    (CONTy: (Tyseq:) (LongTyCon: ConBind-type))
                                    (TyRow: (Lab: |5|) (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: DatBind-type))) (LongTyCon: option-type)))))))))
                              (DatDesc:
                               (TyVarseq:)
                               (TyCon: ConBind-type)
                               (ConDesc:
                                (VId: ConBind)
                                (RECORDTy:
                                 (TyRow:
                                  (Lab: |1|)
                                  (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                  (TyRow:
                                   (Lab: |2|)
                                   (CONTy: (Tyseq:) (LongTyCon: Op-type))
                                   (TyRow:
                                    (Lab: |3|)
                                    (CONTy: (Tyseq:) (LongTyCon: VId-type))
                                    (TyRow:
                                     (Lab: |4|)
                                     (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: Ty-type))) (LongTyCon: option-type))
                                     (TyRow: (Lab: |5|) (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: ConBind-type))) (LongTyCon: option-type)))))))))
                               (DatDesc:
                                (TyVarseq:)
                                (TyCon: ExBind-type)
                                (ConDesc:
                                 (VId: NEWExBind)
                                 (RECORDTy:
                                  (TyRow:
                                   (Lab: |1|)
                                   (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                   (TyRow:
                                    (Lab: |2|)
                                    (CONTy: (Tyseq:) (LongTyCon: Op-type))
                                    (TyRow:
                                     (Lab: |3|)
                                     (CONTy: (Tyseq:) (LongTyCon: VId-type))
                                     (TyRow:
                                      (Lab: |4|)
                                      (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: Ty-type))) (LongTyCon: option-type))
                                      (TyRow: (Lab: |5|) (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: ExBind-type))) (LongTyCon: option-type))))))))
                                 (ConDesc:
                                  (VId: EQUALExBind)
                                  (RECORDTy:
                                   (TyRow:
                                    (Lab: |1|)
                                    (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                    (TyRow:
                                     (Lab: |2|)
                                     (CONTy: (Tyseq:) (LongTyCon: Op-type))
                                     (TyRow:
                                      (Lab: |3|)
                                      (CONTy: (Tyseq:) (LongTyCon: VId-type))
                                      (TyRow:
                                       (Lab: |4|)
                                       (CONTy: (Tyseq:) (LongTyCon: Op-type))
                                       (TyRow:
                                        (Lab: |5|)
                                        (CONTy: (Tyseq:) (LongTyCon: longVId-type))
                                        (TyRow: (Lab: |6|) (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: ExBind-type))) (LongTyCon: option-type)))))))))))
                                (DatDesc:
                                 (TyVarseq:)
                                 (TyCon: AtPat-type)
                                 (ConDesc:
                                  (VId: WILDCARDAtPat)
                                  (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                  (ConDesc:
                                   (VId: SCONAtPat)
                                   (RECORDTy:
                                    (TyRow:
                                     (Lab: |1|)
                                     (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                     (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: SCon-type)))))
                                   (ConDesc:
                                    (VId: IDAtPat)
                                    (RECORDTy:
                                     (TyRow:
                                      (Lab: |1|)
                                      (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                      (TyRow:
                                       (Lab: |2|)
                                       (CONTy: (Tyseq:) (LongTyCon: Op-type))
                                       (TyRow: (Lab: |3|) (CONTy: (Tyseq:) (LongTyCon: longVId-type))))))
                                    (ConDesc:
                                     (VId: RECORDAtPat)
                                     (RECORDTy:
                                      (TyRow:
                                       (Lab: |1|)
                                       (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                       (TyRow: (Lab: |2|) (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: PatRow-type))) (LongTyCon: option-type)))))
                                     (ConDesc:
                                      (VId: PARAtPat)
                                      (RECORDTy:
                                       (TyRow:
                                        (Lab: |1|)
                                        (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                        (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: Pat-type))))))))))
                                 (DatDesc:
                                  (TyVarseq:)
                                  (TyCon: PatRow-type)
                                  (ConDesc:
                                   (VId: DOTSPatRow)
                                   (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                   (ConDesc:
                                    (VId: FIELDPatRow)
                                    (RECORDTy:
                                     (TyRow:
                                      (Lab: |1|)
                                      (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                      (TyRow:
                                       (Lab: |2|)
                                       (CONTy: (Tyseq:) (LongTyCon: Lab-type))
                                       (TyRow:
                                        (Lab: |3|)
                                        (CONTy: (Tyseq:) (LongTyCon: Pat-type))
                                        (TyRow: (Lab: |4|) (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: PatRow-type))) (LongTyCon: option-type)))))))))
                                  (DatDesc:
                                   (TyVarseq:)
                                   (TyCon: Pat-type)
                                   (ConDesc:
                                    (VId: ATPat)
                                    (RECORDTy:
                                     (TyRow:
                                      (Lab: |1|)
                                      (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                      (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: AtPat-type)))))
                                    (ConDesc:
                                     (VId: CONPat)
                                     (RECORDTy:
                                      (TyRow:
                                       (Lab: |1|)
                                       (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                       (TyRow:
                                        (Lab: |2|)
                                        (CONTy: (Tyseq:) (LongTyCon: Op-type))
                                        (TyRow:
                                         (Lab: |3|)
                                         (CONTy: (Tyseq:) (LongTyCon: longVId-type))
                                         (TyRow: (Lab: |4|) (CONTy: (Tyseq:) (LongTyCon: AtPat-type)))))))
                                     (ConDesc:
                                      (VId: COLONPat)
                                      (RECORDTy:
                                       (TyRow:
                                        (Lab: |1|)
                                        (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                        (TyRow:
                                         (Lab: |2|)
                                         (CONTy: (Tyseq:) (LongTyCon: Pat-type))
                                         (TyRow: (Lab: |3|) (CONTy: (Tyseq:) (LongTyCon: Ty-type))))))
                                      (ConDesc:
                                       (VId: ASPat)
                                       (RECORDTy:
                                        (TyRow:
                                         (Lab: |1|)
                                         (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                         (TyRow:
                                          (Lab: |2|)
                                          (CONTy: (Tyseq:) (LongTyCon: Op-type))
                                          (TyRow:
                                           (Lab: |3|)
                                           (CONTy: (Tyseq:) (LongTyCon: VId-type))
                                           (TyRow:
                                            (Lab: |4|)
                                            (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: Ty-type))) (LongTyCon: option-type))
                                            (TyRow: (Lab: |5|) (CONTy: (Tyseq:) (LongTyCon: Pat-type))))))))))))
                                   (DatDesc:
                                    (TyVarseq:)
                                    (TyCon: Ty-type)
                                    (ConDesc:
                                     (VId: VARTy)
                                     (RECORDTy:
                                      (TyRow:
                                       (Lab: |1|)
                                       (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                       (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: TyVar-type)))))
                                     (ConDesc:
                                      (VId: RECORDTy)
                                      (RECORDTy:
                                       (TyRow:
                                        (Lab: |1|)
                                        (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                        (TyRow: (Lab: |2|) (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: TyRow-type))) (LongTyCon: option-type)))))
                                      (ConDesc:
                                       (VId: CONTy)
                                       (RECORDTy:
                                        (TyRow:
                                         (Lab: |1|)
                                         (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                         (TyRow:
                                          (Lab: |2|)
                                          (CONTy: (Tyseq:) (LongTyCon: Tyseq-type))
                                          (TyRow: (Lab: |3|) (CONTy: (Tyseq:) (LongTyCon: longTyCon-type))))))
                                       (ConDesc:
                                        (VId: ARROWTy)
                                        (RECORDTy:
                                         (TyRow:
                                          (Lab: |1|)
                                          (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                          (TyRow:
                                           (Lab: |2|)
                                           (CONTy: (Tyseq:) (LongTyCon: Ty-type))
                                           (TyRow: (Lab: |3|) (CONTy: (Tyseq:) (LongTyCon: Ty-type))))))
                                        (ConDesc:
                                         (VId: PARTy)
                                         (RECORDTy:
                                          (TyRow:
                                           (Lab: |1|)
                                           (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                           (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: Ty-type))))))))))
                                    (DatDesc:
                                     (TyVarseq:)
                                     (TyCon: TyRow-type)
                                     (ConDesc:
                                      (VId: TyRow)
                                      (RECORDTy:
                                       (TyRow:
                                        (Lab: |1|)
                                        (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                        (TyRow:
                                         (Lab: |2|)
                                         (CONTy: (Tyseq:) (LongTyCon: Lab-type))
                                         (TyRow:
                                          (Lab: |3|)
                                          (CONTy: (Tyseq:) (LongTyCon: Ty-type))
                                          (TyRow: (Lab: |4|) (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: TyRow-type))) (LongTyCon: option-type))))))))
                                     (DatDesc:
                                      (TyVarseq:)
                                      (TyCon: Tyseq-type)
                                      (ConDesc:
                                       (VId: Tyseq)
                                       (RECORDTy:
                                        (TyRow:
                                         (Lab: |1|)
                                         (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                         (TyRow: (Lab: |2|) (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: Ty-type))) (LongTyCon: list-type))))))
                                      (DatDesc:
                                       (TyVarseq:)
                                       (TyCon: TyVarseq-type)
                                       (ConDesc:
                                        (VId: TyVarseq)
                                        (RECORDTy:
                                         (TyRow:
                                          (Lab: |1|)
                                          (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                          (TyRow:
                                           (Lab: |2|)
                                           (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: TyVar-type))) (LongTyCon: list-type)))))))))))))))))))))))))
                    (SEQSpec:
                     (VALSpec: (ValDesc: (VId: infoAtExp) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: AtExp-type)) (CONTy: (Tyseq:) (LongTyCon: Info-type)))))
                     (SEQSpec:
                      (VALSpec: (ValDesc: (VId: infoExpRow) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: ExpRow-type)) (CONTy: (Tyseq:) (LongTyCon: Info-type)))))
                      (SEQSpec:
                       (VALSpec: (ValDesc: (VId: infoExp) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: Exp-type)) (CONTy: (Tyseq:) (LongTyCon: Info-type)))))
                       (SEQSpec:
                        (VALSpec: (ValDesc: (VId: infoMatch) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: Match-type)) (CONTy: (Tyseq:) (LongTyCon: Info-type)))))
                        (SEQSpec:
                         (VALSpec: (ValDesc: (VId: infoMrule) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: Mrule-type)) (CONTy: (Tyseq:) (LongTyCon: Info-type)))))
                         (SEQSpec:
                          (VALSpec: (ValDesc: (VId: infoDec) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: Dec-type)) (CONTy: (Tyseq:) (LongTyCon: Info-type)))))
                          (SEQSpec:
                           (VALSpec:
                            (ValDesc: (VId: infoValBind) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: ValBind-type)) (CONTy: (Tyseq:) (LongTyCon: Info-type)))))
                           (SEQSpec:
                            (VALSpec:
                             (ValDesc: (VId: infoTypBind) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: TypBind-type)) (CONTy: (Tyseq:) (LongTyCon: Info-type)))))
                            (SEQSpec:
                             (VALSpec:
                              (ValDesc: (VId: infoDatBind) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: DatBind-type)) (CONTy: (Tyseq:) (LongTyCon: Info-type)))))
                             (SEQSpec:
                              (VALSpec:
                               (ValDesc: (VId: infoConBind) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: ConBind-type)) (CONTy: (Tyseq:) (LongTyCon: Info-type)))))
                              (SEQSpec:
                               (VALSpec:
                                (ValDesc: (VId: infoExBind) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: ExBind-type)) (CONTy: (Tyseq:) (LongTyCon: Info-type)))))
                               (SEQSpec:
                                (VALSpec:
                                 (ValDesc: (VId: infoAtPat) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: AtPat-type)) (CONTy: (Tyseq:) (LongTyCon: Info-type)))))
                                (SEQSpec:
                                 (VALSpec:
                                  (ValDesc:
                                   (VId: infoPatRow)
                                   (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: PatRow-type)) (CONTy: (Tyseq:) (LongTyCon: Info-type)))))
                                 (SEQSpec:
                                  (VALSpec:
                                   (ValDesc: (VId: infoPat) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: Pat-type)) (CONTy: (Tyseq:) (LongTyCon: Info-type)))))
                                  (SEQSpec:
                                   (VALSpec:
                                    (ValDesc: (VId: infoTy) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: Ty-type)) (CONTy: (Tyseq:) (LongTyCon: Info-type)))))
                                   (SEQSpec:
                                    (VALSpec:
                                     (ValDesc:
                                      (VId: infoTyRow)
                                      (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: TyRow-type)) (CONTy: (Tyseq:) (LongTyCon: Info-type)))))
                                    (SEQSpec:
                                     (VALSpec:
                                      (ValDesc:
                                       (VId: infoTyseq)
                                       (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: Tyseq-type)) (CONTy: (Tyseq:) (LongTyCon: Info-type)))))
                                     (VALSpec:
                                      (ValDesc:
                                       (VId: infoTyVarseq)
                                       (ARROWTy:
                                        (CONTy: (Tyseq:) (LongTyCon: TyVarseq-type))
                                        (CONTy: (Tyseq:) (LongTyCon: Info-type)))))))))))))))))))))))))))))))))))))))))