Вопрос, вынесенный в заголовок статьи, казалось бы, имеет очевидный ответ: некорректно (ущербно) реализована логика неких алгоритмов. Однако, как говаривал Козьма Прутков, если на клетке слона прочтешь надпись «буйвол» - не верь глазам своим!
Итак, попытаемся не поверить «очевидному». В конце концов, не поверил же Эйнштейн в принцип относительности Галилея, и вон что из этого вышло. В данном случае (поскольку я далеко не Эйнштейн) сделаем маленькое такое допущение: в некоторых случаях ущербна сама логика.
Что мы знаем о логике? Основал ее вроде бы Аристотель, формализовывал Джон Буль… Переменные там принимают два значения: ИСТИНА и ЛОЖЬ (принцип исключенного третьего). На том компьютеры стоят. Есть еще женская логика (ДА, НЕТ, МОЖЕТБЫТЬ), причем с этой логикой женщины живут дольше…
По странной ассоциации вспомнилась статья Некоторые ошибки и «проблемные» особенности реализации встроенного языка платформы 1С:Предприятие 7.7 , в обсуждении которой я принимал деятельное участие, причем с позиций математической логики. В частности, речь шла об импликации (вхождении в пустой список любого значения).
Откуда в современной логике взялась «материальная импликация»: в общем-то абсурдная «истина», что пустота содержит все; что якобы из ложного утверждения (логически) выводится любое, а истинное утверждения следует из произвольного? Неужели Аристотель виноват? Как бишь он там говорил?
«...когда два [объекта] относятся друг к другу так, что если есть один, необходимо есть и второй, тогда, если нет второго, не будет и первого; однако если второй есть, то не необходимо, чтобы был первый.
Но невозможно, чтобы одно и то же было необходимо и когда другое есть, и когда его нет».
Выделенные (мной) слова означают, что пустота ничего не содержит. То же самое нам подсказывают и житейские соображения. Аристотель оправдан.
Заглянем в «Основы теоретической логики» Гильберта и Аккермана. Читаем:
"…по Аристотелю, высказывание "Все A суть B" считается истинным, лишь если существуют предметы, которые суть A. Наше отклонение в этом пункте от Аристотеля оправдывается потребностями математических применений логики, где класть в основу аристотелево понимание было бы нецелесообразно".
От же как! В результате получилось то, что выполняется «Все А суть В» и в то же время не выполняется «Некоторые А суть В». Это-то и приводит к очевидным нелепостям, уважительно именуемым «парадоксами» (в трехзначной логике Аристотеля их нет!).
Я вполне осознаю, что пока что все вышеприведенное не очень понятно. Будем разбираться с основным логическим понятием (отношением необходимого следования), введенного Аристотелем и выхолощенным, в том числе, Гильбертом.
Итак, данное отношение выражают общеутвердительным суждением «Всякое А есть В», что равнозначно «Все А суть В», «Из А следует В», «В содержится в А» и т.п. В логике естественно интерпретировать термины как символы особенностей, относительно которых различаются вещи. Те вещи, которым особенность А присуща, необходимо есть (содержится) в них, называются А-вещами, а те, которым А антиприсуще, несовместимо с ними, суть НеА.-вещи (анти-А-вещи). Существует четыре разновидности различаемых по двум особенностям вещей: АВ, АНеВ, НеАВ, НеАНеВ.
Согласно аристотелеву определению отношения «Из А следует В» оно необходимо удовлетворяется на совокупности вещей, в которой нет АНеВ-вещей при наличии АВ- и НеАНеВ-вещей. Особый статус имеют НеАВ-вещи, наличие или отсутствие которых не исключает и не утверждает отношения следования В из А (“...если второй есть, то не необходимо, чтобы был первый”). Аристотель называет этот статус привходящим, промежуточным между необходимо нет и необходимо есть.
Совокупность, включающая только НеАВ-вещи, не отрицая и не утверждая следование В из А, означает не невозможность и не необходимость но только возможность этого отношения, представляя собой то третье «значение истинности», которое сообщает логике адекватный диалектический характер. Не принцип исключенного третьего, а (по Гераклиту) принцип сосуществования противоположностей. Если угодно, Инь-Ян.
Итак, суждение «Все А суть В» у Аристотеля трехзначно, в двузначной логике оно не выразимо. В результате с парадоксами материальной импликации вот уже сто лет логики пытаются справиться. В 1918 году Кэрролл предложил строгую импликацию, потом Аккерман разработал исчисление сильной импликации, была предложена релевантная импликация, и, тем не менее, логика остается без естественного содержательного следования. То есть то, что называется следованием логике, не соответствует тому, как мы это понимаем. Обычно говорят: не соответствует нашей интуиции. Но это очень мягко сказано. На самом деле оно не соответствует не интуиции, а тому, как вещи связаны между собой в том мире, в котором мы живем.
В заключение – несколько цитат. Цитировать я буду Н.П. Брусенцова, создателя троичной ЭВМ «Сетунь», на идеях которого, собственно, и основана эта статья.
«На сегодня все попытки повторить троичную машину не удаются. Причина не технологическая — все-таки по сравнению с тем периодом технологии ушли далеко вперед. Дело в другом: людям, оболваненным двузначной логикой, войти в трехзначную логику не дано.»
«Вот почему столько раз тщетно логику пытались ввести в школы? Казалось бы, ведь числовую алгебру уже даже в начальной школе осваивают, а булеву алгебру освоить не могут. Дело в том, что двузначная логика противоестественна. Вместо того чтобы изучение логики развивало интеллект человека, оно его подавляет.»
«Я бы эту проблему сформулировал так: если мы хотим обрести нормальное мышление, мы должны уйти из двузначного мира и освоить трехзначную логику в том виде, как ее создал Аристотель. Не совсем, конечно, так. Не нужны его фигуры. Все это сегодня с помощью алгебры можно будет изящно изложить и легко воспринимать. Но важно понимать, что, кроме ДА и НЕТ, есть еще и НЕ-ДА и НЕ-НЕТ.»