(module BinaryMapFn-functor (planet chongkai/sml) (#%module-begin (Program: (FUNDECTopDec: (FunDec: (FunBind: (FunId: BinaryMapFn-functor) (StrId: K-struct) (IDSigExp: (SigId: ORD_KEY-sig)) (COLONStrExp: (STRUCTStrExp: (SEQStrDec: (STRUCTUREStrDec: (StrBind: (StrId: Key-struct) (IDStrExp: (LongStrId: K-struct)))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: wt))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (COLONPat: (ATPat: (IDAtPat: (LongVId: i))) (CONTy: (Tyseq:) (LongTyCon: int-type))))))) (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: i))))))))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: i)))))))))))))))) (SEQStrDec: (DECStrDec: (DATATYPEDec: (DatBind: (TyVarseq: (TyVar: |'a|)) (TyCon: map-type) (ConBind: (VId: E) (ConBind: (VId: T) (RECORDTy: (TyRow: (Lab: key) (CONTy: (Tyseq:) (LongTyCon: K.ord_key-type)) (TyRow: (Lab: value) (VARTy: (TyVar: |'a|)) (TyRow: (Lab: cnt) (CONTy: (Tyseq:) (LongTyCon: int-type)) (TyRow: (Lab: left) (CONTy: (Tyseq: (VARTy: (TyVar: |'a|))) (LongTyCon: map-type)) (TyRow: (Lab: right) (CONTy: (Tyseq: (VARTy: (TyVar: |'a|))) (LongTyCon: map-type))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: empty))) (ATExp: (IDAtExp: (LongVId: E)))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: isEmpty))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (IDAtPat: (LongVId: E))))) (ATExp: (IDAtExp: (LongVId: true)))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (WILDCARDAtPat:)))) (ATExp: (IDAtExp: (LongVId: false))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: numItems))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (IDAtPat: (LongVId: E))))) (ATExp: (SCONAtExp: (INTSCon: 0)))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (CONPat: (LongVId: T) (RECORDAtPat: (FIELDPatRow: (Lab: cnt) (ATPat: (IDAtPat: (LongVId: cnt))) (DOTSPatRow:)))))))))) (ATExp: (IDAtExp: (LongVId: cnt))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: first))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (IDAtPat: (LongVId: E))))) (ATExp: (IDAtExp: (LongVId: NONE)))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (CONPat: (LongVId: T) (RECORDAtPat: (FIELDPatRow: (Lab: value) (ATPat: (IDAtPat: (LongVId: value))) (FIELDPatRow: (Lab: left) (ATPat: (IDAtPat: (LongVId: E))) (DOTSPatRow:))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: SOME))) (IDAtExp: (LongVId: value)))))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (CONPat: (LongVId: T) (RECORDAtPat: (FIELDPatRow: (Lab: left) (ATPat: (IDAtPat: (LongVId: left))) (DOTSPatRow:)))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: first))) (IDAtExp: (LongVId: left)))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: firsti))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (IDAtPat: (LongVId: E))))) (ATExp: (IDAtExp: (LongVId: NONE)))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (CONPat: (LongVId: T) (RECORDAtPat: (FIELDPatRow: (Lab: key) (ATPat: (IDAtPat: (LongVId: key))) (FIELDPatRow: (Lab: value) (ATPat: (IDAtPat: (LongVId: value))) (FIELDPatRow: (Lab: left) (ATPat: (IDAtPat: (LongVId: E))) (DOTSPatRow:)))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: SOME))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: key))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: value)))))))))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (CONPat: (LongVId: T) (RECORDAtPat: (FIELDPatRow: (Lab: left) (ATPat: (IDAtPat: (LongVId: left))) (DOTSPatRow:)))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: firsti))) (IDAtExp: (LongVId: left)))))))))))))) (SEQStrDec: (LOCALStrDec: (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: N))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: k))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: v))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: E))) (FIELDPatRow: (Lab: |4|) (ATPat: (IDAtPat: (LongVId: E))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: T))) (RECORDAtExp: (ExpRow: (Lab: key) (ATExp: (IDAtExp: (LongVId: k))) (ExpRow: (Lab: value) (ATExp: (IDAtExp: (LongVId: v))) (ExpRow: (Lab: cnt) (ATExp: (SCONAtExp: (INTSCon: 1))) (ExpRow: (Lab: left) (ATExp: (IDAtExp: (LongVId: E))) (ExpRow: (Lab: right) (ATExp: (IDAtExp: (LongVId: E))))))))))))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: k))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: v))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: E))) (FIELDPatRow: (Lab: |4|) (ASPat: (VId: r) (ATPat: (PARAtPat: (CONPat: (LongVId: T) (IDAtPat: (LongVId: n)))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: T))) (RECORDAtExp: (ExpRow: (Lab: key) (ATExp: (IDAtExp: (LongVId: k))) (ExpRow: (Lab: value) (ATExp: (IDAtExp: (LongVId: v))) (ExpRow: (Lab: cnt) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: +))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (SCONAtExp: (INTSCon: 1))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: cnt) (ATPat: (IDAtPat: (LongVId: _id1))) (DOTSPatRow:)))) (ATExp: (IDAtExp: (LongVId: _id1)))))))) (IDAtExp: (LongVId: n))))))))))))) (ExpRow: (Lab: left) (ATExp: (IDAtExp: (LongVId: E))) (ExpRow: (Lab: right) (ATExp: (IDAtExp: (LongVId: r))))))))))))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: k))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: v))) (FIELDPatRow: (Lab: |3|) (ASPat: (VId: l) (ATPat: (PARAtPat: (CONPat: (LongVId: T) (IDAtPat: (LongVId: n)))))) (FIELDPatRow: (Lab: |4|) (ATPat: (IDAtPat: (LongVId: E))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: T))) (RECORDAtExp: (ExpRow: (Lab: key) (ATExp: (IDAtExp: (LongVId: k))) (ExpRow: (Lab: value) (ATExp: (IDAtExp: (LongVId: v))) (ExpRow: (Lab: cnt) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: +))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (SCONAtExp: (INTSCon: 1))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: cnt) (ATPat: (IDAtPat: (LongVId: _id2))) (DOTSPatRow:)))) (ATExp: (IDAtExp: (LongVId: _id2)))))))) (IDAtExp: (LongVId: n))))))))))))) (ExpRow: (Lab: left) (ATExp: (IDAtExp: (LongVId: l))) (ExpRow: (Lab: right) (ATExp: (IDAtExp: (LongVId: E))))))))))))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: k))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: v))) (FIELDPatRow: (Lab: |3|) (ASPat: (VId: l) (ATPat: (PARAtPat: (CONPat: (LongVId: T) (IDAtPat: (LongVId: n)))))) (FIELDPatRow: (Lab: |4|) (ASPat: (VId: r) (ATPat: (PARAtPat: (CONPat: (LongVId: T) (IDAtPat: (LongVId: |n'|)))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: T))) (RECORDAtExp: (ExpRow: (Lab: key) (ATExp: (IDAtExp: (LongVId: k))) (ExpRow: (Lab: value) (ATExp: (IDAtExp: (LongVId: v))) (ExpRow: (Lab: cnt) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: +))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: +))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (SCONAtExp: (INTSCon: 1))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: cnt) (ATPat: (IDAtPat: (LongVId: _id3))) (DOTSPatRow:)))) (ATExp: (IDAtExp: (LongVId: _id3)))))))) (IDAtExp: (LongVId: n))))))))))))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: cnt) (ATPat: (IDAtPat: (LongVId: _id4))) (DOTSPatRow:)))) (ATExp: (IDAtExp: (LongVId: _id4)))))))) (IDAtExp: (LongVId: |n'|))))))))))))) (ExpRow: (Lab: left) (ATExp: (IDAtExp: (LongVId: l))) (ExpRow: (Lab: right) (ATExp: (IDAtExp: (LongVId: r)))))))))))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: single_L))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: a))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: av))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: x))) (FIELDPatRow: (Lab: |4|) (ATPat: (PARAtPat: (CONPat: (LongVId: T) (RECORDAtPat: (FIELDPatRow: (Lab: key) (ATPat: (IDAtPat: (LongVId: b))) (FIELDPatRow: (Lab: value) (ATPat: (IDAtPat: (LongVId: bv))) (FIELDPatRow: (Lab: left) (ATPat: (IDAtPat: (LongVId: y))) (FIELDPatRow: (Lab: right) (ATPat: (IDAtPat: (LongVId: z))) (DOTSPatRow:))))))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: N))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: b))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: bv))) (ExpRow: (Lab: |3|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: N))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: a))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: av))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: x))) (ExpRow: (Lab: |4|) (ATExp: (IDAtExp: (LongVId: y))))))))))) (ExpRow: (Lab: |4|) (ATExp: (IDAtExp: (LongVId: z)))))))))))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (WILDCARDAtPat:)))) (RAISEExp: (ATExp: (IDAtExp: (LongVId: Match)))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: single_R))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: b))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: bv))) (FIELDPatRow: (Lab: |3|) (ATPat: (PARAtPat: (CONPat: (LongVId: T) (RECORDAtPat: (FIELDPatRow: (Lab: key) (ATPat: (IDAtPat: (LongVId: a))) (FIELDPatRow: (Lab: value) (ATPat: (IDAtPat: (LongVId: av))) (FIELDPatRow: (Lab: left) (ATPat: (IDAtPat: (LongVId: x))) (FIELDPatRow: (Lab: right) (ATPat: (IDAtPat: (LongVId: y))) (DOTSPatRow:))))))))) (FIELDPatRow: (Lab: |4|) (ATPat: (IDAtPat: (LongVId: z))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: N))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: a))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: av))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: x))) (ExpRow: (Lab: |4|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: N))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: b))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: bv))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: y))) (ExpRow: (Lab: |4|) (ATExp: (IDAtExp: (LongVId: z)))))))))))))))))))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (WILDCARDAtPat:)))) (RAISEExp: (ATExp: (IDAtExp: (LongVId: Match)))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: double_L))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: a))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: av))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: w))) (FIELDPatRow: (Lab: |4|) (ATPat: (PARAtPat: (CONPat: (LongVId: T) (RECORDAtPat: (FIELDPatRow: (Lab: key) (ATPat: (IDAtPat: (LongVId: c))) (FIELDPatRow: (Lab: value) (ATPat: (IDAtPat: (LongVId: cv))) (FIELDPatRow: (Lab: left) (ATPat: (PARAtPat: (CONPat: (LongVId: T) (RECORDAtPat: (FIELDPatRow: (Lab: key) (ATPat: (IDAtPat: (LongVId: b))) (FIELDPatRow: (Lab: value) (ATPat: (IDAtPat: (LongVId: bv))) (FIELDPatRow: (Lab: left) (ATPat: (IDAtPat: (LongVId: x))) (FIELDPatRow: (Lab: right) (ATPat: (IDAtPat: (LongVId: y))) (DOTSPatRow:))))))))) (FIELDPatRow: (Lab: right) (ATPat: (IDAtPat: (LongVId: z))) (DOTSPatRow:))))))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: N))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: b))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: bv))) (ExpRow: (Lab: |3|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: N))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: a))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: av))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: w))) (ExpRow: (Lab: |4|) (ATExp: (IDAtExp: (LongVId: x))))))))))) (ExpRow: (Lab: |4|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: N))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: c))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: cv))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: y))) (ExpRow: (Lab: |4|) (ATExp: (IDAtExp: (LongVId: z)))))))))))))))))))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (WILDCARDAtPat:)))) (RAISEExp: (ATExp: (IDAtExp: (LongVId: Match)))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: double_R))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: c))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: cv))) (FIELDPatRow: (Lab: |3|) (ATPat: (PARAtPat: (CONPat: (LongVId: T) (RECORDAtPat: (FIELDPatRow: (Lab: key) (ATPat: (IDAtPat: (LongVId: a))) (FIELDPatRow: (Lab: value) (ATPat: (IDAtPat: (LongVId: av))) (FIELDPatRow: (Lab: left) (ATPat: (IDAtPat: (LongVId: w))) (FIELDPatRow: (Lab: right) (ATPat: (PARAtPat: (CONPat: (LongVId: T) (RECORDAtPat: (FIELDPatRow: (Lab: key) (ATPat: (IDAtPat: (LongVId: b))) (FIELDPatRow: (Lab: value) (ATPat: (IDAtPat: (LongVId: bv))) (FIELDPatRow: (Lab: left) (ATPat: (IDAtPat: (LongVId: x))) (FIELDPatRow: (Lab: right) (ATPat: (IDAtPat: (LongVId: y))) (DOTSPatRow:))))))))) (DOTSPatRow:))))))))) (FIELDPatRow: (Lab: |4|) (ATPat: (IDAtPat: (LongVId: z))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: N))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: b))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: bv))) (ExpRow: (Lab: |3|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: N))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: a))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: av))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: w))) (ExpRow: (Lab: |4|) (ATExp: (IDAtExp: (LongVId: x))))))))))) (ExpRow: (Lab: |4|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: N))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: c))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: cv))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: y))) (ExpRow: (Lab: |4|) (ATExp: (IDAtExp: (LongVId: z)))))))))))))))))))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (WILDCARDAtPat:)))) (RAISEExp: (ATExp: (IDAtExp: (LongVId: Match)))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: |T'|))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: k))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: v))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: E))) (FIELDPatRow: (Lab: |4|) (ATPat: (IDAtPat: (LongVId: E))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: T))) (RECORDAtExp: (ExpRow: (Lab: key) (ATExp: (IDAtExp: (LongVId: k))) (ExpRow: (Lab: value) (ATExp: (IDAtExp: (LongVId: v))) (ExpRow: (Lab: cnt) (ATExp: (SCONAtExp: (INTSCon: 1))) (ExpRow: (Lab: left) (ATExp: (IDAtExp: (LongVId: E))) (ExpRow: (Lab: right) (ATExp: (IDAtExp: (LongVId: E))))))))))))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: k))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: v))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: E))) (FIELDPatRow: (Lab: |4|) (ASPat: (VId: r) (ATPat: (PARAtPat: (CONPat: (LongVId: T) (RECORDAtPat: (FIELDPatRow: (Lab: right) (ATPat: (IDAtPat: (LongVId: E))) (FIELDPatRow: (Lab: left) (ATPat: (IDAtPat: (LongVId: E))) (DOTSPatRow:)))))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: T))) (RECORDAtExp: (ExpRow: (Lab: key) (ATExp: (IDAtExp: (LongVId: k))) (ExpRow: (Lab: value) (ATExp: (IDAtExp: (LongVId: v))) (ExpRow: (Lab: cnt) (ATExp: (SCONAtExp: (INTSCon: 2))) (ExpRow: (Lab: left) (ATExp: (IDAtExp: (LongVId: E))) (ExpRow: (Lab: right) (ATExp: (IDAtExp: (LongVId: r))))))))))))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: k))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: v))) (FIELDPatRow: (Lab: |3|) (ASPat: (VId: l) (ATPat: (PARAtPat: (CONPat: (LongVId: T) (RECORDAtPat: (FIELDPatRow: (Lab: right) (ATPat: (IDAtPat: (LongVId: E))) (FIELDPatRow: (Lab: left) (ATPat: (IDAtPat: (LongVId: E))) (DOTSPatRow:)))))))) (FIELDPatRow: (Lab: |4|) (ATPat: (IDAtPat: (LongVId: E))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: T))) (RECORDAtExp: (ExpRow: (Lab: key) (ATExp: (IDAtExp: (LongVId: k))) (ExpRow: (Lab: value) (ATExp: (IDAtExp: (LongVId: v))) (ExpRow: (Lab: cnt) (ATExp: (SCONAtExp: (INTSCon: 2))) (ExpRow: (Lab: left) (ATExp: (IDAtExp: (LongVId: l))) (ExpRow: (Lab: right) (ATExp: (IDAtExp: (LongVId: E))))))))))))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (ASPat: (VId: p) (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (WILDCARDAtPat:)) (FIELDPatRow: (Lab: |2|) (ATPat: (WILDCARDAtPat:)) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: E))) (FIELDPatRow: (Lab: |4|) (ATPat: (PARAtPat: (CONPat: (LongVId: T) (RECORDAtPat: (FIELDPatRow: (Lab: left) (ATPat: (PARAtPat: (CONPat: (LongVId: T) (WILDCARDAtPat:)))) (FIELDPatRow: (Lab: right) (ATPat: (IDAtPat: (LongVId: E))) (DOTSPatRow:)))))))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: double_L))) (IDAtExp: (LongVId: p)))))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (ASPat: (VId: p) (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (WILDCARDAtPat:)) (FIELDPatRow: (Lab: |2|) (ATPat: (WILDCARDAtPat:)) (FIELDPatRow: (Lab: |3|) (ATPat: (PARAtPat: (CONPat: (LongVId: T) (RECORDAtPat: (FIELDPatRow: (Lab: left) (ATPat: (IDAtPat: (LongVId: E))) (FIELDPatRow: (Lab: right) (ATPat: (PARAtPat: (CONPat: (LongVId: T) (WILDCARDAtPat:)))) (DOTSPatRow:))))))) (FIELDPatRow: (Lab: |4|) (ATPat: (IDAtPat: (LongVId: E)))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: double_R))) (IDAtExp: (LongVId: p)))))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (ASPat: (VId: p) (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (WILDCARDAtPat:)) (FIELDPatRow: (Lab: |2|) (ATPat: (WILDCARDAtPat:)) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: E))) (FIELDPatRow: (Lab: |4|) (ATPat: (PARAtPat: (CONPat: (LongVId: T) (RECORDAtPat: (FIELDPatRow: (Lab: left) (ATPat: (PARAtPat: (CONPat: (LongVId: T) (RECORDAtPat: (FIELDPatRow: (Lab: cnt) (ATPat: (IDAtPat: (LongVId: ln))) (DOTSPatRow:)))))) (FIELDPatRow: (Lab: right) (ATPat: (PARAtPat: (CONPat: (LongVId: T) (RECORDAtPat: (FIELDPatRow: (Lab: cnt) (ATPat: (IDAtPat: (LongVId: rn))) (DOTSPatRow:)))))) (DOTSPatRow:)))))))))))))))))) (IFExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: <))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: ln))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: rn))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: single_L))) (IDAtExp: (LongVId: p))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: double_L))) (IDAtExp: (LongVId: p))))))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (ASPat: (VId: p) (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (WILDCARDAtPat:)) (FIELDPatRow: (Lab: |2|) (ATPat: (WILDCARDAtPat:)) (FIELDPatRow: (Lab: |3|) (ATPat: (PARAtPat: (CONPat: (LongVId: T) (RECORDAtPat: (FIELDPatRow: (Lab: left) (ATPat: (PARAtPat: (CONPat: (LongVId: T) (RECORDAtPat: (FIELDPatRow: (Lab: cnt) (ATPat: (IDAtPat: (LongVId: ln))) (DOTSPatRow:)))))) (FIELDPatRow: (Lab: right) (ATPat: (PARAtPat: (CONPat: (LongVId: T) (RECORDAtPat: (FIELDPatRow: (Lab: cnt) (ATPat: (IDAtPat: (LongVId: rn))) (DOTSPatRow:)))))) (DOTSPatRow:))))))) (FIELDPatRow: (Lab: |4|) (ATPat: (IDAtPat: (LongVId: E)))))))))))))) (IFExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: >))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: ln))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: rn))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: single_R))) (IDAtExp: (LongVId: p))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: double_R))) (IDAtExp: (LongVId: p))))))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (ASPat: (VId: p) (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (WILDCARDAtPat:)) (FIELDPatRow: (Lab: |2|) (ATPat: (WILDCARDAtPat:)) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: E))) (FIELDPatRow: (Lab: |4|) (ATPat: (PARAtPat: (CONPat: (LongVId: T) (RECORDAtPat: (FIELDPatRow: (Lab: left) (ATPat: (IDAtPat: (LongVId: E))) (DOTSPatRow:))))))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: single_L))) (IDAtExp: (LongVId: p)))))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (ASPat: (VId: p) (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (WILDCARDAtPat:)) (FIELDPatRow: (Lab: |2|) (ATPat: (WILDCARDAtPat:)) (FIELDPatRow: (Lab: |3|) (ATPat: (PARAtPat: (CONPat: (LongVId: T) (RECORDAtPat: (FIELDPatRow: (Lab: right) (ATPat: (IDAtPat: (LongVId: E))) (DOTSPatRow:)))))) (FIELDPatRow: (Lab: |4|) (ATPat: (IDAtPat: (LongVId: E)))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: single_R))) (IDAtExp: (LongVId: p)))))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (ASPat: (VId: p) (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: k))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: v))) (FIELDPatRow: (Lab: |3|) (ASPat: (VId: l) (ATPat: (PARAtPat: (CONPat: (LongVId: T) (RECORDAtPat: (FIELDPatRow: (Lab: cnt) (ATPat: (IDAtPat: (LongVId: ln))) (FIELDPatRow: (Lab: left) (ATPat: (IDAtPat: (LongVId: ll))) (FIELDPatRow: (Lab: right) (ATPat: (IDAtPat: (LongVId: lr))) (DOTSPatRow:))))))))) (FIELDPatRow: (Lab: |4|) (ASPat: (VId: r) (ATPat: (PARAtPat: (CONPat: (LongVId: T) (RECORDAtPat: (FIELDPatRow: (Lab: cnt) (ATPat: (IDAtPat: (LongVId: rn))) (FIELDPatRow: (Lab: left) (ATPat: (IDAtPat: (LongVId: rl))) (FIELDPatRow: (Lab: right) (ATPat: (IDAtPat: (LongVId: rr))) (DOTSPatRow:)))))))))))))))))))) (IFExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: >=))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: rn))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: wt))) (IDAtExp: (LongVId: ln))))))))))) (ATExp: (LETAtExp: (SEQDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: rln))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: numItems))) (IDAtExp: (LongVId: rl))))))) (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: rrn))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: numItems))) (IDAtExp: (LongVId: rr)))))))) (IFExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: <))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: rln))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: rrn))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: single_L))) (IDAtExp: (LongVId: p))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: double_L))) (IDAtExp: (LongVId: p)))))))) (IFExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: >=))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: ln))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: wt))) (IDAtExp: (LongVId: rn))))))))))) (ATExp: (LETAtExp: (SEQDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: lln))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: numItems))) (IDAtExp: (LongVId: ll))))))) (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: lrn))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: numItems))) (IDAtExp: (LongVId: lr)))))))) (IFExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: <))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: lrn))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: lln))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: single_R))) (IDAtExp: (LongVId: p))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: double_R))) (IDAtExp: (LongVId: p)))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: T))) (RECORDAtExp: (ExpRow: (Lab: key) (ATExp: (IDAtExp: (LongVId: k))) (ExpRow: (Lab: value) (ATExp: (IDAtExp: (LongVId: v))) (ExpRow: (Lab: cnt) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: +))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: +))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: ln))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: rn))))))))) (ExpRow: (Lab: |2|) (ATExp: (SCONAtExp: (INTSCon: 1))))))))) (ExpRow: (Lab: left) (ATExp: (IDAtExp: (LongVId: l))) (ExpRow: (Lab: right) (ATExp: (IDAtExp: (LongVId: r)))))))))))))))))))))))))))))) (LOCALStrDec: (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: min))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (CONPat: (LongVId: T) (RECORDAtPat: (FIELDPatRow: (Lab: left) (ATPat: (IDAtPat: (LongVId: E))) (FIELDPatRow: (Lab: key) (ATPat: (IDAtPat: (LongVId: key))) (FIELDPatRow: (Lab: value) (ATPat: (IDAtPat: (LongVId: value))) (DOTSPatRow:)))))))))))) (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: key))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: value)))))))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (CONPat: (LongVId: T) (RECORDAtPat: (FIELDPatRow: (Lab: left) (ATPat: (IDAtPat: (LongVId: left))) (DOTSPatRow:)))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: min))) (IDAtExp: (LongVId: left)))))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (WILDCARDAtPat:)))) (RAISEExp: (ATExp: (IDAtExp: (LongVId: Match))))))))))))) (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: delmin))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (CONPat: (LongVId: T) (RECORDAtPat: (FIELDPatRow: (Lab: left) (ATPat: (IDAtPat: (LongVId: E))) (FIELDPatRow: (Lab: right) (ATPat: (IDAtPat: (LongVId: right))) (DOTSPatRow:))))))))))) (ATExp: (IDAtExp: (LongVId: right)))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (CONPat: (LongVId: T) (RECORDAtPat: (FIELDPatRow: (Lab: key) (ATPat: (IDAtPat: (LongVId: key))) (FIELDPatRow: (Lab: value) (ATPat: (IDAtPat: (LongVId: value))) (FIELDPatRow: (Lab: left) (ATPat: (IDAtPat: (LongVId: left))) (FIELDPatRow: (Lab: right) (ATPat: (IDAtPat: (LongVId: right))) (DOTSPatRow:))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: |T'|))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: key))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: value))) (ExpRow: (Lab: |3|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: delmin))) (IDAtExp: (LongVId: left))))) (ExpRow: (Lab: |4|) (ATExp: (IDAtExp: (LongVId: right)))))))))))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (WILDCARDAtPat:)))) (RAISEExp: (ATExp: (IDAtExp: (LongVId: Match)))))))))))))) (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: |delete'|))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: E))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: r))))))))) (ATExp: (IDAtExp: (LongVId: r)))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: l))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: E))))))))) (ATExp: (IDAtExp: (LongVId: l)))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: l))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: r))))))))) (ATExp: (LETAtExp: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: mink))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: minv))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: min))) (IDAtExp: (LongVId: r))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: |T'|))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: mink))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: minv))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: l))) (ExpRow: (Lab: |4|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: delmin))) (IDAtExp: (LongVId: r))))))))))))))))))))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: mkDict))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat:)))) (ATExp: (IDAtExp: (LongVId: E)))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: singleton))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: x))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: v))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: T))) (RECORDAtExp: (ExpRow: (Lab: key) (ATExp: (IDAtExp: (LongVId: x))) (ExpRow: (Lab: value) (ATExp: (IDAtExp: (LongVId: v))) (ExpRow: (Lab: cnt) (ATExp: (SCONAtExp: (INTSCon: 1))) (ExpRow: (Lab: left) (ATExp: (IDAtExp: (LongVId: E))) (ExpRow: (Lab: right) (ATExp: (IDAtExp: (LongVId: E))))))))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: insert))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: E))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: x))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: v)))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: T))) (RECORDAtExp: (ExpRow: (Lab: key) (ATExp: (IDAtExp: (LongVId: x))) (ExpRow: (Lab: value) (ATExp: (IDAtExp: (LongVId: v))) (ExpRow: (Lab: cnt) (ATExp: (SCONAtExp: (INTSCon: 1))) (ExpRow: (Lab: left) (ATExp: (IDAtExp: (LongVId: E))) (ExpRow: (Lab: right) (ATExp: (IDAtExp: (LongVId: E))))))))))))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (PARAtPat: (CONPat: (LongVId: T) (PARAtPat: (ASPat: (VId: set) (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: key) (ATPat: (IDAtPat: (LongVId: key))) (FIELDPatRow: (Lab: left) (ATPat: (IDAtPat: (LongVId: left))) (FIELDPatRow: (Lab: right) (ATPat: (IDAtPat: (LongVId: right))) (FIELDPatRow: (Lab: value) (ATPat: (IDAtPat: (LongVId: value))) (DOTSPatRow:)))))))))))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: x))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: v)))))))))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: GREATER))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: |T'|))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: key))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: value))) (ExpRow: (Lab: |3|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: insert))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: left))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: x))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: v)))))))))) (ExpRow: (Lab: |4|) (ATExp: (IDAtExp: (LongVId: right)))))))))))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: LESS))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: |T'|))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: key))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: value))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: left))) (ExpRow: (Lab: |4|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: insert))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: right))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: x))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: v))))))))))))))))))) (Match: (Mrule: (ATPat: (WILDCARDAtPat:)) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: T))) (RECORDAtExp: (ExpRow: (Lab: key) (ATExp: (IDAtExp: (LongVId: x))) (ExpRow: (Lab: value) (ATExp: (IDAtExp: (LongVId: v))) (ExpRow: (Lab: left) (ATExp: (IDAtExp: (LongVId: left))) (ExpRow: (Lab: right) (ATExp: (IDAtExp: (LongVId: right))) (ExpRow: (Lab: cnt) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: cnt) (ATPat: (IDAtPat: (LongVId: _id5))) (DOTSPatRow:)))) (ATExp: (IDAtExp: (LongVId: _id5)))))))) (IDAtExp: (LongVId: set))))))))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: K.compare))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: key))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: x))))))))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: |insert'|))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: k))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: x))))))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: m))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: insert))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: m))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: k))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: x))))))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: inDomain))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: set))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: x))))))))) (ATExp: (LETAtExp: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: mem))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (IDAtPat: (LongVId: E))))) (ATExp: (IDAtExp: (LongVId: false)))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (CONPat: (LongVId: T) (PARAtPat: (ASPat: (VId: n) (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: key) (ATPat: (IDAtPat: (LongVId: key))) (FIELDPatRow: (Lab: left) (ATPat: (IDAtPat: (LongVId: left))) (FIELDPatRow: (Lab: right) (ATPat: (IDAtPat: (LongVId: right))) (DOTSPatRow:))))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: GREATER))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: mem))) (IDAtExp: (LongVId: right)))))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: EQUAL))) (ATExp: (IDAtExp: (LongVId: true)))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: LESS))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: mem))) (IDAtExp: (LongVId: left)))))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: K.compare))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: x))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: key)))))))))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: mem))) (IDAtExp: (LongVId: set)))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: find))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: set))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: x))))))))) (ATExp: (LETAtExp: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: mem))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (IDAtPat: (LongVId: E))))) (ATExp: (IDAtExp: (LongVId: NONE)))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (CONPat: (LongVId: T) (PARAtPat: (ASPat: (VId: n) (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: key) (ATPat: (IDAtPat: (LongVId: key))) (FIELDPatRow: (Lab: left) (ATPat: (IDAtPat: (LongVId: left))) (FIELDPatRow: (Lab: right) (ATPat: (IDAtPat: (LongVId: right))) (DOTSPatRow:))))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: GREATER))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: mem))) (IDAtExp: (LongVId: right)))))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: EQUAL))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: SOME))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: value) (ATPat: (IDAtPat: (LongVId: _id6))) (DOTSPatRow:)))) (ATExp: (IDAtExp: (LongVId: _id6)))))))) (IDAtExp: (LongVId: n)))))))))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: LESS))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: mem))) (IDAtExp: (LongVId: left)))))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: K.compare))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: x))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: key)))))))))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: mem))) (IDAtExp: (LongVId: set)))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: remove))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: E))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: x))))))))) (RAISEExp: (ATExp: (IDAtExp: (LongVId: LibBase.NotFound))))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ASPat: (VId: set) (ATPat: (PARAtPat: (CONPat: (LongVId: T) (RECORDAtPat: (FIELDPatRow: (Lab: key) (ATPat: (IDAtPat: (LongVId: key))) (FIELDPatRow: (Lab: left) (ATPat: (IDAtPat: (LongVId: left))) (FIELDPatRow: (Lab: right) (ATPat: (IDAtPat: (LongVId: right))) (FIELDPatRow: (Lab: value) (ATPat: (IDAtPat: (LongVId: value))) (DOTSPatRow:)))))))))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: x))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: GREATER))) (ATExp: (LETAtExp: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: |left'|))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: v))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: remove))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: left))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: x))))))))))) (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: |T'|))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: key))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: value))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: |left'|))) (ExpRow: (Lab: |4|) (ATExp: (IDAtExp: (LongVId: right))))))))))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: v)))))))))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: LESS))) (ATExp: (LETAtExp: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: |right'|))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: v))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: remove))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: right))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: x))))))))))) (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: |T'|))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: key))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: value))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: left))) (ExpRow: (Lab: |4|) (ATExp: (IDAtExp: (LongVId: |right'|))))))))))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: v)))))))))) (Match: (Mrule: (ATPat: (WILDCARDAtPat:)) (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: |delete'|))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: left))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: right))))))))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: value)))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: K.compare))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: key))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: x))))))))))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: listItems))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (IDAtPat: (LongVId: d))))) (ATExp: (LETAtExp: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: d2l))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: E))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: l))))))))) (ATExp: (IDAtExp: (LongVId: l)))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (PARAtPat: (CONPat: (LongVId: T) (RECORDAtPat: (FIELDPatRow: (Lab: key) (ATPat: (IDAtPat: (LongVId: key))) (FIELDPatRow: (Lab: value) (ATPat: (IDAtPat: (LongVId: value))) (FIELDPatRow: (Lab: left) (ATPat: (IDAtPat: (LongVId: left))) (FIELDPatRow: (Lab: right) (ATPat: (IDAtPat: (LongVId: right))) (DOTSPatRow:))))))))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: l))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: d2l))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: left))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: ::))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: value))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: d2l))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: right))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: l)))))))))))))))))))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: d2l))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: d))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: nil)))))))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: listItemsi))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (IDAtPat: (LongVId: d))))) (ATExp: (LETAtExp: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: d2l))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: E))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: l))))))))) (ATExp: (IDAtExp: (LongVId: l)))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (PARAtPat: (CONPat: (LongVId: T) (RECORDAtPat: (FIELDPatRow: (Lab: key) (ATPat: (IDAtPat: (LongVId: key))) (FIELDPatRow: (Lab: value) (ATPat: (IDAtPat: (LongVId: value))) (FIELDPatRow: (Lab: left) (ATPat: (IDAtPat: (LongVId: left))) (FIELDPatRow: (Lab: right) (ATPat: (IDAtPat: (LongVId: right))) (DOTSPatRow:))))))))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: l))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: d2l))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: left))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: ::))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: key))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: value))))))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: d2l))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: right))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: l)))))))))))))))))))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: d2l))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: d))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: nil)))))))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: listKeys))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (IDAtPat: (LongVId: d))))) (ATExp: (LETAtExp: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: d2l))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: E))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: l))))))))) (ATExp: (IDAtExp: (LongVId: l)))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (PARAtPat: (CONPat: (LongVId: T) (RECORDAtPat: (FIELDPatRow: (Lab: key) (ATPat: (IDAtPat: (LongVId: key))) (FIELDPatRow: (Lab: left) (ATPat: (IDAtPat: (LongVId: left))) (FIELDPatRow: (Lab: right) (ATPat: (IDAtPat: (LongVId: right))) (DOTSPatRow:)))))))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: l))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: d2l))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: left))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: ::))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: key))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: d2l))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: right))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: l)))))))))))))))))))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: d2l))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: d))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: nil)))))))))))))))))) (SEQStrDec: (LOCALStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: next))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (CONPat: (LongVId: ::) (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (PARAtPat: (ASPat: (VId: t) (ATPat: (PARAtPat: (CONPat: (LongVId: T) (RECORDAtPat: (FIELDPatRow: (Lab: right) (ATPat: (IDAtPat: (LongVId: right))) (DOTSPatRow:))))))))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: rest))))))))))))) (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: t))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: left))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: right))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: rest)))))))))))))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (WILDCARDAtPat:)))) (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: E))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: nil))))))))))) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: left))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: E))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: rest))))))))) (ATExp: (IDAtExp: (LongVId: rest)))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ASPat: (VId: t) (ATPat: (PARAtPat: (CONPat: (LongVId: T) (RECORDAtPat: (FIELDPatRow: (Lab: left) (ATPat: (IDAtPat: (LongVId: l))) (DOTSPatRow:))))))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: rest))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: left))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: l))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: ::))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: t))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: rest)))))))))))))))))))))))) (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: collate))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: cmpRng))) (FNExp: (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: s1))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: s2))))))) (ATExp: (LETAtExp: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: cmp))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: t1))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: t2))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: E))) (FIELDPatRow: (Lab: |2|) (ATPat: (WILDCARDAtPat:)))))) (FIELDPatRow: (Lab: |2|) (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: E))) (FIELDPatRow: (Lab: |2|) (ATPat: (WILDCARDAtPat:)))))))))) (ATExp: (IDAtExp: (LongVId: EQUAL)))) (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: E))) (FIELDPatRow: (Lab: |2|) (ATPat: (WILDCARDAtPat:)))))) (FIELDPatRow: (Lab: |2|) (ATPat: (WILDCARDAtPat:)))))) (ATExp: (IDAtExp: (LongVId: LESS)))) (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (WILDCARDAtPat:)) (FIELDPatRow: (Lab: |2|) (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: E))) (FIELDPatRow: (Lab: |2|) (ATPat: (WILDCARDAtPat:)))))))))) (ATExp: (IDAtExp: (LongVId: GREATER)))) (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (PARAtPat: (CONPat: (LongVId: T) (RECORDAtPat: (FIELDPatRow: (Lab: key) (ATPat: (IDAtPat: (LongVId: x1))) (FIELDPatRow: (Lab: value) (ATPat: (IDAtPat: (LongVId: y1))) (DOTSPatRow:))))))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: r1))))))) (FIELDPatRow: (Lab: |2|) (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (PARAtPat: (CONPat: (LongVId: T) (RECORDAtPat: (FIELDPatRow: (Lab: key) (ATPat: (IDAtPat: (LongVId: x2))) (FIELDPatRow: (Lab: value) (ATPat: (IDAtPat: (LongVId: y2))) (DOTSPatRow:))))))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: r2))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: EQUAL))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: EQUAL))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: cmp))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: r1))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: r2)))))))))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: order))) (ATExp: (IDAtExp: (LongVId: order))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: cmpRng))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: y1))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: y2)))))))))))))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: order))) (ATExp: (IDAtExp: (LongVId: order))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: Key.compare))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: x1))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: x2))))))))))))))))))))) (PARAtExp: (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: next))) (IDAtExp: (LongVId: t1))))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: next))) (IDAtExp: (LongVId: t2))))))))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: cmp))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: left))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: s1))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: nil))))))))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: left))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: s2))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: nil)))))))))))))))))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: appi))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: f))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: d))) (ATExp: (LETAtExp: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: |app'|))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (IDAtPat: (LongVId: E))))) (ATExp: (RECORDAtExp:))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (CONPat: (LongVId: T) (RECORDAtPat: (FIELDPatRow: (Lab: key) (ATPat: (IDAtPat: (LongVId: key))) (FIELDPatRow: (Lab: value) (ATPat: (IDAtPat: (LongVId: value))) (FIELDPatRow: (Lab: left) (ATPat: (IDAtPat: (LongVId: left))) (FIELDPatRow: (Lab: right) (ATPat: (IDAtPat: (LongVId: right))) (DOTSPatRow:))))))))))))) (ATExp: (SEQAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: |app'|))) (IDAtExp: (LongVId: left))))) (SEQAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: f))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: key))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: value))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: |app'|))) (IDAtExp: (LongVId: right)))))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: |app'|))) (IDAtExp: (LongVId: d))))))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: app))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: f))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: d))) (ATExp: (LETAtExp: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: |app'|))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (IDAtPat: (LongVId: E))))) (ATExp: (RECORDAtExp:))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (CONPat: (LongVId: T) (RECORDAtPat: (FIELDPatRow: (Lab: value) (ATPat: (IDAtPat: (LongVId: value))) (FIELDPatRow: (Lab: left) (ATPat: (IDAtPat: (LongVId: left))) (FIELDPatRow: (Lab: right) (ATPat: (IDAtPat: (LongVId: right))) (DOTSPatRow:)))))))))))) (ATExp: (SEQAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: |app'|))) (IDAtExp: (LongVId: left))))) (SEQAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: f))) (IDAtExp: (LongVId: value))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: |app'|))) (IDAtExp: (LongVId: right)))))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: |app'|))) (IDAtExp: (LongVId: d))))))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: mapi))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: f))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: d))) (ATExp: (LETAtExp: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: |map'|))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (IDAtPat: (LongVId: E))))) (ATExp: (IDAtExp: (LongVId: E)))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (CONPat: (LongVId: T) (RECORDAtPat: (FIELDPatRow: (Lab: key) (ATPat: (IDAtPat: (LongVId: key))) (FIELDPatRow: (Lab: value) (ATPat: (IDAtPat: (LongVId: value))) (FIELDPatRow: (Lab: left) (ATPat: (IDAtPat: (LongVId: left))) (FIELDPatRow: (Lab: right) (ATPat: (IDAtPat: (LongVId: right))) (FIELDPatRow: (Lab: cnt) (ATPat: (IDAtPat: (LongVId: cnt)))))))))))))))) (ATExp: (LETAtExp: (SEQDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: |left'|))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: |map'|))) (IDAtExp: (LongVId: left))))))) (SEQDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: |value'|))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: f))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: key))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: value))))))))))) (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: |right'|))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: |map'|))) (IDAtExp: (LongVId: right))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: T))) (RECORDAtExp: (ExpRow: (Lab: cnt) (ATExp: (IDAtExp: (LongVId: cnt))) (ExpRow: (Lab: key) (ATExp: (IDAtExp: (LongVId: key))) (ExpRow: (Lab: value) (ATExp: (IDAtExp: (LongVId: |value'|))) (ExpRow: (Lab: left) (ATExp: (IDAtExp: (LongVId: |left'|))) (ExpRow: (Lab: right) (ATExp: (IDAtExp: (LongVId: |right'|))))))))))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: |map'|))) (IDAtExp: (LongVId: d))))))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: map))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: f))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: d))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: mapi))) (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (WILDCARDAtPat:)) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: x))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: f))) (IDAtExp: (LongVId: x)))))))))))) (IDAtExp: (LongVId: d))))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: foldli))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: f))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: init))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: d))) (ATExp: (LETAtExp: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: fold))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: E))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: v))))))))) (ATExp: (IDAtExp: (LongVId: v)))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (PARAtPat: (CONPat: (LongVId: T) (RECORDAtPat: (FIELDPatRow: (Lab: key) (ATPat: (IDAtPat: (LongVId: key))) (FIELDPatRow: (Lab: value) (ATPat: (IDAtPat: (LongVId: value))) (FIELDPatRow: (Lab: left) (ATPat: (IDAtPat: (LongVId: left))) (FIELDPatRow: (Lab: right) (ATPat: (IDAtPat: (LongVId: right))) (DOTSPatRow:))))))))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: v))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: fold))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: right))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: f))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: key))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: value))) (ExpRow: (Lab: |3|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: fold))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: left))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: v))))))))))))))))))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: fold))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: d))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: init)))))))))))))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: foldl))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: f))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: init))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: d))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: foldli))) (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (WILDCARDAtPat:)) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: v))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: accum)))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: f))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: v))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: accum)))))))))))))))) (IDAtExp: (LongVId: init))))) (IDAtExp: (LongVId: d)))))))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: foldri))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: f))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: init))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: d))) (ATExp: (LETAtExp: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: fold))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: E))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: v))))))))) (ATExp: (IDAtExp: (LongVId: v)))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (PARAtPat: (CONPat: (LongVId: T) (RECORDAtPat: (FIELDPatRow: (Lab: key) (ATPat: (IDAtPat: (LongVId: key))) (FIELDPatRow: (Lab: value) (ATPat: (IDAtPat: (LongVId: value))) (FIELDPatRow: (Lab: left) (ATPat: (IDAtPat: (LongVId: left))) (FIELDPatRow: (Lab: right) (ATPat: (IDAtPat: (LongVId: right))) (DOTSPatRow:))))))))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: v))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: fold))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: left))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: f))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: key))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: value))) (ExpRow: (Lab: |3|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: fold))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: right))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: v))))))))))))))))))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: fold))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: d))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: init)))))))))))))))))))))))) (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: foldr))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: f))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: init))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: d))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: foldri))) (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (WILDCARDAtPat:)) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: v))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: accum)))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: f))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: v))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: accum)))))))))))))))) (IDAtExp: (LongVId: init))))) (IDAtExp: (LongVId: d))))))))))))))))))))))))))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: unionWith))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: f))) (FNExp: (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: m1))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: m2))))))) (ATExp: (LETAtExp: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: ins))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: f))) (FNExp: (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: key))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: x))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: m)))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: NONE))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: insert))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: m))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: key))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: x))))))))))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (CONPat: (LongVId: SOME) (IDAtPat: (LongVId: |x'|))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: insert))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: m))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: key))) (ExpRow: (Lab: |3|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: f))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: x))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: |x'|)))))))))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: find))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: m))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: key)))))))))))))))))))))) (IFExp: (ATExp: (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: >))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: numItems))) (IDAtExp: (LongVId: m1))))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: numItems))) (IDAtExp: (LongVId: m2))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: foldli))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: ins))) (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: a))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: b))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: f))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: b))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: a)))))))))))))))))))) (IDAtExp: (LongVId: m1))))) (IDAtExp: (LongVId: m2))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: foldli))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: ins))) (IDAtExp: (LongVId: f))))))))) (IDAtExp: (LongVId: m2))))) (IDAtExp: (LongVId: m1)))))))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: unionWithi))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: f))) (FNExp: (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: m1))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: m2))))))) (ATExp: (LETAtExp: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: ins))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: f))) (FNExp: (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: key))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: x))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: m)))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: NONE))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: insert))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: m))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: key))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: x))))))))))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (CONPat: (LongVId: SOME) (IDAtPat: (LongVId: |x'|))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: insert))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: m))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: key))) (ExpRow: (Lab: |3|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: f))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: key))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: x))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: |x'|))))))))))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: find))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: m))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: key)))))))))))))))))))))) (IFExp: (ATExp: (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: >))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: numItems))) (IDAtExp: (LongVId: m1))))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: numItems))) (IDAtExp: (LongVId: m2))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: foldli))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: ins))) (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: k))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: a))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: b)))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: f))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: k))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: b))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: a))))))))))))))))))))) (IDAtExp: (LongVId: m1))))) (IDAtExp: (LongVId: m2))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: foldli))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: ins))) (IDAtExp: (LongVId: f))))))))) (IDAtExp: (LongVId: m2))))) (IDAtExp: (LongVId: m1)))))))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: intersectWith))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: f))) (FNExp: (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: m1))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: m2))))))) (ATExp: (LETAtExp: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: intersect))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: f))) (FNExp: (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: m1))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: m2))))))) (ATExp: (LETAtExp: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: ins))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: key))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: x))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: m)))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: NONE))) (ATExp: (IDAtExp: (LongVId: m)))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (CONPat: (LongVId: SOME) (IDAtPat: (LongVId: |x'|))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: insert))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: m))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: key))) (ExpRow: (Lab: |3|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: f))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: x))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: |x'|)))))))))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: find))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: m2))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: key))))))))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: foldli))) (IDAtExp: (LongVId: ins))))) (IDAtExp: (LongVId: empty))))) (IDAtExp: (LongVId: m1)))))))))))))))) (IFExp: (ATExp: (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: >))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: numItems))) (IDAtExp: (LongVId: m1))))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: numItems))) (IDAtExp: (LongVId: m2))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: intersect))) (IDAtExp: (LongVId: f))))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: m1))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: m2))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: intersect))) (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: a))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: b))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: f))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: b))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: a)))))))))))))))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: m2))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: m1)))))))))))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: intersectWithi))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: f))) (FNExp: (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: m1))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: m2))))))) (ATExp: (LETAtExp: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: intersect))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: f))) (FNExp: (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: m1))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: m2))))))) (ATExp: (LETAtExp: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: ins))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: key))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: x))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: m)))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: NONE))) (ATExp: (IDAtExp: (LongVId: m)))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (CONPat: (LongVId: SOME) (IDAtPat: (LongVId: |x'|))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: insert))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: m))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: key))) (ExpRow: (Lab: |3|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: f))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: key))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: x))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: |x'|))))))))))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: find))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: m2))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: key))))))))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: foldli))) (IDAtExp: (LongVId: ins))))) (IDAtExp: (LongVId: empty))))) (IDAtExp: (LongVId: m1)))))))))))))))) (IFExp: (ATExp: (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: >))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: numItems))) (IDAtExp: (LongVId: m1))))) (ExpRow: (Lab: |2|) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: numItems))) (IDAtExp: (LongVId: m2))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: intersect))) (IDAtExp: (LongVId: f))))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: m1))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: m2))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: intersect))) (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: k))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: a))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: b)))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: f))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: k))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: b))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: a))))))))))))))))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: m2))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: m1)))))))))))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: filter))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: predFn))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: m))) (ATExp: (LETAtExp: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: f))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: key))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: item))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: m)))))))))) (IFExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: predFn))) (IDAtExp: (LongVId: item))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: insert))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: m))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: key))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: item)))))))))) (ATExp: (IDAtExp: (LongVId: m)))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: foldli))) (IDAtExp: (LongVId: f))))) (IDAtExp: (LongVId: empty))))) (IDAtExp: (LongVId: m))))))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: filteri))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: predFn))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: m))) (ATExp: (LETAtExp: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: f))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: key))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: item))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: m)))))))))) (IFExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: predFn))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: key))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: item))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: insert))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: m))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: key))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: item)))))))))) (ATExp: (IDAtExp: (LongVId: m)))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: foldli))) (IDAtExp: (LongVId: f))))) (IDAtExp: (LongVId: empty))))) (IDAtExp: (LongVId: m))))))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: mapPartial))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: f))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: m))) (ATExp: (LETAtExp: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: g))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: key))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: item))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: m)))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: NONE))) (ATExp: (IDAtExp: (LongVId: m)))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (CONPat: (LongVId: SOME) (IDAtPat: (LongVId: |item'|))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: insert))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: m))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: key))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: |item'|)))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: f))) (IDAtExp: (LongVId: item))))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: foldli))) (IDAtExp: (LongVId: g))))) (IDAtExp: (LongVId: empty))))) (IDAtExp: (LongVId: m))))))))))))))))) (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: mapPartiali))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: f))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: m))) (ATExp: (LETAtExp: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: g))) (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: key))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: item))) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: m)))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: NONE))) (ATExp: (IDAtExp: (LongVId: m)))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (CONPat: (LongVId: SOME) (IDAtPat: (LongVId: |item'|))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: insert))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: m))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: key))) (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: |item'|)))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: f))) (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: key))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: item))))))))))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: foldli))) (IDAtExp: (LongVId: g))))) (IDAtExp: (LongVId: empty))))) (IDAtExp: (LongVId: m)))))))))))))))))))))))))))))))))) (IDSigExp: (SigId: ORD_MAP-sig)))))))))