<На страницу назад | На страницу вперед>

А.1.5 Определения
Существует два вида определений: полные и неполные (или частичные). При описании индивида полное определение обеспечивает терм, который соответствует определенному индивиду. При описании функции полное определение обеспечивает терм, который соответствует определенной функции.

При описании отношения полное определение обеспечивает набор предложений, которые в совокупности специфицируют условия, необходимые и достаточные для того, чтобы было установлено определяемое отношение. Неполное определение накладывает ограничения на определяемый индивид, функцию, отношение, которым (как правило) недостает полного, законченного определения. Неполные определения нередко используются просто для того, чтобы ввести данный терм в язык без дополнительной информации. В полных и неполных определениях используются операторы := и :=>, соответственно. В полном определении индивида должно быть специфицировано имя индивида и терм, определяющий индивида. В неполном определении должно быть специфицировано только имя данного индивида. В неполное определение можно включить предложение (не обязательно) для ограничения определения данного индивида. Константа может иметь только одно полное определение, но несколько неполных определений.

Для иллюстрации можно ввести функцию age-of (возраст) и индивида Larry (Лэрри) при использовании следующих определений:

(define-function age-of
(forall ?x (and (integer (age-of ?x)) (>= 0 (age-of ?x)))))
(define-individual Larry
(= (age-of Larry) 49).

Необязательное предложение, следующее за (неполным) определением "age-of", специфицирует, что указанная функция должна возвратить целое число больше 0. Затем эта функция используется в неполном определении терма "Larry" для спецификации его возраста.

Обратите внимание: определения можно использовать для введения в явной форме термов, обозначающих функции и отношения, эквивалентные тем, которые обозначаются термами lambda и kappa. Так, например, свойство, говорящее о том, что определенному лицу больше 40 лет, но меньше 60, на которое делает ссылку приведенный выше терм kappa, можно назвать в явной форме соответствующим атомарным термом посредством следующего определения:

(define-relation middle-aged :=
(and (person ?x) (> (age-of ?x) 40) (< (age-of ?x) 60)))).

<На страницу назад | На страницу вперед>