       via)))
 
 (s/fdef specs
-        :args (s/cat :problems :spec/problems)
-        :ret :spec/specs)
+        :args (s/cat :problems :expound.spec/problems)
+        :ret :expound.spec/specs)
 (defn ^:private specs
   "Given a collection of problems, returns the specs for those problems, with duplicates removed"
   [problems]

   (defmacro def
     "Define a spec with an optional error message.

This is a replacement for `clojure.spec.alpha/def` but optionally takes a human-readable `error-message` (will only be used for predicates) e.g. 'should be a string'"
     ([k spec-form]
      `(s/def ~k ~spec-form))
     ([k spec-form error-message]

;;;;;; internal specs ;;;;;;

(s/def ::singleton (s/coll-of any? :count 1))
(s/def :expound.spec/spec keyword?)
(s/def :expound.spec/specs (s/coll-of :expound.spec/spec))
(s/def :expound.spec.problem/via (s/coll-of :expound.spec/spec :kind vector?))
(s/def :expound.spec/problem (s/keys :req-un [:expound.spec.problem/via]))
(s/def :expound.spec/problems (s/coll-of :expound.spec/problem))

(s/def :expound.printer/show-valid-values? boolean?)
(s/def :expound.printer/value-str-fn ifn?)
