(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))))))) "