(defprolog woman martha <--; joan <--;) (prolog? (woman martha)) (prolog? (woman jean)) (prolog? (woman X)) (prolog? (woman X) (return X)) (prolog? (findall X (woman X) Y) (return Y)) (prolog? (is X (+ 1 1)) (return X)) (defprolog f (- a) <--;) (prolog? (f X)) (prolog? (f a)) (defprolog lived "Adam" 930 <--; "Seth" 912 <--; "Enos" 905 <--; "Ca-i'nan" 910 <--; "Mahal'aleel" 895 <--; "Jared" 962 <--; "Enoch" 365 <--; "Methu'selah" 969 <--; "Lamech" 777 <--;) (defprolog begat "Adam" "Seth" <--; "Seth" "Enos" <--; "Enos" "Ca-i'nan" <--; "Ca-i'nan" "Mahal'aleel" <--; "Mahal'aleel" "Jared" <--; "Jared" "Enoch" <--; "Enoch" "Methu'selah" <--; "Methu'selah" "Lamech" <--;) (prolog? (findall Age (lived Person Age) Ages) (return (sum Ages))) (defprolog total [] 0 <--; [X | Y] N <-- (total Y M) (is N (+ M X));) (prolog? (findall Age (lived Person Age) Ages) (total Ages Total) (return Total)) (prolog? (when (> 6 7))) (prolog? (when (> 16 7))) (define foo X -> (prolog? (is Y (* (receive X) (receive X))) (return Y))) (foo 9) (defprolog woman X <-- ! (married-to X john); martha <--;) (defprolog married-to joan john <--;) (prolog? (woman joan)) (prolog? (woman martha)) (defprolog neg P <-- (call P) ! (when false); _ <--;) (prolog? (neg (woman susan))) (prolog? (neg (woman joan))) (defprolog f X <-- (g1 X) (h X); X <-- (g1 X) (i X); X <-- (g1 X) (j X);) (defprolog g1 a <--;) (defprolog h a <--;) (defprolog i a <--; b <--;) (defprolog j b <--;) (prolog? (g1 a)) (defprolog f X <-- (g1 X) (fork (h X) (i X) (j X));) (prolog? (f a))