Неформальное введение в формальную многозначную логику.

Однажды я задал одному досужему гуманитарию, считающему, что «Гугл знает всё», вопрос: «Программисты часто используют трёхзначную логику. Где именно?» Думаю, «гуглит» до сих пор. А ведь всё не так уж и сложно. Прежде всего хотелось бы отметить, что значности логик не имеет никакого отношения к понятию основания системы счисления, как это иногда полагают. Что же такое формальная многозначная логика?

Формальная логика – это вычисление вывода по значениям переменных без учёта их семантики. Другими словами, пренебрегая содержанием переменных, формальная логика отбрасывает психологизм и работает с описанием какого-то мира, который абсолютно неинтересен логическому исполнителю (вычислителю результата).

Существование многозначных логик было открыто около ста лет назад знаменитым польским математиком и философом Яном Лукасевичем в 1910 г. Он показал, что любую многозначную логику можно построить либо табличным способом, либо с помощью системы аксиом, и предложил методы исследования многозначных логик.

Самая простая из многозначных логик – трёхзначная. Это постоянный спутник и программиста, и ремонтника цифровой аппаратуры, и всей нашей повседневной жизни. Проиллюстрирую.

Это только исправные двоичные цепи, имеющие высокий-низкий уровень напряжения {0,1}, подчиняются двузначной логике. СтОит возникнуть неисправности, как появляется неопределённое состояние «возможно», образно говоря, дребезг. Обозначим его, как i, и получим следующую систему значений логических переменных: {0,1,i}. Понятно, что при наличии дребезга вообще ни о каких арифметических вычислениях говорить нельзя. Ни в двоичной системе счисления, ни в троичной, ни в любой другой. Тем не менее, данная трёхзначная логика имеет право на жизнь и подчиняется следующим законам.

Дизъюнкция (логическое ИЛИ): результат=1, если хотя бы одна переменная=1, результат=i, если все переменные=0, кроме неопределённой.

Конъюнкция (логическое И): результат=0, если хотя бы одна переменная=0, результат=i, если все переменные=1, кроме неопределённой.

Отрицание (логическое НЕ): результат=инверсия, если переменная определённая, результат=i, если переменная=i.

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

В пределах схемы рассуждений, содержащей только операции дизъюнкции и отрицания, в нашей трёхзначной логике можно ранжировать значности по силе. Нетрудно видеть, что i подавляет 0 при отсутствии переменной со значением 1, а 1 всегда подавляет i. Поэтому в дизъюнктивной схеме (определение результата с помощью операций ИЛИ и НЕ) значности можно ранжировать по силе, как 0<i<1. Переход к конъюнктивной схеме изменяет порядок ранжирования на противоположный. При таком подходе конъюнкция в трёхзначной логике представляет собой минимальное значение из входных переменных, а дизъюнкция – максимальное. Интересно, что определения дизъюнкции и конъюнкции через max(...) и min(...) сохраняются при наращивании значности логики.

В повседневной жизни мы, сами того не замечая, тоже нередко пользуемся трёхзначной логикой. Вот пример. Вы стоите на троллейбусной остановке. Из таблички узнаёте, что здесь останавливается «девятка», а «семёрка» не останавливается. Что вы имеете? А имеете вы истину, что «девятка» останавливается, и ложь, что останавливается «семёрка». Но это ещё не всё. Вы не знаете, ходят ли вообще троллейбусы! Возможно, да, а возможно и нет, например, по причине аварии на линии.. Вот вам и третья значность.

А как у программистов? О, программисты постоянно сталкиваются с трёхзначной логикой! Откройте с помощью подходящего менеджера какую-нибудь таблицу более-менее серьёзной реляционной базы данных. Что вы видите? Помимо определённых значений переменных (даты, числа, булеаны, текст, фото и т.д.) внутри ячеек таблицы то и дело проскакивают «таинственные» значения null. Это значит, что ячейка либо вообще не инициализировалась никаким значением, либо сведения из такой ячейки были удалены. Во время конструирования таблицы при описании столбца обычно оговаривается, может ли он иметь пустые, т.е. неопределённые значения. Рассмотрим пример. Пусть некий столбец таблицы медицинской базы данных предназначен для хранения некоторого симптома. Очевидно, что столбец ДОЛЖЕН допускать булевы значения «да», «нет» и пустое значение, т.е. отсутствие сведений, если обследование не проводилось. Налицо трёхзначная логика! Сейчас мы подошли к важному понятию – понижение значности логики, или сдвиг значности.

Для понижения значности логики значения переменных разбиваются на группы. В случае трёхзначной логики имеем две группы значений переменных: {0,1} образуют одну группу, а i попадает в другую группу. Теперь от трёхзначной логики легко перейти к двузначной, и всё запросто решается выяснением, определена ли переменная («да» или «нет») – это 1-ая дихотомия, а затем при необходимости производится 2-ая дихотомия, вычисляющая результат. Собственно, понижение значности – это разбиение логики на сублогики.

Резонно подозревать, что если значность логики можно понизить, то её можно и повысить. Это действительно так, и трёхзначная логика представляет собой расширение классической двузначной логики путём введения новой значности. При этом новая трёзначная логика приобрела новое свойство модальности – существование способа (mode) получения результата, влияющего на результат. Например, если удаётся зашунтировать все входные переменные, которые не имеют определенные значения, то результат становится определённым. Чем и пользуются ремонтники, следователи, да мало ли кто. Одновременно новая логика утратила чёткость, так как результат может получиться неопределённым.

Четырёхзначная логика представляет собой расширение трёхзначной логики путём введения новой значности. Введём значность «нонсенс» либо, если так понятнее, «невозможно никогда». Теперь входные переменные могут приобретать значения «истина», «ложь», «возможно» и «нонсенс». То же в символьной интерпретации: {0,1,i,j}. Интересно, что значность 4-х-значной логики можно понизить до двухзначной, минуя трёхзначную. Разобъём все переменные по их значениям на две группы: {0,1} и {i,j}. Вторая группа переменных образует сублогику, в которой результаты конъюнкции или дизъюнкции попадают в первую группу: i+j=1; i&j=0. На первый взгляд это может показаться парадоксальным. Однако вернёмся к нашей троллейбусной остановке и добавим нонсенс «подадут вертолёт». Тогда i+j равносильно утверждению, что к ожидающему, возможно, прибудет один из маршрутов («девятка» или «семёрка»), ИЛИ подадут вертолёт. Короче, утверждение, что, возможно, прибудет какой-то транспорт, – истинное. А вот утверждение, что прибудет троллейбус И подадут вертолёт, – ложное: такое событие никогда не произойдёт. Кстати, отрицание j даёт i и наоборот.. Подумайте, почему.

Попробуем в нашей 4-х-значной логике ранжировать значности по их силе в пределах дизъюнктивной схемы исполнителя. Понятно, что 0<1, а i и j занимают промежуточные положения. Заметим, что как только появляется возможность, то нонсенс отбрасывается (дизъюнкция i и j), следовательно, возможность i подавляет нонсенс j, т.е. нонсенс слабее возможности: j<i. Ранее мы установили, что i<1. Отсюда 0<j<i<1. Другими словами, если подать на дизъюнктор переменные с разными значностями, то он пропустит на выход переменную, имеющую самую сильную значность. А вот конъюктор поступит наоборот: результат будет равен значению переменной с минимальной силой значности.

Значность 4-х-значной логики можно повышать и дальше, вводя новые значности, например, «безразлично», «скорее истинно, чем ложно», … И так далее. Но в любом случае исследование любой конечнозначной логики содержит выяснение силы значностей в пределах конкретного типа схемы логического исполнителя с их последующим ранжированим. Это – самая важная часть исследования логики. Далее всё относительно легко вычисляется.

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

Версия для печатиВерсия для печати

Рубрики: 

  • 1
  • 2
  • 3
  • 4
  • 5
Всего голосов: 0
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!

Комментарии

Аватар пользователя savely

:)) Хорошо. 

Аватар пользователя Petro42

Отличный топик. Могут наши, оказывается!

Аватар пользователя mike

Вообще польские логики и криптологи сделали немало. Среди их достижений -- взломы кодов Энигмы и РККА. С.Лесьневски, коллега Яна Лукасевича по львовско-варшавской школе логики, возглавил  в 1920 г взлом радиокодов РККА. Поляки узнали о РККА всё. Главное -- узнали места, где красных не было. Зашли в тыл Тухаческому и перерезали все коммуникации с "большой землёй". Полный разгром.  Варшавская операция 1920 г. вошла в историю мирового военного искусства, хотя главная заслуга в этом принадлежит именно логикам-криптологам.

Аватар пользователя mike

Кстати, в СССР во времена погрома генетики и кибернетики матлогику тоже громили, да ещё как! Но мало кто об этом знает. Надо бы статью... Журналисты, напишите. Нет, не потянете... Тут нужен leo3. 

Могут наши, оказывается!

Патамушта не рерайт.

>Формальная логика – это вычисление вывода по значениям переменных без учёта их семантики. Другими словами, пренебрегая содержанием переменных, формальная логика отбрасывает психологизм и работает с описанием какого-то мира, который абсолютно неинтересен логическому исполнителю (вычислителю результата).

Это неверно.  "Формальная логика" имеет свои законы. Если их не знать, то их и нельзя применить даже там, где НЕ пренебрегаяют содержанием переменных и где НЕ отбрасывают психологизм и где ЕСТЬ интерес логическому исполнителю (вычислителю результата).

"Формальная логика" занимается ТОЛЬКО логическими тавтологиями.

"Формальная логика" изучается ТОЛЬКО в школе.

"Формальную логику" НЕЛЬЗЯ изучить в обыденной семейной жизни - ибо её там НЕТ. И не было никогда. - НЕ нужна она там. В быту. Вовсе.

Имхо.

>Из таблички узнаёте, что здесь останавливается «девятка», а «семёрка» не останавливается. Что вы имеете? А имеете вы истину, что «девятка» останавливается, и ложь, что останавливается «семёрка». Но это ещё не всё. Вы не знаете, ходят ли вообще троллейбусы! Возможно, да, а возможно и нет,

Это похоже на пример НЕЧЁТКОЙ логики: истинно, ложно, неизвестно.

>Пусть некий столбец таблицы медицинской базы данных предназначен для хранения некоторого симптома. Очевидно, что столбец ДОЛЖЕН допускать булевы значения «да», «нет» и пустое значение, т.е. отсутствие сведений, если обследование не проводилось. Налицо трёхзначная логика!

А это похоже на пример ЧЁТКОЙ логики: симптом есть, симптома нет, обследование не проводилось.

Похоже на то, что автор (mike) ПУТАЕТ эти понятия "Чёткую математическую троичную логику" и "Нечёткую троичную логику"

Имхо.

Аватар пользователя mike

"Формальная логика" имеет свои законы.

А я и не утверждал обратное. :)

Имхо. ... Это похоже на... А это похоже на... Похоже на то... Имхо.

На "имхо" и "похоже" суда нет.