     (fn [a b]
       (and (contains? pos a)
            (contains? pos b)
-           (>= (pos a) (pos b))))))
+           (>= ^long (pos a) ^long (pos b))))))
 (defn zip
   "Returns sequence of pairs [x,y] where x runs through seq-1 and
   y runs through seq-2 simultaneously. This is the same as


(defn ensure-length
  "Fills given string with padding to have at least the given length."
  ([string length]
     (ensure-length string length " "))
  ([string length padding]
     (apply str string (repeat (- length (count string)) padding))))

(defn with-str-out

  (exists [set cover]
    (forall [x set]
      (=> (contains? base-set x)
          (<= 2 ^long (get count x))))))

(defn minimum-set-covers
  "For a given set base-set and a collection of sets returns all subcollections of sets such that
