(module Substring-struct (planet chongkai/sml) (#%module-begin (Program: (SIGDECTopDec: (SigDec: (SigBind: (SigId: SUBSTRING-sig) (SIGSigExp: (SEQSpec: (VALSpec: (ValDesc: (VId: full) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: string-type)) (CONTy: (Tyseq:) (LongTyCon: substring-type))))) (SEQSpec: (VALSpec: (ValDesc: (VId: substring) (ARROWTy: (RECORDTy: (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: string-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: int-type)) (TyRow: (Lab: |3|) (CONTy: (Tyseq:) (LongTyCon: int-type)))))) (CONTy: (Tyseq:) (LongTyCon: substring-type))))) (SEQSpec: (VALSpec: (ValDesc: (VId: extract) (ARROWTy: (RECORDTy: (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: string-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: int-type)) (TyRow: (Lab: |3|) (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: int-type))) (LongTyCon: option-type)))))) (CONTy: (Tyseq:) (LongTyCon: substring-type))))) (SEQSpec: (VALSpec: (ValDesc: (VId: all) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: string-type)) (CONTy: (Tyseq:) (LongTyCon: substring-type))))) (SEQSpec: (VALSpec: (ValDesc: (VId: string) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: substring-type)) (CONTy: (Tyseq:) (LongTyCon: string-type))))) (SEQSpec: (VALSpec: (ValDesc: (VId: base) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: substring-type)) (PARTy: (RECORDTy: (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: string-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: int-type)) (TyRow: (Lab: |3|) (CONTy: (Tyseq:) (LongTyCon: int-type)))))))))) (SEQSpec: (VALSpec: (ValDesc: (VId: isEmpty) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: substring-type)) (CONTy: (Tyseq:) (LongTyCon: bool-type))))) (SEQSpec: (VALSpec: (ValDesc: (VId: getc) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: substring-type)) (CONTy: (Tyseq: (PARTy: (RECORDTy: (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: char-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: substring-type))))))) (LongTyCon: option-type))))) (SEQSpec: (VALSpec: (ValDesc: (VId: first) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: substring-type)) (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: char-type))) (LongTyCon: option-type))))) (SEQSpec: (VALSpec: (ValDesc: (VId: triml) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: int-type)) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: substring-type)) (CONTy: (Tyseq:) (LongTyCon: substring-type)))))) (SEQSpec: (VALSpec: (ValDesc: (VId: trimr) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: int-type)) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: substring-type)) (CONTy: (Tyseq:) (LongTyCon: substring-type)))))) (SEQSpec: (VALSpec: (ValDesc: (VId: sub) (ARROWTy: (RECORDTy: (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: substring-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: int-type))))) (CONTy: (Tyseq:) (LongTyCon: char-type))))) (SEQSpec: (VALSpec: (ValDesc: (VId: size) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: substring-type)) (CONTy: (Tyseq:) (LongTyCon: int-type))))) (SEQSpec: (VALSpec: (ValDesc: (VId: slice) (ARROWTy: (RECORDTy: (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: substring-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: int-type)) (TyRow: (Lab: |3|) (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: int-type))) (LongTyCon: option-type)))))) (CONTy: (Tyseq:) (LongTyCon: substring-type))))) (SEQSpec: (VALSpec: (ValDesc: (VId: concat) (ARROWTy: (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: substring-type))) (LongTyCon: list-type)) (CONTy: (Tyseq:) (LongTyCon: string-type))))) (SEQSpec: (VALSpec: (ValDesc: (VId: explode) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: substring-type)) (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: char-type))) (LongTyCon: list-type))))) (SEQSpec: (VALSpec: (ValDesc: (VId: isPrefix) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: string-type)) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: substring-type)) (CONTy: (Tyseq:) (LongTyCon: bool-type)))))) (SEQSpec: (VALSpec: (ValDesc: (VId: compare) (ARROWTy: (RECORDTy: (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: substring-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: substring-type))))) (CONTy: (Tyseq:) (LongTyCon: order-type))))) (SEQSpec: (VALSpec: (ValDesc: (VId: collate) (ARROWTy: (PARTy: (ARROWTy: (RECORDTy: (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: char-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: char-type))))) (CONTy: (Tyseq:) (LongTyCon: order-type)))) (ARROWTy: (RECORDTy: (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: substring-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: substring-type))))) (CONTy: (Tyseq:) (LongTyCon: order-type)))))) (SEQSpec: (VALSpec: (ValDesc: (VId: dropl) (ARROWTy: (PARTy: (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: char-type)) (CONTy: (Tyseq:) (LongTyCon: bool-type)))) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: substring-type)) (CONTy: (Tyseq:) (LongTyCon: substring-type)))))) (SEQSpec: (VALSpec: (ValDesc: (VId: dropr) (ARROWTy: (PARTy: (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: char-type)) (CONTy: (Tyseq:) (LongTyCon: bool-type)))) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: substring-type)) (CONTy: (Tyseq:) (LongTyCon: substring-type)))))) (SEQSpec: (VALSpec: (ValDesc: (VId: takel) (ARROWTy: (PARTy: (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: char-type)) (CONTy: (Tyseq:) (LongTyCon: bool-type)))) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: substring-type)) (CONTy: (Tyseq:) (LongTyCon: substring-type)))))) (SEQSpec: (VALSpec: (ValDesc: (VId: taker) (ARROWTy: (PARTy: (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: char-type)) (CONTy: (Tyseq:) (LongTyCon: bool-type)))) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: substring-type)) (CONTy: (Tyseq:) (LongTyCon: substring-type)))))) (SEQSpec: (VALSpec: (ValDesc: (VId: splitl) (ARROWTy: (PARTy: (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: char-type)) (CONTy: (Tyseq:) (LongTyCon: bool-type)))) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: substring-type)) (RECORDTy: (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: substring-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: substring-type))))))))) (SEQSpec: (VALSpec: (ValDesc: (VId: splitr) (ARROWTy: (PARTy: (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: char-type)) (CONTy: (Tyseq:) (LongTyCon: bool-type)))) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: substring-type)) (RECORDTy: (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: substring-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: substring-type))))))))) (SEQSpec: (VALSpec: (ValDesc: (VId: splitAt) (ARROWTy: (RECORDTy: (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: substring-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: int-type))))) (RECORDTy: (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: substring-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: substring-type)))))))) (SEQSpec: (VALSpec: (ValDesc: (VId: position) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: string-type)) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: substring-type)) (RECORDTy: (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: substring-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: substring-type))))))))) (SEQSpec: (EXCEPTIONSpec: (ExDesc: (VId: Span))) (SEQSpec: (VALSpec: (ValDesc: (VId: span) (ARROWTy: (RECORDTy: (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: substring-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: substring-type))))) (CONTy: (Tyseq:) (LongTyCon: substring-type))))) (SEQSpec: (VALSpec: (ValDesc: (VId: translate) (ARROWTy: (PARTy: (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: char-type)) (CONTy: (Tyseq:) (LongTyCon: string-type)))) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: substring-type)) (CONTy: (Tyseq:) (LongTyCon: string-type)))))) (SEQSpec: (VALSpec: (ValDesc: (VId: tokens) (ARROWTy: (PARTy: (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: char-type)) (CONTy: (Tyseq:) (LongTyCon: bool-type)))) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: substring-type)) (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: substring-type))) (LongTyCon: list-type)))))) (SEQSpec: (VALSpec: (ValDesc: (VId: fields) (ARROWTy: (PARTy: (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: char-type)) (CONTy: (Tyseq:) (LongTyCon: bool-type)))) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: substring-type)) (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: substring-type))) (LongTyCon: list-type)))))) (SEQSpec: (VALSpec: (ValDesc: (VId: foldl) (ARROWTy: (PARTy: (ARROWTy: (RECORDTy: (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: char-type)) (TyRow: (Lab: |2|) (VARTy: (TyVar: |'a|))))) (VARTy: (TyVar: |'a|)))) (ARROWTy: (VARTy: (TyVar: |'a|)) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: substring-type)) (VARTy: (TyVar: |'a|))))))) (SEQSpec: (VALSpec: (ValDesc: (VId: foldr) (ARROWTy: (PARTy: (ARROWTy: (RECORDTy: (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: char-type)) (TyRow: (Lab: |2|) (VARTy: (TyVar: |'a|))))) (VARTy: (TyVar: |'a|)))) (ARROWTy: (VARTy: (TyVar: |'a|)) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: substring-type)) (VARTy: (TyVar: |'a|))))))) (VALSpec: (ValDesc: (VId: app) (ARROWTy: (PARTy: (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: char-type)) (CONTy: (Tyseq:) (LongTyCon: unit-type)))) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: substring-type)) (CONTy: (Tyseq:) (LongTyCon: unit-type))))))))))))))))))))))))))))))))))))))))))) (STRDECTopDec: (STRUCTUREStrDec: (StrBind: (StrId: Substring-struct) (SEALStrExp: (STRUCTStrExp: (SEQStrDec: (LOCALStrDec: (DECStrDec: (OPENDec: (LongStrId: stringprimitive-struct))) (SEQStrDec: (SEQStrDec: (SEQStrDec: (SEQStrDec: (SEQStrDec: (SEQStrDec: (SEQStrDec: (SEQStrDec: (SEQStrDec: (SEQStrDec: (SEQStrDec: (SEQStrDec: (SEQStrDec: (SEQStrDec: (SEQStrDec: (SEQStrDec: (SEQStrDec: (DECStrDec: (TYPEDec: (TypBind: (TyVarseq:) (TyCon: substring-type) (RECORDTy: (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: string-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: int-type)) (TyRow: (Lab: |3|) (CONTy: (Tyseq:) (LongTyCon: int-type))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: base))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10542))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (IDAtPat: (LongVId: arg))))) (ATExp: (IDAtExp: (LongVId: arg)))))))) (PARAtExp: (ATExp: (PARAtExp: (ATExp: (IDAtExp: (LongVId: _id10542)))))))))))))) (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: string))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10543))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: s))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: i))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: n)))))))))) (ATExp: (LETAtExp: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: newstr))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: mkstring_))) (IDAtExp: (LongVId: n))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (WILDCARDAtPat:)) (ATExp: (IDAtExp: (LongVId: newstr)))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: blit_))) (IDAtExp: (LongVId: s))))) (IDAtExp: (LongVId: i))))) (IDAtExp: (LongVId: newstr))))) (SCONAtExp: (INTSCon: 0))))) (IDAtExp: (LongVId: n)))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (ATExp: (IDAtExp: (LongVId: _id10543)))))))))))))))) (SEQStrDec: (SEQStrDec: (EMPTYStrDec:) (EMPTYStrDec:)) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: extract))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10544))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: s))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: i))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: NONE)))))))))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: true))) (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: s))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: i))) (ExpRow: (Lab: |3|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: -))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: size))) (IDAtExp: (LongVId: s))))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: i))))))))))))))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: false))) (RAISEExp: (ATExp: (IDAtExp: (LongVId: General.Subscript)))))))))) (PARAtExp: (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: true))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: <=))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: i))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: size))) (IDAtExp: (LongVId: s)))))))))))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: false))) (ATExp: (IDAtExp: (LongVId: false))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: <=))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (SCONAtExp: (INTSCon: 0))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: i)))))))))))))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: s))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: i))) (FIELDPatRow: (Lab: |3|) (ATPat: (PARAtPat: (CONPat: (LongVId: SOME) (IDAtPat: (LongVId: n)))))))))))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: true))) (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: s))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: i))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: n))))))))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: false))) (RAISEExp: (ATExp: (IDAtExp: (LongVId: General.Subscript)))))))))) (PARAtExp: (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: true))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: true))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: <=))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: n))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: -))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: size))) (IDAtExp: (LongVId: s))))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: i)))))))))))))))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: false))) (ATExp: (IDAtExp: (LongVId: false))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: <=))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (SCONAtExp: (INTSCon: 0))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: n)))))))))))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: false))) (ATExp: (IDAtExp: (LongVId: false))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: <=))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (SCONAtExp: (INTSCon: 0))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: i))))))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (ATExp: (IDAtExp: (LongVId: _id10544)))))))))))))) (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: substring))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10545))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: s))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: i))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: n)))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: extract))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: s))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: i))) (ExpRow: (Lab: |3|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: SOME))) (IDAtExp: (LongVId: n))))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (ATExp: (IDAtExp: (LongVId: _id10545))))))))))))))))) (SEQStrDec: (SEQStrDec: (EMPTYStrDec:) (EMPTYStrDec:)) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: all))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10546))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (IDAtPat: (LongVId: s))))) (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: s))) (ExpRow: (Lab: |2|) (ATExp: (SCONAtExp: (INTSCon: 0))) (ExpRow: (Lab: |3|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: size))) (IDAtExp: (LongVId: s))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (ATExp: (IDAtExp: (LongVId: _id10546)))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: getc))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10547))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: s))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: i))) (FIELDPatRow: (Lab: |3|) (ATPat: (SCONAtPat: (INTSCon: 0)))))))))) (ATExp: (IDAtExp: (LongVId: NONE)))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: s))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: i))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: n)))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: SOME))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: sub_))) (IDAtExp: (LongVId: s))))) (IDAtExp: (LongVId: i))))) (ExpRow: (Lab: |2|) (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: s))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: +))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: i))) (ExpRow: (Lab: |2|) (ATExp: (SCONAtExp: (INTSCon: 1))))))))) (ExpRow: (Lab: |3|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: -))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: n))) (ExpRow: (Lab: |2|) (ATExp: (SCONAtExp: (INTSCon: 1)))))))))))))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (ATExp: (IDAtExp: (LongVId: _id10547)))))))))))))) (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: first))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10548))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: s))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: i))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: n)))))))))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: true))) (ATExp: (IDAtExp: (LongVId: NONE)))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: false))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: SOME))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: sub_))) (IDAtExp: (LongVId: s))))) (IDAtExp: (LongVId: i))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: =))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: n))) (ExpRow: (Lab: |2|) (ATExp: (SCONAtExp: (INTSCon: 0)))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (ATExp: (IDAtExp: (LongVId: _id10548)))))))))))))))))) (SEQStrDec: (SEQStrDec: (EMPTYStrDec:) (EMPTYStrDec:)) (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: isEmpty))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10549))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: s))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: i))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: n)))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: =))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: n))) (ExpRow: (Lab: |2|) (ATExp: (SCONAtExp: (INTSCon: 0)))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (ATExp: (IDAtExp: (LongVId: _id10549)))))))))))))))) (SEQStrDec: (SEQStrDec: (EMPTYStrDec:) (EMPTYStrDec:)) (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: triml))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10550))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (IDAtPat: (LongVId: k))))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: true))) (RAISEExp: (ATExp: (IDAtExp: (LongVId: Subscript))))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: false))) (FNExp: (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: s))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: i))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: n)))))))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: true))) (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: s))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: +))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: i))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: n))))))))) (ExpRow: (Lab: |3|) (ATExp: (SCONAtExp: (INTSCon: 0))))))))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: false))) (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: s))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: +))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: i))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: k))))))))) (ExpRow: (Lab: |3|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: -))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: n))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: k)))))))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: >))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: k))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: n)))))))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: <))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: k))) (ExpRow: (Lab: |2|) (ATExp: (SCONAtExp: (INTSCon: 0)))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (ATExp: (IDAtExp: (LongVId: _id10550)))))))))))))))) (SEQStrDec: (SEQStrDec: (EMPTYStrDec:) (EMPTYStrDec:)) (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: trimr))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10551))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (IDAtPat: (LongVId: k))))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: true))) (RAISEExp: (ATExp: (IDAtExp: (LongVId: Subscript))))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: false))) (FNExp: (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: s))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: i))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: n)))))))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: true))) (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: s))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: i))) (ExpRow: (Lab: |3|) (ATExp: (SCONAtExp: (INTSCon: 0))))))))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: false))) (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: s))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: i))) (ExpRow: (Lab: |3|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: -))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: n))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: k)))))))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: >))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: k))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: n)))))))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: <))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: k))) (ExpRow: (Lab: |2|) (ATExp: (SCONAtExp: (INTSCon: 0)))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (ATExp: (IDAtExp: (LongVId: _id10551)))))))))))))))) (SEQStrDec: (SEQStrDec: (EMPTYStrDec:) (EMPTYStrDec:)) (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: sub))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10552))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: |s'|))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: |i'|))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: |n'|)))))))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: i))))))))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: true))) (RAISEExp: (ATExp: (IDAtExp: (LongVId: Subscript))))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: false))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: sub_))) (IDAtExp: (LongVId: |s'|))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: +))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: |i'|))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: i))))))))))))))))))) (PARAtExp: (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: true))) (ATExp: (IDAtExp: (LongVId: true)))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: false))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: >=))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: i))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: |n'|))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: <))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: i))) (ExpRow: (Lab: |2|) (ATExp: (SCONAtExp: (INTSCon: 0)))))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (ATExp: (IDAtExp: (LongVId: _id10552)))))))))))))))) (SEQStrDec: (SEQStrDec: (EMPTYStrDec:) (EMPTYStrDec:)) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: size))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10553))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (WILDCARDAtPat:)) (FIELDPatRow: (Lab: |2|) (ATPat: (WILDCARDAtPat:)) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: n)))))))))) (ATExp: (IDAtExp: (LongVId: n)))))))) (PARAtExp: (ATExp: (PARAtExp: (ATExp: (IDAtExp: (LongVId: _id10553)))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: slice))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10554))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: |s'|))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: |i'|))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: |n'|)))))))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: i))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: NONE)))))))))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: true))) (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: |s'|))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: +))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: |i'|))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: i))))))))) (ExpRow: (Lab: |3|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: -))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: |n'|))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: i))))))))))))))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: false))) (RAISEExp: (ATExp: (IDAtExp: (LongVId: Subscript)))))))))) (PARAtExp: (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: true))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: <=))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: i))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: |n'|)))))))))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: false))) (ATExp: (IDAtExp: (LongVId: false))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: <=))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (SCONAtExp: (INTSCon: 0))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: i)))))))))))))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: |s'|))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: |i'|))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: |n'|)))))))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: i))) (FIELDPatRow: (Lab: |3|) (ATPat: (PARAtPat: (CONPat: (LongVId: SOME) (IDAtPat: (LongVId: n)))))))))))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: true))) (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: |s'|))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: +))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: |i'|))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: i))))))))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: n))))))))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: false))) (RAISEExp: (ATExp: (IDAtExp: (LongVId: Subscript)))))))))) (PARAtExp: (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: true))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: true))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: <=))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: +))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: i))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: n))))))))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: |n'|)))))))))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: false))) (ATExp: (IDAtExp: (LongVId: false))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: <=))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (SCONAtExp: (INTSCon: 0))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: n)))))))))))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: false))) (ATExp: (IDAtExp: (LongVId: false))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: <=))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (SCONAtExp: (INTSCon: 0))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: i))))))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (ATExp: (IDAtExp: (LongVId: _id10554)))))))))))))) (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: splitAt))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10555))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: s))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: i))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: n)))))))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: k))))))))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: true))) (RAISEExp: (ATExp: (IDAtExp: (LongVId: Subscript))))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: false))) (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: s))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: i))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: k)))))))) (ExpRow: (Lab: |2|) (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: s))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: +))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: i))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: k))))))))) (ExpRow: (Lab: |3|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: -))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: n))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: k)))))))))))))))))))))))) (PARAtExp: (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: true))) (ATExp: (IDAtExp: (LongVId: true)))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: false))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: >))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: k))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: n))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: <))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: k))) (ExpRow: (Lab: |2|) (ATExp: (SCONAtExp: (INTSCon: 0)))))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (ATExp: (IDAtExp: (LongVId: _id10555)))))))))))))))))) (SEQStrDec: (SEQStrDec: (EMPTYStrDec:) (EMPTYStrDec:)) (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: concat))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10560))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (IDAtPat: (LongVId: strs))))) (ATExp: (LETAtExp: (SEQDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: acc))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10556))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10557))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: nil))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: len))))))) (ATExp: (IDAtExp: (LongVId: len)))) (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (PARAtPat: (ATPat: (PARAtPat: (CONPat: (LongVId: ::) (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (WILDCARDAtPat:)) (FIELDPatRow: (Lab: |2|) (ATPat: (WILDCARDAtPat:)) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: len1)))))))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: vr))))))))))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: len))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: acc))) (IDAtExp: (LongVId: vr))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: +))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: len1))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: len))))))))))))))))))) (PARAtExp: (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: _id10556))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: _id10557)))))))))))))))))) (SEQDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: len))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: acc))) (IDAtExp: (LongVId: strs))))) (SCONAtExp: (INTSCon: 0))))))) (SEQDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: newstr))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: true))) (RAISEExp: (ATExp: (IDAtExp: (LongVId: Size))))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: false))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: mkstring_))) (IDAtExp: (LongVId: len))))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: >))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: len))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: String.maxSize))))))))))))) (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: copyall))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10558))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10559))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: to))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: nil))))))) (ATExp: (RECORDAtExp:))) (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: to))) (FIELDPatRow: (Lab: |2|) (ATPat: (PARAtPat: (ATPat: (PARAtPat: (CONPat: (LongVId: ::) (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: s1))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: i1))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: len1)))))))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: vr))))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (WILDCARDAtPat:)) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: copyall))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: +))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: to))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: len1))))))))))))) (IDAtExp: (LongVId: vr)))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: blit_))) (IDAtExp: (LongVId: s1))))) (IDAtExp: (LongVId: i1))))) (IDAtExp: (LongVId: newstr))))) (IDAtExp: (LongVId: to))))) (IDAtExp: (LongVId: len1))))))))))))))) (PARAtExp: (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: _id10558))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: _id10559))))))))))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (WILDCARDAtPat:)) (ATExp: (IDAtExp: (LongVId: newstr)))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: copyall))) (SCONAtExp: (INTSCon: 0))))) (IDAtExp: (LongVId: strs)))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (ATExp: (IDAtExp: (LongVId: _id10560)))))))))))))))) (SEQStrDec: (SEQStrDec: (EMPTYStrDec:) (EMPTYStrDec:)) (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: compare))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10562))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: s1))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: i1))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: n1)))))))) (FIELDPatRow: (Lab: |2|) (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: s2))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: i2))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: n2)))))))))))))) (ATExp: (LETAtExp: (SEQDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: stop))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: true))) (ATExp: (IDAtExp: (LongVId: n1)))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: false))) (ATExp: (IDAtExp: (LongVId: n2))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: <))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: n1))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: n2))))))))))))) (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: h))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10561))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (IDAtPat: (LongVId: j))))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: true))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: true))) (ATExp: (IDAtExp: (LongVId: LESS)))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: false))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: true))) (ATExp: (IDAtExp: (LongVId: GREATER)))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: false))) (ATExp: (IDAtExp: (LongVId: EQUAL))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: >))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: n1))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: n2))))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: <))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: n1))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: n2)))))))))))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: false))) (ATExp: (LETAtExp: (SEQDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: c1))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: sub_))) (IDAtExp: (LongVId: s1))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: +))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: i1))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: j))))))))))))))) (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: c2))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: sub_))) (IDAtExp: (LongVId: s2))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: +))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: i2))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: j)))))))))))))))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: true))) (ATExp: (IDAtExp: (LongVId: LESS)))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: false))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: true))) (ATExp: (IDAtExp: (LongVId: GREATER)))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: false))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: h))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: +))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: j))) (ExpRow: (Lab: |2|) (ATExp: (SCONAtExp: (INTSCon: 1))))))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: >))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: c1))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: c2))))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: <))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: c1))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: c2))))))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: =))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: j))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: stop)))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (ATExp: (IDAtExp: (LongVId: _id10561)))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: h))) (SCONAtExp: (INTSCon: 0)))))))))))) (PARAtExp: (ATExp: (PARAtExp: (ATExp: (IDAtExp: (LongVId: _id10562)))))))))))))))) (SEQStrDec: (SEQStrDec: (EMPTYStrDec:) (EMPTYStrDec:)) (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: isPrefix))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10564))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10565))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: s1))) (FIELDPatRow: (Lab: |2|) (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: s2))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: i2))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: n2)))))))))))) (ATExp: (LETAtExp: (SEQDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: stop))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: true))) (ATExp: (IDAtExp: (LongVId: n2)))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: false))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: String.size))) (IDAtExp: (LongVId: s1))))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: <))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: n2))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: String.size))) (IDAtExp: (LongVId: s1))))))))))))))) (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: h))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10563))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (IDAtPat: (LongVId: j))))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: true))) (ATExp: (IDAtExp: (LongVId: true)))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: false))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: true))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: h))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: +))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: j))) (ExpRow: (Lab: |2|) (ATExp: (SCONAtExp: (INTSCon: 1)))))))))))))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: false))) (ATExp: (IDAtExp: (LongVId: false))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: =))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: sub_))) (IDAtExp: (LongVId: s1))))) (IDAtExp: (LongVId: j))))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: sub_))) (IDAtExp: (LongVId: s2))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: +))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: i2))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: j))))))))))))))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: =))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: j))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: stop)))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (ATExp: (IDAtExp: (LongVId: _id10563)))))))))))))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: true))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: h))) (SCONAtExp: (INTSCon: 0)))))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: false))) (ATExp: (IDAtExp: (LongVId: false))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: <=))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: String.size))) (IDAtExp: (LongVId: s1))))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: n2)))))))))))))))))) (PARAtExp: (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: _id10564))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: _id10565))))))))))))))))))))) (SEQStrDec: (SEQStrDec: (EMPTYStrDec:) (EMPTYStrDec:)) (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: collate))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10567))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10568))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: cmp))) (FIELDPatRow: (Lab: |2|) (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: s1))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: i1))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: n1)))))))) (FIELDPatRow: (Lab: |2|) (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: s2))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: i2))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: n2)))))))))))))))) (ATExp: (LETAtExp: (SEQDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: stop))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: true))) (ATExp: (IDAtExp: (LongVId: n1)))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: false))) (ATExp: (IDAtExp: (LongVId: n2))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: <))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: n1))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: n2))))))))))))) (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: h))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10566))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (IDAtPat: (LongVId: j))))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: true))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: true))) (ATExp: (IDAtExp: (LongVId: LESS)))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: false))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: true))) (ATExp: (IDAtExp: (LongVId: GREATER)))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: false))) (ATExp: (IDAtExp: (LongVId: EQUAL))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: >))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: n1))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: n2))))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: <))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: n1))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: n2)))))))))))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: false))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: LESS))) (ATExp: (IDAtExp: (LongVId: LESS)))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: GREATER))) (ATExp: (IDAtExp: (LongVId: GREATER)))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: EQUAL))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: h))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: +))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: j))) (ExpRow: (Lab: |2|) (ATExp: (SCONAtExp: (INTSCon: 1)))))))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: cmp))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: sub_))) (IDAtExp: (LongVId: s1))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: +))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: i1))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: j))))))))))))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: sub_))) (IDAtExp: (LongVId: s2))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: +))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: i2))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: j))))))))))))))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: =))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: j))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: stop)))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (ATExp: (IDAtExp: (LongVId: _id10566)))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: h))) (SCONAtExp: (INTSCon: 0)))))))))))) (PARAtExp: (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: _id10567))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: _id10568))))))))))))))))))))) (SEQStrDec: (SEQStrDec: (EMPTYStrDec:) (EMPTYStrDec:)) (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: foldl))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10569))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10570))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10571))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: f))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: e))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: sus)))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: Strbase.foldl))) (IDAtExp: (LongVId: f))))) (IDAtExp: (LongVId: e))))) (IDAtExp: (LongVId: sus)))))))))) (PARAtExp: (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: _id10569))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: _id10570))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: _id10571))))))))))))))))))))))))) (SEQStrDec: (SEQStrDec: (EMPTYStrDec:) (EMPTYStrDec:)) (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: foldr))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10574))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10575))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10576))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: f))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: e))) (FIELDPatRow: (Lab: |3|) (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: s))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: i))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: n))))))))))))) (ATExp: (LETAtExp: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: h))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10572))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10573))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: j))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: res))))))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: true))) (ATExp: (IDAtExp: (LongVId: res)))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: false))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: h))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: -))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: j))) (ExpRow: (Lab: |2|) (ATExp: (SCONAtExp: (INTSCon: 1))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: f))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: sub_))) (IDAtExp: (LongVId: s))))) (IDAtExp: (LongVId: j))))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: res))))))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: <))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: j))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: i)))))))))))))))) (PARAtExp: (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: _id10572))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: _id10573)))))))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: h))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: -))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: +))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: i))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: n))))))))) (ExpRow: (Lab: |2|) (ATExp: (SCONAtExp: (INTSCon: 1))))))))))))) (IDAtExp: (LongVId: e)))))))))))) (PARAtExp: (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: _id10574))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: _id10575))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: _id10576))))))))))))))))))))))))) (SEQStrDec: (SEQStrDec: (EMPTYStrDec:) (EMPTYStrDec:)) (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: explode))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10579))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: s))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: i))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: n)))))))))) (ATExp: (LETAtExp: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: h))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10577))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10578))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: j))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: res))))))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: true))) (ATExp: (IDAtExp: (LongVId: res)))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: false))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: h))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: -))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: j))) (ExpRow: (Lab: |2|) (ATExp: (SCONAtExp: (INTSCon: 1))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: ::))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: sub_))) (IDAtExp: (LongVId: s))))) (IDAtExp: (LongVId: j))))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: res))))))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: <))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: j))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: i)))))))))))))))) (PARAtExp: (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: _id10577))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: _id10578)))))))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: h))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: -))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: +))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: i))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: n))))))))) (ExpRow: (Lab: |2|) (ATExp: (SCONAtExp: (INTSCon: 1))))))))))))) (IDAtExp: (LongVId: nil)))))))))))) (PARAtExp: (ATExp: (PARAtExp: (ATExp: (IDAtExp: (LongVId: _id10579)))))))))))))))) (SEQStrDec: (SEQStrDec: (EMPTYStrDec:) (EMPTYStrDec:)) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: app))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10580))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10581))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: f))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: ss))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: foldl))) (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: x))) (FIELDPatRow: (Lab: |2|) (ATPat: (WILDCARDAtPat:)))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: f))) (IDAtExp: (LongVId: x)))))))))))) (RECORDAtExp:)))) (IDAtExp: (LongVId: ss)))))))))) (PARAtExp: (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: _id10580))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: _id10581))))))))))))))))))) (SEQStrDec: (DECStrDec: (EXCEPTIONDec: (NEWExBind: (VId: Span)))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: span))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10582))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: s))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: i))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: n)))))))) (FIELDPatRow: (Lab: |2|) (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: |s'|))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: |i'|))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: |n'|)))))))))))))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: true))) (RAISEExp: (ATExp: (IDAtExp: (LongVId: Span))))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: false))) (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: s))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: i))) (ExpRow: (Lab: |3|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: -))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: +))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: |i'|))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: |n'|))))))))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: i)))))))))))))))))))) (PARAtExp: (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: true))) (ATExp: (IDAtExp: (LongVId: true)))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: false))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: <>))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: s))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: |s'|))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: >))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: i))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: +))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: |i'|))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: |n'|)))))))))))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (ATExp: (IDAtExp: (LongVId: _id10582)))))))))))))) (SEQStrDec: (LOCALStrDec: (DECStrDec: (OPENDec: (LongStrId: Strbase-struct))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: splitl))) (ATExp: (IDAtExp: (LongVId: splitl)))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: splitr))) (ATExp: (IDAtExp: (LongVId: splitr)))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: dropl))) (ATExp: (IDAtExp: (LongVId: dropl)))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: dropr))) (ATExp: (IDAtExp: (LongVId: dropr)))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: takel))) (ATExp: (IDAtExp: (LongVId: takel)))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: taker))) (ATExp: (IDAtExp: (LongVId: taker)))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: translate))) (ATExp: (IDAtExp: (LongVId: translate)))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: tokens))) (ATExp: (IDAtExp: (LongVId: tokens)))))) (DECStrDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: fields))) (ATExp: (IDAtExp: (LongVId: fields))))))))))))))) (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: position))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10586))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10587))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (SCONAtPat: (STRINGSCon: ""))) (FIELDPatRow: (Lab: |2|) (ATPat: (PARAtPat: (ASPat: (VId: ss) (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: |s'|))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: i))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: n))))))))))))))) (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: |s'|))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: i))) (ExpRow: (Lab: |3|) (ATExp: (SCONAtExp: (INTSCon: 0)))))))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: ss)))))))) (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: s))) (FIELDPatRow: (Lab: |2|) (ATPat: (PARAtPat: (ASPat: (VId: ss) (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: |s'|))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: i))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: n))))))))))))))) (ATExp: (LETAtExp: (SEQDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: len1))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: -))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: String.size))) (IDAtExp: (LongVId: s))))) (ExpRow: (Lab: |2|) (ATExp: (SCONAtExp: (INTSCon: 1))))))))))) (SEQDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: eq))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10583))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10584))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: j))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: k))))))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: true))) (ATExp: (IDAtExp: (LongVId: true)))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: false))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: true))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: eq))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: +))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: j))) (ExpRow: (Lab: |2|) (ATExp: (SCONAtExp: (INTSCon: 1))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: +))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: k))) (ExpRow: (Lab: |2|) (ATExp: (SCONAtExp: (INTSCon: 1)))))))))))))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: false))) (ATExp: (IDAtExp: (LongVId: false))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: =))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: sub_))) (IDAtExp: (LongVId: s))))) (IDAtExp: (LongVId: j))))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: sub_))) (IDAtExp: (LongVId: |s'|))))) (IDAtExp: (LongVId: k))))))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: >=))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: j))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: len1)))))))))))))))) (PARAtExp: (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: _id10583))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: _id10584)))))))))))))))))) (SEQDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: stop))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: -))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: -))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: +))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: i))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: n))))))))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: len1))))))))) (ExpRow: (Lab: |2|) (ATExp: (SCONAtExp: (INTSCon: 1))))))))))) (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: cmp))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10585))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (IDAtPat: (LongVId: k))))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: true))) (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: ss))) (ExpRow: (Lab: |2|) (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: |s'|))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: +))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: i))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: n))))))))) (ExpRow: (Lab: |3|) (ATExp: (SCONAtExp: (INTSCon: 0))))))))))))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: false))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: true))) (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: |s'|))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: i))) (ExpRow: (Lab: |3|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: -))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: k))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: i)))))))))))))) (ExpRow: (Lab: |2|) (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: |s'|))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: k))) (ExpRow: (Lab: |3|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: -))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: n))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: -))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: k))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: i))))))))))))))))))))))))))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: false))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: cmp))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: +))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: k))) (ExpRow: (Lab: |2|) (ATExp: (SCONAtExp: (INTSCon: 1))))))))))))))))))) (PARAtExp: (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: true))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: eq))) (SCONAtExp: (INTSCon: 0))))) (IDAtExp: (LongVId: k)))))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: false))) (ATExp: (IDAtExp: (LongVId: false))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: =))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: sub_))) (IDAtExp: (LongVId: s))))) (IDAtExp: (LongVId: len1))))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: sub_))) (IDAtExp: (LongVId: |s'|))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: +))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: k))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: len1))))))))))))))))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: >))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: k))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: stop)))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (ATExp: (IDAtExp: (LongVId: _id10585)))))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: cmp))) (IDAtExp: (LongVId: i))))))))))))) (PARAtExp: (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: _id10586))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: _id10587))))))))))))))))))))))))) (SEQStrDec: (EMPTYStrDec:) (EMPTYStrDec:)))) (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: full))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10588))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (IDAtPat: (LongVId: s))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: substring))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: s))) (ExpRow: (Lab: |2|) (ATExp: (SCONAtExp: (INTSCon: 0))) (ExpRow: (Lab: |3|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: String.size))) (IDAtExp: (LongVId: s))))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (ATExp: (IDAtExp: (LongVId: _id10588)))))))))))))))) (IDSigExp: (SigId: SUBSTRING-sig))))))))))