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