(define exists
{(list A) --> (A --> boolean) --> boolean}
[ ] P -> false
[X | Y] P -> (or (P X) (exists Y P)))
(define forall
{(list A) --> (A --> boolean) --> boolean}
[ ] P -> true
[X | Y] P -> (and (P X) (forall Y P)))
(defmacro logic-macro
[exists Variable Domain Wff] -> [exists Domain [/. Variable Wff]]
[forall Variable Domain Wff] -> [forall Domain [/. Variable Wff]]
[~ P] -> [not P]
[P & Q] -> [and P Q]
[P v Q] -> [or P Q]
[P => Q] -> [or [not P] Q]
[P <=> Q] -> [and [P => Q] [Q => P]]
[X R Y] -> [R X Y] where (element? R [= > < >= <= + - / *]))
"
(let D [8 9 10 11 12 13]
(exists X D (exists Y D ((prime? X) & ((prime? Y) & (~ (X = Y)))))))
"