пролог: два натуральных числа называются взаимно простыми, если они имеют в точности один общий делитель. Пара натуральных чисел (х,у) задается списком (х.у.nil). Две пары чисел, отличающиеся лишь порядком следования чисел, считаются одинаковыми. Составить логическую программу, которая для заданного натурального числа N вычисляет список Х всех неодинаковых пар взаимно простых чисел, не превосходящих N. Запрос G(N,X)
предикаты :
S(x) – х – шар
P(x) – х – пирамида
C(x) – х – куб
W(x) – х – белый объект
B(x) – х – черный объект
U(x,y) – х лежит над у
D(x,y) – х лежит под у
L(x,y) – х лежит слева от у
R(x,y) – х лежит справа от у
exist x all y exist z (P(x,y) -> P(y,z))
all x (A(x) -> all y (Q(y) -> R(x,y))) & ~ all x (A(x) -> all y (B(y) -> R(x,y))) -> ~ all x (B(x) -> Q(x))