 	  ((base-semantics dl-expression) interpretation))
 	result))))
 
+
 ;;; base semantics (i.e. what to do if nothing else applies)
 
 (defmacro define-base-semantics

    (runner data)))

(defn- next-tbox-interpretation
  "Defines a new interpretation on the defined concepts of tbox in
  interpretation through an interpretation i of the defined concepts
  of tbox."
  [interpretation tbox i]
  (let [new-interpretation (extend-interpretation interpretation i)]
    (into {} (for [[sym sym-def] (tbox-definition-map tbox)]
               [sym (interpret new-interpretation (definition-expression sym-def))]))))

(defn- constant-tbox-interpretation
  "Returns an interpretation on the defined concepts of tbox,
  constantly returning value."
  [tbox value]
  (into {} (for [concept (defined-concepts tbox)]
             [concept value])))

(defn gfp-model
  "Returns the gfp-model of tbox in interpretation."
  [tbox interpretation]
  (extend-interpretation
   interpretation
   (fixed-point (fn [i] (next-tbox-interpretation interpretation tbox i))
                (constant-tbox-interpretation tbox
                                              (interpretation-base-set interpretation)))))


  [name language base-set & interpretations]
  `(def ~name (interpretation ~language ~base-set ~@interpretations)))


;;; most specific concepts

(defmulti most-specific-concept
  "Computes the model based most specific concept of a set of objects
