
- •127994, Москва, ул. Образцова, 15
- •2.Теоретические основы логическоого программирования
- •2.1.Логика высказываний и логика предикатов.
- •2.1.1.Формулы. Синтаксис и семантика формул.
- •2.1.2.Интерпретация формул в логике высказываний.
- •2.1.3.Интерпретация в логике предикатов первого порядка
- •2.1.4.Равносильность формул логики высказываний
- •2.1.5.Тождественная истинность формул логики высказываний
- •2.1.6.Равносильность формул логики первого порядка
- •2.1.7.Тождественная истинность, общезначимость, выполнимость, противоречивость формул логики предикатов
- •2.1.8.Рассуждения в логике высказываний (предикатов)
- •2.2.Метод резолюций
- •2.2.1.Метод резолюций в логике высказываний
- •2.2.2.Подстановка и унификация
- •2.2.3.Метод резолюций для логики первого порядка
- •2.2.4.Стратегии метода резолюций
- •2.3.Отношения и предикаты
- •3.Пролог- язык РекуРсивно-логического программирования
- •3.1.Пролог-история возникновения
- •3.2.Синтаксис языка пролог
- •3.3.Семантика языка пролог
- •3.4.Язык пролог и метод резолюций. Логическая интерпретация языка Пролог.
- •3.5.Работа в пролог-системе
- •3.6.Описание инфиксных операций
- •3.7.Списки в языке пролог
- •3.8.Арифметика в языке пролог
- •3.9.Отсечение и отрицание в языке пролог
- •3.10.Встроенные предикаты языка пролог
- •3.11.Работа с базой данных в языке пролог
- •3.12.Предикаты поиска
- •3.13.Решение головоломки на языке пролог(задача Эйнштейна)
- •4.Лабораторные работы по РекуРсивно-логическому программированию
- •4.1.Задание n1 Отношения между объектами. (на Прологе и Паскале)
- •4.1.1.Методические указания
- •4.1.2.Варианты
- •4.2.Задание n2. Работа со списками
- •4.2.1.Методические указания
- •4.2.2.Варианты
- •4.3.Задание n3. Разные задачи
- •4.3.1.Методические указания
- •4.3.2.Варианты
- •4.4.Содержание отчета
2.2.2.Подстановка и унификация
Формулы логики предикатов содержат переменны, поэтому для сопоставления литер необходимо осуществлять подстановки вместо переменных их значений.
Определение 2.2.4. Подстановкой называется множество подстановочных компонент вида
s={x1=t1, x2=t2,…, xn=tn},
где x1,x2,…,xn – различные переменные, t1,t2,…,tn – термы, причем терм ti не содержит переменной xi (1≤ i ≤ n).
Если σ = (x1=t1,...,xn=tn) – подстановка, а F – некоторый объект логики предикатов (терм, дизъюнкт, формула, множество объектов и т. д.), то через σ(F) будем обозначать дизъюнкт, полученный из F одновременной заменой всех xi на ti,.
Пример 2.2.4.
если σ={x=f(y), y=c, z=g(u)), F=R(x, y, z)v¬P(f(y)), то σ(F)=R(f(y), c, g(u))v¬P(f(c).
Определение 2.2.5. Пусть {E1,…,Ek} – множество объектов логики предикатов. Подстановка σ называется унификатором этого множества, если σ(E1)=σ(E2)=…=σ(Ek). Множество унифицируемо, если существует унификатор этого множества.
Пример 2.2.5.
Множество атомарных формул {Q(a,x,f(x)), Q(u,у,z)} унифицируемо подстановкой {u=a, x=у, z=f(у)},
а множество {R(x,f(x)), R(u,u)} неунифицируемо.
Если множество унифицируемо, то существует, как правило, не один унификатор этого множества, а несколько. Среди всех унификаторов данного множества выделяют так называемый наиболее общий унификатор.
Определение 2.2.6. Пусть ξ и η – две подстановки. Тогда произведением (композицией) подстановок ξ и η (η◦ξ) называется подстановка такая, что для любого объекта E выполняется равенство (E)=η(ξ(E)).
Будем конструировать подстановку следующим образом:
Алгоритм 1. Конструирование композиции подстановок.
Вход: подстановки ξ={x1=t1, x2=t2,…, xk=tk} и η={y1=s1, y2=s2,…, yl=sl}
получим из подстановок η и ξ множество подстановочных компонент {x1=η(t1), x2=η(t2),…,xk=η(tk), y1=s1, y2=s2,…, yl=sl},
удалим из него компоненты вида xi=xi для, если таковые найдутся для 1≤ i≤ k,
удалим компоненты вида yj=sj, если yj {x1,…, xk}, для 1≤j≤l, получим подстановку =η◦ξ.
Пример 2.2.6
Рассмотрим пример. Пусть ξ = {x=f(y), z=y, u=g(d)}, η = {x=c, y=z}.
{x=f(y), z=z, u=g(d), x=c, y=z}.
{x=f(y), u=g(d), x=c, y=z}.
η◦ξ = {x=f(y), u=g(d), y=z}.
Упражнение 2.2.2.
Доказать, что результатом алгоритма 1 является композиция подстановок, удовлетворяющая определению 2.2.6.
Упражнение 2.2.3.
Доказать, что композиция подстановок ассоциативно, т.е. для любых подстановок ξ, η, ζ выполняется равенство ξ◦(η◦ζ)=(ξ◦η)◦ζ.
Введем пустую подстановку – подстановку, не содержащую подстановочных компонент. Будем обозначать ее через ε.
Упражнение 2.2.4.
Доказать, что пустая подстановка является единицей относительно умножения, т.е. для любой подстановки σ выполняются равенства σ◦ε=ε◦σ=σ.
Определение 2.2.7. Унификатор σ называется наиболее общим унификатором (НОУ), если для любого унификатора τ того же множества существует подстановка ξ такая, что τ=ξ○σ.
Пример 2.2.7
Для множества {P(x,f(а), g(z)), P(f(b),y,v)} наиболее общим унификатором является подстановка σ={x=f(b), y=f(a), v=g(z)}. Подстановка τ={x=f(b), y=f(a), z=c, v=g(c)}, то ξ={z=c} также является его унификатором. Однако τ=ξ○σ где ξ={z=c}.
Для изложения алгоритма нахождения наиболее общего унификатора потребуется понятие множества рассогласований в множестве объектов. Множество рассогласований строится следующим образом.
Алгоритм 2. Построение множества рассогласований.
Вход: множество объектов логики предикатов М, каждый объект представляет собой последовательность символов.
выделим первую слева позицию (позицию рассогласований), в которой не для всех объектов стоят одинаковые символы.
в каждом объекте выпишем подобъект, которое начинается с данной позиции (этими подобъектами могут быть литера, атомарная формула, терм).
множество полученных подобъектов называется множеством рассогласований в М.
Пример 2.2.8.
M={P(x, f(y), a), P(x,u, g(y)), P(x, c, v)}, позиция рассогласований – пятая, множество рассогласований - {f(y), u, c}.
M={P(x, y), ¬P(a, g(z))}, позиция рассогласований – первая, множество рассогласований - {P(x, y), ¬P(a, g(z))}.
M={¬P(x, y),¬Q(a, v)}, позиция рассогласований – вторая, множество рассогласований - {P(x, y), Q(a, v)}.
Алгоритм 3. Алгоритм унификации.
Вход: множество литер М, каждая литера представляет собой последовательность символов.
Положить k=0, Mk=M, σk=ε.
Если множество Мk состоит из одной литеры, то выдать σk в качестве НОУ, завершить работу иначе найти множество Nk рассогласований в Mk.
Если в множестве Nk существует переменная vk и терм tk, не содержащий vk, то перейти к шагу 4, иначе множество М неунифицируемо, завершить работу.
Положить σk+1={vk,=tk}○σk,. К множеству Mk применить подстановку vk=tk, полученное множество литер взять в качестве Mk+1.
Положить k=k+1 и перейти к шагу 2.
Пример 2.2.9. Проиллюстрируем работу алгоритма унификации на множестве М.
М={P(x,f(y)), P(a,u)}.
1). k=0, σ0=ε, M0=M,
2). N0={x,a},
3)-4). σ1={x=a}, M1={P(a,f(y)),P(a,u)},
5). k=1,
2). N1={f(y), u},
3)-4). σ2={x=a, u=f(y)}, M2={P(a,f(u))},
5). k=2,
2). НОУ={x=a, u=f(y)}. Конец работы.
M={P(x,f(y)), P(a,b)}.
1). k=0, σ0=ε, M0=M,
2). N0={x,a},
3)-4). σ1={x=a}, M1={P(a,f(y)), P(a,b)},
5). k=1,
2). N1={f(y), b},
3) М неунифицируемо. Конец работы.
Упражнение 2.2.5.
Доказать, что алгоритм 3 правильно (в соответствии с определениями) оценивает унифицируемость множества литер и находит НОУ.