Welcome to SWI-Prolog (threaded, 64 bits, version 9.0.4) SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software. Please run ?- license. for legal details. For online help and background, visit https://www.swi-prolog.org For built-in help, use ?- help(Topic). or ?- apropos(Word). ?- man(john). true. ?- loves(john, mary). true ?- loves(john, X). X = mary ; X = wine ; X = john ; X = mary ; false. ?- loves(X, wine). X = john ; X = mary ; false. ?- loves(X, Y). X = john, Y = mary ; X = john, Y = wine ; X = mary, Y = wine ; X = Y, Y = john ; X = john, Y = mary ; false. ?- add(s(s(s(o))), s(s(o)), X). X = s(s(s(s(s(o))))). ?- add(s(s(s(o))), X, s(s(s(s(s(o)))))). X = s(s(o)). ?- add(X, s(s(s(o))), s(s(s(s(s(o)))))). X = s(s(o)) ; false. ?- add(X, Y, s(s(s(s(s(o)))))). X = o, Y = s(s(s(s(s(o))))) ; X = s(o), Y = s(s(s(s(o)))) ; X = s(s(o)), Y = s(s(s(o))) ; X = s(s(s(o))), Y = s(s(o)) ; X = s(s(s(s(o)))), Y = s(o) ; X = s(s(s(s(s(o))))), Y = o ; false. ?- add(X, Y, Z). X = o, Y = Z ; X = s(o), Z = s(Y) ; X = s(s(o)), Z = s(s(Y)) ; X = s(s(s(o))), Z = s(s(s(Y))) ; X = s(s(s(s(o)))), Z = s(s(s(s(Y)))) ; X = s(s(s(s(s(o))))), Z = s(s(s(s(s(Y))))) ; X = s(s(s(s(s(s(o)))))), Z = s(s(s(s(s(s(Y)))))) ; X = s(s(s(s(s(s(s(o))))))), Z = s(s(s(s(s(s(s(Y))))))) ; X = s(s(s(s(s(s(s(s(o)))))))), Z = s(s(s(s(s(s(s(s(Y)))))))) ; X = s(s(s(s(s(s(s(s(s(o))))))))), Z = s(s(s(s(s(s(s(s(s(Y))))))))) ; X = s(s(s(s(s(s(s(s(s(s(...)))))))))), Z = s(s(s(s(s(s(s(s(s(s(...)))))))))) ; X = s(s(s(s(s(s(s(s(s(s(...)))))))))), Z = s(s(s(s(s(s(s(s(s(s(...)))))))))) ?- X = [1, 2]. X = [1, 2]. ?- X = [1,2,3]. X = [1, 2, 3]. ?- X = []. X = []. ?- X = [1|[2|[3|[]]]]. X = [1, 2, 3]. ?- [H|T] = [1,2,3]. H = 1, T = [2, 3]. ?- member(1, [1,2,3]). true ; false. ?- member(X, [1,2,3]). X = 1 ; X = 2 ; X = 3. ?- member(1, X). X = [1|_] ; X = [_, 1|_] ; X = [_, _, 1|_] ; X = [_, _, _, 1|_] ; X = [_, _, _, _, 1|_] ; X = [_, _, _, _, _, 1|_] ?- member(X, Y). Y = [X|_] ; Y = [_, X|_] ; Y = [_, _, X|_] ; Y = [_, _, _, X|_] ; Y = [_, _, _, _, X|_] ; Y = [_, _, _, _, _, X|_] ; Y = [_, _, _, _, _, _, X|_]