                                                                 incidence-matrix)
                                                        %)
                                      start))]
-    (map (fn [bitset]
-           [(to-hashset object-vector (a-prime bitset)),
-            (to-hashset attribute-vector bitset)])
-         intents)))
+    (if *concepts-do-conversion*
+      (map (fn [bitset]
+             [(to-hashset object-vector (a-prime bitset)),
+              (to-hashset attribute-vector bitset)])
+           intents)
+      intents)))
 
 
 ;;; Vychodil (:vychodil)

                                      empty-down-up
                                      0)
              (close! output))
      (map (fn [pair]
             [(to-hashset object-vector (first pair))
              (to-hashset attribute-vector (second pair))])
           (take-while (comp not nil?)
                       (repeatedly #(<!! output)))))))


;;; In-Close (:in-close)


;;; Compute Concepts of Formal Contexts efficiently

;; XXX: This does not yet apply to the external programs
(def ^:dynamic *concepts-do-conversion*
  "When set to anything true (the default), concepts will return proper concepts.
  Otherwise, the function returns a list of pairs of BitSets.  This does not yet
  apply to the :fcbo and :pcbo methods."
  true)

(defmulti concepts
  "Computes concepts with various algorithms, given as first
  argument. Default is :next-closure."
  {:arglists '([algorithm context] [context])}
  (fn [& args]
    (when-not (<= 1 (count args) 2)
      (illegal-argument "Wrong number of args."))
    (when (and (= 1 (count args))
               (not (context? (first args))))
      (illegal-argument "Argument of concepts is not a context."))
