 
 (s/def ::iparam any?) ;; (s/tuple symbol? symbol?))
 
-(defn ^:no-doc mk-impl-doc [name params explanation]
-  (str "\n```\n"
-       "(" name " " (clojure.string/join " " params) ")"
-       "```\n\n"
-       (or explanation "")))
+(defn ^:no-doc mk-impl-doc [name explanation]
+  ;; XXX: everything in the explanation ?
+  explanation)
 
 (defmacro defimplicit
   [& args]

            {def-env :def-env ctx :ctx params :params} header]
        (when (defenv/registered-definition? def-name)
          (println "[Warning] redefinition as implicit"))
        (let [metadata (merge (meta &form) {:doc (mk-impl-doc def-name (mapv #(if (vector? %)
                                                                                (first %)
                                                                                %) params) doc)})]
          `(do
             (def ~def-name (defenv/->Implicit '~def-name (fn [~def-env ~ctx ~@params] ~@body)))
             (alter-meta! (var ~def-name) #(merge % (quote ~metadata)))

;; of other `kind` of statements such as theorems or axioms.
;;}

(defn ^:no-doc mk-def-doc 
  [kind content explanation]
  (str "\n```\n"
       (with-out-str
         (pp/pprint content))
       "```\n**" kind "**: "
       (or explanation "")))

;;{
;; ## Theorems, lemmas and axioms
