Výhodné je použiť funkciu, ktorá zisťuje, či sa prvok nachádza v zozname. V hlavnej funkcií budeme pre všetky prvky prvej množiny zisťovať či sú aj prvkami druhej množiny.
; T ak sa sv nachádza v zozname na najvyššej úrovni.
(defun isin (sv zoz)
(cond ((null zoz) NIL)
((equal sv (first zoz)) T)
(T (isin sv (rest zoz)))
)
)
; Test či zoz1 je podmnožinou zoz2.
; Platí, že prázdna množina je podmnožinou ľubovoľnej inej množiny.
; Hlavná funkcia
(defun podmnoz (zoz1 zoz2)
(cond ((null zoz1) T)
((isin (first zoz1) zoz2) (podmnoz (rest zoz1) zoz2))
(T NIL)
)
)
; Príklady:
(podmnoz '(1 2) '(a b 2 c 1)) -> T
(podmnoz '(1 2) '(a b 1 c)) -> NIL