Терм — это логическое выражение, которое относится к некоторому объекту. Поэтому константные символы также представляют собой термы, но не всегда удобно иметь отдельный символ для каждого отдельного объекта. Например, в естественном языке можно воспользоваться обозначением "левая нога короля Джона", а не присваивать ноге короля имя. Именно для этого и нужны функциональные символы: вместо использования константного символа мы можем написать LeftLeg(John). В общем случае сложный терм формируется с помощью функционального символа, за которым следует заключенный в круглые скобки список формальных параметров данного функционального символа. Важно помнить, что любой сложный терм — это некоторое подразумеваемое имя, выраженное в сложной форме. Это — не "вызов процедуры", которая "возвращает значение". Не существует такой процедуры LeftLeg, которая принимает на входе какого-то человека и возвращает его левую ногу. Мы можем рассуждать о левых ногах (например, формулировать общее правило, что каждый человек имеет таковую, и на основании этого делать вывод, что таковую должен иметь Джон), даже не предусматривая определение символа LeftLeg. Это— такая логическая операция, которая не может быть выполнена с помощью процедур в языках программирования. Формальное определение семантики термов является несложным. Рассмотрим терм. Функциональный символ f относится к некоторой функции в модели (назовем ее F); термы с обозначением формальных параметров относятся к объектам данной проблемной области (назовем их ); а сам терм в целом относится к объекту, представляющему собой значение функции F, применяемой к объектам . Например, предположим, что функциональный символ LeftLeg относится к функции, показанной в уравнении 8.2, а символ John относится к королю Джону; в таком случае LeftLeg (John) относится клевой ноге короля Джона. Таким образом, интерпретация определяет для каждого терма соответствующий референт (объект, к которому относится данный терм).
|