                     true
                     (merge input
                            activity animate artifact buyable city clothing consumable drinkable
-                           drinkable-xor-edible-1 drinkable-xor-edible-2
-                           edible furniture human inanimate
-                           legible material-false non-places
-                           not-legible-if-not-artifact part-of-human-body pets place
-                           place-false time
-                           ))]
+                           edible furniture human
+                           pet place time))]
           (log/trace (str "sem-impl so far: " merged))
           (if (not (= merged input)) ;; TODO: make this check more efficient: count how many rules were hit
             ;; rather than equality-check to see if merged has changed.

                       :buyable true
                       :furniture false
                       :legible false
                       :pet false
                       :physical-object true
                       :speakable false}

   {:consumable false} {:drinkable false
                        :edible false}
    
   {:human true} {:animate true}

   {:living true} {:artifact false}

   {:pet true} {:animate true
                :buyable true
                :edible false
                :human false}

   {:pred :house} {:artifact true
                   :buyable true
                   :place true}
   
   }
  )

            city       (get-encyc input :city)
            clothing   (get-encyc input :clothing)
            consumable (get-encyc input :consumable)
            drinkable  (get-encyc input :drinkable)
            edible     (get-encyc input :edible)
            furniture  (get-encyc input :furniture)
            human      (get-encyc input :human)
            part-of-human-body (get-encyc input
                                          :part-of-human-body)
            pet        (get-encyc input :pet)
            place      (get-encyc input :place)
            time       (get-encyc input :time)
            ]
        (let [merged
              (cond (= input :fail) :fail
