      :generate {:lexicon lexicon-for-generation}
      :grammar grammar
      :lexicon lexicon
-     :lexical-cache (atom (cache/fifo-cache-factory {} :threshold 1024))
      :rules rules
      :rules-for-spec (atom {})
      :rule-map (zipmap rules grammar)}))

                                ;; exclude verbs that take an adverb as the third argument.
                                (or (not (= (get-in % [:synsem :cat]) :verb))
                                    (not (= (get-in % [:synsem :subcat :3 :cat]) :adverb)))
                                       
                                ;; exclude cities from the model grammar.
                                (or (not (= (get-in % [:synsem :propernoun]) true))
                                    (= (get-in % [:synsem :sem :city] false) false)))

                          "tense=" (get-in tree [:synsem :sem :tense] ::unset) "; "
                          "aspect=" (get-in tree [:synsem :sem :aspect] ::unset) "; "
                          "infl=" (get-in tree [:synsem :infl] ::unset) "; "))
          
          [tree])
        with-defaults))))

