часть 3
Когда я описывал принцип двух наблюдателей, я раскрывал его особенности только для условий, когда субъективный наблюдатель может стать на место объективного наблюдателя. Сам принцип двух наблюдателей не имеет смысла для чистой математики, но для прикладной математики он имеет огромное значение.
Например, с его помощью
можно доказать непротиворечивость теории Крона. Хотя эта теория и не требует
применения этого принципа в обязательном порядке, поскольку построение
непротиворечивой интерпретации можно осуществить без этого принципа, но его
применение упрощает нахождение подобной интерпретации.
Если рассматривать принцип двух наблюдателей сам по
себе, то с его помощью можно обосновать противоречивые рассуждения и находит
непротиворечивую интерпретацию для противоречий. Прием состоит в следующем.
Если у нас есть две несопоставимые между собой сущности, мы можем связать их
вместе наподобие эквивалентного преобразования. Для этого надо ввести
объективного наблюдателя и предположить, что некоторая часть информации нам
недоступна (как субъективным наблюдателям).
Изменения происходят
не с объектами, а с точкой зрения субъективного наблюдателя на весь объект
целиком (абстрактный объект). Сам объект на уровне объективного наблюдателя не меняется.
Поскольку принцип двух
наблюдателей относиться к основаниям математики, он вносит некоторые коррективы
в прежние представления о математике. Например, мы можем для любого
противоречия, выраженного как преобразование друг в друга двух неэквивалентных
объектов, найти непротиворечивую интерпретацию и перевести теорию содержащую
противоречие в разряд непротиворечивых теорий. Для этого достаточно
одновременно воспринимать оба неэквивалентных объекта. Именно так поступал
Крон, когда для своих преобразований учитывал одновременно и замкнутые и
разомкнутые контуры в электрической цепи.
На подобном принципе
основана теория симметричных процессов Ю. Солоневича.
Неэквивалентные
преобразования, когда их применяют, как эквивалентные преобразования порождают,
одну интересную проблему. В теории Крона для неэквивалентного преобразования
используется инвариант мощности, но последующие вычисления мощности говорят о
нарушении инварианта при неэквивалентном преобразовании. Объяснение состоит в
том, что инвариант неэквивалентного преобразования предназначен для применения
на уровне объективного наблюдателя, а на уровне субъективного наблюдателя он,
скорее всего, будет давать неправильные значения. Инварианты можно применять
только для абстрактного объекта, а не для неэквивалентных объектов.
Когда мы используем
несколько неэквивалентных (в более общем случае - неизоморфных) преобразований,
то инвариант одного преобразования не будет сохраняться для другого
преобразования. Это означает, что преобразования и их инварианты должны
объединяться в одну неделимую сущность, когда применяются на уровне
субъективного наблюдателя.
Мои интересы связаны с
областью программирования. В этой области принципу двух наблюдателей
соответствует наиболее наглядное представление. Кроме того, переход от
объективного и субъективного наблюдателей к ограниченному и идеальному
наблюдателям проще всего анализировать на примере программирования.
Уровни абстракции каждой
программы задаются в рамках аксиоматического подхода. Структурное программирование
отличается от объектно-ориентированного подхода только сложностью
аксиоматической системы. Разные
уровни абстракции связаны между собой отношением интерпретации. Нижний
уровень или слой абстракции реализует, интерпретирует или задает модель для более
высокого уровня абстракции. Математики
преследуют совсем не те цели, которые преследуют программисты. Если математик
взялся за аксиоматическую систему, то он разрабатывает ее до самого конца,
пытаясь найти кок можно больше или даже все теоремы аксиоматической системы.
Способность одной аксиоматической системы выступать в роли интерпретации для
других систем является второстепенным вопросом для математика. Программист
никогда не ищет полного перечня всех возможных комбинаций, состоящих из
абстракций или аксиом. Он использует только часть аксиоматической системы, но
он очень серьезно рассматривает связи между уровнями абстракции.
Насколько я могу судить, для
программистов вопросы непротиворечивости аксиоматической системы не имеют
особого значения. Вернее, их интересует только непротиворечивость той части
аксиоматической системы (того набора теорем), которыми он пользуется. Но если
среди тех теорем, которые программист оставил без внимания, найдется
неправильная теорема, то всю аксиоматическую систему нужно назвать
противоречивой. Так, по крайней мере, поступают математики. Кроме того,
вносимые программистом изменения относятся сразу ко всем уровням абстракции с
сохранением отношений интерпретации. Это означает, что подавляющая часть всех
изменений в программе относиться к неизоморфным преобразованиям по терминологии
математика.
В связи с этим, жизненный
цикл программной системы или последовательность изменений программы во времени
очень хорошо иллюстрирует принцип двух наблюдателей для случая, когда ограниченный
наблюдатель не может занять место идеального наблюдателя.
Эта последовательность
непредсказуема во времени. Хотя для любых двух неэквивалентных (неизоморфных)
версий программы мы всегда можем составить абстрактную программу, которая
использует исходные версии в качестве частного случая, но мы не можем
предсказать ни одной последующей версии программы. Даже если мы возьмем весь
жизненный цикл уже после его создания и попытаемся проанализировать каждое из
преобразований по отдельности друг от друга, мы все равно не сможем найти какой
либо закономерности. Каждое последующее преобразование вносит дополнительную
информацию в программу и удаляет часть старой информации. Все порции информации
несравнимы друг с другом и их нельзя сравнивать или выводить одну из другой. В
пределе, если необходимо создать все возможные версии программы, нам
потребуется внести бесконечное количество новой информации.
Как уже отмечалось выше,
геометрии, составленные из группы неизоморфных преобразований, нельзя
определить через конечное количество аксиом. Поэтому они выходят за рамки
аксиоматического подхода. Это означает, в применении к программированию, что
если даже у вас есть полный жизненный цикл программы, то он содержит
недостоверную информацию, поскольку другой программист или даже тот самый
программист будет создавать программу несколько иначе и у него будет другая
последовательность этапов проектирования. Программирование в целом это не воспроизводимый (в точности) и
недостоверный процесс, который не имеет точно установленной цели в виде
истинной программы. Совершенствовать и улучшать программу можно до
бесконечности. И никакая система аксиом не сможет вместить всю сопутствующую
информацию в пределах некоторой конечной аксиоматической системы.
Если сравнивать
программирование с теорией симметричных процессов или с теорией Крона, то
отличие заключается в том, что программистов никогда не интересует абстрактная
программа, которая бы позволила рассматривать любое (или заданное) неизоморфное
преобразование программы как эквивалентное преобразование. Даже если это будет
достигнуто, то для выполнения следующего шага понадобиться корректировка
абстрактной программы.
Таким образом, для
ограниченного наблюдателя не имеет значение какова картина мира для идеального
наблюдателя. Вернее он ее не в состоянии построить за конечное число шагов.
Поэтому принцип двух наблюдателей в этом случае должен решать совсем другую
задачу. Необходимо так применять принцип, чтобы он давал результаты, которые
имеют смысл на уровне ограниченного наблюдателя. Все остальные выводы, которые
имеют смысл для идеального наблюдателя, следует игнорировать, поскольку
использовать их не представляется возможным.
В общем случае, принцип двух
наблюдателей требует уточнение известного в математике принципа материальной
импликации. По материальной импликации из противоречий или неправильных
предпосылок следуют какие угодно выводы. Но это утверждение опровергается нашей
геометрической моделью. Из цилиндра нельзя получить каких угодно проекций. Если
даже мы объединим все преобразования всех фигур (объединим все возможные
проекции всех возможных фигур в одно множество), то среди них не будет
преобразования точки в треугольник или обратного преобразования. Но если мы
будем рассматривать другой вариант интерпретации, при котором плоскость
производить сечение цилиндра или другой фигуры, то в такой геометрии
действительно будут все возможные сечения преобразовываться во всякие другие
сечения. В такой геометрии сечений для любых двух сечений всегда можно найти исходную
фигуру.
Материальная импликация не
различает эти два случая, поэтому требует уточнения. Какие именно выводы могут
следовать из противоречия, а какие не могут, определяет способ интерпретации.
При одной интерпретации мы получаем одно множество допустимых выводов, при
другой интерпретации – другое множество. Исходя из этого, следует заметить, что
при неправильных предпосылках или из противоречия нельзя делать никаких
выводов, ни правильных, ни неправильных.
Применяя новую материальную
импликацию к закону исключающего третьего (ЗИТ) мы получаем новое определение
для ЗИТ. Сформулируем ЗИТ
как высказывание, по которому любое высказывание либо истинно, либо ложно.
Когда сам ЗИТ считается высказыванием, он противоречит сам себе. По
материальной импликации из него нельзя делать никаких выводов. Но математики
делали такие выводы и предположили, что между истиной и ложью может
существовать третье значение (индифферентное). Но такая замена допустима только
тогда, когда допустимо замещать неконструктивное доказательство существования
индифферентного значение на конструктивное утверждение об индифферентном
значении.
Таким образом, все логики,
основанные не на двух значениях, на самом деле не выходят за рамки двухзначной
логики. Все они формулируются по законам традиционной логики. Новая логика, которую я
называю непрерывной логикой, не может быть задана в рамках конечного множества
аксиом и выходит далеко за рамки аксиоматического подхода.
Исследование такой логики
или применение принципа двух наблюдателей в полной постановке должно отличаться
от соответствующих частных вариантов логик и принципа двух наблюдателей. Для
доказательства непротиворечивости отношений субъективный-объективный
наблюдатель достаточно построить непротиворечивую интерпретацию. Но для
отношения ограниченный-идеальный наблюдатель такой интерпретации построить
невозможно.
Когда мы применяем какую
либо модель принципа двух наблюдателей (две аксиоматические системы связанные
интерпретацией) во тором случае, у нас нет возможности узнать как видит
существо более развитое свой мир, а также то, как это существо видит то, что
способен видеть человек. Сложности здесь в том, что даже для геометрической
модели надо не только задавать непознаваемые или неопределяемые математические понятия
для одной из аксиоматических систем, а нужно учитывать, что и для другой
аксиоматической системы эти понятия могут существовать в той же степени.
В связи с этим возникает
дополнительная задача
Надо выяснить, позволяет ли
принцип двух наблюдателей выявить все непознаваемые и неопределимые понятия или
нет. Скорее всего, нет. Поэтому сам принцип не может быть обоснован в рамках
математики. Это наглядно демонстрирует правильность теоремы Геделя, – для любой
аксиоматической системы существуют понятия, которые нельзя выразить в рамках
аксиоматической системы, но сам принцип двух наблюдателей, который
предоставляет доступ к таким понятиям, нельзя обосновать в рамках математики. В
связи с этим совершенно очевидно, что любая аксиоматическая система неполна.
Логику существа более
разумного представить нельзя, но из нее можно делать следствия. Главное чтобы
эти следствия имели смысл для ограниченного наблюдателя. Когда мы сформулируем
такие следствия для программирования, то это не будет означать, что процесс
программирования станет детерминированным и воспроизводимым. Это только значит,
что появляются другие достоверные и воспроизводимые факты, кроме тех, которые
нам известны без применения принципа двух наблюдателей.
Одно из таких следствий
связано с обнаружением самокомпенсации ошибок при программировании. Попытаюсь
сформулировать причины их возникновения. В теории Крона использовалась
примитивная система координат. В геометрии проекций под примитивной системой
координат понимается не, собственно, система координат, а нечто другое. Когда
мы представляем любую фигуру в виде множества точек, у которых есть три
координаты, мы вынуждены вводить для этого некоторую систему координат.
Свойствами фигуры называются инварианты, которые остаются неизменными при любом
преобразовании системы координат. Но при применении интерпретации возникают две
абсолютно эквивалентные возможности. Можно произвести проекцию фигуры на
плоскость, а потом выделять ее инвариантные свойства. Но можно сначала отделить
все свойства друг от друга, а только затем выполнять проекцию. Для
субъективного наблюдателя эти две возможности существенно различаются,
поскольку во втором случае вноситься дополнительный избыток информации.
Преобразование к примитивной
системе координат упрощает проектирование. Именно этот факт положен в основу
теории крона. Для программирования он означает, что программа расщепляется на
множество составных частей, которые имеют общие области. Это полностью
противоположно объектному подходу, когда программа разделяется на изолированные
и независимые части, каждая из которых проектируется отдельно от других.
Разбиение на
независимые части Конкурирующие и пересекающиеся между собой части
Программистам может
показаться, что такой подход не может давать преимущества. Но на самом деле это
не так. При проектировании таким способом возникает эффект самокомпенсации
ошибок. Это означает, что разные ошибки в разных частях программы при
соединении частей в одну программу перестают быть ошибкой и дают вполне
работоспособную и функционирующую программу. Но при рассмотрении этих частей по
отдельности друг от друга можно прийти к выводу, что части спроектированы
неправильно.
Именно поэтому, при
независимом проектировании частей программы самокомпенсация ошибок не
происходит. Эти ошибки устраняют еще до соединения частей в целую программу.
Особенность преобразования к примитивной системе координат состоит в том, что
такое разбиение (на инварианты) неоднозначно и непостоянно. Меняется от версии
к версии как способ разбиения программ, так и количество инвариантов. Это
отличается от традиционных эквивалентных преобразований, когда все инварианты и
опрделяются одинаково и сохраняются при любом изменении системы координат.