;; Solution to #4 p96 in JAckson (deftemplate statement (slot quantifier (allowed-symbols all some no)) (slot set1 (type SYMBOL)) (slot set2 (type SYMBOL))) (defrule rule1 (statement (quantifier all) (set1 ?A) (set2 ?B)) (statement (quantifier all) (set1 ?B) (set2 ?C&~?A)) => (assert (statement (quantifier all) (set1 ?A) (set2 ?C)))) (defrule rule3 (statement (quantifier no) (set1 ?A) (set2 ?B)) (statement (quantifier no) (set1 ?B) (set2 ?C&~?A)) => (assert (statement (quantifier no) (set1 ?A) (set2 ?C)))) (deffacts test-from-text (statement (quantifier all) (set1 puppies)(set2 dogs)) (statement (quantifier all) (set1 dogs)(set2 mammals)) (statement (quantifier all) (set1 mammals)(set2 animals)) (statement (quantifier no) (set1 sea-creatures)(set2 dogs)) (statement (quantifier some) (set1 sea-creatures)(set2 mammals))) (deffunction test () (reset) (run) )