   "Give some attributes the object definitively has not."
   (let [negatives (ask (str "Please enter attributes the new object definitively has not: ")
                        #(read-string (str "#{" (read-line) "}"))
-                       #(and (subset? % (attributes ctx))
+                       #(and (subset? % attributes)
                              (not (exists [m (:positives state)]
                                     (contains? % m))))
                        (str "The attributes are invalid or already marked as positive.\n"

        (recur result)
        [(:object state) (set (:positives state))]))))

(defmacro- define-repl-fn [name doc & body]
  `(do
     (defmethod run-repl-command '~name
       ~'[_ state]
       (let [~'ctx  (:context ~'state),
             ~'impl (:implication ~'state)]
         ~@body))
     (defmethod help-repl-command '~name
       ~'[_]


(define-repl-fn context
  "Prints the current context."
  (if (:context state)
    (println (:context state))
    (do
      (println (:possible-context state))
      (println (:certain-context state))))
  state)

(define-repl-fn knowledge
