EssayAI
Блог
Блог

Как проверить тавтологию: пошаговое решение

Запрос

Дано: формула F=((A→B)∧(B→C))→(A→C)F = \bigl((A \to B) \wedge (B \to C)\bigr) \to (A \to C) от трёх переменных. Найти: является ли она тавтологией, и подтвердить вывод тремя независимыми способами.

Тавтология - формула, истинная на любом наборе значений переменных, поэтому вся проверка сводится к одному вопросу: найдётся ли хотя бы один набор, на котором формула ложна. Быстрее всего отвечает метод от противного: предполагаем F=0F = 0 и разматываем импликации, пока не упрёмся в противоречие. Ответ: формула является тавтологией, опровергающего набора не существует, все восемь строк таблицы дают единицу, а в КНФ каждый из четырёх дизъюнктов содержит переменную вместе с её отрицанием. Калькулятор сверху переключает три способа проверки на этой же формуле и считает вердикт ещё для трёх.

Решение по шагам

Дано. F=((A→B)∧(B→C))→(A→C)F = \bigl((A \to B) \wedge (B \to C)\bigr) \to (A \to C), переменные AA, BB, CC.

Найти. Тавтология ли FF, то есть истинна ли она на всех наборах значений.

Шаг 1. Переформулируем задачу. Проверять «истинна везде» в лоб дорого: наборов уже 23=82^3 = 8, а для десяти переменных их больше тысячи. Отрицание проверяется дешевле: формула не является тавтологией тогда и только тогда, когда существует хотя бы один опровергающий набор, на котором F=0F = 0. Значит, будем искать такой набор, и если поиск упрётся в противоречие, вопрос закрыт.

Шаг 2. Предполагаем, что формула ложна. Внешняя операция здесь импликация, а она ложна ровно в одном случае: посылка истинна, следствие ложно.

X→Y=0  ⟺  X=1 и Y=0.X \to Y = 0 \iff X = 1 \text{ и } Y = 0 .

Из предположения F=0F = 0 сразу получаются два равенства:

(A→B)∧(B→C)=1,A→C=0.(A \to B) \wedge (B \to C) = 1, \qquad A \to C = 0 .

Шаг 3. Раскручиваем следствие. Импликация A→CA \to C ложна только при A=1A = 1 и C=0C = 0. Выбора здесь нет: обе переменные определились однозначно, ветвиться не на что.

Шаг 4. Раскручиваем посылку. Конъюнкция истинна, только если истинны оба множителя, поэтому A→B=1A \to B = 1 и B→C=1B \to C = 1. Подставляем известное A=1A = 1: из 1→B=11 \to B = 1 следует B=1B = 1. Подставляем найденное B=1B = 1 во вторую импликацию: из 1→C=11 \to C = 1 следует C=1C = 1.

Шаг 5. Ловим противоречие. На шаге 3 получилось C=0C = 0, на шаге 4 - C=1C = 1. Одна переменная не может принимать оба значения сразу, значит предположение F=0F = 0 несовместно: набора, опровергающего формулу, не существует ни одного.

Ответ. Формула ((A→B)∧(B→C))→(A→C)\bigl((A \to B) \wedge (B \to C)\bigr) \to (A \to C) является тавтологией. Это закон транзитивности импликации, он же цепное правило: если из AA следует BB, а из BB следует CC, то из AA следует CC.

Проверка таблицей истинности

Метод от противного укладывается в пять строк рассуждения, но на контрольной обычно просят ещё и таблицу. Переменных три, поэтому строк ровно 23=82^3 = 8, а промежуточные столбцы заводятся по одному на каждую операцию в порядке приоритета. Сам порядок заполнения разобран в задаче как построить таблицу истинности, нас здесь интересует только итоговый столбец.

№AABBCCA→BA \to BB→CB \to C(A→B)∧(B→C)(A \to B) \wedge (B \to C)A→CA \to CFF
000011111
100111111
201010011
301111111
410001001
510101011
611010001
711111111

Ноль в столбце FF мог появиться только там, где следствие A→CA \to C равно нулю, то есть в строках 4 и 6, где A=1A = 1 и C=0C = 0. Но ровно в этих строках обнуляется и посылка: при таких AA и CC любое значение BB ломает одну из двух импликаций. Если B=0B = 0, ложной становится A→BA \to B, если B=1B = 1 - ложной становится B→CB \to C. А импликация с ложной посылкой истинна, поэтому в обеих строках F=1F = 1.

Ответ по таблице. Столбец FF - восемь единиц подряд, ни одного нуля. Формула тождественно истинна, вывод совпал с методом от противного. Перебор дал тот же результат, но написать пришлось в несколько раз больше: это нормальная плата за то, что таблица не требует догадок.

Приведение к КНФ: третий способ

Третий способ не перебирает наборы вообще, а работает с записью формулы. Формулу приводят к конъюнктивной нормальной форме - конъюнкции дизъюнктов, где под знаком отрицания стоят только переменные. Делается это в три хода: импликации заменяют по правилу X→Y=¬X∨YX \to Y = \neg X \vee Y, отрицания опускают к переменным по законам де Моргана, а затем раскрывают скобки распределительным законом. Те же преобразования используются в задаче как упростить логическое выражение, только цель там другая: там запись укорачивают, а здесь загоняют в стандартный вид.

Убираем внешнюю импликацию и вносим отрицание внутрь:

F=¬((A→B)∧(B→C))∨(¬A∨C)=(A∧¬B)∨(B∧¬C)∨¬A∨C.F = \neg\bigl((A \to B) \wedge (B \to C)\bigr) \vee (\neg A \vee C) = (A \wedge \neg B) \vee (B \wedge \neg C) \vee \neg A \vee C .

Теперь раскрываем скобки: дизъюнкция двух конъюнкций даёт четыре дизъюнкта, и к каждому дописываются свободные литералы ¬A\neg A и CC:

F=(A∨B∨¬A∨C)∧(A∨¬C∨¬A∨C)∧(¬B∨B∨¬A∨C)∧(¬B∨¬C∨¬A∨C).F = (A \vee B \vee \neg A \vee C) \wedge (A \vee \neg C \vee \neg A \vee C) \wedge (\neg B \vee B \vee \neg A \vee C) \wedge (\neg B \vee \neg C \vee \neg A \vee C) .

Признак тавтологии в КНФ простой: формула тождественно истинна тогда и только тогда, когда каждый дизъюнкт содержит какую-нибудь переменную вместе с её отрицанием. Работает он потому, что дизъюнкт ложен, только когда ложны все его литералы разом, а пара XX и ¬X\neg X этого не допускает при любом значении XX. Если же в дизъюнкте контрарной пары нет, каждому литералу можно назначить ноль независимо от остальных, и опровергающий набор строится руками.

Проверяем наши четыре дизъюнкта: в первом и втором есть AA и ¬A\neg A, в третьем - BB и ¬B\neg B, в четвёртом - CC и ¬C\neg C. Все четыре тождественно истинны, конъюнкция единиц тоже единица. Третий способ подтвердил ответ: формула является тавтологией. О второй канонической форме, СДНФ, и о том, зачем она нужна, написано в разборе совершенной дизъюнктивной нормальной формы.

Тавтология, выполнимость и противоречие

Проверка на тавтологию всегда заканчивается одним из трёх вердиктов, и они отличаются только тем, что стоит в столбце FF.

Столбец FFКак называется формулаПример
Одни единицытождественно истинная, тавтология((A→B)→A)→A\bigl((A \to B) \to A\bigr) \to A
И единицы, и нуливыполнимая, но не тавтология(A∨B)→(A∧B)(A \vee B) \to (A \wedge B)
Одни нулитождественно ложная, противоречие(A∨B)∧¬A∧¬B(A \vee B) \wedge \neg A \wedge \neg B

Между крайними строками таблицы есть двойственность: формула FF является тавтологией тогда и только тогда, когда ¬F\neg F тождественно ложна. Поэтому в прикладной логике задачу обычно переворачивают: берут отрицание формулы, приводят его к КНФ и отдают SAT-решателю с вопросом «есть ли выполняющий набор». Ответ «нет» означает, что исходная формула тавтология. Метод от противного из шагов 2-5 - ручная версия ровно этой процедуры.

Какой способ выбирать

Таблица истинности выигрывает, когда переменных три или четыре, а проверяющий хочет видеть перебор целиком. Её минус - рост 2n2^n: пять переменных дают 32 строки, десять уже 1024, и вручную такую таблицу не заполнить.

Метод от противного хорош, когда внешняя операция - импликация или дизъюнкция: у них ложное значение достигается единственным способом, поэтому значения переменных определяются однозначно и рассуждение идёт по прямой. Если же внешняя операция конъюнкция, её ноль можно получить несколькими способами, и приходится разбирать случаи ветвлением.

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

Частые ошибки

  • Проверили формулу на двух-трёх наборах, получили единицы и записали в тавтологии. Единица на отдельном наборе доказывает только выполнимость; тавтология требует всех 2n2^n строк.
  • В методе от противного предполагают F=1F = 1 и ждут противоречия. Предполагать надо ложность: доказательство идёт от опровергающего набора.
  • Забывают, что импликация с ложной посылкой истинна, и ставят ноль в строках 4 и 6. Именно эта ошибка чаще всего превращает тавтологию в «не тавтологию».
  • Читают формулу без учёта приоритета: конъюнкция сильнее импликации, поэтому (A→B)∧(B→C)→(A→C)(A \to B) \wedge (B \to C) \to (A \to C) - это импликация с посылкой-конъюнкцией, а не конъюнкция двух импликаций.
  • Из условия «дизъюнкция равна единице» делают однозначный вывод о значениях слагаемых. Единица дизъюнкции допускает три варианта, и здесь нужен разбор случаев, иначе противоречие окажется выдуманным.
  • В КНФ ищут контрарную пару во всей формуле, а не в каждом дизъюнкте отдельно. Достаточно одного дизъюнкта без пары, чтобы формула перестала быть тавтологией.

FAQ

Чем тавтология отличается от равносильности формул? Равносильность - это отношение между двумя формулами, тавтология - свойство одной. Связаны они так: формулы XX и YY равносильны тогда и только тогда, когда X↔YX \leftrightarrow Y является тавтологией. Поэтому любая проверка равносильности сводится к проверке эквивалентности на тождественную истинность.

Можно ли доказать тавтологию, подставив несколько удачных наборов? Опровергнуть можно: достаточно одного набора с F=0F = 0, и вопрос закрыт. Доказать подстановкой нельзя - нужен либо полный перебор, либо рассуждение, покрывающее все наборы сразу, как метод от противного или критерий по КНФ.

Что делать, если переменных много? При n>5n > 5 таблица перестаёт быть инструментом: для двадцати переменных это больше миллиона строк. Работают метод от противного, метод резолюций и приведение к КНФ с проверкой на выполнимость; на этом же принципе построены промышленные SAT-решатели.

Бывают ли тавтологии без импликаций? Да, и самые известные записываются короче нашей: A∨¬AA \vee \neg A - закон исключённого третьего, ¬(A∧¬A)\neg(A \wedge \neg A) - закон противоречия. Обе проверяются таблицей из двух строк и обе состоят из одного дизъюнкта с контрарной парой.

Коротко

  1. Тавтология - формула, истинная на всех 2n2^n наборах; проверять удобнее обратное утверждение, то есть искать набор с F=0F = 0.
  2. Метод от противного: предположить F=0F = 0, раскрутить операции до значений переменных и поймать противоречие. Противоречие есть - тавтология, противоречия нет - найденный набор и будет контрпримером.
  3. Таблица истинности: 2n2^n строк, промежуточный столбец на каждую операцию; восемь единиц в столбце FF означают тождественную истинность.
  4. КНФ: убрать импликации, опустить отрицания, раскрыть скобки и проверить, в каждом ли дизъюнкте есть переменная вместе с её отрицанием.
  5. Для F=((A→B)∧(B→C))→(A→C)F = \bigl((A \to B) \wedge (B \to C)\bigr) \to (A \to C) все три способа дали один ответ: это тавтология, закон транзитивности импликации.
Задача в тетради или методичке? Сфотографируйте условие - сервис распознает его и решит по шагам с пояснениями.

Похожие задачи

Матлогика/алгоритмы

Как применить правила вывода: решение по шагам

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

Матлогика/алгоритмы

Как построить машину Тьюринга: пошаговое решение

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

Матлогика/алгоритмы

Как построить вывод формулы: пошаговое решение

Как построить вывод формулы в исчислении высказываний: схемы аксиом, правило modus ponens, разбор вывода A → A из пяти шагов, обратный ход от цели и теорема о дедукции.

Дискретная математика

Как составить СКНФ по таблице: пошаговое решение

СКНФ по таблице истинности: разбор задачи с числами. Строки с нулём дают макстермы, отрицание ставится на единицах, ответ проверяется подстановкой. Внутри калькулятор и сравнение с СДНФ.

Дискретная математика

Как упростить логическое выражение: решение по шагам

Как упростить логическое выражение по законам алгебры логики: де Морган, распределительный закон, склеивание и поглощение. Пошаговый разбор примера и проверка ответа таблицей.

Дискретная математика

Как построить таблицу истинности: пошаговое решение

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