Рассмотрим построение определений для элементарных типов.
HT(I)--1. Тип. Обычно тип рассматривается как подмножество
множества, идентифицированного символом сорта. Таким
образом, для сорта D тип T зададим дескрипцией
T = Iy : [D]∀x : D(y(x) ↔ Φ) = {x : D | Φ},
для которой справедливо включение T ⊆ D ∈ [D].
HT(I)--2. Отношение. Объект данных, называемый отношением,
рассматривается как подмножество декартова произведе-
ния областей, идентифицированных символами сортов. Сле-
довательно, для сортов A, B отношение R определяется де-
скрипцией
R = Iz : [A, B]∀x : A∀y : B(z[x, y] ↔ Ψ) = {[x : A, y : B] | Ψ}
23.1. ОСНОВНАЯ ЗАДАЧА 181
для которой справедливо включение R ⊆ A × B. В данном
случае, чтобы избежать громоздкости, рассмотрено опре-
деление двухместного отношения R.
HT(I)--3. Значение функции. При построении баз данных значи-
тельное внимание уделяется классу отношений, называемому
функциональными отношениями. С этой целью введем опре-
деление
R0
(t) = Iy : B.R([t, y]),
где t - терм сорта A. В данном случае справедлива запись
R0
(t) ∈ B.
HT(I)--4. Функциональная абстракция. Такой объект данных от-
личается особенно частым употреблением в аппликативных
системах программирования для указания на определение функ-
ции. Для переменной u сорта A и терма s сорта B функцио-
нальная абстракция определяется дескрипцией
λu : A.s = Iw : [A, B]∀u : A∀v : B(w[u, v] ↔ v = s)
= {[u, v] | v = s},
для которой справедливо включение λu.s ⊆ A×B.
Ищите лекарства - http://www.samson-f.ru/ тут.
Как оказалось, аппарат дескрипций проявляет достаточную мощ-
ность -- позволяет вторичным образом выразить оператор абстрак-
ции. Отметим, что в комбинаторной логике оператор абстракции
также выражается через комбинаторы. В этом смысле можно усмо-
треть известную аналогию между средствами комбинаторной логики
и средствами, предоставляемыми дескрипциями. |