(module Path-struct (planet chongkai/sml) (#%module-begin (Program: (SIGDECTopDec: (SigDec: (SigBind: (SigId: Path-sig) (SIGSigExp: (SEQSpec: (EXCEPTIONSpec: (ExDesc: (VId: Path))) (SEQSpec: (VALSpec: (ValDesc: (VId: parentArc) (CONTy: (Tyseq:) (LongTyCon: string-type)))) (SEQSpec: (VALSpec: (ValDesc: (VId: currentArc) (CONTy: (Tyseq:) (LongTyCon: string-type)))) (SEQSpec: (VALSpec: (ValDesc: (VId: fromString) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: string-type)) (RECORDTy: (TyRow: (Lab: isAbs) (CONTy: (Tyseq:) (LongTyCon: bool-type)) (TyRow: (Lab: vol) (CONTy: (Tyseq:) (LongTyCon: string-type)) (TyRow: (Lab: arcs) (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: string-type))) (LongTyCon: list-type))))))))) (SEQSpec: (VALSpec: (ValDesc: (VId: toString) (ARROWTy: (RECORDTy: (TyRow: (Lab: isAbs) (CONTy: (Tyseq:) (LongTyCon: bool-type)) (TyRow: (Lab: vol) (CONTy: (Tyseq:) (LongTyCon: string-type)) (TyRow: (Lab: arcs) (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: string-type))) (LongTyCon: list-type)))))) (CONTy: (Tyseq:) (LongTyCon: string-type))))) (SEQSpec: (VALSpec: (ValDesc: (VId: getVolume) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: string-type)) (CONTy: (Tyseq:) (LongTyCon: string-type))))) (SEQSpec: (VALSpec: (ValDesc: (VId: validVolume) (ARROWTy: (RECORDTy: (TyRow: (Lab: isAbs) (CONTy: (Tyseq:) (LongTyCon: bool-type)) (TyRow: (Lab: vol) (CONTy: (Tyseq:) (LongTyCon: string-type))))) (CONTy: (Tyseq:) (LongTyCon: bool-type))))) (SEQSpec: (VALSpec: (ValDesc: (VId: getParent) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: string-type)) (CONTy: (Tyseq:) (LongTyCon: string-type))))) (SEQSpec: (VALSpec: (ValDesc: (VId: isAbsolute) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: string-type)) (CONTy: (Tyseq:) (LongTyCon: bool-type))))) (SEQSpec: (VALSpec: (ValDesc: (VId: isRelative) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: string-type)) (CONTy: (Tyseq:) (LongTyCon: bool-type))))) (SEQSpec: (VALSpec: (ValDesc: (VId: mkAbsolute) (ARROWTy: (RECORDTy: (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: string-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: string-type))))) (CONTy: (Tyseq:) (LongTyCon: string-type))))) (SEQSpec: (VALSpec: (ValDesc: (VId: mkRelative) (ARROWTy: (RECORDTy: (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: string-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: string-type))))) (CONTy: (Tyseq:) (LongTyCon: string-type))))) (SEQSpec: (VALSpec: (ValDesc: (VId: concat) (ARROWTy: (RECORDTy: (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: string-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: string-type))))) (CONTy: (Tyseq:) (LongTyCon: string-type))))) (SEQSpec: (VALSpec: (ValDesc: (VId: mkCanonical) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: string-type)) (CONTy: (Tyseq:) (LongTyCon: string-type))))) (SEQSpec: (VALSpec: (ValDesc: (VId: isCanonical) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: string-type)) (CONTy: (Tyseq:) (LongTyCon: bool-type))))) (SEQSpec: (VALSpec: (ValDesc: (VId: splitDirFile) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: string-type)) (RECORDTy: (TyRow: (Lab: dir) (CONTy: (Tyseq:) (LongTyCon: string-type)) (TyRow: (Lab: file) (CONTy: (Tyseq:) (LongTyCon: string-type)))))))) (SEQSpec: (VALSpec: (ValDesc: (VId: joinDirFile) (ARROWTy: (RECORDTy: (TyRow: (Lab: dir) (CONTy: (Tyseq:) (LongTyCon: string-type)) (TyRow: (Lab: file) (CONTy: (Tyseq:) (LongTyCon: string-type))))) (CONTy: (Tyseq:) (LongTyCon: string-type))))) (SEQSpec: (VALSpec: (ValDesc: (VId: dir) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: string-type)) (CONTy: (Tyseq:) (LongTyCon: string-type))))) (SEQSpec: (VALSpec: (ValDesc: (VId: file) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: string-type)) (CONTy: (Tyseq:) (LongTyCon: string-type))))) (SEQSpec: (VALSpec: (ValDesc: (VId: splitBaseExt) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: string-type)) (RECORDTy: (TyRow: (Lab: base) (CONTy: (Tyseq:) (LongTyCon: string-type)) (TyRow: (Lab: ext) (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: string-type))) (LongTyCon: option-type)))))))) (SEQSpec: (VALSpec: (ValDesc: (VId: joinBaseExt) (ARROWTy: (RECORDTy: (TyRow: (Lab: base) (CONTy: (Tyseq:) (LongTyCon: string-type)) (TyRow: (Lab: ext) (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: string-type))) (LongTyCon: option-type))))) (CONTy: (Tyseq:) (LongTyCon: string-type))))) (SEQSpec: (VALSpec: (ValDesc: (VId: base) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: string-type)) (CONTy: (Tyseq:) (LongTyCon: string-type))))) (VALSpec: (ValDesc: (VId: ext) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: string-type)) (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: string-type))) (LongTyCon: option-type)))))))))))))))))))))))))))))) (STRDECTopDec: (STRUCTUREStrDec: (StrBind: (StrId: Path-struct) (SEALStrExp: (STRUCTStrExp: (SEQStrDec: (DECStrDec: (OPENDec: (LongStrId: OS-struct))) (SEQStrDec: (DECStrDec: (EXCEPTIONDec: (NEWExBind: (VId: Path)))) (LOCALStrDec: (SEQStrDec: (SEQStrDec: (DECStrDec: (EMPTYDec:)) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: sub))) (ATExp: (IDAtExp: (LongVId: String.sub)))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: substring))) (ATExp: (IDAtExp: (LongVId: String.extract)))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: slash))) (ATExp: (SCONAtExp: (STRINGSCon: "/")))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: volslash))) (ATExp: (SCONAtExp: (STRINGSCon: "/")))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: isslash))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10542))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (IDAtPat: (LongVId: c))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: =))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: c))) (ExpRow: (Lab: |2|) (ATExp: (SCONAtExp: (CHARSCon: #\/)))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (ATExp: (IDAtExp: (LongVId: _id10542)))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: validVol))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10543))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (IDAtPat: (LongVId: s))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: =))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: s))) (ExpRow: (Lab: |2|) (ATExp: (SCONAtExp: (STRINGSCon: "")))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (ATExp: (IDAtExp: (LongVId: _id10543)))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: getVol))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10544))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (IDAtPat: (LongVId: s))))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: true))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: SOME))) (SCONAtExp: (STRINGSCon: "")))))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: false))) (ATExp: (IDAtExp: (LongVId: NONE))))))))) (PARAtExp: (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: true))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: isslash))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: sub))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: s))) (ExpRow: (Lab: |2|) (ATExp: (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: size))) (IDAtExp: (LongVId: s))))) (ExpRow: (Lab: |2|) (ATExp: (SCONAtExp: (INTSCon: 1)))))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (ATExp: (IDAtExp: (LongVId: _id10544)))))))))))))) (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: splitabsvolrest))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10545))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (IDAtPat: (LongVId: s))))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: true))) (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: true))) (ExpRow: (Lab: |2|) (ATExp: (SCONAtExp: (STRINGSCon: ""))) (ExpRow: (Lab: |3|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: substring))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: s))) (ExpRow: (Lab: |2|) (ATExp: (SCONAtExp: (INTSCon: 1))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: NONE)))))))))))))))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: false))) (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: false))) (ExpRow: (Lab: |2|) (ATExp: (SCONAtExp: (STRINGSCon: ""))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: s)))))))))))))) (PARAtExp: (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: true))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: isslash))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: sub))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: s))) (ExpRow: (Lab: |2|) (ATExp: (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: size))) (IDAtExp: (LongVId: s))))) (ExpRow: (Lab: |2|) (ATExp: (SCONAtExp: (INTSCon: 1)))))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (ATExp: (IDAtExp: (LongVId: _id10545)))))))))))))))))))))) (SEQStrDec: (EMPTYStrDec:) (EMPTYStrDec:))) (SEQStrDec: (SEQStrDec: (SEQStrDec: (SEQStrDec: (SEQStrDec: (SEQStrDec: (SEQStrDec: (SEQStrDec: (SEQStrDec: (SEQStrDec: (SEQStrDec: (SEQStrDec: (SEQStrDec: (SEQStrDec: (SEQStrDec: (SEQStrDec: (SEQStrDec: (SEQStrDec: (SEQStrDec: (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: parentArc))) (ATExp: (SCONAtExp: (STRINGSCon: "..")))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: currentArc))) (ATExp: (SCONAtExp: (STRINGSCon: ".")))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: isAbsolute))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10547))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (IDAtPat: (LongVId: p))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: _id10546))) (DOTSPatRow:)))) (ATExp: (IDAtExp: (LongVId: _id10546)))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: splitabsvolrest))) (IDAtExp: (LongVId: p)))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (ATExp: (IDAtExp: (LongVId: _id10547)))))))))))))) (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: isRelative))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10548))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (IDAtPat: (LongVId: p))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: not))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: isAbsolute))) (IDAtExp: (LongVId: p)))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (ATExp: (IDAtExp: (LongVId: _id10548))))))))))))))))) (SEQStrDec: (SEQStrDec: (EMPTYStrDec:) (EMPTYStrDec:)) (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: fromString))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10549))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (IDAtPat: (LongVId: p))))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: false))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: v))) (FIELDPatRow: (Lab: |3|) (ATPat: (SCONAtPat: (STRINGSCon: "")))))))) (ATExp: (RECORDAtExp: (ExpRow: (Lab: isAbs) (ATExp: (IDAtExp: (LongVId: false))) (ExpRow: (Lab: vol) (ATExp: (IDAtExp: (LongVId: v))) (ExpRow: (Lab: arcs) (ATExp: (IDAtExp: (LongVId: nil))))))))) (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: isAbs))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: v))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: rest)))))))) (ATExp: (RECORDAtExp: (ExpRow: (Lab: isAbs) (ATExp: (IDAtExp: (LongVId: isAbs))) (ExpRow: (Lab: vol) (ATExp: (IDAtExp: (LongVId: v))) (ExpRow: (Lab: arcs) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: String.fields))) (IDAtExp: (LongVId: isslash))))) (IDAtExp: (LongVId: rest)))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: splitabsvolrest))) (IDAtExp: (LongVId: p)))))))))))) (PARAtExp: (ATExp: (PARAtExp: (ATExp: (IDAtExp: (LongVId: _id10549)))))))))))))))) (SEQStrDec: (SEQStrDec: (EMPTYStrDec:) (EMPTYStrDec:)) (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: isRoot))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10550))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (IDAtPat: (LongVId: p))))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: true))) (FIELDPatRow: (Lab: |2|) (ATPat: (WILDCARDAtPat:)) (FIELDPatRow: (Lab: |3|) (ATPat: (SCONAtPat: (STRINGSCon: "")))))))) (ATExp: (IDAtExp: (LongVId: true)))) (Match: (Mrule: (ATPat: (WILDCARDAtPat:)) (ATExp: (IDAtExp: (LongVId: false))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: splitabsvolrest))) (IDAtExp: (LongVId: p)))))))))))) (PARAtExp: (ATExp: (PARAtExp: (ATExp: (IDAtExp: (LongVId: _id10550)))))))))))))))) (SEQStrDec: (SEQStrDec: (EMPTYStrDec:) (EMPTYStrDec:)) (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: getVolume))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10552))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (IDAtPat: (LongVId: p))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: _id10551))) (DOTSPatRow:)))) (ATExp: (IDAtExp: (LongVId: _id10551)))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: splitabsvolrest))) (IDAtExp: (LongVId: p)))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (ATExp: (IDAtExp: (LongVId: _id10552)))))))))))))))) (SEQStrDec: (SEQStrDec: (EMPTYStrDec:) (EMPTYStrDec:)) (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: validVolume))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10553))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: isAbs) (ATPat: (IDAtPat: (LongVId: isAbs))) (FIELDPatRow: (Lab: vol) (ATPat: (IDAtPat: (LongVId: vol))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: validVol))) (IDAtExp: (LongVId: vol)))))))))) (PARAtExp: (ATExp: (PARAtExp: (ATExp: (IDAtExp: (LongVId: _id10553)))))))))))))))) (SEQStrDec: (SEQStrDec: (EMPTYStrDec:) (EMPTYStrDec:)) (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: toString))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10556))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (ASPat: (VId: path) (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: isAbs) (ATPat: (IDAtPat: (LongVId: isAbs))) (FIELDPatRow: (Lab: vol) (ATPat: (IDAtPat: (LongVId: vol))) (FIELDPatRow: (Lab: arcs) (ATPat: (IDAtPat: (LongVId: arcs))))))))))))) (ATExp: (LETAtExp: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: h))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10554))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10555))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: nil))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: res))))))) (ATExp: (IDAtExp: (LongVId: res)))) (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (PARAtPat: (ATPat: (PARAtPat: (CONPat: (LongVId: ::) (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: a))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: ar))))))))))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: res))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: h))) (IDAtExp: (LongVId: ar))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: ::))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: a))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: ::))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: slash))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: res))))))))))))))))))))))))) (PARAtExp: (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: _id10554))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: _id10555)))))))))))))))))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: true))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: false))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: nil))))))) (ATExp: (IDAtExp: (LongVId: vol)))) (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: false))) (FIELDPatRow: (Lab: |2|) (ATPat: (PARAtPat: (CONPat: (LongVId: ::) (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (SCONAtPat: (STRINGSCon: ""))) (FIELDPatRow: (Lab: |2|) (ATPat: (WILDCARDAtPat:)))))))))))) (RAISEExp: (ATExp: (IDAtExp: (LongVId: Path))))) (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: false))) (FIELDPatRow: (Lab: |2|) (ATPat: (PARAtPat: (CONPat: (LongVId: ::) (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: a1))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: arest))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: String.concat))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: ::))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: vol))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: List.rev))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: h))) (IDAtExp: (LongVId: arest))))) (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: ::))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: a1))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: nil)))))))))))))))))))))))))) (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: true))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: nil))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: ^))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: vol))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: volslash)))))))))) (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: true))) (FIELDPatRow: (Lab: |2|) (ATPat: (PARAtPat: (CONPat: (LongVId: ::) (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: a1))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: arest))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: String.concat))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: List.rev))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: h))) (IDAtExp: (LongVId: arest))))) (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: ::))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: a1))) (ExpRow: (Lab: |2|) (APPExp: (ATExp: (IDAtExp: (LongVId: ::))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: volslash))) (ExpRow: (Lab: |2|) (APPExp: (ATExp: (IDAtExp: (LongVId: ::))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: vol))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: nil)))))))))))))))))))))))))))))))))))) (PARAtExp: (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: isAbs))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: arcs)))))))))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: false))) (RAISEExp: (ATExp: (IDAtExp: (LongVId: Path)))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: validVolume))) (RECORDAtExp: (ExpRow: (Lab: isAbs) (ATExp: (IDAtExp: (LongVId: isAbs))) (ExpRow: (Lab: vol) (ATExp: (IDAtExp: (LongVId: vol)))))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (ATExp: (IDAtExp: (LongVId: _id10556)))))))))))))))) (SEQStrDec: (SEQStrDec: (EMPTYStrDec:) (EMPTYStrDec:)) (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: concat))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10558))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: p1))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: p2))))))))) (ATExp: (LETAtExp: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: stripslash))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10557))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (IDAtPat: (LongVId: path))))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: true))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: substring))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: path))) (ExpRow: (Lab: |2|) (ATExp: (SCONAtExp: (INTSCon: 0))) (ExpRow: (Lab: |3|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: SOME))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: -))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: size))) (IDAtExp: (LongVId: path))))) (ExpRow: (Lab: |2|) (ATExp: (SCONAtExp: (INTSCon: 1))))))))))))))))))))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: false))) (ATExp: (IDAtExp: (LongVId: path))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: isslash))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: sub))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: path))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: -))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: size))) (IDAtExp: (LongVId: path))))) (ExpRow: (Lab: |2|) (ATExp: (SCONAtExp: (INTSCon: 1)))))))))))))))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (ATExp: (IDAtExp: (LongVId: _id10557))))))))))))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: true))) (RAISEExp: (ATExp: (IDAtExp: (LongVId: Path))))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: false))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: false))) (FIELDPatRow: (Lab: |2|) (ATPat: (SCONAtPat: (STRINGSCon: ""))) (FIELDPatRow: (Lab: |3|) (ATPat: (SCONAtPat: (STRINGSCon: "")))))))) (ATExp: (IDAtExp: (LongVId: p2)))) (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: false))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: v))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: path)))))))) (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: v))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: stripslash))) (IDAtExp: (LongVId: path))))))))))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: slash))))))))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: p2)))))))))) (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: true))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: v))) (FIELDPatRow: (Lab: |3|) (ATPat: (SCONAtPat: (STRINGSCon: "")))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: ^))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: ^))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: v))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: volslash))))))))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: p2)))))))))) (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: true))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: v))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: path)))))))) (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: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: ^))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: v))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: volslash))))))))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: stripslash))) (IDAtExp: (LongVId: path))))))))))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: slash))))))))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: p2))))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: splitabsvolrest))) (IDAtExp: (LongVId: p1))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: isAbsolute))) (IDAtExp: (LongVId: p2)))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (ATExp: (IDAtExp: (LongVId: _id10558)))))))))))))))) (SEQStrDec: (SEQStrDec: (EMPTYStrDec:) (EMPTYStrDec:)) (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: getParent))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10560))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (IDAtPat: (LongVId: p))))) (ATExp: (LETAtExp: (SEQDec: (OPENDec: (LongStrId: List-struct)) (SEQDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: isAbs) (ATPat: (IDAtPat: (LongVId: isAbs))) (FIELDPatRow: (Lab: vol) (ATPat: (IDAtPat: (LongVId: vol))) (FIELDPatRow: (Lab: arcs) (ATPat: (IDAtPat: (LongVId: arcs)))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: fromString))) (IDAtExp: (LongVId: p))))))) (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: getpar))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10559))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (IDAtPat: (LongVId: xs))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: rev))) (PARAtExp: (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: nil))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: ::))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: parentArc))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: nil)))))))))) (Match: (Mrule: (ATPat: (PARAtPat: (CONPat: (LongVId: ::) (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (SCONAtPat: (STRINGSCon: ""))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: nil))))))))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: true))) (ATExp: (IDAtExp: (LongVId: nil)))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: false))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: ::))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: parentArc))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: nil))))))))))))))) (PARAtExp: (ATExp: (IDAtExp: (LongVId: isAbs)))))) (Match: (Mrule: (ATPat: (PARAtPat: (CONPat: (LongVId: ::) (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (SCONAtPat: (STRINGSCon: ""))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: revrest))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: ::))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: parentArc))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: revrest)))))))))) (Match: (Mrule: (ATPat: (PARAtPat: (CONPat: (LongVId: ::) (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (SCONAtPat: (STRINGSCon: "."))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: revrest))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: ::))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: parentArc))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: revrest)))))))))) (Match: (Mrule: (ATPat: (PARAtPat: (CONPat: (LongVId: ::) (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (SCONAtPat: (STRINGSCon: ".."))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: revrest))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: ::))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: parentArc))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: ::))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: parentArc))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: revrest)))))))))))))))) (Match: (Mrule: (ATPat: (PARAtPat: (CONPat: (LongVId: ::) (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: last))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: revrest))))))))) (ATExp: (IDAtExp: (LongVId: revrest))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: rev))) (IDAtExp: (LongVId: xs)))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (ATExp: (IDAtExp: (LongVId: _id10559))))))))))))))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: nil))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: true))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: toString))) (RECORDAtExp: (ExpRow: (Lab: isAbs) (ATExp: (IDAtExp: (LongVId: true))) (ExpRow: (Lab: vol) (ATExp: (IDAtExp: (LongVId: vol))) (ExpRow: (Lab: arcs) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: ::))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (SCONAtExp: (STRINGSCon: ""))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: nil))))))))))))))))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: false))) (ATExp: (IDAtExp: (LongVId: currentArc))))))))) (PARAtExp: (ATExp: (IDAtExp: (LongVId: isAbs)))))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: arcs))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: toString))) (RECORDAtExp: (ExpRow: (Lab: isAbs) (ATExp: (IDAtExp: (LongVId: isAbs))) (ExpRow: (Lab: vol) (ATExp: (IDAtExp: (LongVId: vol))) (ExpRow: (Lab: arcs) (ATExp: (IDAtExp: (LongVId: arcs)))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: getpar))) (IDAtExp: (LongVId: arcs)))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (ATExp: (IDAtExp: (LongVId: _id10560)))))))))))))))) (SEQStrDec: (SEQStrDec: (EMPTYStrDec:) (EMPTYStrDec:)) (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: mkCanonical))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10565))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (IDAtPat: (LongVId: p))))) (ATExp: (LETAtExp: (SEQDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: isAbs) (ATPat: (IDAtPat: (LongVId: isAbs))) (FIELDPatRow: (Lab: vol) (ATPat: (IDAtPat: (LongVId: vol))) (FIELDPatRow: (Lab: arcs) (ATPat: (IDAtPat: (LongVId: arcs)))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: fromString))) (IDAtExp: (LongVId: p))))))) (SEQDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: backup))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10561))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (IDAtPat: (LongVId: nil))))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: true))) (ATExp: (IDAtExp: (LongVId: nil)))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: false))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: ::))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: parentArc))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: nil))))))))))))))) (PARAtExp: (ATExp: (IDAtExp: (LongVId: isAbs)))))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (CONPat: (LongVId: ::) (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (SCONAtPat: (STRINGSCon: ".."))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: res))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: ::))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: parentArc))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: ::))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: parentArc))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: res)))))))))))))))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (CONPat: (LongVId: ::) (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (WILDCARDAtPat:)) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: res))))))))))))) (ATExp: (IDAtExp: (LongVId: res)))))))))) (PARAtExp: (ATExp: (PARAtExp: (ATExp: (IDAtExp: (LongVId: _id10561))))))))))))) (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: reduce))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10564))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (IDAtPat: (LongVId: arcs))))) (ATExp: (LETAtExp: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: h))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10562))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10563))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: nil))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: nil))))))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: true))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: ::))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (SCONAtExp: (STRINGSCon: ""))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: nil)))))))))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: false))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: ::))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: currentArc))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: nil))))))))))))))) (PARAtExp: (ATExp: (IDAtExp: (LongVId: isAbs)))))) (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: nil))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: res))))))) (ATExp: (IDAtExp: (LongVId: res)))) (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (PARAtPat: (ATPat: (PARAtPat: (CONPat: (LongVId: ::) (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (SCONAtPat: (STRINGSCon: ""))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: ar))))))))))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: res))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: h))) (IDAtExp: (LongVId: ar))))) (IDAtExp: (LongVId: res)))))) (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (PARAtPat: (ATPat: (PARAtPat: (CONPat: (LongVId: ::) (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (SCONAtPat: (STRINGSCon: "."))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: ar))))))))))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: res))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: h))) (IDAtExp: (LongVId: ar))))) (IDAtExp: (LongVId: res)))))) (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (PARAtPat: (ATPat: (PARAtPat: (CONPat: (LongVId: ::) (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (SCONAtPat: (STRINGSCon: ".."))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: ar))))))))))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: res))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: h))) (IDAtExp: (LongVId: ar))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: backup))) (IDAtExp: (LongVId: res)))))))))) (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (PARAtPat: (ATPat: (PARAtPat: (CONPat: (LongVId: ::) (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: a1))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: ar))))))))))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: res))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: h))) (IDAtExp: (LongVId: ar))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: ::))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: a1))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: res))))))))))))))))))))))) (PARAtExp: (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: _id10562))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: _id10563)))))))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: h))) (IDAtExp: (LongVId: arcs))))) (IDAtExp: (LongVId: nil)))))))))))) (PARAtExp: (ATExp: (PARAtExp: (ATExp: (IDAtExp: (LongVId: _id10564))))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: toString))) (RECORDAtExp: (ExpRow: (Lab: isAbs) (ATExp: (IDAtExp: (LongVId: isAbs))) (ExpRow: (Lab: vol) (ATExp: (IDAtExp: (LongVId: vol))) (ExpRow: (Lab: arcs) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: List.rev))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: reduce))) (IDAtExp: (LongVId: arcs))))))))))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (ATExp: (IDAtExp: (LongVId: _id10565)))))))))))))))) (SEQStrDec: (SEQStrDec: (EMPTYStrDec:) (EMPTYStrDec:)) (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: parentize))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10566))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (IDAtPat: (LongVId: nil))))) (ATExp: (IDAtExp: (LongVId: nil)))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (CONPat: (LongVId: ::) (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (WILDCARDAtPat:)) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: ar))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: ::))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: parentArc))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: parentize))) (IDAtExp: (LongVId: ar))))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (ATExp: (IDAtExp: (LongVId: _id10566)))))))))))))))) (SEQStrDec: (SEQStrDec: (EMPTYStrDec:) (EMPTYStrDec:)) (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: mkRelative))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10569))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: p1))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: p2))))))))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (WILDCARDAtPat:)) (FIELDPatRow: (Lab: |2|) (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: isAbs) (ATPat: (IDAtPat: (LongVId: false))) (DOTSPatRow:)))))))) (RAISEExp: (ATExp: (IDAtExp: (LongVId: Path))))) (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: isAbs) (ATPat: (IDAtPat: (LongVId: false))) (DOTSPatRow:)))) (FIELDPatRow: (Lab: |2|) (ATPat: (WILDCARDAtPat:)))))) (ATExp: (IDAtExp: (LongVId: p1)))) (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: vol) (ATPat: (IDAtPat: (LongVId: vol1))) (FIELDPatRow: (Lab: arcs) (ATPat: (IDAtPat: (LongVId: arcs1))) (DOTSPatRow:))))) (FIELDPatRow: (Lab: |2|) (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: vol) (ATPat: (IDAtPat: (LongVId: vol2))) (FIELDPatRow: (Lab: arcs) (ATPat: (IDAtPat: (LongVId: arcs2))) (DOTSPatRow:))))))))) (ATExp: (LETAtExp: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: h))) (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: nil))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: nil))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: ::))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (SCONAtExp: (STRINGSCon: "."))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: nil)))))))))) (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: a1))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: nil))))))) (ATExp: (IDAtExp: (LongVId: a1)))) (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: nil))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: a2))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: parentize))) (IDAtExp: (LongVId: a2)))))) (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (PARAtPat: (ASPat: (VId: a1) (ATPat: (PARAtPat: (ATPat: (PARAtPat: (CONPat: (LongVId: ::) (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: a11))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: a1r)))))))))))))) (FIELDPatRow: (Lab: |2|) (ATPat: (PARAtPat: (ASPat: (VId: a2) (ATPat: (PARAtPat: (ATPat: (PARAtPat: (CONPat: (LongVId: ::) (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: a21))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: a2r)))))))))))))))))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: true))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: h))) (IDAtExp: (LongVId: a1r))))) (IDAtExp: (LongVId: a2r)))))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: false))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: @))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: parentize))) (IDAtExp: (LongVId: a2))))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: true))) (ATExp: (IDAtExp: (LongVId: nil)))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: false))) (ATExp: (IDAtExp: (LongVId: a1))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: =))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: arcs1))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: ::))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (SCONAtExp: (STRINGSCon: ""))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: nil))))))))))))))))))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: =))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: a11))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: a21))))))))))))))))))) (PARAtExp: (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: _id10567))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: _id10568)))))))))))))))))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: true))) (RAISEExp: (ATExp: (IDAtExp: (LongVId: Path))))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: false))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: toString))) (RECORDAtExp: (ExpRow: (Lab: isAbs) (ATExp: (IDAtExp: (LongVId: false))) (ExpRow: (Lab: vol) (ATExp: (SCONAtExp: (STRINGSCon: ""))) (ExpRow: (Lab: arcs) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: h))) (IDAtExp: (LongVId: arcs1))))) (IDAtExp: (LongVId: arcs2)))))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: <>))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: vol1))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: vol2)))))))))))))))))))) (PARAtExp: (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: fromString))) (IDAtExp: (LongVId: p1))))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: fromString))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: mkCanonical))) (IDAtExp: (LongVId: p2)))))))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (ATExp: (IDAtExp: (LongVId: _id10569)))))))))))))))) (SEQStrDec: (SEQStrDec: (EMPTYStrDec:) (EMPTYStrDec:)) (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: mkAbsolute))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10570))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: p1))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: p2))))))))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: true))) (RAISEExp: (ATExp: (IDAtExp: (LongVId: Path))))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: false))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: true))) (ATExp: (IDAtExp: (LongVId: p1)))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: false))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: mkCanonical))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: concat))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: p2))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: p1))))))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: isAbsolute))) (IDAtExp: (LongVId: p1))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: isRelative))) (IDAtExp: (LongVId: p2)))))))))))) (PARAtExp: (ATExp: (PARAtExp: (ATExp: (IDAtExp: (LongVId: _id10570)))))))))))))))) (SEQStrDec: (SEQStrDec: (EMPTYStrDec:) (EMPTYStrDec:)) (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: isCanonical))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10571))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (IDAtPat: (LongVId: p))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: =))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: mkCanonical))) (IDAtExp: (LongVId: p))))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: p)))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (ATExp: (IDAtExp: (LongVId: _id10571)))))))))))))))) (SEQStrDec: (SEQStrDec: (EMPTYStrDec:) (EMPTYStrDec:)) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: joinDirFile))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10572))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: dir) (ATPat: (IDAtPat: (LongVId: dir))) (FIELDPatRow: (Lab: file) (ATPat: (IDAtPat: (LongVId: file))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: concat))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: dir))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: file)))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (ATExp: (IDAtExp: (LongVId: _id10572)))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: splitDirFile))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10573))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (IDAtPat: (LongVId: p))))) (ATExp: (LETAtExp: (SEQDec: (OPENDec: (LongStrId: List-struct)) (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: isAbs) (ATPat: (IDAtPat: (LongVId: isAbs))) (FIELDPatRow: (Lab: vol) (ATPat: (IDAtPat: (LongVId: vol))) (FIELDPatRow: (Lab: arcs) (ATPat: (IDAtPat: (LongVId: arcs)))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: fromString))) (IDAtExp: (LongVId: p)))))))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: nil))) (ATExp: (RECORDAtExp: (ExpRow: (Lab: dir) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: toString))) (RECORDAtExp: (ExpRow: (Lab: isAbs) (ATExp: (IDAtExp: (LongVId: isAbs))) (ExpRow: (Lab: vol) (ATExp: (IDAtExp: (LongVId: vol))) (ExpRow: (Lab: arcs) (ATExp: (IDAtExp: (LongVId: nil)))))))))) (ExpRow: (Lab: file) (ATExp: (SCONAtExp: (STRINGSCon: "")))))))) (Match: (Mrule: (ATPat: (PARAtPat: (CONPat: (LongVId: ::) (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: arcn))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: farcs))))))))) (ATExp: (RECORDAtExp: (ExpRow: (Lab: dir) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: toString))) (RECORDAtExp: (ExpRow: (Lab: isAbs) (ATExp: (IDAtExp: (LongVId: isAbs))) (ExpRow: (Lab: vol) (ATExp: (IDAtExp: (LongVId: vol))) (ExpRow: (Lab: arcs) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: rev))) (IDAtExp: (LongVId: farcs)))))))))))) (ExpRow: (Lab: file) (ATExp: (IDAtExp: (LongVId: arcn))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: rev))) (IDAtExp: (LongVId: arcs)))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (ATExp: (IDAtExp: (LongVId: _id10573)))))))))))))) (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: dir))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10575))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (IDAtPat: (LongVId: s))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: dir) (ATPat: (IDAtPat: (LongVId: _id10574))) (DOTSPatRow:)))) (ATExp: (IDAtExp: (LongVId: _id10574)))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: splitDirFile))) (IDAtExp: (LongVId: s)))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (ATExp: (IDAtExp: (LongVId: _id10575)))))))))))))))))) (SEQStrDec: (SEQStrDec: (EMPTYStrDec:) (EMPTYStrDec:)) (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: file))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10577))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (IDAtPat: (LongVId: s))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: file) (ATPat: (IDAtPat: (LongVId: _id10576))) (DOTSPatRow:)))) (ATExp: (IDAtExp: (LongVId: _id10576)))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: splitDirFile))) (IDAtExp: (LongVId: s)))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (ATExp: (IDAtExp: (LongVId: _id10577)))))))))))))))) (SEQStrDec: (SEQStrDec: (EMPTYStrDec:) (EMPTYStrDec:)) (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: joinBaseExt))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10578))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: base) (ATPat: (IDAtPat: (LongVId: base))) (FIELDPatRow: (Lab: ext) (ATPat: (IDAtPat: (LongVId: NONE))))))))) (ATExp: (IDAtExp: (LongVId: base)))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: base) (ATPat: (IDAtPat: (LongVId: base))) (FIELDPatRow: (Lab: ext) (ATPat: (PARAtPat: (CONPat: (LongVId: SOME) (SCONAtPat: (STRINGSCon: ""))))))))))) (ATExp: (IDAtExp: (LongVId: base)))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: base) (ATPat: (IDAtPat: (LongVId: base))) (FIELDPatRow: (Lab: ext) (ATPat: (PARAtPat: (CONPat: (LongVId: SOME) (IDAtPat: (LongVId: ex))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: ^))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: ^))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: base))) (ExpRow: (Lab: |2|) (ATExp: (SCONAtExp: (STRINGSCon: "."))))))))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: ex)))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (ATExp: (IDAtExp: (LongVId: _id10578)))))))))))))))) (SEQStrDec: (SEQStrDec: (EMPTYStrDec:) (EMPTYStrDec:)) (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: splitBaseExt))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10579))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (IDAtPat: (LongVId: s))))) (ATExp: (LETAtExp: (SEQDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: dir) (ATPat: (IDAtPat: (LongVId: dir))) (FIELDPatRow: (Lab: file) (ATPat: (IDAtPat: (LongVId: file))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: splitDirFile))) (IDAtExp: (LongVId: s))))))) (SEQDec: (OPENDec: (LongStrId: Substring-struct)) (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: fst))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: snd))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: splitr))) (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: c))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: <>))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: c))) (ExpRow: (Lab: |2|) (ATExp: (SCONAtExp: (CHARSCon: #\.)))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: all))) (IDAtExp: (LongVId: file))))))))))))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: true))) (ATExp: (RECORDAtExp: (ExpRow: (Lab: base) (ATExp: (IDAtExp: (LongVId: s))) (ExpRow: (Lab: ext) (ATExp: (IDAtExp: (LongVId: NONE)))))))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: false))) (ATExp: (RECORDAtExp: (ExpRow: (Lab: base) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: joinDirFile))) (RECORDAtExp: (ExpRow: (Lab: dir) (ATExp: (IDAtExp: (LongVId: dir))) (ExpRow: (Lab: file) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: string))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: trimr))) (SCONAtExp: (INTSCon: 1))))) (IDAtExp: (LongVId: fst))))))))))))))) (ExpRow: (Lab: ext) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: SOME))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: string))) (IDAtExp: (LongVId: snd))))))))))))))))))) (PARAtExp: (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: (IDAtExp: (LongVId: true)))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: false))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: =))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: size))) (IDAtExp: (LongVId: fst))))) (ExpRow: (Lab: |2|) (ATExp: (SCONAtExp: (INTSCon: 1))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: isEmpty))) (IDAtExp: (LongVId: fst))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: isEmpty))) (IDAtExp: (LongVId: snd)))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (ATExp: (IDAtExp: (LongVId: _id10579)))))))))))))))) (SEQStrDec: (SEQStrDec: (EMPTYStrDec:) (EMPTYStrDec:)) (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: ext))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10581))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (IDAtPat: (LongVId: s))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: ext) (ATPat: (IDAtPat: (LongVId: _id10580))) (DOTSPatRow:)))) (ATExp: (IDAtExp: (LongVId: _id10580)))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: splitBaseExt))) (IDAtExp: (LongVId: s)))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (ATExp: (IDAtExp: (LongVId: _id10581)))))))))))))))) (SEQStrDec: (SEQStrDec: (EMPTYStrDec:) (EMPTYStrDec:)) (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: base))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10583))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (IDAtPat: (LongVId: s))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: base) (ATPat: (IDAtPat: (LongVId: _id10582))) (DOTSPatRow:)))) (ATExp: (IDAtExp: (LongVId: _id10582)))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: splitBaseExt))) (IDAtExp: (LongVId: s)))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (ATExp: (IDAtExp: (LongVId: _id10583)))))))))))))))) (SEQStrDec: (EMPTYStrDec:) (EMPTYStrDec:))))))) (IDSigExp: (SigId: Path-sig))))))))))