hamlet/DerivedFormsModule-struct.ss
(module DerivedFormsModule-struct (planet chongkai/sml)
  (#%module-begin
   (Program:
    (STRDECTopDec:
     (STRUCTUREStrDec:
      (StrBind:
       (StrId: DerivedFormsModule-struct)
       (SEALStrExp:
        (STRUCTStrExp:
         (SEQStrDec:
          (STRUCTUREStrDec: (StrBind: (StrId: C-struct) (IDStrExp: (LongStrId: GrammarCore-struct))))
          (SEQStrDec:
           (STRUCTUREStrDec: (StrBind: (StrId: M-struct) (IDStrExp: (LongStrId: GrammarModule-struct))))
           (SEQStrDec:
            (DECStrDec: (TYPEDec: (TypBind: (TyVarseq:) (TyCon: Info-type) (CONTy: (Tyseq:) (LongTyCon: M.Info-type)))))
            (SEQStrDec:
             (DECStrDec: (TYPEDec: (TypBind: (TyVarseq:) (TyCon: VId-type) (CONTy: (Tyseq:) (LongTyCon: M.VId-type)))))
             (SEQStrDec:
              (DECStrDec: (TYPEDec: (TypBind: (TyVarseq:) (TyCon: TyCon-type) (CONTy: (Tyseq:) (LongTyCon: M.TyCon-type)))))
              (SEQStrDec:
               (DECStrDec: (TYPEDec: (TypBind: (TyVarseq:) (TyCon: StrId-type) (CONTy: (Tyseq:) (LongTyCon: M.StrId-type)))))
               (SEQStrDec:
                (DECStrDec: (TYPEDec: (TypBind: (TyVarseq:) (TyCon: SigId-type) (CONTy: (Tyseq:) (LongTyCon: M.SigId-type)))))
                (SEQStrDec:
                 (DECStrDec: (TYPEDec: (TypBind: (TyVarseq:) (TyCon: FunId-type) (CONTy: (Tyseq:) (LongTyCon: M.FunId-type)))))
                 (SEQStrDec:
                  (DECStrDec: (TYPEDec: (TypBind: (TyVarseq:) (TyCon: longTyCon-type) (CONTy: (Tyseq:) (LongTyCon: M.longTyCon-type)))))
                  (SEQStrDec:
                   (DECStrDec: (TYPEDec: (TypBind: (TyVarseq:) (TyCon: Ty-type) (CONTy: (Tyseq:) (LongTyCon: M.Ty-type)))))
                   (SEQStrDec:
                    (DECStrDec: (TYPEDec: (TypBind: (TyVarseq:) (TyCon: TyVarseq-type) (CONTy: (Tyseq:) (LongTyCon: M.TyVarseq-type)))))
                    (SEQStrDec:
                     (DECStrDec: (TYPEDec: (TypBind: (TyVarseq:) (TyCon: StrExp-type) (CONTy: (Tyseq:) (LongTyCon: M.StrExp-type)))))
                     (SEQStrDec:
                      (DECStrDec: (TYPEDec: (TypBind: (TyVarseq:) (TyCon: StrDec-type) (CONTy: (Tyseq:) (LongTyCon: M.StrDec-type)))))
                      (SEQStrDec:
                       (DECStrDec: (TYPEDec: (TypBind: (TyVarseq:) (TyCon: StrBind-type) (CONTy: (Tyseq:) (LongTyCon: M.StrBind-type)))))
                       (SEQStrDec:
                        (DECStrDec: (TYPEDec: (TypBind: (TyVarseq:) (TyCon: SigExp-type) (CONTy: (Tyseq:) (LongTyCon: M.SigExp-type)))))
                        (SEQStrDec:
                         (DECStrDec:
                          (TYPEDec:
                           (TypBind:
                            (TyVarseq:)
                            (TyCon: TyReaDesc-type)
                            (CONTy:
                             (Tyseq:
                              (PARTy:
                               (RECORDTy:
                                (TyRow:
                                 (Lab: |1|)
                                 (CONTy: (Tyseq:) (LongTyCon: M.Info-type))
                                 (TyRow:
                                  (Lab: |2|)
                                  (CONTy: (Tyseq:) (LongTyCon: M.TyVarseq-type))
                                  (TyRow:
                                   (Lab: |3|)
                                   (CONTy: (Tyseq:) (LongTyCon: M.longTyCon-type))
                                   (TyRow: (Lab: |4|) (CONTy: (Tyseq:) (LongTyCon: M.Ty-type)))))))))
                             (LongTyCon: list-type)))))
                         (SEQStrDec:
                          (DECStrDec: (TYPEDec: (TypBind: (TyVarseq:) (TyCon: Spec-type) (CONTy: (Tyseq:) (LongTyCon: M.Spec-type)))))
                          (SEQStrDec:
                           (DECStrDec:
                            (TYPEDec:
                             (TypBind:
                              (TyVarseq:)
                              (TyCon: SynDesc-type)
                              (CONTy:
                               (Tyseq:
                                (PARTy:
                                 (RECORDTy:
                                  (TyRow:
                                   (Lab: |1|)
                                   (CONTy: (Tyseq:) (LongTyCon: M.Info-type))
                                   (TyRow:
                                    (Lab: |2|)
                                    (CONTy: (Tyseq:) (LongTyCon: M.TyVarseq-type))
                                    (TyRow:
                                     (Lab: |3|)
                                     (CONTy: (Tyseq:) (LongTyCon: M.TyCon-type))
                                     (TyRow: (Lab: |4|) (CONTy: (Tyseq:) (LongTyCon: M.Ty-type)))))))))
                               (LongTyCon: list-type)))))
                           (SEQStrDec:
                            (DECStrDec: (TYPEDec: (TypBind: (TyVarseq:) (TyCon: FunBind-type) (CONTy: (Tyseq:) (LongTyCon: M.FunBind-type)))))
                            (SEQStrDec:
                             (DECStrDec:
                              (VALDec:
                               (TyVarseq:)
                               (RECValBind:
                                (PLAINValBind:
                                 (ATPat: (IDAtPat: (LongVId: TRANSStrBind)))
                                 (FNExp:
                                  (Match:
                                   (Mrule:
                                    (ATPat:
                                     (PARAtPat:
                                      (ATPat:
                                       (RECORDAtPat:
                                        (FIELDPatRow:
                                         (Lab: |1|)
                                         (ATPat: (IDAtPat: (LongVId: I)))
                                         (FIELDPatRow:
                                          (Lab: |2|)
                                          (ATPat: (IDAtPat: (LongVId: strid)))
                                          (FIELDPatRow:
                                           (Lab: |3|)
                                           (ATPat: (IDAtPat: (LongVId: NONE)))
                                           (FIELDPatRow:
                                            (Lab: |4|)
                                            (ATPat: (IDAtPat: (LongVId: strexp)))
                                            (FIELDPatRow: (Lab: |5|) (ATPat: (IDAtPat: (LongVId: strbind_opt))))))))))))
                                    (ATExp:
                                     (PARAtExp:
                                      (APPExp:
                                       (ATExp: (IDAtExp: (LongVId: M.StrBind)))
                                       (RECORDAtExp:
                                        (ExpRow:
                                         (Lab: |1|)
                                         (ATExp: (IDAtExp: (LongVId: I)))
                                         (ExpRow:
                                          (Lab: |2|)
                                          (ATExp: (IDAtExp: (LongVId: strid)))
                                          (ExpRow:
                                           (Lab: |3|)
                                           (ATExp: (IDAtExp: (LongVId: strexp)))
                                           (ExpRow: (Lab: |4|) (ATExp: (IDAtExp: (LongVId: strbind_opt))))))))))))
                                   (Match:
                                    (Mrule:
                                     (ATPat:
                                      (PARAtPat:
                                       (ATPat:
                                        (RECORDAtPat:
                                         (FIELDPatRow:
                                          (Lab: |1|)
                                          (ATPat: (IDAtPat: (LongVId: I)))
                                          (FIELDPatRow:
                                           (Lab: |2|)
                                           (ATPat: (IDAtPat: (LongVId: strid)))
                                           (FIELDPatRow:
                                            (Lab: |3|)
                                            (ATPat: (PARAtPat: (CONPat: (LongVId: SOME) (IDAtPat: (LongVId: sigexp)))))
                                            (FIELDPatRow:
                                             (Lab: |4|)
                                             (ATPat: (IDAtPat: (LongVId: strexp)))
                                             (FIELDPatRow: (Lab: |5|) (ATPat: (IDAtPat: (LongVId: strbind_opt))))))))))))
                                     (ATExp:
                                      (PARAtExp:
                                       (APPExp:
                                        (ATExp: (IDAtExp: (LongVId: M.StrBind)))
                                        (RECORDAtExp:
                                         (ExpRow:
                                          (Lab: |1|)
                                          (ATExp: (IDAtExp: (LongVId: I)))
                                          (ExpRow:
                                           (Lab: |2|)
                                           (ATExp: (IDAtExp: (LongVId: strid)))
                                           (ExpRow:
                                            (Lab: |3|)
                                            (ATExp:
                                             (PARAtExp:
                                              (APPExp:
                                               (ATExp: (IDAtExp: (LongVId: M.COLONStrExp)))
                                               (RECORDAtExp:
                                                (ExpRow:
                                                 (Lab: |1|)
                                                 (ATExp: (IDAtExp: (LongVId: I)))
                                                 (ExpRow:
                                                  (Lab: |2|)
                                                  (ATExp: (IDAtExp: (LongVId: strexp)))
                                                  (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: sigexp))))))))))
                                            (ExpRow: (Lab: |4|) (ATExp: (IDAtExp: (LongVId: strbind_opt)))))))))))))))))))
                             (SEQStrDec:
                              (DECStrDec:
                               (VALDec:
                                (TyVarseq:)
                                (RECValBind:
                                 (PLAINValBind:
                                  (ATPat: (IDAtPat: (LongVId: SEALStrBind)))
                                  (FNExp:
                                   (Match:
                                    (Mrule:
                                     (ATPat:
                                      (PARAtPat:
                                       (ATPat:
                                        (RECORDAtPat:
                                         (FIELDPatRow:
                                          (Lab: |1|)
                                          (ATPat: (IDAtPat: (LongVId: I)))
                                          (FIELDPatRow:
                                           (Lab: |2|)
                                           (ATPat: (IDAtPat: (LongVId: strid)))
                                           (FIELDPatRow:
                                            (Lab: |3|)
                                            (ATPat: (IDAtPat: (LongVId: sigexp)))
                                            (FIELDPatRow:
                                             (Lab: |4|)
                                             (ATPat: (IDAtPat: (LongVId: strexp)))
                                             (FIELDPatRow: (Lab: |5|) (ATPat: (IDAtPat: (LongVId: strbind_opt))))))))))))
                                     (ATExp:
                                      (PARAtExp:
                                       (APPExp:
                                        (ATExp: (IDAtExp: (LongVId: M.StrBind)))
                                        (RECORDAtExp:
                                         (ExpRow:
                                          (Lab: |1|)
                                          (ATExp: (IDAtExp: (LongVId: I)))
                                          (ExpRow:
                                           (Lab: |2|)
                                           (ATExp: (IDAtExp: (LongVId: strid)))
                                           (ExpRow:
                                            (Lab: |3|)
                                            (ATExp:
                                             (PARAtExp:
                                              (APPExp:
                                               (ATExp: (IDAtExp: (LongVId: M.SEALStrExp)))
                                               (RECORDAtExp:
                                                (ExpRow:
                                                 (Lab: |1|)
                                                 (ATExp: (IDAtExp: (LongVId: I)))
                                                 (ExpRow:
                                                  (Lab: |2|)
                                                  (ATExp: (IDAtExp: (LongVId: strexp)))
                                                  (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: sigexp))))))))))
                                            (ExpRow: (Lab: |4|) (ATExp: (IDAtExp: (LongVId: strbind_opt))))))))))))))))))
                              (SEQStrDec:
                               (DECStrDec:
                                (VALDec:
                                 (TyVarseq:)
                                 (RECValBind:
                                  (PLAINValBind:
                                   (ATPat: (IDAtPat: (LongVId: APPDECStrExp)))
                                   (FNExp:
                                    (Match:
                                     (Mrule:
                                      (ATPat:
                                       (PARAtPat:
                                        (ATPat:
                                         (RECORDAtPat:
                                          (FIELDPatRow:
                                           (Lab: |1|)
                                           (ATPat: (IDAtPat: (LongVId: I)))
                                           (FIELDPatRow:
                                            (Lab: |2|)
                                            (ATPat: (IDAtPat: (LongVId: funid)))
                                            (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: strdec))))))))))
                                      (ATExp:
                                       (PARAtExp:
                                        (APPExp:
                                         (ATExp: (IDAtExp: (LongVId: M.APPStrExp)))
                                         (RECORDAtExp:
                                          (ExpRow:
                                           (Lab: |1|)
                                           (ATExp: (IDAtExp: (LongVId: I)))
                                           (ExpRow:
                                            (Lab: |2|)
                                            (ATExp: (IDAtExp: (LongVId: funid)))
                                            (ExpRow:
                                             (Lab: |3|)
                                             (ATExp:
                                              (PARAtExp:
                                               (APPExp:
                                                (ATExp: (IDAtExp: (LongVId: M.STRUCTStrExp)))
                                                (RECORDAtExp:
                                                 (ExpRow:
                                                  (Lab: |1|)
                                                  (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: M.infoStrDec))) (IDAtExp: (LongVId: strdec)))))
                                                  (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: strdec)))))))))))))))))))))))
                               (SEQStrDec:
                                (DECStrDec:
                                 (VALDec:
                                  (TyVarseq:)
                                  (RECValBind:
                                   (PLAINValBind:
                                    (ATPat: (IDAtPat: (LongVId: TRANSFunBind)))
                                    (FNExp:
                                     (Match:
                                      (Mrule:
                                       (ATPat:
                                        (PARAtPat:
                                         (ATPat:
                                          (RECORDAtPat:
                                           (FIELDPatRow:
                                            (Lab: |1|)
                                            (ATPat: (IDAtPat: (LongVId: I)))
                                            (FIELDPatRow:
                                             (Lab: |2|)
                                             (ATPat: (IDAtPat: (LongVId: funid)))
                                             (FIELDPatRow:
                                              (Lab: |3|)
                                              (ATPat: (IDAtPat: (LongVId: strid)))
                                              (FIELDPatRow:
                                               (Lab: |4|)
                                               (ATPat: (IDAtPat: (LongVId: sigexp)))
                                               (FIELDPatRow:
                                                (Lab: |5|)
                                                (ATPat: (IDAtPat: (LongVId: NONE)))
                                                (FIELDPatRow:
                                                 (Lab: |6|)
                                                 (ATPat: (IDAtPat: (LongVId: strexp)))
                                                 (FIELDPatRow: (Lab: |7|) (ATPat: (IDAtPat: (LongVId: funbind_opt))))))))))))))
                                       (ATExp:
                                        (PARAtExp:
                                         (APPExp:
                                          (ATExp: (IDAtExp: (LongVId: M.FunBind)))
                                          (RECORDAtExp:
                                           (ExpRow:
                                            (Lab: |1|)
                                            (ATExp: (IDAtExp: (LongVId: I)))
                                            (ExpRow:
                                             (Lab: |2|)
                                             (ATExp: (IDAtExp: (LongVId: funid)))
                                             (ExpRow:
                                              (Lab: |3|)
                                              (ATExp: (IDAtExp: (LongVId: strid)))
                                              (ExpRow:
                                               (Lab: |4|)
                                               (ATExp: (IDAtExp: (LongVId: sigexp)))
                                               (ExpRow:
                                                (Lab: |5|)
                                                (ATExp: (IDAtExp: (LongVId: strexp)))
                                                (ExpRow: (Lab: |6|) (ATExp: (IDAtExp: (LongVId: funbind_opt))))))))))))))
                                      (Match:
                                       (Mrule:
                                        (ATPat:
                                         (PARAtPat:
                                          (ATPat:
                                           (RECORDAtPat:
                                            (FIELDPatRow:
                                             (Lab: |1|)
                                             (ATPat: (IDAtPat: (LongVId: I)))
                                             (FIELDPatRow:
                                              (Lab: |2|)
                                              (ATPat: (IDAtPat: (LongVId: funid)))
                                              (FIELDPatRow:
                                               (Lab: |3|)
                                               (ATPat: (IDAtPat: (LongVId: strid)))
                                               (FIELDPatRow:
                                                (Lab: |4|)
                                                (ATPat: (IDAtPat: (LongVId: sigexp)))
                                                (FIELDPatRow:
                                                 (Lab: |5|)
                                                 (ATPat: (PARAtPat: (CONPat: (LongVId: SOME) (IDAtPat: (LongVId: |sigexp'|)))))
                                                 (FIELDPatRow:
                                                  (Lab: |6|)
                                                  (ATPat: (IDAtPat: (LongVId: strexp)))
                                                  (FIELDPatRow: (Lab: |7|) (ATPat: (IDAtPat: (LongVId: funbind_opt))))))))))))))
                                        (ATExp:
                                         (PARAtExp:
                                          (APPExp:
                                           (ATExp: (IDAtExp: (LongVId: M.FunBind)))
                                           (RECORDAtExp:
                                            (ExpRow:
                                             (Lab: |1|)
                                             (ATExp: (IDAtExp: (LongVId: I)))
                                             (ExpRow:
                                              (Lab: |2|)
                                              (ATExp: (IDAtExp: (LongVId: funid)))
                                              (ExpRow:
                                               (Lab: |3|)
                                               (ATExp: (IDAtExp: (LongVId: strid)))
                                               (ExpRow:
                                                (Lab: |4|)
                                                (ATExp: (IDAtExp: (LongVId: sigexp)))
                                                (ExpRow:
                                                 (Lab: |5|)
                                                 (ATExp:
                                                  (PARAtExp:
                                                   (APPExp:
                                                    (ATExp: (IDAtExp: (LongVId: M.COLONStrExp)))
                                                    (RECORDAtExp:
                                                     (ExpRow:
                                                      (Lab: |1|)
                                                      (ATExp: (IDAtExp: (LongVId: I)))
                                                      (ExpRow:
                                                       (Lab: |2|)
                                                       (ATExp: (IDAtExp: (LongVId: strexp)))
                                                       (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: |sigexp'|))))))))))
                                                 (ExpRow: (Lab: |6|) (ATExp: (IDAtExp: (LongVId: funbind_opt)))))))))))))))))))))
                                (SEQStrDec:
                                 (DECStrDec:
                                  (VALDec:
                                   (TyVarseq:)
                                   (RECValBind:
                                    (PLAINValBind:
                                     (ATPat: (IDAtPat: (LongVId: SEALFunBind)))
                                     (FNExp:
                                      (Match:
                                       (Mrule:
                                        (ATPat:
                                         (PARAtPat:
                                          (ATPat:
                                           (RECORDAtPat:
                                            (FIELDPatRow:
                                             (Lab: |1|)
                                             (ATPat: (IDAtPat: (LongVId: I)))
                                             (FIELDPatRow:
                                              (Lab: |2|)
                                              (ATPat: (IDAtPat: (LongVId: funid)))
                                              (FIELDPatRow:
                                               (Lab: |3|)
                                               (ATPat: (IDAtPat: (LongVId: strid)))
                                               (FIELDPatRow:
                                                (Lab: |4|)
                                                (ATPat: (IDAtPat: (LongVId: sigexp)))
                                                (FIELDPatRow:
                                                 (Lab: |5|)
                                                 (ATPat: (IDAtPat: (LongVId: |sigexp'|)))
                                                 (FIELDPatRow:
                                                  (Lab: |6|)
                                                  (ATPat: (IDAtPat: (LongVId: strexp)))
                                                  (FIELDPatRow: (Lab: |7|) (ATPat: (IDAtPat: (LongVId: funbind_opt))))))))))))))
                                        (ATExp:
                                         (PARAtExp:
                                          (APPExp:
                                           (ATExp: (IDAtExp: (LongVId: M.FunBind)))
                                           (RECORDAtExp:
                                            (ExpRow:
                                             (Lab: |1|)
                                             (ATExp: (IDAtExp: (LongVId: I)))
                                             (ExpRow:
                                              (Lab: |2|)
                                              (ATExp: (IDAtExp: (LongVId: funid)))
                                              (ExpRow:
                                               (Lab: |3|)
                                               (ATExp: (IDAtExp: (LongVId: strid)))
                                               (ExpRow:
                                                (Lab: |4|)
                                                (ATExp: (IDAtExp: (LongVId: sigexp)))
                                                (ExpRow:
                                                 (Lab: |5|)
                                                 (ATExp:
                                                  (PARAtExp:
                                                   (APPExp:
                                                    (ATExp: (IDAtExp: (LongVId: M.SEALStrExp)))
                                                    (RECORDAtExp:
                                                     (ExpRow:
                                                      (Lab: |1|)
                                                      (ATExp: (IDAtExp: (LongVId: I)))
                                                      (ExpRow:
                                                       (Lab: |2|)
                                                       (ATExp: (IDAtExp: (LongVId: strexp)))
                                                       (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: |sigexp'|))))))))))
                                                 (ExpRow: (Lab: |6|) (ATExp: (IDAtExp: (LongVId: funbind_opt))))))))))))))))))))
                                 (SEQStrDec:
                                  (DECStrDec:
                                   (VALDec:
                                    (TyVarseq:)
                                    (RECValBind:
                                     (PLAINValBind:
                                      (ATPat: (IDAtPat: (LongVId: TRANSSPECFunBind)))
                                      (FNExp:
                                       (Match:
                                        (Mrule:
                                         (ATPat:
                                          (PARAtPat:
                                           (ATPat:
                                            (RECORDAtPat:
                                             (FIELDPatRow:
                                              (Lab: |1|)
                                              (ATPat: (IDAtPat: (LongVId: I)))
                                              (FIELDPatRow:
                                               (Lab: |2|)
                                               (ATPat: (IDAtPat: (LongVId: funid)))
                                               (FIELDPatRow:
                                                (Lab: |3|)
                                                (ATPat: (IDAtPat: (LongVId: spec)))
                                                (FIELDPatRow:
                                                 (Lab: |4|)
                                                 (ATPat: (IDAtPat: (LongVId: sigexp_opt)))
                                                 (FIELDPatRow:
                                                  (Lab: |5|)
                                                  (ATPat: (IDAtPat: (LongVId: strexp)))
                                                  (FIELDPatRow: (Lab: |6|) (ATPat: (IDAtPat: (LongVId: funbind_opt)))))))))))))
                                         (ATExp:
                                          (LETAtExp:
                                           (SEQDec:
                                            (VALDec:
                                             (TyVarseq:)
                                             (PLAINValBind:
                                              (ATPat: (IDAtPat: (LongVId: |I'|)))
                                              (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: M.infoStrExp))) (IDAtExp: (LongVId: strexp)))))))
                                            (SEQDec:
                                             (VALDec:
                                              (TyVarseq:)
                                              (PLAINValBind:
                                               (ATPat: (IDAtPat: (LongVId: strid)))
                                               (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: StrId.invent))) (RECORDAtExp:))))))
                                             (SEQDec:
                                              (VALDec:
                                               (TyVarseq:)
                                               (PLAINValBind:
                                                (ATPat: (IDAtPat: (LongVId: sigexp)))
                                                (ATExp:
                                                 (PARAtExp:
                                                  (APPExp:
                                                   (ATExp: (IDAtExp: (LongVId: M.SIGSigExp)))
                                                   (RECORDAtExp:
                                                    (ExpRow:
                                                     (Lab: |1|)
                                                     (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: M.infoSpec))) (IDAtExp: (LongVId: spec)))))
                                                     (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: spec)))))))))))
                                              (SEQDec:
                                               (VALDec:
                                                (TyVarseq:)
                                                (PLAINValBind:
                                                 (ATPat: (IDAtPat: (LongVId: strdec)))
                                                 (ATExp:
                                                  (PARAtExp:
                                                   (APPExp:
                                                    (ATExp: (IDAtExp: (LongVId: M.DECStrDec)))
                                                    (RECORDAtExp:
                                                     (ExpRow:
                                                      (Lab: |1|)
                                                      (ATExp: (IDAtExp: (LongVId: |I'|)))
                                                      (ExpRow:
                                                       (Lab: |2|)
                                                       (ATExp:
                                                        (PARAtExp:
                                                         (APPExp:
                                                          (ATExp: (IDAtExp: (LongVId: C.OPENDec)))
                                                          (RECORDAtExp:
                                                           (ExpRow:
                                                            (Lab: |1|)
                                                            (ATExp: (IDAtExp: (LongVId: |I'|)))
                                                            (ExpRow:
                                                             (Lab: |2|)
                                                             (ATExp:
                                                              (PARAtExp:
                                                               (APPExp:
                                                                (ATExp: (IDAtExp: (LongVId: ::)))
                                                                (RECORDAtExp:
                                                                 (ExpRow:
                                                                  (Lab: |1|)
                                                                  (ATExp:
                                                                   (RECORDAtExp:
                                                                    (ExpRow:
                                                                     (Lab: |1|)
                                                                     (ATExp: (IDAtExp: (LongVId: |I'|)))
                                                                     (ExpRow:
                                                                      (Lab: |2|)
                                                                      (ATExp:
                                                                       (PARAtExp:
                                                                        (APPExp:
                                                                         (ATExp: (IDAtExp: (LongVId: LongStrId.fromId)))
                                                                         (IDAtExp: (LongVId: strid)))))))))
                                                                  (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: nil)))))))))))))))))))))))
                                               (SEQDec:
                                                (VALDec:
                                                 (TyVarseq:)
                                                 (PLAINValBind:
                                                  (ATPat: (IDAtPat: (LongVId: |strexp'|)))
                                                  (APPExp:
                                                   (ATExp:
                                                    (PARAtExp:
                                                     (FNExp:
                                                      (Match:
                                                       (Mrule: (ATPat: (IDAtPat: (LongVId: NONE))) (ATExp: (IDAtExp: (LongVId: strexp))))
                                                       (Match:
                                                        (Mrule:
                                                         (ATPat: (PARAtPat: (CONPat: (LongVId: SOME) (IDAtPat: (LongVId: |sigexp'|)))))
                                                         (ATExp:
                                                          (PARAtExp:
                                                           (APPExp:
                                                            (ATExp: (IDAtExp: (LongVId: M.COLONStrExp)))
                                                            (RECORDAtExp:
                                                             (ExpRow:
                                                              (Lab: |1|)
                                                              (ATExp: (IDAtExp: (LongVId: |I'|)))
                                                              (ExpRow:
                                                               (Lab: |2|)
                                                               (ATExp: (IDAtExp: (LongVId: strexp)))
                                                               (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: |sigexp'|))))))))))))))))
                                                   (PARAtExp: (ATExp: (IDAtExp: (LongVId: sigexp_opt)))))))
                                                (VALDec:
                                                 (TyVarseq:)
                                                 (PLAINValBind:
                                                  (ATPat: (IDAtPat: (LongVId: letexp)))
                                                  (ATExp:
                                                   (PARAtExp:
                                                    (APPExp:
                                                     (ATExp: (IDAtExp: (LongVId: M.LETStrExp)))
                                                     (RECORDAtExp:
                                                      (ExpRow:
                                                       (Lab: |1|)
                                                       (ATExp: (IDAtExp: (LongVId: |I'|)))
                                                       (ExpRow:
                                                        (Lab: |2|)
                                                        (ATExp: (IDAtExp: (LongVId: strdec)))
                                                        (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: |strexp'|)))))))))))))))))
                                           (ATExp:
                                            (PARAtExp:
                                             (APPExp:
                                              (ATExp: (IDAtExp: (LongVId: M.FunBind)))
                                              (RECORDAtExp:
                                               (ExpRow:
                                                (Lab: |1|)
                                                (ATExp: (IDAtExp: (LongVId: I)))
                                                (ExpRow:
                                                 (Lab: |2|)
                                                 (ATExp: (IDAtExp: (LongVId: funid)))
                                                 (ExpRow:
                                                  (Lab: |3|)
                                                  (ATExp:
                                                   (RECORDAtExp:
                                                    (ExpRow:
                                                     (Lab: |1|)
                                                     (ATExp: (IDAtExp: (LongVId: I)))
                                                     (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: strid)))))))
                                                  (ExpRow:
                                                   (Lab: |4|)
                                                   (ATExp: (IDAtExp: (LongVId: sigexp)))
                                                   (ExpRow:
                                                    (Lab: |5|)
                                                    (ATExp: (IDAtExp: (LongVId: letexp)))
                                                    (ExpRow: (Lab: |6|) (ATExp: (IDAtExp: (LongVId: funbind_opt))))))))))))))))))))))
                                  (SEQStrDec:
                                   (DECStrDec:
                                    (VALDec:
                                     (TyVarseq:)
                                     (RECValBind:
                                      (PLAINValBind:
                                       (ATPat: (IDAtPat: (LongVId: SEALSPECFunBind)))
                                       (FNExp:
                                        (Match:
                                         (Mrule:
                                          (ATPat:
                                           (PARAtPat:
                                            (ATPat:
                                             (RECORDAtPat:
                                              (FIELDPatRow:
                                               (Lab: |1|)
                                               (ATPat: (IDAtPat: (LongVId: I)))
                                               (FIELDPatRow:
                                                (Lab: |2|)
                                                (ATPat: (IDAtPat: (LongVId: funid)))
                                                (FIELDPatRow:
                                                 (Lab: |3|)
                                                 (ATPat: (IDAtPat: (LongVId: spec)))
                                                 (FIELDPatRow:
                                                  (Lab: |4|)
                                                  (ATPat: (IDAtPat: (LongVId: |sigexp'|)))
                                                  (FIELDPatRow:
                                                   (Lab: |5|)
                                                   (ATPat: (IDAtPat: (LongVId: strexp)))
                                                   (FIELDPatRow: (Lab: |6|) (ATPat: (IDAtPat: (LongVId: funbind_opt)))))))))))))
                                          (ATExp:
                                           (LETAtExp:
                                            (SEQDec:
                                             (VALDec:
                                              (TyVarseq:)
                                              (PLAINValBind:
                                               (ATPat: (IDAtPat: (LongVId: |I'|)))
                                               (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: M.infoStrExp))) (IDAtExp: (LongVId: strexp)))))))
                                             (SEQDec:
                                              (VALDec:
                                               (TyVarseq:)
                                               (PLAINValBind:
                                                (ATPat: (IDAtPat: (LongVId: strid)))
                                                (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: StrId.invent))) (RECORDAtExp:))))))
                                              (SEQDec:
                                               (VALDec:
                                                (TyVarseq:)
                                                (PLAINValBind:
                                                 (ATPat: (IDAtPat: (LongVId: sigexp)))
                                                 (ATExp:
                                                  (PARAtExp:
                                                   (APPExp:
                                                    (ATExp: (IDAtExp: (LongVId: M.SIGSigExp)))
                                                    (RECORDAtExp:
                                                     (ExpRow:
                                                      (Lab: |1|)
                                                      (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: M.infoSpec))) (IDAtExp: (LongVId: spec)))))
                                                      (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: spec)))))))))))
                                               (SEQDec:
                                                (VALDec:
                                                 (TyVarseq:)
                                                 (PLAINValBind:
                                                  (ATPat: (IDAtPat: (LongVId: strdec)))
                                                  (ATExp:
                                                   (PARAtExp:
                                                    (APPExp:
                                                     (ATExp: (IDAtExp: (LongVId: M.DECStrDec)))
                                                     (RECORDAtExp:
                                                      (ExpRow:
                                                       (Lab: |1|)
                                                       (ATExp: (IDAtExp: (LongVId: |I'|)))
                                                       (ExpRow:
                                                        (Lab: |2|)
                                                        (ATExp:
                                                         (PARAtExp:
                                                          (APPExp:
                                                           (ATExp: (IDAtExp: (LongVId: C.OPENDec)))
                                                           (RECORDAtExp:
                                                            (ExpRow:
                                                             (Lab: |1|)
                                                             (ATExp: (IDAtExp: (LongVId: |I'|)))
                                                             (ExpRow:
                                                              (Lab: |2|)
                                                              (ATExp:
                                                               (PARAtExp:
                                                                (APPExp:
                                                                 (ATExp: (IDAtExp: (LongVId: ::)))
                                                                 (RECORDAtExp:
                                                                  (ExpRow:
                                                                   (Lab: |1|)
                                                                   (ATExp:
                                                                    (RECORDAtExp:
                                                                     (ExpRow:
                                                                      (Lab: |1|)
                                                                      (ATExp: (IDAtExp: (LongVId: |I'|)))
                                                                      (ExpRow:
                                                                       (Lab: |2|)
                                                                       (ATExp:
                                                                        (PARAtExp:
                                                                         (APPExp:
                                                                          (ATExp: (IDAtExp: (LongVId: LongStrId.fromId)))
                                                                          (IDAtExp: (LongVId: strid)))))))))
                                                                   (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: nil)))))))))))))))))))))))
                                                (SEQDec:
                                                 (VALDec:
                                                  (TyVarseq:)
                                                  (PLAINValBind:
                                                   (ATPat: (IDAtPat: (LongVId: |strexp'|)))
                                                   (ATExp:
                                                    (PARAtExp:
                                                     (APPExp:
                                                      (ATExp: (IDAtExp: (LongVId: M.COLONStrExp)))
                                                      (RECORDAtExp:
                                                       (ExpRow:
                                                        (Lab: |1|)
                                                        (ATExp: (IDAtExp: (LongVId: |I'|)))
                                                        (ExpRow:
                                                         (Lab: |2|)
                                                         (ATExp: (IDAtExp: (LongVId: strexp)))
                                                         (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: |sigexp'|))))))))))))
                                                 (VALDec:
                                                  (TyVarseq:)
                                                  (PLAINValBind:
                                                   (ATPat: (IDAtPat: (LongVId: letexp)))
                                                   (ATExp:
                                                    (PARAtExp:
                                                     (APPExp:
                                                      (ATExp: (IDAtExp: (LongVId: M.LETStrExp)))
                                                      (RECORDAtExp:
                                                       (ExpRow:
                                                        (Lab: |1|)
                                                        (ATExp: (IDAtExp: (LongVId: |I'|)))
                                                        (ExpRow:
                                                         (Lab: |2|)
                                                         (ATExp: (IDAtExp: (LongVId: strdec)))
                                                         (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: |strexp'|)))))))))))))))))
                                            (ATExp:
                                             (PARAtExp:
                                              (APPExp:
                                               (ATExp: (IDAtExp: (LongVId: M.FunBind)))
                                               (RECORDAtExp:
                                                (ExpRow:
                                                 (Lab: |1|)
                                                 (ATExp: (IDAtExp: (LongVId: I)))
                                                 (ExpRow:
                                                  (Lab: |2|)
                                                  (ATExp: (IDAtExp: (LongVId: funid)))
                                                  (ExpRow:
                                                   (Lab: |3|)
                                                   (ATExp:
                                                    (RECORDAtExp:
                                                     (ExpRow:
                                                      (Lab: |1|)
                                                      (ATExp: (IDAtExp: (LongVId: |I'|)))
                                                      (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: strid)))))))
                                                   (ExpRow:
                                                    (Lab: |4|)
                                                    (ATExp: (IDAtExp: (LongVId: sigexp)))
                                                    (ExpRow:
                                                     (Lab: |5|)
                                                     (ATExp: (IDAtExp: (LongVId: letexp)))
                                                     (ExpRow: (Lab: |6|) (ATExp: (IDAtExp: (LongVId: funbind_opt))))))))))))))))))))))
                                   (SEQStrDec:
                                    (DECStrDec:
                                     (VALDec:
                                      (TyVarseq:)
                                      (RECValBind:
                                       (PLAINValBind:
                                        (ATPat: (IDAtPat: (LongVId: SYNSpec)))
                                        (FNExp:
                                         (Match:
                                          (Mrule:
                                           (ATPat:
                                            (PARAtPat:
                                             (ATPat:
                                              (RECORDAtPat:
                                               (FIELDPatRow:
                                                (Lab: |1|)
                                                (ATPat: (IDAtPat: (LongVId: I)))
                                                (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: nil)))))))))
                                           (ATExp:
                                            (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: M.EMPTYSpec))) (PARAtExp: (ATExp: (IDAtExp: (LongVId: I))))))))
                                          (Match:
                                           (Mrule:
                                            (ATPat:
                                             (PARAtPat:
                                              (ATPat:
                                               (RECORDAtPat:
                                                (FIELDPatRow:
                                                 (Lab: |1|)
                                                 (ATPat: (IDAtPat: (LongVId: I)))
                                                 (FIELDPatRow:
                                                  (Lab: |2|)
                                                  (ATPat:
                                                   (PARAtPat:
                                                    (CONPat:
                                                     (LongVId: ::)
                                                     (RECORDAtPat:
                                                      (FIELDPatRow:
                                                       (Lab: |1|)
                                                       (ATPat:
                                                        (RECORDAtPat:
                                                         (FIELDPatRow:
                                                          (Lab: |1|)
                                                          (ATPat: (IDAtPat: (LongVId: |I'|)))
                                                          (FIELDPatRow:
                                                           (Lab: |2|)
                                                           (ATPat: (IDAtPat: (LongVId: tyvarseq)))
                                                           (FIELDPatRow:
                                                            (Lab: |3|)
                                                            (ATPat: (IDAtPat: (LongVId: tycon)))
                                                            (FIELDPatRow: (Lab: |4|) (ATPat: (IDAtPat: (LongVId: ty)))))))))
                                                       (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: |syns'|)))))))))))))))
                                            (ATExp:
                                             (LETAtExp:
                                              (SEQDec:
                                               (VALDec:
                                                (TyVarseq:)
                                                (PLAINValBind:
                                                 (ATPat: (IDAtPat: (LongVId: longtycon)))
                                                 (ATExp:
                                                  (RECORDAtExp:
                                                   (ExpRow:
                                                    (Lab: |1|)
                                                    (ATExp: (IDAtExp: (LongVId: I)))
                                                    (ExpRow:
                                                     (Lab: |2|)
                                                     (ATExp:
                                                      (PARAtExp:
                                                       (APPExp:
                                                        (ATExp: (IDAtExp: (LongVId: LongTyCon.fromId)))
                                                        (PARAtExp:
                                                         (ATExp:
                                                          (PARAtExp:
                                                           (APPExp:
                                                            (ATExp:
                                                             (PARAtExp:
                                                              (FNExp:
                                                               (Match:
                                                                (Mrule:
                                                                 (ATPat:
                                                                  (RECORDAtPat:
                                                                   (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: _id11))) (DOTSPatRow:))))
                                                                 (ATExp: (IDAtExp: (LongVId: _id11))))))))
                                                            (IDAtExp: (LongVId: tycon)))))))))))))))
                                               (SEQDec:
                                                (VALDec:
                                                 (TyVarseq:)
                                                 (PLAINValBind:
                                                  (ATPat: (IDAtPat: (LongVId: typdesc)))
                                                  (ATExp:
                                                   (PARAtExp:
                                                    (APPExp:
                                                     (ATExp: (IDAtExp: (LongVId: M.TypDesc)))
                                                     (RECORDAtExp:
                                                      (ExpRow:
                                                       (Lab: |1|)
                                                       (ATExp: (IDAtExp: (LongVId: |I'|)))
                                                       (ExpRow:
                                                        (Lab: |2|)
                                                        (ATExp: (IDAtExp: (LongVId: tyvarseq)))
                                                        (ExpRow:
                                                         (Lab: |3|)
                                                         (ATExp: (IDAtExp: (LongVId: tycon)))
                                                         (ExpRow: (Lab: |4|) (ATExp: (IDAtExp: (LongVId: NONE)))))))))))))
                                                (SEQDec:
                                                 (VALDec:
                                                  (TyVarseq:)
                                                  (PLAINValBind:
                                                   (ATPat: (IDAtPat: (LongVId: sigexp)))
                                                   (ATExp:
                                                    (PARAtExp:
                                                     (APPExp:
                                                      (ATExp: (IDAtExp: (LongVId: M.SIGSigExp)))
                                                      (RECORDAtExp:
                                                       (ExpRow:
                                                        (Lab: |1|)
                                                        (ATExp: (IDAtExp: (LongVId: |I'|)))
                                                        (ExpRow:
                                                         (Lab: |2|)
                                                         (ATExp:
                                                          (PARAtExp:
                                                           (APPExp:
                                                            (ATExp: (IDAtExp: (LongVId: M.TYPESpec)))
                                                            (RECORDAtExp:
                                                             (ExpRow:
                                                              (Lab: |1|)
                                                              (ATExp: (IDAtExp: (LongVId: |I'|)))
                                                              (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: typdesc)))))))))))))))))
                                                 (SEQDec:
                                                  (VALDec:
                                                   (TyVarseq:)
                                                   (PLAINValBind:
                                                    (ATPat: (IDAtPat: (LongVId: |sigexp'|)))
                                                    (ATExp:
                                                     (PARAtExp:
                                                      (APPExp:
                                                       (ATExp: (IDAtExp: (LongVId: M.WHERETYPESigExp)))
                                                       (RECORDAtExp:
                                                        (ExpRow:
                                                         (Lab: |1|)
                                                         (ATExp: (IDAtExp: (LongVId: |I'|)))
                                                         (ExpRow:
                                                          (Lab: |2|)
                                                          (ATExp: (IDAtExp: (LongVId: sigexp)))
                                                          (ExpRow:
                                                           (Lab: |3|)
                                                           (ATExp: (IDAtExp: (LongVId: tyvarseq)))
                                                           (ExpRow:
                                                            (Lab: |4|)
                                                            (ATExp: (IDAtExp: (LongVId: longtycon)))
                                                            (ExpRow: (Lab: |5|) (ATExp: (IDAtExp: (LongVId: ty))))))))))))))
                                                  (VALDec:
                                                   (TyVarseq:)
                                                   (PLAINValBind:
                                                    (ATPat: (IDAtPat: (LongVId: spec1)))
                                                    (ATExp:
                                                     (PARAtExp:
                                                      (APPExp:
                                                       (ATExp: (IDAtExp: (LongVId: M.INCLUDESpec)))
                                                       (RECORDAtExp:
                                                        (ExpRow:
                                                         (Lab: |1|)
                                                         (ATExp: (IDAtExp: (LongVId: |I'|)))
                                                         (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: |sigexp'|)))))))))))))))
                                              (ATExp:
                                               (PARAtExp:
                                                (APPExp:
                                                 (ATExp: (IDAtExp: (LongVId: M.SEQSpec)))
                                                 (RECORDAtExp:
                                                  (ExpRow:
                                                   (Lab: |1|)
                                                   (ATExp: (IDAtExp: (LongVId: I)))
                                                   (ExpRow:
                                                    (Lab: |2|)
                                                    (ATExp: (IDAtExp: (LongVId: spec1)))
                                                    (ExpRow:
                                                     (Lab: |3|)
                                                     (ATExp:
                                                      (PARAtExp:
                                                       (APPExp:
                                                        (ATExp: (IDAtExp: (LongVId: SYNSpec)))
                                                        (RECORDAtExp:
                                                         (ExpRow:
                                                          (Lab: |1|)
                                                          (ATExp: (IDAtExp: (LongVId: I)))
                                                          (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: |syns'|))))))))))))))))))))))))))
                                    (SEQStrDec:
                                     (DECStrDec:
                                      (VALDec:
                                       (TyVarseq:)
                                       (RECValBind:
                                        (PLAINValBind:
                                         (ATPat: (IDAtPat: (LongVId: INCLUDEMULTISpec)))
                                         (FNExp:
                                          (Match:
                                           (Mrule:
                                            (ATPat:
                                             (PARAtPat:
                                              (ATPat:
                                               (RECORDAtPat:
                                                (FIELDPatRow:
                                                 (Lab: |1|)
                                                 (ATPat: (IDAtPat: (LongVId: I)))
                                                 (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: nil)))))))))
                                            (ATExp:
                                             (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: M.EMPTYSpec))) (PARAtExp: (ATExp: (IDAtExp: (LongVId: I))))))))
                                           (Match:
                                            (Mrule:
                                             (ATPat:
                                              (PARAtPat:
                                               (ATPat:
                                                (RECORDAtPat:
                                                 (FIELDPatRow:
                                                  (Lab: |1|)
                                                  (ATPat: (IDAtPat: (LongVId: I)))
                                                  (FIELDPatRow:
                                                   (Lab: |2|)
                                                   (ATPat:
                                                    (PARAtPat:
                                                     (CONPat:
                                                      (LongVId: ::)
                                                      (RECORDAtPat:
                                                       (FIELDPatRow:
                                                        (Lab: |1|)
                                                        (ATPat: (IDAtPat: (LongVId: sigid)))
                                                        (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: |sigids'|)))))))))))))))
                                             (ATExp:
                                              (LETAtExp:
                                               (VALDec:
                                                (TyVarseq:)
                                                (PLAINValBind:
                                                 (ATPat: (IDAtPat: (LongVId: spec1)))
                                                 (ATExp:
                                                  (PARAtExp:
                                                   (APPExp:
                                                    (ATExp: (IDAtExp: (LongVId: M.INCLUDESpec)))
                                                    (RECORDAtExp:
                                                     (ExpRow:
                                                      (Lab: |1|)
                                                      (ATExp: (IDAtExp: (LongVId: I)))
                                                      (ExpRow:
                                                       (Lab: |2|)
                                                       (ATExp:
                                                        (PARAtExp:
                                                         (APPExp:
                                                          (ATExp: (IDAtExp: (LongVId: M.IDSigExp)))
                                                          (RECORDAtExp:
                                                           (ExpRow:
                                                            (Lab: |1|)
                                                            (ATExp: (IDAtExp: (LongVId: I)))
                                                            (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: sigid)))))))))))))))))
                                               (ATExp:
                                                (PARAtExp:
                                                 (APPExp:
                                                  (ATExp: (IDAtExp: (LongVId: M.SEQSpec)))
                                                  (RECORDAtExp:
                                                   (ExpRow:
                                                    (Lab: |1|)
                                                    (ATExp: (IDAtExp: (LongVId: I)))
                                                    (ExpRow:
                                                     (Lab: |2|)
                                                     (ATExp: (IDAtExp: (LongVId: spec1)))
                                                     (ExpRow:
                                                      (Lab: |3|)
                                                      (ATExp:
                                                       (PARAtExp:
                                                        (APPExp:
                                                         (ATExp: (IDAtExp: (LongVId: INCLUDEMULTISpec)))
                                                         (RECORDAtExp:
                                                          (ExpRow:
                                                           (Lab: |1|)
                                                           (ATExp: (IDAtExp: (LongVId: I)))
                                                           (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: |sigids'|))))))))))))))))))))))))))
                                     (SEQStrDec:
                                      (DECStrDec:
                                       (VALDec:
                                        (TyVarseq:)
                                        (RECValBind:
                                         (PLAINValBind:
                                          (ATPat: (IDAtPat: (LongVId: SynDesc)))
                                          (FNExp:
                                           (Match:
                                            (Mrule:
                                             (ATPat:
                                              (PARAtPat:
                                               (ATPat:
                                                (RECORDAtPat:
                                                 (FIELDPatRow:
                                                  (Lab: |1|)
                                                  (ATPat: (IDAtPat: (LongVId: I)))
                                                  (FIELDPatRow:
                                                   (Lab: |2|)
                                                   (ATPat: (IDAtPat: (LongVId: tyvarseq)))
                                                   (FIELDPatRow:
                                                    (Lab: |3|)
                                                    (ATPat: (IDAtPat: (LongVId: tycon)))
                                                    (FIELDPatRow:
                                                     (Lab: |4|)
                                                     (ATPat: (IDAtPat: (LongVId: ty)))
                                                     (FIELDPatRow: (Lab: |5|) (ATPat: (IDAtPat: (LongVId: NONE))))))))))))
                                             (ATExp:
                                              (PARAtExp:
                                               (APPExp:
                                                (ATExp: (IDAtExp: (LongVId: ::)))
                                                (RECORDAtExp:
                                                 (ExpRow:
                                                  (Lab: |1|)
                                                  (ATExp:
                                                   (RECORDAtExp:
                                                    (ExpRow:
                                                     (Lab: |1|)
                                                     (ATExp: (IDAtExp: (LongVId: I)))
                                                     (ExpRow:
                                                      (Lab: |2|)
                                                      (ATExp: (IDAtExp: (LongVId: tyvarseq)))
                                                      (ExpRow:
                                                       (Lab: |3|)
                                                       (ATExp: (IDAtExp: (LongVId: tycon)))
                                                       (ExpRow: (Lab: |4|) (ATExp: (IDAtExp: (LongVId: ty)))))))))
                                                  (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: nil))))))))))
                                            (Match:
                                             (Mrule:
                                              (ATPat:
                                               (PARAtPat:
                                                (ATPat:
                                                 (RECORDAtPat:
                                                  (FIELDPatRow:
                                                   (Lab: |1|)
                                                   (ATPat: (IDAtPat: (LongVId: I)))
                                                   (FIELDPatRow:
                                                    (Lab: |2|)
                                                    (ATPat: (IDAtPat: (LongVId: tyvarseq)))
                                                    (FIELDPatRow:
                                                     (Lab: |3|)
                                                     (ATPat: (IDAtPat: (LongVId: tycon)))
                                                     (FIELDPatRow:
                                                      (Lab: |4|)
                                                      (ATPat: (IDAtPat: (LongVId: ty)))
                                                      (FIELDPatRow:
                                                       (Lab: |5|)
                                                       (ATPat: (PARAtPat: (CONPat: (LongVId: SOME) (IDAtPat: (LongVId: syndesc))))))))))))))
                                              (ATExp:
                                               (PARAtExp:
                                                (APPExp:
                                                 (ATExp: (IDAtExp: (LongVId: ::)))
                                                 (RECORDAtExp:
                                                  (ExpRow:
                                                   (Lab: |1|)
                                                   (ATExp:
                                                    (RECORDAtExp:
                                                     (ExpRow:
                                                      (Lab: |1|)
                                                      (ATExp: (IDAtExp: (LongVId: I)))
                                                      (ExpRow:
                                                       (Lab: |2|)
                                                       (ATExp: (IDAtExp: (LongVId: tyvarseq)))
                                                       (ExpRow:
                                                        (Lab: |3|)
                                                        (ATExp: (IDAtExp: (LongVId: tycon)))
                                                        (ExpRow: (Lab: |4|) (ATExp: (IDAtExp: (LongVId: ty)))))))))
                                                   (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: syndesc)))))))))))))))))
                                      (SEQStrDec:
                                       (DECStrDec:
                                        (VALDec:
                                         (TyVarseq:)
                                         (RECValBind:
                                          (PLAINValBind:
                                           (ATPat: (IDAtPat: (LongVId: WHERETYPESigExp)))
                                           (FNExp:
                                            (Match:
                                             (Mrule:
                                              (ATPat:
                                               (PARAtPat:
                                                (ATPat:
                                                 (RECORDAtPat:
                                                  (FIELDPatRow:
                                                   (Lab: |1|)
                                                   (ATPat: (IDAtPat: (LongVId: I)))
                                                   (FIELDPatRow:
                                                    (Lab: |2|)
                                                    (ATPat: (IDAtPat: (LongVId: sigexp)))
                                                    (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: nil))))))))))
                                              (ATExp: (IDAtExp: (LongVId: sigexp))))
                                             (Match:
                                              (Mrule:
                                               (ATPat:
                                                (PARAtPat:
                                                 (ATPat:
                                                  (RECORDAtPat:
                                                   (FIELDPatRow:
                                                    (Lab: |1|)
                                                    (ATPat: (IDAtPat: (LongVId: I)))
                                                    (FIELDPatRow:
                                                     (Lab: |2|)
                                                     (ATPat: (IDAtPat: (LongVId: sigexp)))
                                                     (FIELDPatRow:
                                                      (Lab: |3|)
                                                      (ATPat:
                                                       (PARAtPat:
                                                        (CONPat:
                                                         (LongVId: ::)
                                                         (RECORDAtPat:
                                                          (FIELDPatRow:
                                                           (Lab: |1|)
                                                           (ATPat:
                                                            (RECORDAtPat:
                                                             (FIELDPatRow:
                                                              (Lab: |1|)
                                                              (ATPat: (IDAtPat: (LongVId: |I'|)))
                                                              (FIELDPatRow:
                                                               (Lab: |2|)
                                                               (ATPat: (IDAtPat: (LongVId: tyvarseq)))
                                                               (FIELDPatRow:
                                                                (Lab: |3|)
                                                                (ATPat: (IDAtPat: (LongVId: longtycon)))
                                                                (FIELDPatRow: (Lab: |4|) (ATPat: (IDAtPat: (LongVId: ty)))))))))
                                                           (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: |reas'|))))))))))))))))
                                               (ATExp:
                                                (LETAtExp:
                                                 (VALDec:
                                                  (TyVarseq:)
                                                  (PLAINValBind:
                                                   (ATPat: (IDAtPat: (LongVId: |sigexp'|)))
                                                   (ATExp:
                                                    (PARAtExp:
                                                     (APPExp:
                                                      (ATExp: (IDAtExp: (LongVId: M.WHERETYPESigExp)))
                                                      (RECORDAtExp:
                                                       (ExpRow:
                                                        (Lab: |1|)
                                                        (ATExp: (IDAtExp: (LongVId: |I'|)))
                                                        (ExpRow:
                                                         (Lab: |2|)
                                                         (ATExp: (IDAtExp: (LongVId: sigexp)))
                                                         (ExpRow:
                                                          (Lab: |3|)
                                                          (ATExp: (IDAtExp: (LongVId: tyvarseq)))
                                                          (ExpRow:
                                                           (Lab: |4|)
                                                           (ATExp: (IDAtExp: (LongVId: longtycon)))
                                                           (ExpRow: (Lab: |5|) (ATExp: (IDAtExp: (LongVId: ty))))))))))))))
                                                 (ATExp:
                                                  (PARAtExp:
                                                   (APPExp:
                                                    (ATExp: (IDAtExp: (LongVId: WHERETYPESigExp)))
                                                    (RECORDAtExp:
                                                     (ExpRow:
                                                      (Lab: |1|)
                                                      (ATExp: (IDAtExp: (LongVId: I)))
                                                      (ExpRow:
                                                       (Lab: |2|)
                                                       (ATExp: (IDAtExp: (LongVId: |sigexp'|)))
                                                       (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: |reas'|))))))))))))))))))))
                                       (DECStrDec:
                                        (VALDec:
                                         (TyVarseq:)
                                         (RECValBind:
                                          (PLAINValBind:
                                           (ATPat: (IDAtPat: (LongVId: TyReaDesc)))
                                           (FNExp:
                                            (Match:
                                             (Mrule:
                                              (ATPat:
                                               (PARAtPat:
                                                (ATPat:
                                                 (RECORDAtPat:
                                                  (FIELDPatRow:
                                                   (Lab: |1|)
                                                   (ATPat: (IDAtPat: (LongVId: I)))
                                                   (FIELDPatRow:
                                                    (Lab: |2|)
                                                    (ATPat: (IDAtPat: (LongVId: tyvarseq)))
                                                    (FIELDPatRow:
                                                     (Lab: |3|)
                                                     (ATPat: (IDAtPat: (LongVId: longtycon)))
                                                     (FIELDPatRow:
                                                      (Lab: |4|)
                                                      (ATPat: (IDAtPat: (LongVId: ty)))
                                                      (FIELDPatRow: (Lab: |5|) (ATPat: (IDAtPat: (LongVId: NONE))))))))))))
                                              (ATExp:
                                               (PARAtExp:
                                                (APPExp:
                                                 (ATExp: (IDAtExp: (LongVId: ::)))
                                                 (RECORDAtExp:
                                                  (ExpRow:
                                                   (Lab: |1|)
                                                   (ATExp:
                                                    (RECORDAtExp:
                                                     (ExpRow:
                                                      (Lab: |1|)
                                                      (ATExp: (IDAtExp: (LongVId: I)))
                                                      (ExpRow:
                                                       (Lab: |2|)
                                                       (ATExp: (IDAtExp: (LongVId: tyvarseq)))
                                                       (ExpRow:
                                                        (Lab: |3|)
                                                        (ATExp: (IDAtExp: (LongVId: longtycon)))
                                                        (ExpRow: (Lab: |4|) (ATExp: (IDAtExp: (LongVId: ty)))))))))
                                                   (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: nil))))))))))
                                             (Match:
                                              (Mrule:
                                               (ATPat:
                                                (PARAtPat:
                                                 (ATPat:
                                                  (RECORDAtPat:
                                                   (FIELDPatRow:
                                                    (Lab: |1|)
                                                    (ATPat: (IDAtPat: (LongVId: I)))
                                                    (FIELDPatRow:
                                                     (Lab: |2|)
                                                     (ATPat: (IDAtPat: (LongVId: tyvarseq)))
                                                     (FIELDPatRow:
                                                      (Lab: |3|)
                                                      (ATPat: (IDAtPat: (LongVId: longtycon)))
                                                      (FIELDPatRow:
                                                       (Lab: |4|)
                                                       (ATPat: (IDAtPat: (LongVId: ty)))
                                                       (FIELDPatRow:
                                                        (Lab: |5|)
                                                        (ATPat: (PARAtPat: (CONPat: (LongVId: SOME) (IDAtPat: (LongVId: tyreadesc))))))))))))))
                                               (ATExp:
                                                (PARAtExp:
                                                 (APPExp:
                                                  (ATExp: (IDAtExp: (LongVId: ::)))
                                                  (RECORDAtExp:
                                                   (ExpRow:
                                                    (Lab: |1|)
                                                    (ATExp:
                                                     (RECORDAtExp:
                                                      (ExpRow:
                                                       (Lab: |1|)
                                                       (ATExp: (IDAtExp: (LongVId: I)))
                                                       (ExpRow:
                                                        (Lab: |2|)
                                                        (ATExp: (IDAtExp: (LongVId: tyvarseq)))
                                                        (ExpRow:
                                                         (Lab: |3|)
                                                         (ATExp: (IDAtExp: (LongVId: longtycon)))
                                                         (ExpRow: (Lab: |4|) (ATExp: (IDAtExp: (LongVId: ty)))))))))
                                                    (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: tyreadesc))))))))))))))))))))))))))))))))))))))))))))))))
        (IDSigExp: (SigId: DERIVED_FORMS_MODULE-sig)))))))))