(define match-goal-to-rule (lambda (goal rule env) (let* ((instantiated-rule (instantiate rule)) (head (car instantiated-rule)) (body (cdr instantiated-rule)) (extended-env (unify (substitute goal env) head env))) (match-goals body extended-env))))