RULES

(grandparent
 IF
 (parent ?x ?y)
 (parent ?y ?z)
 THEN 
 (grandparent ?x ?z))

(great-grandparent
 IF 
 (parent ?x ?y)
 (grandparent ?y ?z)
 THEN
 (great-grandparent ?x ?z))

ASSERTIONS

(parent abe isaac)
(parent abe ishmael)
(parent isaac jacob)
(parent isaac essau)
(parent jacob joseph)
(parent jacob reuben)
(grandparent jacob ephraim))

CODE

(define (ask-parent)
  (backchain
   '(parent ?x ?y)))

(define (ask-grandparent)
  (backchain
   '(grandparent ?x ?y)))

(define (ask-great-grandparent)
  (backchain
   '(great-grandparent ?x ?y)))

