         ;; The fact-type uses Clojure's type function unless overridden.
         fact-type-fn (get options :fact-type-fn type)
 
+        ;; The ancestors for a logical type uses Clojurescript's ancestors function unless overridden.
+        ancestors-fn (get options :ancestors-fn ancestors)
+
         ;; Create a function that groups a sequence of facts by the collection
         ;; of alpha nodes they target.
         ;; We cache an alpha-map for facts of a given type to avoid computing
         ;; them for every fact entered.
-        get-alphas-fn (create-get-alphas-fn fact-type-fn rulebase)
+        get-alphas-fn (create-get-alphas-fn fact-type-fn ancestors-fn rulebase)
 
         ;; Default sort by higher to lower salience.
         activation-group-sort-fn (get options :activation-group-sort-fn >)

(defn- create-get-alphas-fn
  "Returns a function that given a sequence of facts,
  returns a map associating alpha nodes with the facts they accept."
  [fact-type-fn merged-rules]

  ;; We preserve a map of fact types to alpha nodes for efficiency,
  ;; effectively memoizing this operation.

          [alpha-nodes facts]

          ;; The alpha nodes weren't cached for the type, so get them now.
          (let [ancestors (conj (ancestors-fn fact-type) fact-type)

                ;; Get all alpha nodes for all ancestors.
                new-nodes (distinct
