;;; $Id: set-ops.def,v 1.2 1999/02/25 03:25:19 leavens Exp $

(defrep (set T) (list T))

(deftype the-empty-set (set T))
(deftype set-empty? (-> ((set T)) boolean))
(deftype set-size (-> ((set T)) number))
(deftype set-of (-> (T ...) (set T)))
(deftype set-member? (-> (T (set T)) boolean))
(deftype set-one-elem (-> ((set T)) T))
(deftype set-rest (-> ((set T)) (set T)))
(deftype set-subset? (-> ((set T) (set T)) boolean))
(deftype set-equal? (-> ((set T) (set T)) boolean))
(deftype set-add (-> (T (set T)) (set T)))
(deftype set-remove (-> (T (set T)) (set T)))
(deftype set-union (-> ((set T) (set T)) (set T)))
(deftype set-minus (-> ((set T) (set T)) (set T)))
(deftype set-intersect (-> ((set T) (set T)) (set T)))
(deftype set-union-list (-> ((list (set T))) (set T)))
(deftype set-union* (-> ((set T) ...) (set T)))

