Справочник от Автор24
Поделись лекцией за скидку на Автор24

Классическая логика и логика предикатов

  • 👀 341 просмотр
  • 📌 285 загрузок
Выбери формат для чтения
Загружаем конспект в формате pdf
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
Конспект лекции по дисциплине «Классическая логика и логика предикатов» pdf
Математическая логика и теория алгоритмов Глава 1. Классическая логика и логика предикатов Параграф 1. Введение Logos (греч.) - слово, понятие, рассуждение, разум. Логика - Совокупность правил, которым подчиняется процесс мышления. Логика изучает абстрактное мышление как средство познания мира, исследует формы и законы, в которых происходит отражение мира в процессе мышления. Этапы развития логики Этап 1. (формальная логика, 3-4 века до н.э.) Связан с работами Аристотеля "Органон" и "Первая аналитика", в которых описывается систематическое изложение логики и учение о силлогизме и возникла формальной логики. Силлогизм (греч.) - новое суждение, полученное из двух предыдущих. Находило свое применение в судебной и политической практике. Этап 2. (появление формализованных языков, 16-19 века) Связан с работами Ф. Бэкона "Новый органон", в которых описывается развитие индуктивной логики, т.е. причинно-следственных связей, путем эмпирических исследований. Дальнейшее развитие связано с В. Лейбницом, который заложил основы символической логики, т.е. заменил рассуждения знаками и правилами (алгебра высказываний). Развил символьную логику Д. Буль, а именно он создал алфавит, орфографию и грамматику. де Морган, Пирс, Рассел, Фреге, Гильберт и др. Этап 3. (нач. с 20 века ) Новым толчком к бурному развитию математической логики послужило появление вычислительной техники. Применение математической логики 1) проектирование цифровых схем (промышленность); 2) исследование семантики языков программирования; 3) спецификация, верификация и синтез программ; 4) спецификация и верификация параллельных процессов; 5) системы искусственного интеллекта. Параграф 2. Предикаты и логические операции над ними Центральная идея математической логики состоит в том, чтобы записывать математические утверждения в виде последовательностей символов и оперировать ими по формальным правилам. Не всякие высказывания и не любые логические рассуждения могут быть описаны на языке логики высказываний. Кроме того, необходимо иметь возможность утверждать, что любые или какие-то объекты обладают определенными свойствами или находятся в некоторых отношениях. Таким образом, расширив логику высказываний, построим логическую систему - логика предикатов. Логика предикатов – это расширение возможностей логики высказываний, позволяющее строить высказывания с учетом свойств изучаемых объектов или отношений между ними. Предикат (термин восходит к Аристотелю) - утверждение, содержащее одну или несколько неизвестных. Одноместным предикатом P(x) называется произвольная функция одной переменной x, значениями которой являются высказывания об объектах, представляющих значения аргумента. Предметная область (область определения) предиката – это множество M, на котором определен предикат. Предметные переменные – это элементы множества M, на котором определен предикат. Областью истинности предиката P(x), заданного на множестве M, называется совокупность всех x из M, при которых данный предикат обращается в истинное высказывание. M Область истинности I p = { x ∈ M|P(x) ≡ 1 } Ip Предикат P(x), определенный на множестве M, называется тождественно истинным, если I p = M. Предикат P(x), определенный на множестве M, называется тождественно ложным, если I p = ∅. Предикат P(x), определенный на множестве M, называется выполнимым, если существует по меньшей мере один элемент x i ∈ M, при котором P(x i ) = 1. n-местным предикатом называется произвольная функция переменных P(x 1 , x 2 , … , x n ), определенная на множестве M = M 1 × M 2 ×…× M n и принимающая (логические) значения из множества { 0, 1 }. Логические операции над предикатами: • Отрицанием предиката P(x) называется новый предикат ⏨⏨ P(x) (¬P(x)), который принимает значение «истина» при всех значениях x ∈ M, при которых предикат P(x) принимает значение «ложь», и принимает значение «ложь» при тех значениях x ∈ M, при которых предикат P(x) принимает значение «истина». Область истинности имеет вид I P⏨ = M \ I P . • Конъюнкцией двух предикатов – P(x) и Q(x) называется новый предикат P(x) ∧ Q(x), который принимает значение «истина» при тех и только тех значениях x ∈ M, при которых каждый из предикатов принимает значение «истина», а значение «ложь» – во всех остальных случаях. Область истинности имеет вид I P∧Q = I P ∩ I Q . • Дизъюнкцией двух предикатов P(x) и Q(x) называется новый предикат P(x) ∨ Q(x), который принимает значение «ложь» при тех и только тех значениях x ∈ M, при которых каждый из предикатов принимает значение «ложь», и принимает значение «истина» во всех остальных случаях. Область истинности имеет вид I P∨Q = I P ∪ I Q . • Импликацией предикатов P(x) и Q(x) называется новый предикат ⏨⏨ P(x) → Q(x) ⇔ P (x) ∨ Q(x), который является ложным при тех и только тех значениях x ∈ M, при которых одновременно P(x) принимает значение «истина», а Q(x) принимает значение «ложь», и принимает значение «истина» во всех остальных случаях. Область истинности имеет вид I P → Q = I P⏨∪ I Q . • Эквиваленцией предикатов P(x) и Q(x) называется новый предикат P(x) ↔ Q(x), который принимает значение "истина" при тех же значениях x ∈ M, при которых истинные значения предикатов P(x) и Q(x) одинаковы. Область истинности имеет вид I P↔Q = (I P ∩ I Q ) ∪ (I ⏨ P ∩ I⏨ Q ). Параграф 3. Кванторы Специфика природы предикатов позволяет ввести такие операции над ними, которые не имеют аналогов среди операций над высказываниями. Квантор – это общее название для логических операций, ограничивающих область истинности какого-либо предиката. Были впервые введены (Г. Фреге в работе "Исчисление понятий" в 1879 г.), а сам термин квантор был введен Ч. Пирс. Символику для кванторов в виде перевернутых латинских букв ввел Дж. Пеано в конце 19 века. Виды кванторов: • ∀ – квантор всеобщности Операцией связывания квантором всеобщности называется правило, по которому каждому одноместному предикату P(x), определенному на множестве M, сопоставляется высказывание, обозначаемое ∀xP(x), которое истинно в том и только в том случае, когда предикат P(x) тождественно истинен, и ложно в противном случае. • ∃ – квантор существования Операцией связывания квантором существования называется правило, по которому каждому одноместному предикату P(x), определенному на множестве M, ставится в соответствие высказывание, обозначаемое ∃xP(x) , которое ложно в том и только в том случае, когда P(x) тождественно ложен, и истинно в противном случае. Следует отметить, что если некоторый предикат P(x) определен на конечном множестве P(a 1 , a 2 , … , a n ), то справедливы следующие тождества: ∀xP(x) ≡ P(a 1 ) ∧ P(a 2 ) ∧…∧ P(a n ) ∃xP(x) ≡ P(a 1 ) ∨ P(a 2 ) ∨…∨ P(a n ) Математическая логика и теория алгоритмов Глава 2. Теория алгоритмов Параграф 1. Предварительные сведения Алгоритм - точная конечная система предписаний, определяющих содержание и порядок действий исполнителя над некоторыми объектами (исходными и промежуточными данными) для получения искомого результата. Под алгоритмом понимается некоторый вычислительный процесс чисто механического характера, с помощью которого искомые величины целого класса задач вычисляются последовательно из данных искомых величин по определенным правилам. Каждый алгоритм имеет дело с классом однотипных задач, как говорят, имеет дело с массовой проблемой. Другими словами, алгоритмом называется общий единообразный, точно определенный способ решения любой задачи из данной массовой проблемы. При этом алгоритм должен удовлетворять следующим требованиям: 1. Дискретность. Выполнение алгоритма разбивается на конечную последовательность действий. Только выполнив одно действие, можно приступить к выполнению другого действия. Выполнить каждое отдельное действие предписывает указание в алгоритме, называемое командой. 2. Детерминированность. Способ решения однозначно определен. Если алгоритм многократно применяется к одному и тому же набору данных, то каждый раз получаются одни и те же промежуточные и выходные данные. 3. Понятность. Исполнитель должен однозначно воспринимать смысл предстоящих действий. 4. Результативность. При точном исполнении команд алгоритма процесс должен закончиться за конечное число действий и должен быть получен ответ на вопрос задачи. В качестве одного из возможных ответов может быть вывод о том, что задача не имеет решения. 5. Массовость. Алгоритм применяется для решения любой задачи определенного класса задач, который называется областью применения алгоритма. Понятие алгоритма, определяемого требованиями 1.-5., не строгое. Такое нестрогое понятие алгоритма называется интуитивным понятием алгоритма. Оно вполне устраивало математику до начала XX века. Но затем выдвинулись такие алгоритмические проблемы, существование положительного решения которых было сомнительным. А для отрицательного решения уже требуется строго определить, что такое алгоритм. Официально рождением теории алгоритмов считается 1900-й год. В этом году на II Международном конгрессе математиков в Париже немецкий математик Давид Гильберт сформулировал 23 проблемы, которые определили развитие математики во все последующие годы. Среди них была 10-я проблема: "Построить алгоритм, позволяющий для любого диофантова уравнения выяснить, имеет ли оно целочисленное решение или нет". Все попытки найти такой алгоритм привели к мысли, а существует ли вообще данный алгоритм. Чтобы ответить на этот вопрос, надо было дать точное (не интуитивное) определение алгоритма. В дальнейшем появилось множество других алгоритмических проблем, положительное решение которых вызывало сомнение. Так, уже отмечалось, что любое утверждение в математике можно записать в виде формулы логики предикатов. И естественно возникает задача: "Построить алгоритм, позволяющий для любой такой формулы определять, является ли эта формула тождественно истинной или нет". Существование такого алгоритма позволяло бы доказывать всевозможные теоремы в математике единым способом. В подходах к строгому определению понятия алгоритма выделилось 3 основных направления: 1. Первый поход связан с именами таких математиков, как Чёрч, Гёдель, Клини. Суть его заключается в следующем. Любой алгоритм, фактически, сводится к вычислению некоторой числовой функции f(x 1 , x 2 , … , x n ), зависящий от натуральных значений аргументов в x 1 , x 2 , … , x n . Любая такая функция, для вычисления значений которой существует алгоритм, называется алгоритмически вычислимой. Понятие функции - строгое понятие. И первый подход заключается в следующем. Выделить некоторый класс строго определенных целочисленных функций и увязать понятие алгоритма (не строгое) с функциями (строго определенными) из этого класса. 2. Авторами второго направления, в плане уточнения понятия алгоритма, являются Тьюринг и Пост. Идея этого направления заключается в том, что для вычисления функции создать некоторую машину, которая сводит процесс вычисления к механическим действиям, и увязать понятие (не строгое) алгоритма с понятием (строгим) таких машин. 3. Третье направление связано с понятием нормальных алгоритмов, которое ввел в рассмотрение российский математик Марков. В результате этих уточнений с помощью понятия алгоритма удалось решить многие алгоритмические проблемы. В частности, советский математик Матиясевич в 1968 году дал отрицательное решение 10-й проблемы Гильберта, а именно, он доказал, что не существует алгоритма, позволяющего для любого диофантова уравнения дать ответ на вопрос о существовании целочисленного решения у такого уравнения. Параграф 2. Основные вычислимые функции и операторы В дальнейшем рассматриваем функции из N × N × ⋯ × N, где N - множество натуральных чисел с добавленным нулем. Причем функции не обязательно всюду определены, т.е. рассматриваемые функции, вообще говоря, являются частичными. Простейшими числовыми функциями являются следующие функции: 1) 0(x) = 0 - оператор аннулирования; 2) 𝜆(x) = x + 1 - оператор сдвига; n 3) I m (x 1 , x 2 , … , x n ) = x m , 1 ⩽ m ⩽ n, - оператор проектирования. Очевидно, что все эти функции всюду определены и являются алгоритмически вычислимыми. Пусть заданы n функций f 1 (x 1 , x 2 , … , x m ), f 2 (x 1 , x 2 , … , x m ), … , f n (x 1 , x 2 , … , x m ) и задана частичная функция f(x 1 , x 2 , … , x n ). Тогда можно построить суперпозицию этих функций g(x 1 , … , x m ) = f(f 1 (x 1 , … , x m ), f 2 (x 1 , … , x m ), … , f n (x 1 , … , x m )). Говорят, что функция g(x 1 , … , x m ) получается из функций f 1 (x 1 , … , x m ), f 2 (x 1 , … , x m ), … , f n (x 1 , … , x m ) и f(x 1 , … , x n ) с помощью оператора подстановки. Оператор подстановки будем обозначать как S n+1 , т.е. g = S n+1 (f, f 1 , … , f n ). Если F n - совокупность всех частичных функций от n переменных, а F m - множество всех частичных функций m переменных, то понятно, что S n+1 - это всюду определенная функция из F n × F m × ⋯ × F m (n + 1 раз) в F m . Если же F - множество всех числовых функций, то S n+1 - частичная функция F × F × ⋯ × F (n + 1 раз) в F. Очевидно, что если функции f, f 1 , … , f n всюду определены и g = S n+1 (f, f 1 , … , f n ), то функция g также всюду определена. И если f, f 1 , … , f n алгоритмически вычислимы, то g тоже вычислима. Пусть задана n-местная функция g и (n + 2)-местная функция h. Говорят, что (n + 1)местная функция f получается из функций g и h примитивной рекурсией, если для всех натуральных x 1 , x 2 , … , x n , y имеют место равенства: 1) f(x 1 , … , x n , 0) = g(x 1 , … , x n ); 2) f(x 1 , … , x n , y + 1) = h(x 1 , … , x n , y , f(x 1 , … , x n , y)). В этом определении неявно подразумевается, что n ⩾ 1. Уточним это определение для случая n = 0. В этом случае под 0-местной функцией g понимается некоторая функция const. Говорят, что одноместная функция f(x) получается примитивной рекурсией из константы a и 2-местной функции h(x, y), если выполнены условия: 1) f(0) = a; 2) f(x + 1) = h(x, f(x)). Итак, мы имеем некоторый оператор R, который по функциям g и h строит новую функцию f, т.е. f = R(g, h). Понятно, что этот оператор является частичным, т.к. для построения функции f необходимо, чтобы g была n-местной, а h - (n + 2)-местной. Если же функции g и h удовлетворяют данному условию, то функция f всегда определена. Теорема. Для заданной n-местной функции g(x 1 , … , x n ) и (n + 2)-местной функции h(x 1 , … , x n ) функция f(x 1 , … , x n ) = R(g(x 1 , … , x n ), h(x 1 , … , x n , x n+1 , x n+2 )) всегда существует и определена однозначно. Доказательство: Чтобы определить функцию f, надо определить значение f(x 1 , … , x n , x n+1 ) для любого набора чисел x 1 , … , x n , x n+1 . Если x n+1 = 0, то f(x 1 , … , x n , 0) = g(x 1 , … , x n ) по определению. Пусть x n+1 ≠ 0. Находим последовательно числа b 0 = g(x 1 , … , x n ) = f(x 1 , … , x n , 0) b 1 = h(x 1 , … , x n , 0, b 0 ) = f(x 1 , … , x n , 0 + 1) b 2 = h(x 1 , … , x n , 1, b 1 ) = f(x 1 , … , x n , 1 + 1) b 3 = h(x 1 , … , x n , 2, b 2 ) = f(x 1 , … , x n , 2 + 1) ⋯ b xn+1 = h(x 1 , … , x n , x n - 1, b xn+1 -1 ) = f(x 1 , … , x n , x n + 1) По определению f(x 1 , … , x n , x n+1 ) = b xn+1 . Пусть для функций g и h существуют две функции f и 𝜑, удовлетворяющие условиям определения примитивной рекурсии. Тогда по определению f(x 1 , … , x n , 0) = g(x 1 , … , x n ) = b 0 = 𝜑(x 1 , … , x n , 0) f(x 1 , … , x n , 1) = h(x 1 , … , x n , 0, b 0 ) = b 1 = 𝜑(x 1 , … , x n , 1) f(x 1 , … , x n , 2) = h(x 1 , … , x n , 1, b 1 ) = b 2 = 𝜑(x 1 , … , x n , 2) и т.д. Таким образом, для любых x 1 , … , x n , x n+1 f(x 1 , … , x n , x n+1 ) = 𝜑(x 1 , … , x n , x n+1 ). А это и означает, что функции f и 𝜑 совпадают. Пусть функция f(x 1 , … , x n , x n+1 ) получена из g и h с помощью примитивной рекурсии. Процедура вычисления значений функции f(x 1 , … , x n , x n+1 ), описанная при доказательстве теоремы, является алгоритмом вычисления ее значений исходя из значений функций g и h. Отсюда получаем следующее: 1) Если функции g и h алгоритмически вычислимы, то функция f тоже алгоритмически вычислима. 2) Если функции g и h всюду определены, то и функция f тоже всюду определена. Отметим, во-первых, что процедура, описанная в теореме, часто называется процессом рекурсии. А во вторых, в определении примитивной рекурсии, рекурсия проводится по последней переменной x n+1 . Можно определить рекурсию по любой из переменных. Следовательно, при фиксированных функциях g и h, можно получить различные функции f, в зависимости от того, по каким переменным проводится рекурсия. Мы же будем, в основном, ограничиваться ранее описанными случаями, связанными с примитивной рекурсией. Функция f(x 1 , … , x n ) называется примитивно рекурсивной, если она может быть получена из простейших числовых функций с помощью конечного числа операторов подстановки и примитивной рекурсии. Из определения следует: 1) простейшие числовые функции примитивно рекурсивны; 2) примитивно рекурсивные функции всюду определены; 3) если функции g и h примитивно рекурсивны, и функция f получена из них с помощью примитивной рекурсии, то f тоже примитивно рекурсивна. 4) суперпозиция примитивно рекурсивных функций примитивно рекурсивна. Параграф 3. Нумерация пар и n-ок Рассмотрим так называемую канторовскую нумерацию пар. В ней пары идут в порядке возрастания суммы их членов, а при равенстве сумм - в порядке возрастания первой координаты. Итак, это выглядит следующим образом: < 0, 0 > , < 0, 1 > , < 0, 2 > , < 1, 1 > , < 2, 0 > , < 0, 3 > , < 1, 2 > , < 2, 1 > , … Обозначим через C(x, y) номер пары < x, y > , начиная с нулевой пары и номера. Скажем C(0, 0) = 0, C(2, 0) = 5. Через l(n) = x и r(n) = y обозначим левую и правую координаты пары с номером n. Например, l(2) = 1, r(7) = 2 и т.д. Найдем формулы для вычисления этих функций. По определению, пара < x, y > находится в промежутке < 0, x + y > , < 1, x + y - 1 > , … , < x, y > , … , < x + y, 0 > на x-ом месте. Перед парой < 0, x + y > находится x + y отрезков, содержащих всего 1 + 2 +…+ (x + y) пар. В таком случае C(x, y) = 1 + 2 +…+ (x + y) + x = (x + y)(x + y + 1) 2 +x = (x + y) 2 + 3x + y Итак, номер C(x, y) можно вычислить либо по формуле C(x, y) = (x + y) 2 + 3x + y (x + y)(x + y + 1) 2 . + x, либо C(x, y) = . 2 2 Пусть теперь C(x, y) = n, найдем формулы для l(n) = x и r(n) = y. (x + y) 2 + 3x + y Итак, C(x, y) = = n, т.е. 2n = (x + y) 2 + 3x + y. Отсюда можно 2 получить два равенства: 8n + 1 = (2x + 2y + 1) 2 + 8x и 8n + 1 = (2x + 2y + 3) 2 - 8x - 8. Следовательно, (2x + 2y + 1) 2 ⩽ 8n + 1 < (2x + 2y + 3) 2 Отсюда получаем, 2x + 2y + 1 ⩽ x+y+1 ⩽ x+y+1 = 8n + 1 + 1 2 < x + y + 2. Это означает, что 8n + 1 + 1 2 8n + 1 < 2x + 2y + 3 или . Тогда из формулы l(n) = x = n -␒ (x + y)(x + y + 1) 2 (x + y)(x + y + 1) 2 + x = n получаем, =. 8n + 1 + 1 1 1 = n -␒ (x + y + 1 - 1)(x + y + 1) = n -␒ 2 2 8n + 1 -␒ 1 2 Теперь можно найти формулу для вычисления r(n). Имеем, 8n + 1 + 1 r(n) = y = (x + y + 1) -␒ (x + 1) = 2 2 . -␒ (l(n) + 1). Таким образом, для нахождения пары с номером n имеем формулы 8n + 1 + 1 1 l(n) = n -␒ 2 r(n) = 8n + 1 -␒ 1 2 8n + 1 + 1 2 2 -␒ (l(n) + 1). Формулы, для вычисления C(x, y), l(n) и r(n) показывают, что эти функции примитивно рекурсивны. Из определения функций C(x, y), l(n) и r(n) следует, что C(l(n), r(n)) = n и l(C(x, y)) = x, r(C(x, y)) = y. Оказывается, эти тождества не зависят от выбора нумерации пар. Т.е. если мы возьмем какую-то другую нумерацию пар ⏨(x, y) < x 0 , y 0 > , < x 1 , y 1 > , < x 2 , y 2 > , … , < x n , y n > , … и введем функции C номер пары относительно данной нумерации, ⏨ l (n) = x n , ⏨ r (n) = y n для пары ⏨( ⏨ < x n , y n > относительно этой нумерации, то C l (n), ⏨ r (n)) = n, ⏨ l (C(x, y)) = x, r (C(x, y)) = y. Более того, пусть у нас есть три функции f(x, y), 𝜑(x), 𝜓(y), связанные ⏨ соотношениями f(𝜑(x), 𝜓(x)) = x, 𝜑(f(x, y)) = x, 𝜓(f(x, y)) = y. Определив значение f(x, y) как номер пары < x, y > , мы получим нумерацию всех пар, т.е. каждая пара получит единственный номер, разные пары - разные номера, каждое натуральное число будет номером какой-то пары. Таким образом, любая нумерация пар натуральных чисел определяется функциями со свойствами f(𝜑(x), 𝜓(x)) = x, 𝜑(f(x, y)) = x, 𝜓(f(x, y)) = y, т.е. суть нумерации заключается в свойствах этих функций f(x, y), 𝜑(x), 𝜓(y). Поэтому и рассматривают обычно канторовскую нумерацию, т.к. для нее соответствующие функции C(x, y), l(n), r(n) легко вычисляются. Исходя из канторовской нумерации пар, определим канторовскую нумерацию n-ок. Обозначим через C n (x 1 , x 2 , … , x n ) номер n-ки . Далее, полагаем: C 2 ( x 1 , x 2 ) = C( x 1 , x 2 ) , C 3 ( x 1 , x 2 , x 3 ) = C 2 ( C( x 1 , x 2 ) , x 3 ) = C( C( x 1 , x 2 ) , x 3 ) , C 4 ( x 1 , x 2 , x 3 , x 4 ) = C 3 ( C( x 1 , x 2 ) , x 3 , x 4 ) = C 2 ( C( C( x 1 , x 2 ) , x 3 ) , x 4 ) , ⋯, C n+1 (x 1 , x 2 , … , x n+1 ) = C n (C(x 1 , x 2 ), x 3 , … , x n+1 ). Пусть C n (x 1 , x 2 , … , x n ) = x. Тогда по определению имеем x n = r(x) = C n,n (x) x n-1 = r(l(x)) = C n,n-1 (x) x n-2 = r(l(l(x))) = C n,n-2 (x) ⋯ x 2 = r(l(l( … l(x)))) = C n,2 (x) x 1 = l(l(l( … l(x)))) = C n,1 (x) Легко проверить, что C n (C n,1 (x), C n,2 (x), … , C n,n (x)) = x и C n,i C n (x 1 , x 2 , … , x n ) = x i . Функции C n (x 1 , x 2 , … , x n ) и C n,i (x) являются аналогами функций C(x, y), l(n) и r(n) для нумерации пар. Эти функции однозначно определяют нумерацию n-ок, и, по их заданию, они примитивно рекурсивны.
«Классическая логика и логика предикатов» 👇
Готовые курсовые работы и рефераты
Купить от 250 ₽
Решение задач от ИИ за 2 минуты
Решить задачу
Помощь с рефератом от нейросети
Написать ИИ
Получи помощь с рефератом от ИИ-шки
ИИ ответит за 2 минуты

Тебе могут подойти лекции

Смотреть все 938 лекций
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot