
852
ПРИЛОЖЕНИЕ A. МАТЕМАТИЧЕСКИЕ МОДЕЛИ
Значениями предикатов считаются атомы true, false.
Пример A.6.4. Список (true, false, nil) выражается в нашем базисе как
ADD(true, ADD(false, ADD(nil, nil))).
Вообще,одноэлементный список с элементом A выражается как ADD(A, nil).
Конец примера A.6.4.
В связи с тем, что рассмотрено в предыдущем примере, вводится следующее
сокращение.
Выражение
ADD(t
1
, ···ADD(t
n
, nil) . . . )
обозначается
(t
1
, . . . , t
n
)
.
Если мы желаем рассмотреть алгоритмы над некоторой алгебраической
системой Σ, то элементы ее носителя рассматриваются как атомы, вводит-
ся новый предикат, например, SIGMA(x), выделяющий среди атомов те, ко-
торые являются элементами Σ, а константы, предикаты и функции данной
алгебраической системы вводятся в число примитивов.
Внимание!
Поскольку равенство отнюдь не для всех типов данных является вычисли-
мым предикатом (например, равенство действительных чисел либо равен-
ство объектов никакого вычислительного смысла не имеет), мы не считаем,
что алгебраическая система обязательно содержит в числе элементарных
предикатов предикат равенства.
Мы не считаем, что все функции алгебраической системы Σ всюду опре-
делены (но предикаты, как правило, считаются всюду определенными).
Пример A.6.5. Если мы импортировали как алгебраическую систему поле
действительных чисел с обычными алгебраическими операциями, то следу-
ющее выражение
(HD(X) + HD(TL(X)))/HD(TL(TL(X)))
делит сумму первых двух элементов списка на третий. Конечно же, можно
было записать алгебраические операции как двухместные функции, но до
такого педантизма мы в данном изложении не дойдем. Тем не менее стоит
отметить, что, как всегда, сохранение привычных способов записи при до-
бавлении новых структур приводит к новым сложностям. Скобки вокруг ал-
гебраического выражения и скобки вокруг выражения, превращающие его в
одноэлементный список, становятся неразличимы.
Конец примера A.6.5.