б) all (х: х owns у and у isa animal and not у white)
в) all (x: x owns Bootsie)
r) all (xy: к isa animal and у owns ss)
Упражнение 2.2
а) NO
б) Rover Star
в) Тот Kate
Упражнение 2.3
x light-coloured if
x isa animal and
not x black
all (x: x light-coloured and not x isa horse)
Упражнение 2.4
a) 9;
б) 3;
в) -3;
г) 18;
д) 2;
e) NO;
ж) YES;
з) задавая в качестве третьего аргумента х, мы тем самым спрашиваем, является ли сумма 3 и 6 - числом.
Упражнение 2.5
а) 1;
б) -4;
в) ошибка в процессе вычисления;
г) ошибка в процессе вычисления;
д) ошибки в упражнениях (в) и (г) связаны с тем, что в отношениях INT и SIGN значение первого аргумента не определено.
Упражнение 2.6
х geq X
х geq у
if у LESS X
Упражнение 2.7
а) YES, поскольку запрос в данном случае можно сформулировать так:
"2 меньше или равно какому-либо числу";
б) YES, запрос трактуется так: "Какое-либо число меньше или равно 2";
в) ошибка в процессе вычислений.
Упражнение 2.8
х gt у if ; х больше-или-равно у if
not x jeq у ; not х меньше-или-равно у
Упражнение 2.9
а) 0, 1, 2, 3, 4;
б) all (x: х in (1 100))
в) терм SUM должен принять вид SUM (Y 0.1 х)
г)
X in(XY)if
X LESS Y
X in(YZ)if
SUM(X 1 x)and
X LESS Z and
X in (x Z)
д) необходимо поменять местами утверждения, определяющие отношение in
Упражнение 2.10
Смотрите следующее упражнение.
Упражнение 2.11
Модифицированное отношение позволяет пользователям с самого начала определять, с кем именно необходимо провести сравнение.
Упражнение 2.12
а. Должно быть выведено три пустые строки. Программа проведет обработку запроса, получит результаты, но ничего не напечатает, поскольку перед двоеточием в запросе ничего не стоит.
б.
X older Y if
X aged Z and
Y aged x and
x LESS Z
X polder Y if
X older Y and
((PX is older than Y))?
Упражнение 2.13
Ниже на Прологе описаны факты, касающиеся только человека по имени Колин. Для остальных эти утверждения имеют аналогичную структуру:
Colin age 28
Colin born (4-9-57) ; обратите внимание на скобки
Colin earns 9850
Colin in 3 ; 3 - номер дома
Colin years-in 2 ; 2 - число лет проживания в доме
Colin job teacher
Colin years-at 7 ; 7 - стаж работы
Отношения, обеспечивающие упорядоченный вывод данных, могут быть определены так:
X page Y if
X age Y and
((P X is Y years old))?
XpbornYif
X born Y and
((P X was born on Y))?
X pearns Y if
X earns Y and ((Р X earns $ Y)) ?
XpinYif
X in Z and
X years-in Y and ,
((P X has lived in number Z for Y years)) ?
XpjobYif
X job Y and
not X job 0 and
((P X is employed as a Z)) ? X pat Y if
X job Z and
X years-at Y and
((P X has been employed as a Z for Y years)) ?
Дадим некотооые пояснения. Точки с запятыми служат для того, чтобы отделить тексты отношений от комментариев. В каком-то смысле использование комментариев противоречит тому, что было сказано ранее о самодокументируемости программ, написанных на ориентированных на решение задач искусственного интеЕта языках В принципе можно было бы выбрать имена отношений так чтобы сражали семантику отношений. Но все дело в том, что поскольку находящаяся в распоряжении пользователя оперативная память ЭВМ Spectrum огрето имена отношений должны быть короткими. В заключение отметим, что комментарии не обязательно вводить в ЭВМ.
Упражнение 2.14
См. материал, непосредственно следующий за упражнением 2.14.