(deftemplate male "" (declare (ordered TRUE)))
(deftemplate female "" (declare (ordered TRUE)))
(deftemplate parent "" (declare (ordered TRUE)))
(deftemplate father "" (declare (ordered TRUE)))
(deftemplate mother "" (declare (ordered TRUE)))
(deffacts initialFacts
(male bill)
(female jane)
(female sally)
(parent bill sally)
(parent jane sally)
)
(defrule father
(parent ?x ?y)
(male ?x)
=>
(printout t crlf ?x " is the father of " ?y crlf)
)
(defrule mother
(parent ?x ?y)
(female ?x)
=>
(printout t crlf ?x " is the mother of " ?y crlf)
)
(reset)
(facts)
(run)
(printout t crlf)