; This program calculates the average area of some rectangles (deffacts initial-information (rectangle 10 6) (rectangle 7 5) (rectangle 6 8) (rectangle 2 5) (rectangle 9 4) (sum 0) (count 0)) (defrule sum-rectangles (declare (salience 30)) (rectangle ?height ?width) => (assert (add-to-sum =(* ?height ?width)))) (defrule sum-areas (declare (salience 20)) ?sum-adr<-(sum ?total) ?new-area-adr<-(add-to-sum ?area) ?count-adr<-(count ?counter) => (retract ?sum-adr ?new-area-adr ?count-adr) (assert (sum =(+ ?total ?area))) (assert (count =(+ ?counter 1)))) (defrule average (declare (salience 10)) ?sum-adr<-(sum ?total) ?count-adr<-(count ?counter) => (printout t crlf "Here is the average area " (/ ?total ?counter) crlf crlf))