русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Синтаксис предикатов и предложений


Дата добавления: 2015-08-31; просмотров: 1388; Нарушение авторских прав


Перед тем как определить синтаксис правильных выражений в исчислении предика­тов, определим алфавит и грамматику для создания символов языка. Это соответствует лексическому аспекту определения языка программирования. Символы исчисления пре­дикатов, подобно лексемам в языке программирования, являются неприводимыми (минимальными) синтаксическими элементами: они не могут быть разбиты операциями языка на составляющие.

Мы представляем символы исчисления предикатов как строки букв и цифр, начинающиеся с буквы. Пробелы и неалфавитно-цифровые символы использовать нельзя, хотя символ подчеркивания (_) может использоваться для удобства чтения.

ОПРЕДЕЛЕНИЕ

СИМВОЛЫ ИСЧИСЛЕНИЯ ПРЕДИКАТОВ

Алфавит исчисления предикатов состоит из следующих элементов.

1. Набор букв английского алфавита как верхнего, так и нижнего регистра.

2. Набор цифр — 0, 1,..., 9.

3. Символ подчеркивания _.

Символы в исчислении предикатов начинаются с буквы, за которой следует последо­вательность перечисленных выше знаков.

Приведем пример допустимых знаков в алфавите исчисления предикатов.

aR69p_z Вот пример недопустимых знаков в алфавите исчисления предикатов.

К допустимым символам исчисления предикатов относятся следующие.

George f/геЗ tom_andjerry bill XXXX friends_of Приведем примеры строк, содержащих неразрешенные знаки.

3/ack "no blanks allowed" ab%cd ***71 duck\\\

Символы (или идентификаторы), как будет показано в подразделе 2.2.2, используются для обозначения объектов, свойств или отношений в области рассуждения. Как и в большинстве языков программирования, использование "слов", которые имеют зарезер­вированное значение, помогает понимать программный код. Например, выражения л(д,к) и любит(Джордж,Кейт) формально эквивалентны (т.е. имеют одинаковую структуру). Однако второй вариант может быть удобнее для понимания (людьми-читателями) смысла отношений, описанных этим выражением. Следует подчеркнуть, что такие подробные имена предназначены исключительно для улучшения удобочитаемости выражений. Единственное значение, которое может иметь выражение исчисления преди­катов, — это значение, определяемое их формальной семантикой.



Круглые скобки, запятые (,) и точки (.) используются исключительно для правильного построения выражений и не обозначают объекты или отношения из области рассужде­ния. Они называются несобственными символами (improper symbol[А.Д.2] ).

Символы исчисления предикатов могут представлять переменные, константы, функ­ции или предикаты. Константами называют определенные объекты или свойства из об­ласти рассуждения. Символьные константы должны начинаться со строчной буквы (буквы нижнего регистра). Таким образом, george, tree, tall и blue — примеры пра­вильных символьных констант. Константы true (истина) и false (ложь) зарезервированы как символы истинности.

Идентификаторы переменных используются для обозначения общих классов объек­тов или свойств из области рассуждения. Переменные представляются идентификатора­ми, начинающимися с прописной буквы. Так, George, BILL и Kate — допустимые пере­менные, в то время как geORGE и bill — нет.

Исчисление предикатов также допускает существование функций для объектов из некоторой области рассмотрения. Идентификаторы функций (подобно константам) начинаются с символа нижнего регистра (строчной буквы). Функции обозначают отображение одного или нескольких элементов множества (называемого областью определения функции) в однозначно определяемый элемент другого множества (множества значений функции). Элементы определения и множества значений — это объекты из области рассмотрения. Помимо обычных арифметических функций, таких как сложение и умножение, функции могут определять отображения между нечисловыми областями.

Заметим, что наше определение символов исчисления предикатов не содержит чисел или арифметических операторов. Система счисления не включена в примитивы исчисле­ния предикатов. Мы лишь аксиоматически определили "базовое" исчисление предикатов [Manna и Waldinger, 1985]. Его производные представляют теоретический интерес, но они менее важны в применении исчисления предикатов в качестве модели представления искусственного интеллекта. Для удобства включим арифметику в язык описания.

Каждый функциональный символ связан с арностью (arity), указывающей на количест­во параметров этой функциональной зависимости. Так, например, символ father мог бы обозначать функцию арности 1, которая позволяет определить отца, a plus мог бы быть функцией арности 2, которая отображает два числа в их арифметическую сумму.

Функциональное выражение — это идентификатор функции, за которым следуют его аргументы (или параметры). Аргументы — это элементы области определения функции. Число аргументов равно арности функции. Аргументы заключаются в круглые скобки и разделяются запятыми. Например,

f(X,Y)

father(david) price(bananas)

Все эти выражения являются правильно определенными функциональными вы­ражениями.

Каждое функциональное выражение обозначает отображение аргументов в единст­венный объект множества значений, называемый значением функции. Например, если father— это унарная функция, то father(david) является функциональным выражени­ем, значением которого (по желанию автора) есть george. Если plus — это функция ар­ности 2, определенная на множестве целых чисел, то plus(2,3) является функциональ­ным выражением, значением которого является целое число 5. Замена функции ее значением называется ее оцениванием (evaluation).

Понятие символа исчисления предикатов, или терма, формализовано следующим определением[А.Д.3] .

ОПРЕДЕЛЕНИЕ СИМВОЛЫ И ТЕРМЫ К символам исчисления предикатов относятся следующие.

1. Символы истинности true и false. Это зарезервированные символы.

2. Символы констант — это символьные выражения, начинающиеся с символа нижнего регистра (строчный символ).

3. Символы переменных — это символьные выражения, начинающиеся с символа верхнего регистра (прописной символ).

4. Функциональные символы — это символьные выражения, начинающиеся с сим­вола нижнего регистра (строчный символ). С функциями связывается арность, указывающая на число их аргументов.

Функциональное выражение (function expression) состоит из функциональной константы арности л, за которой следуют п термов гь t2, ..., tn, заключенных в круглые скобки и отделенных друг от друга запятыми.

Терм исчисления предикатов может быть константой, переменной или функцио­нальным выражением.

Таким образом, термом исчисления предикатов обозначают объекты и свойства из области определения данной задачи. Примеры термов:

cat

tlmes(2,3)

X

blue

motherljane)

kate

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

like equals on near part_of

Атомарное высказывание (атомарная формула) (atomic sentence), самая примитив­ная единица языка исчислений предикатов, является предикатом арности п, за которым следует п термов, заключенных в круглые скобки и разделенных запятыми. Вот примеры атомарных высказываний.

likes(george,kate) likes(X,george)

likes(george.susie) likes(X,X)

likes(george,sarah,tuesday) friends(bill,richard)

friends(bill,george) friends(father_of(davld),father_of(andrew))

helps( bill, george) helps(richard, bill)

Символами предикатов в этих выражениях являются likes, friends и helps. Символ предиката может быть использован с различным числом аргументов. В этот пример включены два различных предиката likes, один из которых зависит от двух, а другой [А.Д.4] — от трех аргументов. Если символ предиката используется в предложениях с различной арностью, то считается, что он представляет два различных отношения. Таким образом, отношение предиката определяется его именем и арностью. Два отличных предиката likes могли бы составлять часть одного и того же описания мира; однако этого избегают, так как могут возникнуть недоразумения.

В приведенных выше примерах предикатов bill, george и kate являются постоянными символами и представляют объекты из области определения задачи. Аргументы предиката являются термами и могут также содержать переменные или функциональные выражения. Например,

frlends(father_of(david),father_of{andrew))

является предикатом, описывающим отношения между двумя объектами из области рассуждения. Аргументы здесь представлены как функциональные выражения, значения ко­торых (будем считать, что father_of(david) есть george и father_of(andrew) есть alien) являются параметрами предиката. После оценки функциональных выражений представленное выше выражение примет вид.

fhends(george, alien)

Эти идеи формализованы в следующем определении.

ОПРЕДЕЛЕНИЕ

ПРЕДИКАТЫ И АТОМАРНЫЕ ПРЕДЛОЖЕНИЯ

Символы предиката — это символы, начинающиеся с символа нижнего регистра. Предикаты связаны с положительным целым числом, определяющим арность, или "число аргументов", предиката. Предикаты с одинаковым именем, но различной арностью считаются различными.

Атомарное предложение— это предикатная константа арности п, за которой следу­ют п термов ti, t2, —, tn, заключенных в круглые скобки и отделенных запятыми. Значения истинности true и false тоже являются атомарными предложениями.

Атомарные предложения также называются атомарными выражениями, атомами или предложениями.

Мы можем комбинировать атомарные предложения и формировать предложения в исчислении предикатов, используя логические операторы. Это те же самые логические связки, которые используются в исчислении высказываний

Л, V, -I, —> И =.

Переменная, встречающаяся в предложении в качестве параметра (аргумента), относится к неопределенным объектам в области определения. Исчисление предикатов пер­вого порядка (подраздел 2.2.2) включает два символа: кванторы переменных (variable quantifier) V и 3. Они ограничивают значение предложения, содержащего переменную. За квантором следует переменная и предложение, как показано ниже.

ЗУ friends(Y, peter) VX likes(X, icejcream)

Квантор всеобщности V означает, что предложение истинно для всех значений пе­ременной. В примере VX likes(X,ice_cream) выражение истинно для всех значений X в области определения X. Квантор существования 3 указывает, что предложение истинно[А.Д.5] по крайней мере для одного значения в области определения. Выражение 3/ friends( Y,peter) истинно, если имеется по крайней мере один объект Y, который явля­ется другом Питера. Более подробно кванторы рассматриваются в подразделе 2.2.2. Предложения в исчислении предикатов определены индуктивно.

ОПРЕДЕЛЕНИЕ

ПРЕДЛОЖЕНИЯ ИСЧИСЛЕНИЯ ПРЕДИКАТОВ Каждое атомарное предложение есть предложение.

1. Если s — предложение, то его отрицание -в тоже является предложением.

2. Если S) и s2 — предложения, то их конъюнкция Sias2 тоже является предложением.

3. Если Sj и s2 — предложения, то их дизъюнкция з^гтоже является предложением.

4. Если S] и s2 — предложения, то их импликация я^вгтоже является предложением.

5. Если S] и s2 — предложения, то их эквивалентность Si=s2 тоже является предло­жением.

6. Если X — переменная и s предложение, то VX s есть предложение.

7. Если X — переменная и s предложение, то ЭХ s есть предложение.

Далее следуют примеры правильно построенных предложений.

Пусть times (умножить) и plus (сложить) — символы функций арности 2 и пусть equal (равно) и foo являются предикатными символами арности 2 и 3 соответственно.

plus( two, three) (сложить два и три) — это функция, т.е. не атомарное предложение.

equal (plus(two,three), five) — это атомарное предложение.

equal{plus(2,3), seven) — это атомарное предложение. Заметим, что это предло­жение при стандартной интерпретации операций сложения и уравнивания является лож­ным. Формальная правильность и истинность значения — независимые понятия.

ЭХ foo{X,two,plus{two,three))Aequal(plus(two,three),five) — предложение, пото­му что оба конъюнкта являются предложениями.

(foo(two,two,plus(two,three)))->equal{plus{two,three),five)=true) — это предло­жение, потому что все его компоненты — предложения, связанные логическими операторами.

Определение предложений исчисления предикатов и приведенные примеры приводят к мысли о необходимости проверки: является ли выражение предложением. Метод такой проверки можно записать в виде рекурсивной функции verify_sentence, которая получает в качестве параметра рассматриваемое выражение и возвращает значение success (успех), если выражение является предложением.

function verify_sentence(expression); begin case

выражение является атомарным предложением: return SUCCESS; выражение имеет вид Q X s, где Q — либо V либо Э,а X — переменная, если verify_sentence(s) возвращает SUCCESS then return SUCCESS else return FAI1; выражение имеет вид —is:

if verify_sentence(s) возвращает SUCCESS[А.Д.6] then return SUCCESS else return FAll;

выражение имеет вид sx op s2, где op — бинарный логический оператор:

if verify_sentence(s1) возвращает SUCCESS и

verify_sentence(s2) возвращает SUCCESS then return SUCCESS else return FAIL; в остальных случаях: return FAIL end end.

В заключение этого раздела приведем пример использования исчисления предикатов. Рассмотрим модель простого мира. Рассматриваемая область определения — набор се­мейных отношений в библейской генеалогии.

mother{eve,abel)

mother(eve,cain)

father(adam,abel)

father(adam,cain)

VXW father(X, Y)vmother(X, Y)->parent(X, Y)

VXV WZ parent(X, Y)Aparent(X,Z)->sibling{Y,Z)

В этом примере для определения набора отношений родителей и детей использованы предикаты mother (мать) и father (отец). В терминах этих предикатов импликация дает общее определение других отношений, в том числе родительских и братских. Интуиция подсказывает, что импликацию можно использовать для описания братских отношений, например sibling(cain, abel). Для реализации этого процесса на компьютере необходи­мо его формализовать, т.е. определить алгоритмы вывода. При задании этих алгоритмов нужно соблюдать осторожность, поскольку они действительно должны выводить пра­вильные заключения из данного набора утверждений исчисления предикатов. Для того чтобы это было именно так, вначале определим семантику исчисления предикатов (подраздел 2.2.2), а затем перейдем к правилам вывода (раздел 2.3).



<== предыдущая лекция | следующая лекция ==>
Семантика исчисления высказываний | Семантика исчисления предикатов


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 2.192 сек.