(setf pair-lst '((a b) (b c) (c d) (c e) (a f) (d x) (y z) (z c) )) (defun gen-family-relation (list env) (let ( node result ) (dolist (x list result) (setf node (assoc (car x) env)) (if node (setf (cdr node) (append (cdr node) (cdr x))) (push x env) ) (setf result env) ))) (defun query (s env) (let ((node (assoc s env))) (if node (cons (car node)(mapcar #'(lambda (x)(query x env)) (cdr node))) s)))