- •Глава 0 логика, логическое программирование и пролог
- •Знакомство с логическим программированием Определение логического программирования
- •Наследие логики
- •2. Традиционная логика Аристотель
- •Законы традиционной логики
- •Критика силлогизма
- •3. Начальный период развития формальной логики Де Морган
- •Таблицы истинности
- •Фреже и Пеано
- •Исчисления
- •4. Логика высказываний Высказывания
- •Правильно построенные формулы
- •Т а б л и ц а 0. 8
- •Истинностное значение ппф
- •Теории и аксиомы
- •Методы доказательства
- •Метаязык и объектный язык
- •5. Логика предикатов Атомарные формулы
- •Правильно построенные формулы
- •Истинностное значение ппф
- •Построение теории некоторой области знаний
- •Переменные как термы
- •Семантические свойства формул
- •Методы доказательства
- •Аксиоматическое определение отношения
- •Разрешимость свойств
- •0.6. От формальной логики - к логическому программированию Автоматизация процедур доказательства
- •Процедуры опровержения
- •Основание Хербранда
- •Хербрандовские интерпретации
- •Полезные свойства хербрандовских интерпретаций
- •Фразовая форма
- •Резолюция
- •0.7. Развитие языка пролог Развитие языка Пролог
- •Особенности языка Пролог
- •0. 8. Синтаксис языка пролог
- •Пример Пролог-программы
- •9. Фразы хорна как средство представления знаний Решение задач
- •Программирование
- •0.10. Семантика пролога Три семантические модели
- •Декларативная модель
- •Процедурная модель
- •Модель в виде абстрактной машины
- •Сферы употребления моделей
- •0.11. Метаязык / объектный язык Функции метаязыка
- •Метаязык Пролога
- •Предикаты метаязыка
- •0. 12. Сферы применения языка пролог
- •Реляционные базы данных
- •Программная инженерия
- •Естественный язык
- •Представление знаний
- •Экспертные системы
- •Библиографические заметки
Наследие логики
Логическое программирование имеет своими корнями формальную логику. Для того чтобы оценить логическое программирование по достоинству, необходимо понять суть формальной логики и познакомиться с историей ее развития. В разд. 0. 2-0. 7 обсуждается эволюция логики, при этом сначала рассматриваются первые результаты по кодификации традиционной логики, а затем — современная логика предикатов и начала логического программирования. В разд. 0. 8-0. 11 рассказывается об отличительных особенностях логического программирования и языка Пролог с точки зрения технологии программирования.
2. Традиционная логика Аристотель
То, что теперь известно как "традиционная логика", начало развиваться во времена Аристотеля более 2, 2 тыс. лет назад. Аристотель попытался свести в научную систему способы, с помощью которых можно наиболее эффективным образом постигать истину в разумной полемике. Его работу лучше всего охарактеризовать как теоретическое исследование методов правильных рассуждении.
Законы логики
При формализации логики Аристотель стремился установить некоторый критерий, в соответствии с которым можно было бы определить правильность хода рассуждении в разумной полемике. Здесь при описании логики Аристотеля употребляется слово "суждение". Оно обозначает законченную мысль, которую можно выразить при помощи простого выражения естественного языка. Три закона традиционной логики, сформулированные Аристотелем (см. табл. 0. 1), являются попыткой установить правила, регулирующие использование суждений в полемике.
Назначение законов логики состоит в обеспечении целостности суждений. Эти законы гласят, что суждение всегда должно иметь единственное значение истинности - истина или ложь, и данное значение не может изменяться по желанию одного из участников полемики. После того, как признано правильным значение истинности некоторого суждения, противоположное значение истинности для этого же самого суждения уже не может быть признано верным. Если приведенные законы не соблюдать (например, если в дискуссии одновременно используются и первоначальное суждение А, и последующее суждение, которое противоречит А), то любое умозаключение, получаемое в ходе полемики, будет недостоверным.
Таблица 0. 1
Законы традиционной логики
Тождественность А является А
(некоторая вещь всегда равна самой себе; суждение означает само себя)
Противоречие А не является не-А
(вещь не может одновременно обладать и не обладать некоторым свойством; никакое суждение не является одновременно истинным и Ложным)
Исключение среднего А не является одновременно и Л, и не-А
(вещь либо обладает, либо не обладает некоторым свойством; каждое суждение либо истинно, либо ложно)
Элементы суждения
Согласно Аристотелю суждение состоит из четырех элементов:
Квантор Субъект Связка Предикат.
Например, в суждении
Все американцы являются водителями машин.
"американцы" — это субъект, "все" квантифицирует субъект, т. е. это -квантор, "водителями машин" - это предикат, а "являются" - связка.
В суждении
Некоторые водители такси не являются агрессивными.
"водители такси" - это субъект, "некоторые" - квантор, "не агрессивными" — предикат, а "являются" — связка.
Четыре формы суждений
В традиционной логике допускаются четыре формы суждений, каждая из которых характеризует возможное отношение между двумя классами:
Все S являются Р.
Никакой из S не является Р.
Некоторые из S являются Р.
Некоторые из S не являются Р.
Здесь S обозначает класс субъектов, а Р — класс предикатов. "Все" или "никакой из" называются универсальными кванторами, или кванторами общности. Они применимы к каждому элементу заданного класса субъектов. "Некоторые из" называется экзистенциальным квантором, или кванторов существования. Он относится к подмножеству класса субъектов.
Силлогизм
Силлогизм - это множество правил, определяющих то, какие умозаключения могут быть получены из множества суждений, каждое из которых записано в одной из четырех допустимых форм. Например, он показывает, что если заданы две такие предпосылки (т. е. суждения, которые полагаются верными):
Все американцы являются водителями машин. (1)
Все калифорнийцы - американцы. (2)
то будет корректным умозаключение:
Все калифорнийцы являются водителями машин. (3)
Процесс выработки умозаключения на основе предпосылок называется также выполнением вывода. С формальной точки зрения процесс вывода, сходный с приведенным выше, можно выполнить только тогда, когда класс предикатов одного суждения (например, "американцы" в выражении (2)) согласуется с классом субъектов другого суждения (например, "американцы" в выражении (1)). В результате вывода на основе субъекта одного суждения и предиката другого суждения формируется новое суждение. Силлогизм устанавливает разные результаты для различных типов квантификации. Например, из суждений:
Все бейсболисты - любители жевательной резинки. (4)
Некоторые бейсболисты живут в Бостоне. (5)
получается умозаключение:
Некоторые (люди) из Бостона — любители жевательной резинки. (6)
Силлогизм - это прежде всего логика классов. В предыдущем примере участвовали классы бейсболистов, любителей жевательной резинки и людей. живущих в Бостоне. Все силлогистические правила основываются на свойстве транзитивности операции включения в состав класса. Транзитивность — это свойство, присущее некоторым видам отношений. Возьмем, к примеру, арифметическое равенство. Если известно, что а = b и b = с, то, согласно свойству транзитивности, а = с. Операция включения одного класса в состав другого класса также обладает свойством транзитивности. Если класс А входит в состав класса В (например, в суждении: "Все бейсболисты — любители жевательной резинки"), а класс В входит в состав класса С, то класс А должен входить в состав класса С.
Каждое правило силлогизма определяет переход от предпосылок к умозаключению, являющемуся интуитивно очевидным. Если сложная дискуссия состоит из многих дедуктивных шагов, то вся она будет логически правильной (и, надо надеяться, понятной) в том случае, если каждый ее шаг можно объяснить при помощи силлогистического правила.
Высказывания
Ученики Аристотеля, основываясь на понятии силлогизма, выделили принципы дедуктивного вывода для более высокого уровня абстракции — для высказываний. Высказывание - это любое суждение, которому можно приписать истинностное значение (либо истина, либо ложь). Высказывание — это более общее понятие, чем суждение в силлогизме. К примеру, выражение
Единорог XYZ существует.
является высказыванием, но не силлогистическим суждением, так как оно не соответствует ни одной из четырех приведенных выше форм суждений.
Последователями Аристотеля были получены правила дедуктивного вывода для высказываний. Эти правила перечислены в табл. 0. 2. Буквы Р и Q — это переменные, которые могут представлять любое конкретное высказывание.
Данные правила представляют собой гораздо более общий метод вывода, чем исходный силлогизм. Они являются первым шагом к созданию логики высказываний. Такая логика (исчисление высказываний) была полностью разработана лишь в XIX в.
Позиции традиционной логики
С философской точки зрения традиционная логика тесно связана с представлениями о статичности мира, принятыми в Древней Греции. Понятие тождества (или истинностного значения) при таком подходе не допускает изменений. После того, как было установлено некоторое тождество, оно сохраняется неизменным. Три закона из табл. 0. 1 кратко выражают это положение: суждение должно обладать истинностным значением, причем только одним. Эта позиция не способствует развитию эмпирических наук, в которых требуется учитывать изменения. Поэтому в XVII-XVIII вв. -в период развития областей науки, связанных с экспериментами, - интерес к логике Аристотеля упал.
Таблица 0. 2
|
Правила вывода | |
|
Modus Ponendo Ponens |
Если из Р следует Q и Р истинно, то и Q истинно. |
|
Modus Tollendo Tollens |
Если из Р следует Q и Q ложно, то и Р ложно. |
|
Modus Ponendo Tollens |
Если Р и 0 не могут одновременно быть истинными и Р истинно, то Q ложно (исключающее "или"). |
|
Modus Tollendo Ponens (дизъюнктивный силлогизм) |
Если либо Р, либо Q является истинным и Р не истинно, то Q истинно (включающее "или"). |
