(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)))))))))