Опубликован: 26.09.2006 | Доступ: свободный | Студентов: 1772 / 459 | Оценка: 4.25 / 4.12 | Длительность: 17:09:00
ISBN: 978-5-9556-0066-6
Специальности: Программист, Математик
Лекция 14:

Логическое программирование

< Лекция 13 || Лекция 14: 12345

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

Исследования универсальных методов доказательства в рамках логики предикатов дают повод для разработки на их основе новых языков программирования. Опыты, проведенные в 70-х годах прошлого века, показали перспективность использования этих методов в реальных технологиях автоматической переработки информации.

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

Язык предикатов

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

" Строительные материалы ", из которых конструируются формулы и предложения языка предикатов:

  1. Логические связки и кванторы:
    \eq*{
\& \vee \neg \to \forall\, \exists
}
  2. Символы для конструирования переменных: по традиции латинская буква x и ' (штрих). Отдельную букву x или x с несколькими штрихами будем считать переменной. Делая такой выбор, мы подчеркиваем то обстоятельство, что используем всего два символа для образования любого конечного множества переменных. На практике, конечно, это неудобно, поэтому используются и другие символы, возможно, с индексами. Контекст не позволит нам "заблудиться".
  3. Вспомогательные символы: прямые и круглые скобки и запятая.
  4. Предикатные и функциональные символы.

Замечания

  1. Предикатные символы используются для обозначения предложений, в которых некоторые слова заменены переменными, так что при замене переменных именами конкретных объектов получаются высказывания об этих объектах, которые можно оценить при определенных обстоятельствах как истинные или ложные. Каждое такое предложение называется высказывательной формой, а количество k различных переменных, входящих в такое предложение, — ее арностью или местностью. Например, предложение "Река x является притоком реки y " — двухместная форма, которая при замене переменной y на собственное имя "Волга" превращается в одноместную форму. "Река x является притоком реки Волга". А если еще и переменную x заменить именем "Ока", то получим истинное высказывание. Если же переменную x заменить именем "Енисей", то — ложное.
  2. При k = 0 имеем дело с конкретным высказыванием.
  3. Функциональные символы используются для обозначения отображений (функций).
  4. Нульместные функции называются также константами.

Основными конструкциями языка предикатов являются термы и формулы.

Правила образования термов

  1. Любая переменная или константа является термом.
  2. Если f — функциональный k -местный символ, а t_1, t_2\dts t_k — термы, то выражение f(t_1, t_2\dts t_k) является термом.

Замечания

  1. Многоточие, используемое в определении терма, не следует понимать буквально, поскольку таких символов в нашем распоряжении нет. При любом конкретном значении k мы обходимся без многоточий.
  2. Если в терме нет переменных, то он интерпретируется как имя некоторого объекта, если же переменные есть, то терм удобно рассматривать как схему для образования имени. Например, {\rm Sin}(x) — терм, который при замене переменной x константой 1 превращается в терм {\rm Sin}(1), являющийся именем вполне конкретного числа, хотя и нетрадиционным. Под выражением {\rm Sin} мы понимаем здесь функциональный символ, хотя и состоящий из трех латинских букв.
  3. В термах, построенных с помощью функциональных двухместных символов, традиционно используется инфиксная форма записи, при которой знак функции помещается между аргументами, например пишется x + y вместо +(x, y). Аналогичное замечание справедливо и для двухместных предикатов.
< Лекция 13 || Лекция 14: 12345
Антон Сиротинкин
Антон Сиротинкин

на стр 6, лекции 3, Очевидно "Ck <= модуль(Gk(е))*b(k+1)" (1) - , подскажите что значит "модуль" и почему это очевидно...