   Copyright ( c )   . All rights reserved .   The use and
;;  distribution terms for this software are covered by the Eclipse Public
;;  License 1.0 (-1.0.php) which can
;;  be found in the file epl-v10.html at the root of this distribution.  By
;;  using this software in any fashion, you are agreeing to be bound by the
;;  terms of this license.  You must not remove this notice, or any other,
;;  from this software.
;;
;;  set.clj
;;
   Clojure functions for operating on sets ( supplemental to clojure.set )
;;
;;  jason at w01fe dot com
   Created 2 Feb 2009

(ns 
  #^{:author "Jason Wolfe",
     :doc "Clojure functions for operating on sets (supplemental to clojure.set)"}
  clojure.contrib.set)

(defn subset? 
  "Is set1 a subset of set2?"
  [set1 set2]
  {:tag Boolean}
  (and (<= (count set1) (count set2))
       (every? set2 set1)))

(defn superset? 
  "Is set1 a superset of set2?"
  [set1 set2]
  {:tag Boolean}
  (and (>= (count set1) (count set2))
       (every? set1 set2)))

(defn proper-subset? 
  "Is s1 a proper subset of s2?"
  [set1 set2]
  {:tag Boolean}
  (and (< (count set1) (count set2))
       (every? set2 set1)))

(defn proper-superset? 
  "Is s1 a proper superset of s2?"
  [set1 set2]
  {:tag Boolean}
  (and (> (count set1) (count set2))
       (every? set1 set2)))

  distribution terms for this software are covered by the Eclipse Public
  License 1.0 (-1.0.php) which can
  be found in the file epl-v10.html at the root of this distribution.  By
  using this software in any fashion, you are agreeing to be bound by the
  terms of this license.  You must not remove this notice, or any other,
  from this software.

  set.clj


  jason at w01fe dot com
   Copyright ( c )   . All rights reserved .   The use and
   Clojure functions for operating on sets ( supplemental to clojure.set )
   Created 2 Feb 2009

(ns 
  #^{:author "Jason Wolfe",
     :doc "Clojure functions for operating on sets (supplemental to clojure.set)"}
  clojure.contrib.set)

(defn subset? 
  "Is set1 a subset of set2?"
  [set1 set2]
  {:tag Boolean}
  (and (<= (count set1) (count set2))
       (every? set2 set1)))

(defn superset? 
  "Is set1 a superset of set2?"
  [set1 set2]
  {:tag Boolean}
  (and (>= (count set1) (count set2))
       (every? set1 set2)))

(defn proper-subset? 
  "Is s1 a proper subset of s2?"
  [set1 set2]
  {:tag Boolean}
  (and (< (count set1) (count set2))
       (every? set2 set1)))

(defn proper-superset? 
  "Is s1 a proper superset of s2?"
  [set1 set2]
  {:tag Boolean}
  (and (> (count set1) (count set2))
       (every? set1 set2)))
