(module DerivedFormsCore-struct (planet chongkai/sml) (#%module-begin (Program: (STRDECTopDec: (STRUCTUREStrDec: (StrBind: (StrId: DerivedFormsCore-struct) (SEALStrExp: (STRUCTStrExp: (SEQStrDec: (STRUCTUREStrDec: (StrBind: (StrId: C-struct) (IDStrExp: (LongStrId: GrammarCore-struct)))) (SEQStrDec: (DECStrDec: (TYPEDec: (TypBind: (TyVarseq:) (TyCon: Info-type) (CONTy: (Tyseq:) (LongTyCon: C.Info-type))))) (SEQStrDec: (DECStrDec: (TYPEDec: (TypBind: (TyVarseq:) (TyCon: Lab-type) (CONTy: (Tyseq:) (LongTyCon: C.Lab-type))))) (SEQStrDec: (DECStrDec: (TYPEDec: (TypBind: (TyVarseq:) (TyCon: VId-type) (CONTy: (Tyseq:) (LongTyCon: C.VId-type))))) (SEQStrDec: (DECStrDec: (TYPEDec: (TypBind: (TyVarseq:) (TyCon: Op-type) (CONTy: (Tyseq:) (LongTyCon: C.Op-type))))) (SEQStrDec: (DECStrDec: (TYPEDec: (TypBind: (TyVarseq:) (TyCon: AtExp-type) (CONTy: (Tyseq:) (LongTyCon: C.AtExp-type))))) (SEQStrDec: (DECStrDec: (TYPEDec: (TypBind: (TyVarseq:) (TyCon: AppExp-type) (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: C.AtExp-type))) (LongTyCon: list-type))))) (SEQStrDec: (DECStrDec: (TYPEDec: (TypBind: (TyVarseq:) (TyCon: InfExp-type) (CONTy: (Tyseq:) (LongTyCon: C.Exp-type))))) (SEQStrDec: (DECStrDec: (TYPEDec: (TypBind: (TyVarseq:) (TyCon: Exp-type) (CONTy: (Tyseq:) (LongTyCon: C.Exp-type))))) (SEQStrDec: (DECStrDec: (TYPEDec: (TypBind: (TyVarseq:) (TyCon: Match-type) (CONTy: (Tyseq:) (LongTyCon: C.Match-type))))) (SEQStrDec: (DECStrDec: (TYPEDec: (TypBind: (TyVarseq:) (TyCon: Mrule-type) (CONTy: (Tyseq:) (LongTyCon: C.Mrule-type))))) (SEQStrDec: (DECStrDec: (TYPEDec: (TypBind: (TyVarseq:) (TyCon: Dec-type) (CONTy: (Tyseq:) (LongTyCon: C.Dec-type))))) (SEQStrDec: (DECStrDec: (TYPEDec: (TypBind: (TyVarseq:) (TyCon: ValBind-type) (CONTy: (Tyseq:) (LongTyCon: C.ValBind-type))))) (SEQStrDec: (DECStrDec: (TYPEDec: (TypBind: (TyVarseq:) (TyCon: FvalBind-type) (CONTy: (Tyseq:) (LongTyCon: C.ValBind-type))))) (SEQStrDec: (DECStrDec: (TYPEDec: (TypBind: (TyVarseq:) (TyCon: Fmatch-type) (RECORDTy: (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: C.Match-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: C.VId-type)) (TyRow: (Lab: |3|) (CONTy: (Tyseq:) (LongTyCon: int-type))))))))) (SEQStrDec: (DECStrDec: (TYPEDec: (TypBind: (TyVarseq:) (TyCon: Fmrule-type) (RECORDTy: (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: C.Mrule-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: C.VId-type)) (TyRow: (Lab: |3|) (CONTy: (Tyseq:) (LongTyCon: int-type))))))))) (SEQStrDec: (DECStrDec: (TYPEDec: (TypBind: (TyVarseq:) (TyCon: TypBind-type) (CONTy: (Tyseq:) (LongTyCon: C.TypBind-type))))) (SEQStrDec: (DECStrDec: (TYPEDec: (TypBind: (TyVarseq:) (TyCon: DatBind-type) (CONTy: (Tyseq:) (LongTyCon: C.DatBind-type))))) (SEQStrDec: (DECStrDec: (TYPEDec: (TypBind: (TyVarseq:) (TyCon: AtPat-type) (CONTy: (Tyseq:) (LongTyCon: C.AtPat-type))))) (SEQStrDec: (DECStrDec: (TYPEDec: (TypBind: (TyVarseq:) (TyCon: PatRow-type) (CONTy: (Tyseq:) (LongTyCon: C.PatRow-type))))) (SEQStrDec: (DECStrDec: (TYPEDec: (TypBind: (TyVarseq:) (TyCon: Pat-type) (CONTy: (Tyseq:) (LongTyCon: C.Pat-type))))) (SEQStrDec: (DECStrDec: (TYPEDec: (TypBind: (TyVarseq:) (TyCon: Ty-type) (CONTy: (Tyseq:) (LongTyCon: C.Ty-type))))) (SEQStrDec: (DECStrDec: (TYPEDec: (TypBind: (TyVarseq:) (TyCon: TyVarseq-type) (CONTy: (Tyseq:) (LongTyCon: C.TyVarseq-type))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: vidFALSE))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: VId.fromString))) (SCONAtExp: (STRINGSCon: "false")))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: vidTRUE))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: VId.fromString))) (SCONAtExp: (STRINGSCon: "true")))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: vidNIL))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: VId.fromString))) (SCONAtExp: (STRINGSCon: "nil")))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: vidCONS))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: VId.fromString))) (SCONAtExp: (STRINGSCon: "::")))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: longvidCONS))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: LongVId.fromId))) (IDAtExp: (LongVId: vidCONS)))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: LONGVIDExp))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: I))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: longvid))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.ATExp))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.IDAtExp))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: C.SANSOp))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: longvid))))))))))))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: LONGVIDPat))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: I))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: longvid))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.ATPat))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.IDAtPat))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: C.SANSOp))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: longvid))))))))))))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: VIDAtExp))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: I))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: vid))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.IDAtExp))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: C.SANSOp))) (ExpRow: (Lab: |3|) (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: LongVId.fromId))) (IDAtExp: (LongVId: vid))))))))))))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: VIDAtPat))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: I))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: vid))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.IDAtPat))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: C.SANSOp))) (ExpRow: (Lab: |3|) (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: LongVId.fromId))) (IDAtExp: (LongVId: vid))))))))))))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: VIDExp))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: I))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: vid))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: LONGVIDExp))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: LongVId.fromId))) (IDAtExp: (LongVId: vid)))))))))))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: VIDPat))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: I))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: vid))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: LONGVIDPat))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: LongVId.fromId))) (IDAtExp: (LongVId: vid)))))))))))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: FALSEExp))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (ATPat: (IDAtPat: (LongVId: I))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: VIDExp))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: vidFALSE)))))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: TRUEExp))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (ATPat: (IDAtPat: (LongVId: I))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: VIDExp))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: vidTRUE)))))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: NILAtExp))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (ATPat: (IDAtPat: (LongVId: I))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: VIDAtExp))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: vidNIL)))))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: CONSExp))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (ATPat: (IDAtPat: (LongVId: I))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: VIDExp))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: vidCONS)))))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: FALSEPat))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (ATPat: (IDAtPat: (LongVId: I))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: VIDPat))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: vidFALSE)))))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: TRUEPat))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (ATPat: (IDAtPat: (LongVId: I))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: VIDPat))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: vidTRUE)))))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: NILAtPat))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (ATPat: (IDAtPat: (LongVId: I))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: VIDAtPat))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: vidNIL)))))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: findTyCon))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: tycon))) (FIELDPatRow: (Lab: |2|) (ATPat: (PARAtPat: (CONPat: (LongVId: C.TypBind) (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (WILDCARDAtPat:)) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: tyvarseq))) (FIELDPatRow: (Lab: |3|) (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: |I'|))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: |tycon'|))))))) (FIELDPatRow: (Lab: |4|) (ATPat: (IDAtPat: (LongVId: ty))) (FIELDPatRow: (Lab: |5|) (ATPat: (IDAtPat: (LongVId: typbind_opt)))))))))))))))))) (IFExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: =))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: |tycon'|))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: tycon))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: SOME))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: tyvarseq))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: ty))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: Option.mapPartial))) (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: typbind))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: findTyCon))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: tycon))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: typbind)))))))))))))))) (IDAtExp: (LongVId: typbind_opt))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: replaceTy))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id7))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id8))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (PARAtPat: (CONPat: (LongVId: C.TyVarseq) (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (WILDCARDAtPat:)) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: tyvars))))))))) (FIELDPatRow: (Lab: |2|) (ATPat: (PARAtPat: (CONPat: (LongVId: C.Tyseq) (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: |I'|))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: tys))))))))))))) (FIELDPatRow: (Lab: |2|) (ATPat: (PARAtPat: (ATPat: (PARAtPat: (CONPat: (LongVId: C.VARTy) (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (WILDCARDAtPat:)) (FIELDPatRow: (Lab: |2|) (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: I))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: tyvar))))))))))))))))))) (ATExp: (LETAtExp: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: loop))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (PARAtPat: (CONPat: (LongVId: ::) (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: |I'|))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: |tyvar'|))))))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: |tyvars'|))))))))) (FIELDPatRow: (Lab: |2|) (ATPat: (PARAtPat: (CONPat: (LongVId: ::) (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: |ty'|))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: |tys'|))))))))))))))) (IFExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: =))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: |tyvar'|))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: tyvar))))))))) (ATExp: (IDAtExp: (LongVId: |ty'|))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: loop))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: |tyvars'|))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: |tys'|))))))))))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: nil))) (FIELDPatRow: (Lab: |2|) (ATPat: (WILDCARDAtPat:)))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: Error.error))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (SCONAtExp: (STRINGSCon: "unbound type variable")))))))))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (WILDCARDAtPat:)) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: nil))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: Error.error))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: |I'|))) (ExpRow: (Lab: |2|) (ATExp: (SCONAtExp: (STRINGSCon: "type sequence has wrong arity"))))))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: loop))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: tyvars))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: tys)))))))))))) (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: tyvarseq_tyseq))) (FIELDPatRow: (Lab: |2|) (ATPat: (PARAtPat: (ATPat: (PARAtPat: (CONPat: (LongVId: C.RECORDTy) (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: I))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: tyrow_opt))))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.RECORDTy))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: Option.map))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: replaceTyRow))) (IDAtExp: (LongVId: tyvarseq_tyseq))))))))) (IDAtExp: (LongVId: tyrow_opt)))))))))))) (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: tyvarseq_tyseq))) (FIELDPatRow: (Lab: |2|) (ATPat: (PARAtPat: (ATPat: (PARAtPat: (CONPat: (LongVId: C.CONTy) (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: I))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: |tyseq'|))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: tycon)))))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.CONTy))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: replaceTyseq))) (IDAtExp: (LongVId: tyvarseq_tyseq))))) (IDAtExp: (LongVId: |tyseq'|))))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: tycon))))))))))) (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: tyvarseq_tyseq))) (FIELDPatRow: (Lab: |2|) (ATPat: (PARAtPat: (ATPat: (PARAtPat: (CONPat: (LongVId: C.ARROWTy) (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: I))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: ty1))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: ty2)))))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.ARROWTy))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: replaceTy))) (IDAtExp: (LongVId: tyvarseq_tyseq))))) (IDAtExp: (LongVId: ty1))))) (ExpRow: (Lab: |3|) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: replaceTy))) (IDAtExp: (LongVId: tyvarseq_tyseq))))) (IDAtExp: (LongVId: ty2))))))))))))) (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: tyvarseq_tyseq))) (FIELDPatRow: (Lab: |2|) (ATPat: (PARAtPat: (ATPat: (PARAtPat: (CONPat: (LongVId: C.PARTy) (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: I))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: ty))))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.PARTy))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: replaceTy))) (IDAtExp: (LongVId: tyvarseq_tyseq))))) (IDAtExp: (LongVId: ty)))))))))))))))))))) (PARAtExp: (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: _id7))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: _id8))))))))))))))) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: replaceTyRow))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: tyvarseq_tyseq))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (CONPat: (LongVId: C.TyRow) (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: I))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: lab))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: ty))) (FIELDPatRow: (Lab: |4|) (ATPat: (IDAtPat: (LongVId: tyrow_opt))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.TyRow))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: lab))) (ExpRow: (Lab: |3|) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: replaceTy))) (IDAtExp: (LongVId: tyvarseq_tyseq))))) (IDAtExp: (LongVId: ty))))) (ExpRow: (Lab: |4|) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: Option.map))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: replaceTyRow))) (IDAtExp: (LongVId: tyvarseq_tyseq))))))))) (IDAtExp: (LongVId: tyrow_opt))))))))))))))))))) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: replaceTyseq))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: tyvarseq_tyseq))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (CONPat: (LongVId: C.Tyseq) (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: I))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: tys))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.Tyseq))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: List.map))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: replaceTy))) (IDAtExp: (LongVId: tyvarseq_tyseq))))))))) (IDAtExp: (LongVId: tys))))))))))))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: rewriteTy))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id9))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: typbind))) (FIELDPatRow: (Lab: |2|) (ATPat: (PARAtPat: (ASPat: (VId: ty) (ATPat: (PARAtPat: (CONPat: (LongVId: C.VARTy) (WILDCARDAtPat:))))))))))) (ATExp: (IDAtExp: (LongVId: ty)))) (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: typbind))) (FIELDPatRow: (Lab: |2|) (ATPat: (PARAtPat: (ATPat: (PARAtPat: (CONPat: (LongVId: C.RECORDTy) (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: I))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: tyrow_opt))))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.RECORDTy))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: Option.map))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: rewriteTyRow))) (IDAtExp: (LongVId: typbind))))))))) (IDAtExp: (LongVId: tyrow_opt)))))))))))) (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: typbind))) (FIELDPatRow: (Lab: |2|) (ATPat: (PARAtPat: (ATPat: (PARAtPat: (CONPat: (LongVId: C.CONTy) (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: I))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: tyseq))) (FIELDPatRow: (Lab: |3|) (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: |I'|))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: longtycon)))))))))))))))))))) (ATExp: (LETAtExp: (SEQDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: |tyseq'|))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: rewriteTyseq))) (IDAtExp: (LongVId: typbind))))) (IDAtExp: (LongVId: tyseq))))))) (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: strids))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: tycon))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: LongTyCon.explode))) (IDAtExp: (LongVId: longtycon)))))))) (IFExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: not))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: List.null))) (IDAtExp: (LongVId: strids))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.CONTy))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: |tyseq'|))) (ExpRow: (Lab: |3|) (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: |I'|))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: longtycon)))))))))))))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (CONPat: (LongVId: SOME) (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: |tyvarseq'|))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: |ty'|))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: replaceTy))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: |tyvarseq'|))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: |tyseq'|))))))))) (IDAtExp: (LongVId: |ty'|)))))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: NONE))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.CONTy))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: |tyseq'|))) (ExpRow: (Lab: |3|) (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: |I'|))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: longtycon)))))))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: findTyCon))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: tycon))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: typbind))))))))))))))) (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: typbind))) (FIELDPatRow: (Lab: |2|) (ATPat: (PARAtPat: (ATPat: (PARAtPat: (CONPat: (LongVId: C.ARROWTy) (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: I))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: ty1))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: ty2)))))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.ARROWTy))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: rewriteTy))) (IDAtExp: (LongVId: typbind))))) (IDAtExp: (LongVId: ty1))))) (ExpRow: (Lab: |3|) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: rewriteTy))) (IDAtExp: (LongVId: typbind))))) (IDAtExp: (LongVId: ty2))))))))))))) (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: typbind))) (FIELDPatRow: (Lab: |2|) (ATPat: (PARAtPat: (ATPat: (PARAtPat: (CONPat: (LongVId: C.PARTy) (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: I))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: ty))))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.PARTy))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: rewriteTy))) (IDAtExp: (LongVId: typbind))))) (IDAtExp: (LongVId: ty)))))))))))))))))))) (PARAtExp: (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: _id9))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: _id10))))))))))))))) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: rewriteTyRow))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: typbind))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (CONPat: (LongVId: C.TyRow) (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: I))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: lab))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: ty))) (FIELDPatRow: (Lab: |4|) (ATPat: (IDAtPat: (LongVId: tyrow_opt))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.TyRow))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: lab))) (ExpRow: (Lab: |3|) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: rewriteTy))) (IDAtExp: (LongVId: typbind))))) (IDAtExp: (LongVId: ty))))) (ExpRow: (Lab: |4|) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: Option.map))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: rewriteTyRow))) (IDAtExp: (LongVId: typbind))))))))) (IDAtExp: (LongVId: tyrow_opt))))))))))))))))))) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: rewriteTyseq))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: typbind))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (CONPat: (LongVId: C.Tyseq) (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: I))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: tys))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.Tyseq))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: List.map))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: rewriteTy))) (IDAtExp: (LongVId: typbind))))))))) (IDAtExp: (LongVId: tys))))))))))))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: rewriteConBind))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: typbind))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (CONPat: (LongVId: C.ConBind) (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: I))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: op_opt))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: vid))) (FIELDPatRow: (Lab: |4|) (ATPat: (IDAtPat: (LongVId: ty_opt))) (FIELDPatRow: (Lab: |5|) (ATPat: (IDAtPat: (LongVId: conbind_opt)))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.ConBind))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: op_opt))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: vid))) (ExpRow: (Lab: |4|) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: Option.map))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: rewriteTy))) (IDAtExp: (LongVId: typbind))))))))) (IDAtExp: (LongVId: ty_opt))))) (ExpRow: (Lab: |5|) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: Option.map))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: rewriteConBind))) (IDAtExp: (LongVId: typbind))))))))) (IDAtExp: (LongVId: conbind_opt)))))))))))))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: rewriteDatBind))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: typbind))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (CONPat: (LongVId: C.DatBind) (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: I))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: tyvarseq))) (FIELDPatRow: (Lab: |3|) (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: |I'|))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: tycon))))))) (FIELDPatRow: (Lab: |4|) (ATPat: (IDAtPat: (LongVId: conbind))) (FIELDPatRow: (Lab: |5|) (ATPat: (IDAtPat: (LongVId: datbind_opt)))))))))))))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: NONE))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.DatBind))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: tyvarseq))) (ExpRow: (Lab: |3|) (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: |I'|))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: tycon))))))) (ExpRow: (Lab: |4|) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: rewriteConBind))) (IDAtExp: (LongVId: typbind))))) (IDAtExp: (LongVId: conbind))))) (ExpRow: (Lab: |5|) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: Option.map))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: rewriteDatBind))) (IDAtExp: (LongVId: typbind))))))))) (IDAtExp: (LongVId: datbind_opt))))))))))))))) (Match: (Mrule: (ATPat: (PARAtPat: (CONPat: (LongVId: SOME) (WILDCARDAtPat:)))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: Error.error))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: |I'|))) (ExpRow: (Lab: |2|) (ATExp: (SCONAtExp: (STRINGSCon: "duplicate type constructor in recursive type declaration"))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: findTyCon))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: tycon))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: typbind))))))))))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: UNITAtPat))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (ATPat: (IDAtPat: (LongVId: I))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.RECORDAtPat))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: NONE)))))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: TUPLEAtPat))) (FNExp: (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: pat))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: nil))))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.PARAtPat))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: pat)))))))))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: I))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: pats))))))))) (ATExp: (LETAtExp: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: toPatRow))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: n))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: nil))))))))) (ATExp: (IDAtExp: (LongVId: NONE)))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: n))) (FIELDPatRow: (Lab: |2|) (ATPat: (PARAtPat: (CONPat: (LongVId: ::) (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: pat))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: |pats'|))))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: SOME))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.FIELDPatRow))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.infoPat))) (IDAtExp: (LongVId: pat))))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: Lab.fromInt))) (IDAtExp: (LongVId: n))))))))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: pat))) (ExpRow: (Lab: |4|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: toPatRow))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: +))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: n))) (ExpRow: (Lab: |2|) (ATExp: (SCONAtExp: (INTSCon: 1))))))))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: |pats'|)))))))))))))))))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.RECORDAtPat))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: toPatRow))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (SCONAtExp: (INTSCon: 1))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: pats))))))))))))))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: LISTAtPat))) (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: NILAtPat))) (PARAtExp: (ATExp: (IDAtExp: (LongVId: I)))))))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: I))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: pats))))))))) (ATExp: (LETAtExp: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: toPatList))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (IDAtPat: (LongVId: nil))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.ATPat))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: NILAtPat))) (PARAtExp: (ATExp: (IDAtExp: (LongVId: I)))))))))))))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (CONPat: (LongVId: ::) (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: pat))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: |pats'|))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.CONPat))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: C.SANSOp))) (ExpRow: (Lab: |3|) (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.infoPat))) (IDAtExp: (LongVId: pat))))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: longvidCONS))))))) (ExpRow: (Lab: |4|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: TUPLEAtPat))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: ::))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: pat))) (ExpRow: (Lab: |2|) (APPExp: (ATExp: (IDAtExp: (LongVId: ::))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: toPatList))) (IDAtExp: (LongVId: |pats'|))))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: nil)))))))))))))))))))))))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.PARAtPat))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: toPatList))) (IDAtExp: (LongVId: pats))))))))))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: IDPatRow))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: I))) (FIELDPatRow: (Lab: |2|) (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: |I'|))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: vid))))))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: ty_opt))) (FIELDPatRow: (Lab: |4|) (ATPat: (IDAtPat: (LongVId: pat_opt))) (FIELDPatRow: (Lab: |5|) (ATPat: (IDAtPat: (LongVId: patrow_opt)))))))))))) (ATExp: (LETAtExp: (SEQDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: lab))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: Lab.fromString))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: VId.toString))) (IDAtExp: (LongVId: vid))))))))))) (SEQDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: vidPat))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: VIDPat))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: vid))))))))))) (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: pat))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: NONE))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: NONE))))))) (ATExp: (IDAtExp: (LongVId: vidPat)))) (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (PARAtPat: (CONPat: (LongVId: SOME) (IDAtPat: (LongVId: ty))))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: NONE))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.COLONPat))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: vidPat))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: ty))))))))))) (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (WILDCARDAtPat:)) (FIELDPatRow: (Lab: |2|) (ATPat: (PARAtPat: (CONPat: (LongVId: SOME) (IDAtPat: (LongVId: pat))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.ASPat))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: C.SANSOp))) (ExpRow: (Lab: |3|) (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: |I'|))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: vid))))))) (ExpRow: (Lab: |4|) (ATExp: (IDAtExp: (LongVId: ty_opt))) (ExpRow: (Lab: |5|) (ATExp: (IDAtExp: (LongVId: pat))))))))))))))))))) (PARAtExp: (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: ty_opt))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: pat_opt))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.FIELDPatRow))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: |I'|))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: lab))))))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: pat))) (ExpRow: (Lab: |4|) (ATExp: (IDAtExp: (LongVId: patrow_opt)))))))))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: UNITAtExp))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (ATPat: (IDAtPat: (LongVId: I))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.RECORDAtExp))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: NONE)))))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: TUPLEAtExp))) (FNExp: (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: exp))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: nil))))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.PARAtExp))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: exp)))))))))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: I))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: exps))))))))) (ATExp: (LETAtExp: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: toExpRow))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: n))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: nil))))))))) (ATExp: (IDAtExp: (LongVId: NONE)))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: n))) (FIELDPatRow: (Lab: |2|) (ATPat: (PARAtPat: (CONPat: (LongVId: ::) (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: exp))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: |exps'|))))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: SOME))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.ExpRow))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.infoExp))) (IDAtExp: (LongVId: exp))))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: Lab.fromInt))) (IDAtExp: (LongVId: n))))))))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: exp))) (ExpRow: (Lab: |4|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: toExpRow))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: +))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: n))) (ExpRow: (Lab: |2|) (ATExp: (SCONAtExp: (INTSCon: 1))))))))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: |exps'|)))))))))))))))))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.RECORDAtExp))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: toExpRow))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (SCONAtExp: (INTSCon: 1))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: exps))))))))))))))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: HASHAtExp))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: I))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: lab))))))))) (ATExp: (LETAtExp: (SEQDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: vid))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: VId.invent))) (RECORDAtExp:)))))) (SEQDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: dots))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.DOTSPatRow))) (PARAtExp: (ATExp: (IDAtExp: (LongVId: I))))))))) (SEQDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: patrow))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.FIELDPatRow))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: lab))) (ExpRow: (Lab: |3|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: VIDPat))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: vid))))))))) (ExpRow: (Lab: |4|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: SOME))) (IDAtExp: (LongVId: dots))))))))))))))) (SEQDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: pat))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.ATPat))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.RECORDAtPat))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: SOME))) (IDAtExp: (LongVId: patrow))))))))))))))))))) (SEQDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: mrule))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.Mrule))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: pat))) (ExpRow: (Lab: |3|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: VIDExp))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: vid)))))))))))))))))) (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: match))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.Match))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: mrule))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: NONE))))))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.PARAtExp))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.FNExp))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: match)))))))))))))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: CASEExp))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: I))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: exp))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: match)))))))))) (ATExp: (LETAtExp: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: function))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.ATExp))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.PARAtExp))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.FNExp))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: match))))))))))))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.APPExp))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: function))) (ExpRow: (Lab: |3|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.PARAtExp))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: exp))))))))))))))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: IFExp))) (ATExp: (IDAtExp: (LongVId: C.IFExp)))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: ORELSEExp))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: I))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: exp1))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: exp2)))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: IFExp))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: exp1))) (ExpRow: (Lab: |3|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: TRUEExp))) (PARAtExp: (ATExp: (IDAtExp: (LongVId: I))))))) (ExpRow: (Lab: |4|) (ATExp: (IDAtExp: (LongVId: exp2)))))))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: ANDALSOExp))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: I))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: exp1))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: exp2)))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: IFExp))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: exp1))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: exp2))) (ExpRow: (Lab: |4|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: FALSEExp))) (PARAtExp: (ATExp: (IDAtExp: (LongVId: I)))))))))))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: SEQAtExp))) (FNExp: (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: exp))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: nil))))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.PARAtExp))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: exp)))))))))) (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: exp))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: |exps'|))))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.SEQAtExp))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: exp))) (ExpRow: (Lab: |3|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: SEQAtExp))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: |exps'|)))))))))))))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: LETAtExp))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: I))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: dec))) (FIELDPatRow: (Lab: |3|) (ATPat: (PARAtPat: (CONPat: (LongVId: ::) (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: exp))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: nil)))))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.LETAtExp))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: dec))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: exp))))))))))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: I))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: dec))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: exps)))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.LETAtExp))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: dec))) (ExpRow: (Lab: |3|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.ATExp))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: SEQAtExp))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: exps)))))))))))))))))))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: WHILEExp))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: I))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: exp1))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: exp2)))))))))) (ATExp: (LETAtExp: (SEQDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: vid))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: VId.invent))) (RECORDAtExp:)))))) (SEQDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: vidExp))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: VIDExp))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: vid))))))))))) (SEQDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: unitAtExp))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: UNITAtExp))) (PARAtExp: (ATExp: (IDAtExp: (LongVId: I))))))))) (SEQDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: unitExp))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.ATExp))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: unitAtExp))))))))))) (SEQDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: callVid))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.APPExp))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: vidExp))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: unitAtExp)))))))))))) (SEQDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: seqExp))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.ATExp))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: SEQAtExp))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: ::))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: exp2))) (ExpRow: (Lab: |2|) (APPExp: (ATExp: (IDAtExp: (LongVId: ::))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: callVid))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: nil))))))))))))))))))))))))))) (SEQDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: fnBody))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: IFExp))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: exp1))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: seqExp))) (ExpRow: (Lab: |4|) (ATExp: (IDAtExp: (LongVId: unitExp))))))))))))) (SEQDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: mrule))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.Mrule))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.ATPat))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: UNITAtPat))) (PARAtExp: (ATExp: (IDAtExp: (LongVId: I))))))))))))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: fnBody)))))))))))) (SEQDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: match))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.Match))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: mrule))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: NONE)))))))))))) (SEQDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: fnExp))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.FNExp))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: match))))))))))) (SEQDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: fnBind))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.PLAINValBind))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: VIDPat))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: vid))))))))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: fnExp))) (ExpRow: (Lab: |4|) (ATExp: (IDAtExp: (LongVId: NONE))))))))))))) (SEQDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: valbind))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.RECValBind))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: fnBind))))))))))) (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: dec))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.VALDec))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.TyVarseq))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: nil))))))))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: valbind)))))))))))))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.ATExp))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.LETAtExp))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: dec))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: callVid))))))))))))))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: LISTAtExp))) (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: NILAtExp))) (PARAtExp: (ATExp: (IDAtExp: (LongVId: I)))))))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: I))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: exps))))))))) (ATExp: (LETAtExp: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: toExpList))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (IDAtPat: (LongVId: nil))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.ATExp))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: NILAtExp))) (PARAtExp: (ATExp: (IDAtExp: (LongVId: I)))))))))))))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (CONPat: (LongVId: ::) (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: exp))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: |exps'|))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.APPExp))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: CONSExp))) (PARAtExp: (ATExp: (IDAtExp: (LongVId: I))))))) (ExpRow: (Lab: |3|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: TUPLEAtExp))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: ::))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: exp))) (ExpRow: (Lab: |2|) (APPExp: (ATExp: (IDAtExp: (LongVId: ::))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: toExpList))) (IDAtExp: (LongVId: |exps'|))))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: nil))))))))))))))))))))))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.PARAtExp))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: toExpList))) (IDAtExp: (LongVId: exps))))))))))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: TUPLETy))) (FNExp: (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: ty))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: nil))))))))))))))) (ATExp: (IDAtExp: (LongVId: ty)))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: I))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: tys))))))))) (ATExp: (LETAtExp: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: toTyRow))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: n))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: nil))))))))) (ATExp: (IDAtExp: (LongVId: NONE)))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: n))) (FIELDPatRow: (Lab: |2|) (ATPat: (PARAtPat: (CONPat: (LongVId: ::) (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: ty))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: |tys'|))))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: SOME))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.TyRow))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.infoTy))) (IDAtExp: (LongVId: ty))))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: Lab.fromInt))) (IDAtExp: (LongVId: n))))))))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: ty))) (ExpRow: (Lab: |4|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: toTyRow))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: +))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: n))) (ExpRow: (Lab: |2|) (ATExp: (SCONAtExp: (INTSCon: 1))))))))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: |tys'|)))))))))))))))))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.RECORDTy))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: toTyRow))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (SCONAtExp: (INTSCon: 1))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: tys))))))))))))))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: FvalBind))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: I))) (FIELDPatRow: (Lab: |2|) (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: match))) (FIELDPatRow: (Lab: |2|) (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: |I'|))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: vid))))))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: arity)))))))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: fvalbind_opt)))))))))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (CONPat: (LongVId: C.Match) (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (WILDCARDAtPat:)) (FIELDPatRow: (Lab: |2|) (ATPat: (PARAtPat: (CONPat: (LongVId: C.Mrule) (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (WILDCARDAtPat:)) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: pat))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: exp)))))))))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: NONE)))))))))) (IFExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: >))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: arity))) (ExpRow: (Lab: |2|) (ATExp: (SCONAtExp: (INTSCon: 1))))))))) (ATExp: (LETAtExp: (SEQDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: patrow))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (CONPat: (LongVId: C.ATPat) (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (WILDCARDAtPat:)) (FIELDPatRow: (Lab: |2|) (ATPat: (PARAtPat: (CONPat: (LongVId: C.RECORDAtPat) (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (WILDCARDAtPat:)) (FIELDPatRow: (Lab: |2|) (ATPat: (PARAtPat: (CONPat: (LongVId: SOME) (IDAtPat: (LongVId: patrow))))))))))))))))) (ATExp: (IDAtExp: (LongVId: patrow)))) (Match: (Mrule: (ATPat: (WILDCARDAtPat:)) (RAISEExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: Fail))) (SCONAtExp: (STRINGSCon: "DerivedFormsCore.FvalBind: can't extract patrow")))))))))))) (PARAtExp: (ATExp: (IDAtExp: (LongVId: pat))))))))) (SEQDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: abstract))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (CONPat: (LongVId: C.FIELDPatRow) (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (WILDCARDAtPat:)) (FIELDPatRow: (Lab: |2|) (ATPat: (WILDCARDAtPat:)) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: pat))) (FIELDPatRow: (Lab: |4|) (ATPat: (IDAtPat: (LongVId: NONE))))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.FNExp))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.Match))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.Mrule))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: pat))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: exp)))))))))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: NONE))))))))))))))))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (CONPat: (LongVId: C.FIELDPatRow) (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (WILDCARDAtPat:)) (FIELDPatRow: (Lab: |2|) (ATPat: (WILDCARDAtPat:)) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: pat))) (FIELDPatRow: (Lab: |4|) (ATPat: (PARAtPat: (CONPat: (LongVId: SOME) (IDAtPat: (LongVId: row))))))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.FNExp))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.Match))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.Mrule))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: pat))) (ExpRow: (Lab: |3|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: abstract))) (IDAtExp: (LongVId: row)))))))))))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: NONE))))))))))))))))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (CONPat: (LongVId: C.DOTSPatRow) (WILDCARDAtPat:)))))))) (RAISEExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: Fail))) (SCONAtExp: (STRINGSCon: "DerivedFormsCore.FvalBind: DOTSPatRow used as function argument")))))))))))))) (SEQDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: pat2))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: VIDPat))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: |I'|))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: vid))))))))))) (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: exp2))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: abstract))) (IDAtExp: (LongVId: patrow)))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.PLAINValBind))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: pat2))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: exp2))) (ExpRow: (Lab: |4|) (ATExp: (IDAtExp: (LongVId: fvalbind_opt))))))))))))) (ATExp: (LETAtExp: (SEQDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: pat2))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: VIDPat))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: |I'|))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: vid))))))))))) (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: exp2))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.FNExp))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.Match))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.Mrule))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: pat))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: exp)))))))))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: NONE))))))))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.PLAINValBind))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: pat2))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: exp2))) (ExpRow: (Lab: |4|) (ATExp: (IDAtExp: (LongVId: fvalbind_opt))))))))))))))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: match))) (IFExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: >))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: arity))) (ExpRow: (Lab: |2|) (ATExp: (SCONAtExp: (INTSCon: 1))))))))) (ATExp: (LETAtExp: (SEQDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: abstract))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (SCONAtPat: (INTSCon: 0))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: vidExps))))))))) (ATExp: (LETAtExp: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: exp))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.ATExp))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: TUPLEAtExp))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: List.rev))) (IDAtExp: (LongVId: vidExps))))))))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: CASEExp))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: exp))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: match))))))))))))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: n))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: vidExps))))))))) (ATExp: (LETAtExp: (SEQDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: vid))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: VId.invent))) (RECORDAtExp:)))))) (SEQDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: exp))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: VIDExp))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: |I'|))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: vid))))))))))) (SEQDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: pat))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: VIDPat))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: |I'|))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: vid))))))))))) (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: mrule))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.Mrule))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: pat))) (ExpRow: (Lab: |3|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: abstract))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: -))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: n))) (ExpRow: (Lab: |2|) (ATExp: (SCONAtExp: (INTSCon: 1))))))))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: ::))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: exp))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: vidExps))))))))))))))))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.FNExp))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.Match))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: mrule))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: NONE))))))))))))))))))))))))) (SEQDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: exp))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: abstract))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: arity))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: nil))))))))))) (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: pat))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: VIDPat))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: |I'|))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: vid))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.PLAINValBind))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: pat))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: exp))) (ExpRow: (Lab: |4|) (ATExp: (IDAtExp: (LongVId: fvalbind_opt))))))))))))) (ATExp: (LETAtExp: (SEQDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: pat2))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: VIDPat))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: |I'|))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: vid))))))))))) (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: exp2))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.FNExp))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: match)))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.PLAINValBind))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: pat2))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: exp2))) (ExpRow: (Lab: |4|) (ATExp: (IDAtExp: (LongVId: fvalbind_opt)))))))))))))))))))) (PARAtExp: (ATExp: (IDAtExp: (LongVId: match)))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: Fmatch))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: I))) (FIELDPatRow: (Lab: |2|) (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: mrule))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: vid))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: arity)))))))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: NONE)))))))))) (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.Match))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: mrule))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: NONE)))))))))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: vid))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: arity))))))))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: I))) (FIELDPatRow: (Lab: |2|) (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: mrule))) (FIELDPatRow: (Lab: |2|) (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: |I'|))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: vid))))))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: arity)))))))) (FIELDPatRow: (Lab: |3|) (ATPat: (PARAtPat: (CONPat: (LongVId: SOME) (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: match))) (FIELDPatRow: (Lab: |2|) (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (WILDCARDAtPat:)) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: |vid'|))))))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: |arity'|))))))))))))))))) (IFExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: <>))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: vid))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: |vid'|))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: Error.error))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (SCONAtExp: (STRINGSCon: "inconsistent function identifier"))))))))) (IFExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: <>))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: arity))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: |arity'|))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: Error.error))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (SCONAtExp: (STRINGSCon: "inconsistent function arity"))))))))) (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.Match))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: mrule))) (ExpRow: (Lab: |3|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: SOME))) (IDAtExp: (LongVId: match)))))))))))) (ExpRow: (Lab: |2|) (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: |I'|))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: vid))))))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: arity)))))))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: Fmrule))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: I))) (FIELDPatRow: (Lab: |2|) (ATPat: (WILDCARDAtPat:)) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: vid))) (FIELDPatRow: (Lab: |4|) (ATPat: (IDAtPat: (LongVId: atpats))) (FIELDPatRow: (Lab: |5|) (ATPat: (IDAtPat: (LongVId: ty_opt))) (FIELDPatRow: (Lab: |6|) (ATPat: (IDAtPat: (LongVId: exp))))))))))))) (ATExp: (LETAtExp: (SEQDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: pats))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: List.map))) (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: atpat))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.ATPat))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: atpat)))))))))))))))) (IDAtExp: (LongVId: atpats))))))) (SEQDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: |pat'|))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.ATPat))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: TUPLEAtPat))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: pats))))))))))))))))) (SEQDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: |exp'|))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: NONE))) (ATExp: (IDAtExp: (LongVId: exp)))) (Match: (Mrule: (ATPat: (PARAtPat: (CONPat: (LongVId: SOME) (IDAtPat: (LongVId: ty))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.COLONExp))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: exp))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: ty)))))))))))))))) (PARAtExp: (ATExp: (IDAtExp: (LongVId: ty_opt))))))) (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: arity))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: List.length))) (IDAtExp: (LongVId: atpats)))))))))) (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.Mrule))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: |pat'|))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: |exp'|)))))))))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: vid))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: arity))))))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: FUNDec))) (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: fvalbind)))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.VALDec))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: tyvarseq))) (ExpRow: (Lab: |3|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.RECValBind))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: fvalbind))))))))))))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: DATATYPEDec))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: I))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: datbind))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: NONE)))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.DATATYPEDec))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: datbind)))))))))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: I))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: datbind))) (FIELDPatRow: (Lab: |3|) (ATPat: (PARAtPat: (CONPat: (LongVId: SOME) (IDAtPat: (LongVId: typbind)))))))))))) (ATExp: (LETAtExp: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: |datbind'|))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: rewriteDatBind))) (IDAtExp: (LongVId: typbind))))) (IDAtExp: (LongVId: datbind))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.SEQDec))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.DATATYPEDec))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.infoDatBind))) (IDAtExp: (LongVId: datbind))))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: |datbind'|))))))))) (ExpRow: (Lab: |3|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.TYPEDec))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.infoTypBind))) (IDAtExp: (LongVId: typbind))))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: typbind)))))))))))))))))))))))))) (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: ABSTYPEDec))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: I))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: datbind))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: NONE))) (FIELDPatRow: (Lab: |4|) (ATPat: (IDAtPat: (LongVId: dec))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.ABSTYPEDec))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: datbind))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: dec))))))))))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: I))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: datbind))) (FIELDPatRow: (Lab: |3|) (ATPat: (PARAtPat: (CONPat: (LongVId: SOME) (IDAtPat: (LongVId: typbind))))) (FIELDPatRow: (Lab: |4|) (ATPat: (IDAtPat: (LongVId: dec))))))))))) (ATExp: (LETAtExp: (SEQDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: |I'|))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.infoTypBind))) (IDAtExp: (LongVId: typbind))))))) (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: |datbind'|))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: rewriteDatBind))) (IDAtExp: (LongVId: typbind))))) (IDAtExp: (LongVId: datbind)))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.ABSTYPEDec))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: |datbind'|))) (ExpRow: (Lab: |3|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.SEQDec))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: C.TYPEDec))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: |I'|))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: typbind))))))))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: dec))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) (IDSigExp: (SigId: DERIVED_FORMS_CORE-sig)))))))))