               (cond (= input :fail) :fail
 
                     true
-                    (merge input animate artifact buyable city clothing consumable consumable-false drinkable
+                    (merge input
+                           activity animate artifact buyable city clothing consumable consumable-false drinkable
                            drinkable-xor-edible-1 drinkable-xor-edible-2
                            edible furniture human inanimate
                            legible material-false non-places

  "null sem-impl: simply return input."
  (log/trace (str "null-sem-impl:" (strip-refs input)))
  input)
  
(defn sem-impl [input & [original-input]]
  "expand input feature structures with semantic (really cultural) implicatures, e.g., if human, then not buyable or edible"
  (let [original-input (if original-input original-input


(def encyc
  {
   {:activity true} {:animate false
                     :artifact false
                     :consumable false
                     :part-of-human-body false}

   {:animate true} {:activity false
                    :artifact false
                    :mass false
                    :furniture false
                    :physical-object true
                    :part-of-human-body false
                    :drinkable false
                    :speakable false
                    :place false}

   {:artifact true} {:animate false
                     :activity false
                     :physical-object true}

   {:buyable true} {:human false
                    :part-of-human-body false}

   {:city true} {:artifact true
                 :legible false
                 :place true}

   {:human true} {:animate true}

