hamlet/ORD_SET-sig.ss
(module ORD_SET-sig (planet chongkai/sml)
  (#%module-begin
   (Program:
    (SIGDECTopDec:
     (SigDec:
      (SigBind:
       (SigId: ORD_SET-sig)
       (SIGSigExp:
        (SEQSpec:
         (STRUCTURESpec: (StrDesc: (StrId: Key-struct) (IDSigExp: (SigId: ORD_KEY-sig))))
         (SEQSpec:
          (SEQSpec:
           (INCLUDESpec:
            (WHERETYPESigExp:
             (SIGSigExp: (TYPESpec: (TypDec: (TyVarseq:) (TyCon: item-type))))
             (TyVarseq:)
             (LongTyCon: item-type)
             (CONTy: (Tyseq:) (LongTyCon: Key.ord_key-type))))
           (EMPTYSpec:))
          (SEQSpec:
           (TYPESpec: (TypDec: (TyVarseq:) (TyCon: set-type)))
           (SEQSpec:
            (VALSpec: (ValDesc: (VId: empty) (CONTy: (Tyseq:) (LongTyCon: set-type))))
            (SEQSpec:
             (VALSpec: (ValDesc: (VId: singleton) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: item-type)) (CONTy: (Tyseq:) (LongTyCon: set-type)))))
             (SEQSpec:
              (VALSpec:
               (ValDesc:
                (VId: add)
                (ARROWTy:
                 (RECORDTy: (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: set-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: item-type)))))
                 (CONTy: (Tyseq:) (LongTyCon: set-type)))))
              (SEQSpec:
               (VALSpec:
                (ValDesc:
                 (VId: |add'|)
                 (ARROWTy:
                  (PARTy:
                   (RECORDTy: (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: item-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: set-type))))))
                  (CONTy: (Tyseq:) (LongTyCon: set-type)))))
               (SEQSpec:
                (VALSpec:
                 (ValDesc:
                  (VId: addList)
                  (ARROWTy:
                   (RECORDTy:
                    (TyRow:
                     (Lab: |1|)
                     (CONTy: (Tyseq:) (LongTyCon: set-type))
                     (TyRow: (Lab: |2|) (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: item-type))) (LongTyCon: list-type)))))
                   (CONTy: (Tyseq:) (LongTyCon: set-type)))))
                (SEQSpec:
                 (VALSpec:
                  (ValDesc:
                   (VId: delete)
                   (ARROWTy:
                    (RECORDTy: (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: set-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: item-type)))))
                    (CONTy: (Tyseq:) (LongTyCon: set-type)))))
                 (SEQSpec:
                  (VALSpec:
                   (ValDesc:
                    (VId: member)
                    (ARROWTy:
                     (RECORDTy: (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: set-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: item-type)))))
                     (CONTy: (Tyseq:) (LongTyCon: bool-type)))))
                  (SEQSpec:
                   (VALSpec: (ValDesc: (VId: isEmpty) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: set-type)) (CONTy: (Tyseq:) (LongTyCon: bool-type)))))
                   (SEQSpec:
                    (VALSpec:
                     (ValDesc:
                      (VId: equal)
                      (ARROWTy:
                       (PARTy:
                        (RECORDTy: (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: set-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: set-type))))))
                       (CONTy: (Tyseq:) (LongTyCon: bool-type)))))
                    (SEQSpec:
                     (VALSpec:
                      (ValDesc:
                       (VId: compare)
                       (ARROWTy:
                        (PARTy:
                         (RECORDTy: (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: set-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: set-type))))))
                        (CONTy: (Tyseq:) (LongTyCon: order-type)))))
                     (SEQSpec:
                      (VALSpec:
                       (ValDesc:
                        (VId: isSubset)
                        (ARROWTy:
                         (PARTy:
                          (RECORDTy:
                           (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: set-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: set-type))))))
                         (CONTy: (Tyseq:) (LongTyCon: bool-type)))))
                      (SEQSpec:
                       (VALSpec: (ValDesc: (VId: numItems) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: set-type)) (CONTy: (Tyseq:) (LongTyCon: int-type)))))
                       (SEQSpec:
                        (VALSpec:
                         (ValDesc:
                          (VId: listItems)
                          (ARROWTy:
                           (CONTy: (Tyseq:) (LongTyCon: set-type))
                           (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: item-type))) (LongTyCon: list-type)))))
                        (SEQSpec:
                         (VALSpec:
                          (ValDesc:
                           (VId: union)
                           (ARROWTy:
                            (RECORDTy:
                             (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: set-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: set-type)))))
                            (CONTy: (Tyseq:) (LongTyCon: set-type)))))
                         (SEQSpec:
                          (VALSpec:
                           (ValDesc:
                            (VId: intersection)
                            (ARROWTy:
                             (RECORDTy:
                              (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: set-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: set-type)))))
                             (CONTy: (Tyseq:) (LongTyCon: set-type)))))
                          (SEQSpec:
                           (VALSpec:
                            (ValDesc:
                             (VId: difference)
                             (ARROWTy:
                              (RECORDTy:
                               (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: set-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: set-type)))))
                              (CONTy: (Tyseq:) (LongTyCon: set-type)))))
                           (SEQSpec:
                            (VALSpec:
                             (ValDesc:
                              (VId: map)
                              (ARROWTy:
                               (PARTy: (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: item-type)) (CONTy: (Tyseq:) (LongTyCon: item-type))))
                               (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: set-type)) (CONTy: (Tyseq:) (LongTyCon: set-type))))))
                            (SEQSpec:
                             (VALSpec:
                              (ValDesc:
                               (VId: app)
                               (ARROWTy:
                                (PARTy: (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: item-type)) (CONTy: (Tyseq:) (LongTyCon: unit-type))))
                                (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: set-type)) (CONTy: (Tyseq:) (LongTyCon: unit-type))))))
                             (SEQSpec:
                              (VALSpec:
                               (ValDesc:
                                (VId: foldl)
                                (ARROWTy:
                                 (PARTy:
                                  (ARROWTy:
                                   (RECORDTy: (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: item-type)) (TyRow: (Lab: |2|) (VARTy: (TyVar: |'b|)))))
                                   (VARTy: (TyVar: |'b|))))
                                 (ARROWTy: (VARTy: (TyVar: |'b|)) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: set-type)) (VARTy: (TyVar: |'b|)))))))
                              (SEQSpec:
                               (VALSpec:
                                (ValDesc:
                                 (VId: foldr)
                                 (ARROWTy:
                                  (PARTy:
                                   (ARROWTy:
                                    (RECORDTy: (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: item-type)) (TyRow: (Lab: |2|) (VARTy: (TyVar: |'b|)))))
                                    (VARTy: (TyVar: |'b|))))
                                  (ARROWTy: (VARTy: (TyVar: |'b|)) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: set-type)) (VARTy: (TyVar: |'b|)))))))
                               (SEQSpec:
                                (VALSpec:
                                 (ValDesc:
                                  (VId: filter)
                                  (ARROWTy:
                                   (PARTy: (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: item-type)) (CONTy: (Tyseq:) (LongTyCon: bool-type))))
                                   (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: set-type)) (CONTy: (Tyseq:) (LongTyCon: set-type))))))
                                (SEQSpec:
                                 (VALSpec:
                                  (ValDesc:
                                   (VId: exists)
                                   (ARROWTy:
                                    (PARTy: (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: item-type)) (CONTy: (Tyseq:) (LongTyCon: bool-type))))
                                    (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: set-type)) (CONTy: (Tyseq:) (LongTyCon: bool-type))))))
                                 (VALSpec:
                                  (ValDesc:
                                   (VId: find)
                                   (ARROWTy:
                                    (PARTy: (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: item-type)) (CONTy: (Tyseq:) (LongTyCon: bool-type))))
                                    (ARROWTy:
                                     (CONTy: (Tyseq:) (LongTyCon: set-type))
                                     (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: item-type))) (LongTyCon: option-type))))))))))))))))))))))))))))))))))))))