 (defn check-axiom-coloration-bottom
   "Extra axiom: Ensure :sbottom and :nbottom (stroke and node) are white."
   [jg]
-  (and (= :white (jgcolor jg :sbottom))
-       (= :white (jgcolor jg :nbottom))))
+  (every? (fn [sn] (= :white (jgcolor jg sn)))
+          (filter (fn [sn] (bottom? sn)) (concat (nodes jg) (strokes jg)))))
 
 (defn check-axioms
   [jg]

    jg
    ;; something to do (inconsistent), spread black
    ;; first case: a stroke is white but has all black incoming nodes; or, it points to a black node; turn it black
    (if-let [bad-stroke (first (filter (fn [s] (and (not= :sbottom s)
                                                    (= :white (jgcolor jg s))
                                                    (or (and (not-empty (graph/incoming (:graph jg) s))
                                                             (every? (fn [n] (= :black (jgcolor jg n)))

(defn jgtype
  [jg stroke-or-node]
  (get-in jg [:types stroke-or-node]))

(defn bottom?
  [stroke-or-node]
  (let [snstr (if (keyword? stroke-or-node) (name stroke-or-node) (str stroke-or-node))
        prefix (subs snstr 0 (min 2 (count snstr)))]
    (or (= "sb" prefix)
        (= "nb" prefix))))

(defn believed
  "Returns black nodes."
