Логические переменные, подстановки и примеры
Логические переменные служат для обозначения неопределенных объектов и соответственно этому используются. Рассмотрим их применение в вопросах. Предположим, мы хотим выяснить, чьим отцом был авраам. Для этого можно задавать вопросы: отец (авраам, лот)?, отец (авраам, милка)?..., отец (авраам, исаак)?,... до тех пор, пока не будет получен ответ да. С помощью переменной реализуется более удобный способ поиска ответа. Вопрос формулируется в виде отец (авраам, X)?. Ответом на вопрос является Х = исаак. Переменные в данном случае служит для представления совокупности вопросов. Как будет объяснено в дальнейшем, с помощью вопроса, содержащего переменную, выясняется, имеется ли такое значение переменной, при котором вопрос будет логическим следствием программы.
Использование переменных в логических программах отличается от использования переменных в традиционных языках программирования. В логических программах переменная обозначает неопределенный, но единственный объект, а не некоторую область памяти.
Введя переменные, мы можем определить единственную структуру данных в логических программах – термы. Определение термов индуктивно. Константы и переменные являются термами. Кроме того, термами являются составные термы, или структуры. Составной терм содержит функтор (называемый главным функтором терма) и последовательность из одного или более аргументов, являющихся термами. Функтор задается своим именем, которое суть атом, и своей арностью, или числом аргументов. Синтаксически составные термы имеют вид f(t,t,…t),где f – имя n-арного функтора, а t– аргументы. Примеры составных термов: s(0), горячий (молоко), имя (джон, доу), list(a, list (b, nil)), foo(X) и tree(tree(nil,3,nil), 5,R).
Вопросы, цели и вообще термы, в которые не входят переменные, называются основными. Термы, содержащие переменные, называются неосновными. Так, foo (a,b) – основной терм, a bar(X) – нет.
• Определение. Подстановкой называется конечное (возможно, пустое) множество пар вида X= tгде X– переменная и t– терм; X¹ X, при i ¹ j и Xне входит в tпри любых i и j. •
Примером подстановки, состоящей из одной пары, может служить {X = исаак}. Подстановки могут применяться к термам. Результат применения подстановки Q к терму А, обозначается АQ, есть терм, полученный заменой каждого вхождения переменной Х в А на t для каждой пары вида Х = t из Q.
Результат применения {X = исаак} к терму отец (авраам, X) есть терм отец(авраам, исаак).
• Определение: А называется примером В, если найдется такая подстановка Q, что А = BQ. •
По определению цель отец (авраам, исаак) является примером терма отец (авраам, X). Аналогично мать( сара, исаак) – пример терма мать (X, Y) при подстановке {X = сара, Y= исаак}.