Интро.
Я знаю, это будет звучать громко и самонадеянно, но все-таки я это скажу: мне кажется, я нашел ключик к проблеме объяснения и конструирования мышления. Нет, это еще не решение всей проблемы, но многообещающая возможность к нему приблизиться. Полгода назад у меня возникла идея, что в основе феномена мышления (даже у «низкоразвитых» животных вроде крабов или мышей) может лежать оперирование особого класса описательной языкоподобной структурой. Я попытался развить этот подход и обнаружил, что он как будто бы позволяет сформулировать много важных философских проблем о мышлении в виде точных математических вопросов. С тех пор мне удалось продвинутся в решении некоторых из них и получить несколько интересных, на мой взгляд, результатов на стыке логики и психологии. Я собираюсь написать серию статей, чтобы поделиться своими находками и привлечь энтузиастов вместе исследовать возможности, которые они открываю. Перед вами первая статья из этой серии.
Предыстория.
Примерно 15 лет назад по воле случая я попал на семинар с интригующим названием «Проблема обратной реконструкции мозга». Его организовал Дунин-Борковский - очень яркий и харизматичный ученый советской эпохи, который знал как устроен мир и умел этим пользоваться. Я могу ошибаться, но насколько я помню, он смог заинтересовать каких-то очень богатых людей перспективой перенести человеческое сознание в компьютер (цифровое бессмертие), получил от них грант, и на эти деньги собрал исследовательскую группу из талантливых физтехов. Эта группа пыталась разгадать тайну мышления, опираясь на исследования мозга. Их объединяла идея, что мышление в мозге возникает в результате какой-то самоорганизации и, если внутри компьютера вы достаточно точно смоделируете мозг, то тем самым сможете надеяться на самозарождение в нем и мышления.
У меня остались теплые воспоминания от этих семинаров. Там я услышал много новых идей и задал себе много глубоких вопросов, а самое главное – разрешил себе покуситься на решение грандиозной загадки о том, как научить машины мыслить. Через несколько встреч я все же понял, что мне не очень блики методы и цель семинара. Я не считал правильной идею, что изучать нужно именно мозг. Мне было мало добиться самозарождения и тем самым «просто» воспроизвести мышление: я хотел понять его природу, его логические механизмы, его платоновскую суть. У меня появилась догадка, как это сделать, поэтому я отсоединился от группы и пошел своим путем.
Тогда я рассуждал так: мышление – это адаптивная функция, которая появилась у животных в процессе эволюции. Они развили ее, чтобы лучше реагировать на воздействия внешней среды и уметь этими воздействиями управлять. Мозг – это всего лишь орган, который функцию мышления как-то реализует. Если мы хотим понять природу мышления, мы, конечно, можем изучать мозг, но не будет ли более разумным попытаться повторить путь эволюции: перечислить задачи, ради которых мышление появилось, выстроить эти задачи в порядке усложнения и честно постараться их решить. Если нам повезет, то в процессе решения мы сможем и открыть мышление, и переизобрести мозг? Эта идея захватила меня, и я решил попробовать ее реализовать.
Я подумал, что исследование было бы неплохо начать с решения какой-нибудь сравнительно простой, но при этом содержательной задачи. Такая задача - все равно что торчащий из клубка пряжи кончик нити – часто, потянув за нее, удается размотать и весь клубок. У меня тогда созрела гипотеза, что в основе способности решать когнитивные задачи лежат два навыка: формировать понятия и находить закономерности. Меня особенно интересовало то, как именно мыслящие существа формируют новые идеи и понятия, однако, чем больше я размышлял над этой проблемой, тем больше она казалась мне непреступной. И вдруг я понял, что могу сузить ее до вполне себе решаемого и все еще и содержательного вопроса. Он звучал так: «А собственно, что из себя представляют используемые нами понятия с точки зрения того, как они воспринимаются мыслящими существами?». Здесь я должен сделать пояснение.
Смотрите, наше мышление не соприкасается ни с каким проявлением внешнего мира непосредственно – все знание о внешнем мире приходит к нам от органов чувств. Воздействия внешней среды преобразуются в бегущие по нервам электрические импульсы, в текущие по сосудам потоки гормонов и только в таким виде информация о внешнем мире поступает в наш мозг (какие-то знания могут быть врожденными). Любая идея о внешнем мире за пределами этих потоков – это всего лишь абстракция, которую создает мозг. Для примера возьмем идею кошки. Когда мы говорим о кошке, то и имеем ввиду что-то мурлыкающее, пушистое, из плоти и крови, однако на уровне нашего первичного восприятия кошка — это всего лишь некоторое явление внутри потоков данных, текущих от наших органов чувств в ваш мозг.
В моем первом исследовании я попытался выяснить, каким образом явления внутри потоков данных могут выражать собой простейшие понятия: идею пространства, идею движения, идею симметрии, идею предмета и идею места. Для исследования идеи пространства, я поставил такой умозрительный эксперимент: взял решетку из черно-белых шестиугольников и поместил над ней зонд в форме ромашки из 7 цветочувствительных детекторов. Каждый детектор висел над центром своей клетки и проводом был соединен с лампочкой. Периодически зонд скачком перемещался так, что его центр переходил из прежней клетки в соседнюю, а лапочки загорались и гасли в зависимости от того, над клеткой какого цвета в конце скачка оказался связанный с ними детектор. Этот эксперимент был упрощенной моделью фасеточного зрения насекомых и с его помощью я хотел ответить на вопрос: можно ли наблюдая за лампочками и ничего не зная о том, почему они загораются и гаснут, сформировать абстракцию черно-белой гексагональной решетки и перемещающегося над ней цветочувствительного зонда?

Лампочки в этом эксперименте нужны были, чтобы наглядно представить себе поток сигналов, посылаемых детекторами в провода. Тогда мне действительно удалось показать, что геометрические п��нятия можно определить в терминах свойств и закономерностей порождаемого рецепторами потока сигналов, но по настоящему ценным было вот какое наблюдение.
Оказалось, что только очень примитивные понятия естественно выражались как закономерности и свойства внутри самого потока сигналов. Чтобы естественно выразить хоть сколько-нибудь более сложную и абстрактную идею, приходилось обращаться не непосредственно к потоку сигналов, а к записям о его закономерностях и уже через закономерности и свойства внутри множества этих записей определять понятия. То же самое явление я наблюдал, когда попытался определить понятие симметрии и места: они тоже обращались не столько к самому потоку сенсорных данных, сколько к языковым описаниям его закономерностей и свойств. Я предположил, что это наблюдение является общей тенденцией и пришел к таким догадкам:
Если какое-то мыслящее существо умеет на основе сенсорных данных формировать новые понятия и делает это наиболее естественным образом, то скорее всего
1) внутри себя оно оперирует какого-то рода описательным языком (языкоподобной структурой);
2) создает на этом языке явные описания закономерностей потока сенсорных данных;
3) способно наблюдать составленные описания и находить в них структурные закономерности;
4) способно интерпретировать записи и найденные в них закономерности, превращая их обратно в некоторые свойства потока сенсорных данных, по сути придавая языку смысл.
Это был первый в моей практике намек на то, что описательные языки могут играть важную роль для феномена мышления, и первый раз, когда я столкнулся с вопросом о том, как языки приобретают смысл. Получить еще один намек на использование языка в мышлении, испытать озарение насчет того, чем мышление может являться, и приблизится к пониманию природы смысла мне позволила одна очень забавная, абсолютно непрактичная и, казалось бы, бесполезная загадка из детства.

Звездный разговор.
Я родом с юга и мое детство прошло в сельской местности. В тех местах даже летом до черноты темные ночи. Подростком, я, бывало, забирался на крышу сеновала, ложился на спину и смотрел на звезды. Как-то раз я заставил свое воображение «перевернуть» весь мир и представить, что сеновал не стоит на земле, и что я не лежу на его крыше, а что мы оба висим под планетой, удерживаемые от падения в пустоту невидимыми ниточками гравитации. В этот момент я почувствовал пугающую безграничность космоса, ощутил, как далеко находится казавшийся размером с маковое зернышко Юпитер, как уязвима и исключительна жизнь на нашей планете и как мы одиноки в этой бездонной пустоте.
Есть ли там вдалеке кто-то еще?
Сможем ли мы когда-нибудь поговорить?
Найдется ли такой язык, смысл которого был бы понятен нам обоим?
В науках о естественных языках распространено убеждение, что знак ничего не значит (гипотеза произвольнос��и знака). Слово «кошка» не несет в себе ничего кошачьего, слово «красный» не проявляет признаков красноты. Есть даже некоторый общий консенсус, что сами по себе естественные языки не имеют смысла – смысл языкам придает интерпретация тех, кто ими пользуется. Для такого мнения есть много доводов «за». Очень непохожие друг на друга языки выражают одинаковые идеи. Философия разделяет форму и содержание, лингвистика – синтаксис и семантику. Подтверждение того, что синтаксис и семантика в какой-то степени независимы друг от друга, дают медицинские наблюдения за пациентами с травмой головы. Некоторые люди с повреждением височных долей мозга продолжают говорить бегло и грамматически правильно, но при этом их речь оказывается абсолютной бессмыслицей (сенсорная афазия Вернике).
Конечно, в истории были случаи, когда удавалось расшифровать тексты на давно исчезнувших языках (месопотамские таблички, язык Майя), но эти работы не основывались только на анализе синтаксиса. В каждом из таких примеров у исследователей было некоторое представление о контексте: они кое-что знали об историческом периоде, о культуре и быте создавшего тексты народа, об устройстве их семьи и государства. В конце концов, они знали, что авторы текстов тоже были людьми, которые ходили по той же самой земле и под тем же самым небом.
А что, если никакого известного или общего контекста нет?
Всякий раз, когда в дружеских компаниях заходил разговор о смысле языков, я вспоминал свой детский вопрос и приводил «железный» довод в пользу того, что, если заранее не договорится об интерпретации, то никакого смысла у языка нет:
Представьте, говорил я, что вы передаете радиопослание на далекую планету, где обитает достаточно разумная цивилизация, чтобы его принять, но о которой вы ничего не знаете. Вы не знаете, как они выглядят, как живут, какой у них быт, культура и что у них за планета. Быть может, это вообще какой-нибудь коллективный разум аммониевых организмов на дне сернистого океана, а их планета греется приливными силами, оборачиваясь вокруг давно потухшей звезды. Есть ли у нас способ рассказать о себе что-то содержательное и надеяться, что наше сообщение поймут?
Я считал очевидным, что ответ на этот вопрос – «нет», но однажды во мне сработал рефлекс математиков сомневаться во всем очевидном. Я задумался: а правда ли, что у нас и у той далекой цивилизации совсем нет общего контекста, нет ничего такого, что было бы одинаковым для нас обоих? И вдруг меня осенило: у нас обоих есть одно и тоже … радиопослание. Если мы придадим ему форму узнаваемой дискретной последовательности, то сможем попытаться закодировать какие-то идеи в виде закономерностей следования «точек» и «тире»! Еще через минуту я понял, что знаю язык, смысл которого действительно можно угадать, наблюдая закономерности расположения символов в его предложениях. Я уверен, вы знаете его тоже.
Самообъяснимый язык школьной арифметики.
В математике формальным языком называют любое заранее очерченное множество конечных символьных последовательностей. Примерами могут служить: множество цепочек из правильно открытых и закрытых скобок вроде ((() ()) ());
множество конечных последовательностей из чередующихся ноликов и единиц таких как 1010 или 010;
множество записанных в строчку программ на вашем любимом языке программирования;
и, наконец, множество правильно выполненных примеров на сложение небольших десятичных чисел вроде 12+27=39 и 47+5=52.
Последний язык особенно интересен: его смысл можно понять без переводчика и без каких-либо знаний о Земных традициях. Как именно?
Представьте, что вы – достаточно интеллектуально развитый инопланетянин и вам попалась тетрадь третьеклассника Васи, где есть много-много примеров на сложение. Будем считать, что Вася был отличником и все примеры сделал правильно. Представьте, что вы ничего не знаете о Земной цивилизации, но способны видеть и выделять символы в Васиной тетради, правильно решать, какие символы одинаковые, а какие разные, и самое главное – способны подмечать закономерности в том, как эти символы расположены на клеточном листе. Давайте пофантазируем, как оказавшись существом, далеким от знакомства с человеческой культуры, вы бы могли разгадать смысл Васиных записей.
Сперва вы могли бы заметить некоторый порядок в том, как символы заполняют лист: все символы собраны цепочки, все цепочки вытянуты в одном направлении. Линии клеток, в которых есть цепочки, строго чередуются с линиями, внутри которых все клетки пусты. Далее вы бы подметили, что все символы можно разбить на непересекающиеся группы подобных. Если вам повезло сориентировать тетрадь также, как это делал это Вася, то представители этих групп выглядели бы так: “0”, “1”, … , “8”, “9”, “+”, “=” (наверное, у вас могли бы возникнуть некоторые сомнения насчет самостоятельности групп “6” и “9”, но обнаруженные вскоре позиционные закономерности быстро бы эти сомнения развеяли). Затем вы бы перешли к анализу отдельных цепочек.
Вы бы увидели, что в каждой цепочке встречается ровно один символ “+” и ровно один символ “=”. Потом вы бы заметили, что во всех цепочках “+” расположен всегда по одну и ту же сторону от “=” (сторону цепочки, к которой ближе “+” вы бы могли назвать «левой», а ту, к которой ближе “=” – «правой»). Следующей подмеченной закономерностью могло бы стать наблюдение, что во всех цепочках есть символы «слева» от “+”, между “+” и “=” и «справа» от “=”. Таким образом каждая цепочка в Васиной тетради имеет вид , причем цепочки
,
и
не пусты, не содержат “+” или ”=” и, если они не есть цепочка “0”, то их крайний левый символ отличен от “0”. Такие цепочки мы назовем цифровыми. Теперь вполне естественно было бы поискать закономерности между символами «подслов» \alpha, \beta и \gamma внутри одной и той же записи.
Самым простым было бы заметить, что символ на «правом» конце однозначно определяется крайними «правыми» символами в
и
. Выписав это соответствие, вы бы получили правила сложения натуральных 0, 1, … 9 по модулю 10 и даже смогли бы открыть эту разновидность модульной арифметики, если вдруг раньше ее не знали.
Следующим шагом напрашивалось бы посмотреть, от чего в подслове \gamma может зависеть вид второго символа «справа». Вы бы обнаружили, что иногда этот символ есть «сумма по модулю 10» (ее вы определили выше) вторых справа символов у \alpha и \beta, а иногда – она же, но только «плюс» “1” «по модулю 10». Исследовав, при каких условиях реализуется тот или иной сценарий, вы бы заметили, что выбор между ними определяют кране «правые» символы и
. Проанализировав эту зависимость, вы бы открыли простое правило переноса. Аналогичный вопрос о третьем «справа» символе в
позволил бы вам открыть правило переноса в общем случае. Дальше вы бы легко догадались, как именно получаются все остальные символы в
и пришли бы к выводу, что подслово
есть результат некоторой однозначной операции, примененной к подсловам \alpha и \beta. Вы бы могли назвать эту операцию «сложением» цифровых цепочек. Чтобы разглядеть в Васиных записях примеры на сложение «настоящих» чисел, вам оставалось бы только догадаться, что цифровые цепочки
,
и
выражают собой натуральные числа, а операция «сложения» цепочек – обычную сумму этих чисел. Как к такой идее можно было бы прийти?
Например, в результате такой последовательности открытий:
1) Исследуя правило «сложения» цепочек или просмотрев много примеров, вы бы могли заметить, что результат «сложения» и
не зависит от порядка их следования внутри записи, то есть если составить по правилам или найти в тетради пару записей вида
и
,
то подслова и
окажутся идентичными.
2) Посредством пары записей вида и
, вы могли бы определить «сумму» трех подслов: (
«плюс»
) «плюс»
. Из наблюдений записей в тетради или составляя их по правилам самостоятельно, вы могли бы обнаружить, что «сумма» трех «слагаемых» не зависит от порядка «сложений», то есть (
«плюс»
) «плюс»
даст ту же самую цепочку, что и
«плюс» (
«плюс»
).
3) Среди всех цепочек только односимвольная цепочка “0” обладает тем свойством, что для любой цепочки : 0 «плюс»
совпадает с
.
4) Среди всех цепочек только односимвольная цепочка “1” обладает тем свойством, что прибавив ее много раз к “0” можно получить любую составленную из цифр цепочку , кроме “0”. Другими словами, если
не “0”, то в последовательности записей
,
, …
найдется такая, что
совпадет с
.
В принципе, перечисленные выше открытия уже достаточно точно характеризуют множество натуральных чисел.
Когда я обнаружил, что смысл языка можно закодировать в закономерностях синтаксиса, мне стало интересно, не сделал ли такого открытия кто-нибудь раньше. Я обратился с этим вопросом к GPT-4 и получил ответ, что вроде бы такой идеи раньше никто не выдвигал. Только сев набирать эту статью, я решил еще раз проверить оригинальность своей догадки, но на этот раз прибегнул к старому-доброму дедовскому методу гуглению и … Гугл нашел, что примерно 60 лет до идеи языков, способных через синтаксис передать свой смысл догадался математик Ганс Фройденталь. Он назвал такие языки самообъяснимыми и попытался создать достаточно богатый понятиями самообъяснимый язык для … перспективы обмена сообщениями с далекими внеземными цивилизациями. Фройнденталь дал своему языку имя «LinCos» как сокращение от Lingua Cosmica. LinCos тоже использует в качестве отправной точки простейшую арифметику, затем пытается через закономерности грамматики определить концепцию высказывания, понятия истины и лжи, изобразить в себе идею говорящего и слушающего. Я мог бы еще долго рассказывать о потрясающе красивых и спорных идеях LinCos и о перспективах межзвездных разговоров на нем, но моя цель в другом. Я хочу показать вам, какие удивительные возможности открывают самообъяснимые языки для моделирования мышления и конструирования мыслящих машин.
Самообъяснимые языки как база для построения мышления.
В начале статьи я предлагал вам посмотреть на феномен мышлении с позиции эволюции, теперь давайте сменим ракурс и посмотрим на него с философской стороны. Не кажется ли вам, что в наиболее широком значении термин «мышление» можно определить как «процесс оперирования смыслами»?
В пользу такого определения говорит даже созвучие слов «мышл-ение» и «с-мысл». Как будто бы именно это значение подразумевал и Алан Тьюринг, требуя от мыслящей машины, чтобы та могла вести с человеком содержательный диалог. По всей видимости, к такому же определению апеллирует и «парадокс китайской комнаты», когда оспаривает полноту требований Тьюринга тем, что разумные ответы можно находить в большой библиотеке, сверяя только расположения символов в карточках поступающих от человека сообщений и никак не вникая в их смысл.
Все вычислительные машины, которые до сих пор создавало человечество, оперируют только расположением символов, то есть «by design» они работают с синтаксисом языков, а не с их семантикой, не с их смыслами. Если считать, что всякий смысл у языка появляется только, когда его интерпретирует кто-то мыслящий, то смысл является атрибутом мышления. Понятия смысла и мышления оказываются сцеплены друг с другом в порочный круг взаимоопределения и непонятно, как мы можем научить машину работать со смыслом, не научив ее прежде мыслить.
Другое дело, если у вас есть язык, тексты на котором обладают смыслом уже сами по себе, если этот смысл выражается через закономерности в их структуре и синтаксисе. В этом случае смысл отделен от мышления и второе можно определить через первое. Дайте машине самообъяснимый язык, научите ее подмечать и оперировать закономерностями синтаксиса, придающими этому языку смысл, и вы уже не сможете сказать, что такая машина не оперирует смыслом. Закройте глаза и подумайте над этой идеей хотя бы пару минут: она обещает поразительные возможности.
Лично я увидел возможность в следующем. Я представил себе машину, которая берет листы бумаги и один за другим заполняет их самообъяснимым текстом. Пока машина заполняет следующий лист, она может просматривать предыдущий. По моей задумке текст на каждом листе должен был представлять что-то вроде машинного «кадра мысли». Меня интересовал вопрос, может ли подобная машина работать так, чтобы, просматривая исписанные ею листы, вы могли бы разглядеть в них типичные признаки мышления. Например, существуют ли такие особенности текста ла листах, которые можно было бы трактовать как наличие у машины «некоторого представления» о внешнем мире и сигналах его сиюминутного воздействия на эту машину? Или что некоторые закодированные таким образом сигналы от внешнего мира она явно распознает как свои собственные действия? Или угадать в синтаксических закономерностях текста способность машины «чувствовать» протяженность времени, увидеть, что она имеет воспоминания о прошлом и умеет представлять себе будущее?
Про эти потрясающе интересные вопросы и про свои наработки по ним я собираюсь рассказать в следующей статье, а сейчас давайте пофантазируем, какими свойствами кроме самообъяснимости должен обладать язык, чтобы машине было «удобно» на нем «думать».
Другие желательные свойства языков мышления.
Язык арифметических примеров из тетради третьеклассника Васи, хоть он и является самообъяснимым, очевидно плохо подходит на роль языка мышления. Слишком скучным и бедным было бы мышление, в котором каждая мысль – это утверждение, что сумма двух десятичных чисел третьему десятичному числу. Попробуем тогда ответить на вопрос: какой выразительной силой (множеством выразимых понятий) и какими выразительными средствами должен обладать язык, чтобы его было удобно использовать в качестве языка мышления интеллектуального существа или машины. Начнем анализ с множества выразимых понятий.
Понятия, о которых способен говорить содержательный язык, можно условно разделить на базовые и производные (составные). В языках, похожих на естественные, базовые понятия соответствуют словам, а производные – составленным из слов предложениям. Например, слова: «кошка», «пушистая», «ходить», «комната» и «по» — это все базовые понятия русского языка, а сцена: «пушистая кошка ходит по комнате» - производное (составное). Давайте сузим наш первоначальный вопрос и спросим себя: какой круг базовых понятий мы должны «вшить» в структуру языка, чтобы думающая на нем машина могла достаточно свободно размышлять об устройстве нашего мира?
Кажется очевидным, что в набор базовых понятий развитого думающего существа должны входить термины, описывающие базовые свойства самого мира: геометрии, времени, основных физических законов, ментальных феноменов вроде представления о самом себе и себе подобных. Именно такой путь выбрали создатели LinCos. Я хочу вам показать, что к этой проблеме существует и другой, в каком-то смысле более фундаментальный, подход.
Смотрите! Мы, люди, много-что знаем об окружающем мире, но если задуматься, то никакое явление вне нашего тела не может взаимодействовать с нашим мышлением напрямую. Вся информация, которую получает наш мозг о внешнем мире, приходит к нему от органов чувств в виде потоков нервных импульсов или потоков гормонов. И электрические импульсы в нервных волокнах, и гормоны в кровеносных сосудах формально можно описать как потоки символов, текущих по каналам данных (например, как поток десятичных чисел, выражающих величину потенциала или концентрации). Выходит, что с формальной точки зрения любое понятие, которое мы смогли сформировать о внешнем мире, — это не более чем свойство или закономерность внутри потока символов, поступа��щих в наш мозг. (Каналы данных при этом могут образовывать некоторую «врожденную» структуру вроде порядка, иерархии или соседства, как пиксели на экране. Если такая структура есть, то определения понятий, как свойств потоков данных, могут на нее ссылаться). Отсюда получается интересный вывод:
Дайте машине язык, который может выразить достаточно богатый класс свойств и закономерностей внутри символьных потоков – и потенциально она будет способна выразить на нем любое понятие внешнего мира, которое сумели сформировать вы сами. Это открытие подводит нас к первому желательному свойству языков мышления:
уметь описывать достаточно богатый класс свойств и закономерностей внутри символьных потоков, включая структуру множества каналов данных, по которым они текут.
Второе желаемое свойство связанно с наблюдением, о котором я уже упоминал в «предыстории». Речь идет об исследовании, где я экспериментировал с моделями восприятия и пытался определять понятия модельного мира в терминах свойств потока данных, которые порождали взаимодействующие с этим миром рецепторы. Работая над этим исследованием, я заметил, что только очень простые понятия удобно определять как свойства, явления или закономерности непосредственно самого потока сенсорных данных. Чтобы естественно определить любые хоть сколько-нибудь более сложные и абстрактные понятия, приходилось апеллировать не только к свойствам и закономерностям внутри потока данных, но и к свойствам и закономерностям во множестве их записей.
Если такая тенденция в определении сложных понятий действительно есть и мы хотим, чтобы интеллектуальная машина умела их наиболее естественным образом стоить, то нам следует наделить ее языком, который был бы способен высказываться о своих собственных записях и утверждениях.
В математике язык B, который умеет высказываться о предложениях языка A, принято называть метаязыком (для) A. Таким образом второе желательное свойство языков мышления можно сформулировать так:
быть достаточно выразительным метаязыком для себя самого.
Третье желательное свойство решает задачу связывания высказывания и его объекта. Когда мы говорим о чем-то содержательном, то и мы сами, и те, кто нас пытаются понять, выстраиваем некоторую смысловую связь между произнесенными словами и тем явлением, о котором, собственно, шла речь. Например, когда мы говорим, что «идет дождь», то имеем ввиду, что прямо в этот момент где-то рядом с нами с неба падают капли воды. Эта неявная, но подразумеваемая связь между высказываниями и их объектами называется референцией.
Очевидно, что референции значимым образом участвуют в том, как мы придаем высказываниям смысл. Если же мы хотим отделить смысл от мыслящего и сделать смысл внутренним свойством языка, то нам придется позаботиться и о том, чтобы референция тоже оказалась внутренним свойством языка. Другими словами, тексты на подобных языках должны обладать такой структурой, по которой можно догадаться, о каком именно объекте или явлении говорит каждое записанное в них предложение. Пример текста с такой структурой мы построим в следующем параграфе, а сейчас просто сформулируем это желательное свойство языков мышления такую структуру иметь:
самообъяснимо выражать референцию между своими высказываниями и их объектами.
Требование, чтобы язык самообъяснимо выражал референции своих предложений, приводит нас к интересным следствиям. Подумайте, что можно связать между собой при помощи закономерностей в структуре текста?
Да ровным счетом, только одну его часть с другой!
Получается, что самообъяснимая референция должна связывать высказывание и какой-то фрагмент того же текста, в котором это высказывание размещено. Если язык использует самообъяснимую референцию, то объект каждого его высказывания — это всегда некоторое свойство какого-то текстового фрагмента. По сути, такой язык может высказываться только о самом себе!
Последнее замечание является очень важным и заставляет нас по-новому взглянуть на смысловое содержание желательных свойств. Смотрите:
Первое желательное свойство требует от языка уметь описывать потоки символов и их закономерности. Но если все, что может описывать язык – это структуру своих текстов, значит, символьные потоки должны быть как-то встроены в сам язык, они должны быть каким-то образом изображены через закономерности его синтаксиса и структуру его текстов.
Предположим, что язык действительно каким-то образом смог изобразить в себе потоки символов. В этом случае второе желательное свойство: быть собственным метаязыком, то есть уметь достаточно полно описывать собственные структурные закономерности, перекрывает и делает излишним требования первого желательного свойства: уметь достаточно полно описывать закономерности потоков символов. Выходит, что первое желательно свойство можно свести к требованию всего лишь уметь изображать в себе потоки символов. Формулировку третьего желательного свойства можно оставить без изменений. В итоге новый список переработанных желательных свойств выглядит так:
0) Самообъяснимость – все понятия, о которых говорит язык, должны быть определимы через закономерности его синтаксиса и особенности структуры его текстов;
1) Изобразимость символьных потоков – язык с таким свойством должен быть способен изображать внутри своих текстов символьные потоки и структуру множества каналов данных, по которым они текут. Кодирование этих понятий должно быть самообъяснимым.
2) Мета-замкнутость – язык этим свойством должен быть способен самообъяснимо описать закономерности собственного синтаксиса, структурные особенности своих текстов и способ, которым первые и вторые кодируют его смысл.
3) Автореферентность (обладание внутренним механизмом референции) – это свойство требует от языка самообъяснимо изображать референтную связь межу его высказываниями и их объектами.
Свойства автореферентности и мета-замкнутости не только выглядят желательными для конструирования мыслящих мышления, но и как будто бы необходимы, чтобы смысл можно было считать по-настоящему внутренним свойством языка. Так в примере, где я вас убеждал, что язык арифметики третьеклассника Васи определяет свой смысл, это было не до конца правдой. Почему?
Потому что объяснить, как именно этот смысл возникает, я смог лишь прибегнув к куда более выразительному и богатому метаязыку (части русского языка), чем сам язык арифметических примеров. А что, если использованный мной метаязык не является самообъяснимым, что, если в нем самом нет способа указать на то, о каких объектах высказываются его предложения? Тогда нам снова понадобится кто-то мыслящий, тот, кто сможет правильно понять и интерпретировать метаязык моих объяснений. Последнее означает, что без мыслящего нет смысла и у первоначального языка арифметических примеров. Если же самообъяснимый язык является автореферентным и мета-замкнутым, то вся логика построения его смысла «закольцовывается», приведенные выше контрдоводы уже не работают и необходимость в ком-то мыслящем как будто исчезает.
Хорошо, - скажите вы, - желательные свойства выглядят многообещающие, но существуют ли такие языки, которые обладают всеми этими свойствами одновременно?
В следующем параграфе я пытаюсь такой построить. На языке, который вы там найдете, мыслить, конечно, трудно. Я создал и поместил его в эту статью, для того чтобы показать читателю, как можно «изображать» понятия внутри формальных систем. В следующей статье я буду говорить об изобразимости довольно сложных идей, и для ее понимания вам потребуется некоторое интуитивное представление, что это значит и как это делается.
Вопрос о существовании языка со всеми желательными свойствами.
И так, нам нужно сконструировать язык, который сможет: Изобразить внутри себя идею символьных потоков;
Высказываться о достаточно богатом классе закономерностей собственного синтаксиса и свойствах написанных на этом языке текстов;
Быть понятным без переводчика любому достаточно разумному существу, то есть через закономерности синтаксиса и структуру текста позволить исследователю определить, какой смысл несет и о каком объекте высказывается каждое его предложение.
Получается, что в нашем языке должны быть изобразимы символьные потоки, осмысленные высказывания, и референции. Попробуем их реализовать в виде особого расположения символов в тетрадном клетчатом листе. По сути, предложениями нашего языка будут не линейные цепочки символов, а целая матрица символов, заполняющих все клетки на поверхности листа (Если клетка пуста, мы будем считать, что она заполнена «пустым» символом) Такой язык, в противовес обычным «линейным» языкам, является «плоским» и мы будем называть его (плоской языковой) Структурой.
Построить какой-либо содержательный язык – это значит ответить на два вопроса: о каких понятиях будет говорить язык и как он будет это делать? Начнем с первого.
Понятийный аппарат.
Наш язык-структура предполагается мета-замкнутым, следовательно он должен уметь высказываться о собственном синтаксисе и семантике. Синтаксис – это про расположение символов на листе. Семантика – это про смысл и значение, но поскольку Структура предполагается еще и самообъяснимой, то ее семантика тоже будет сводиться к закономерностям расположения символов. Последнее требуемое свойство – автореферентность - также строится в виде особых символьных конфигураций. Выходит, что, с одной стороны, нам нужны понятия, которые описывают свойства и закономерности взаимного положения символов, а с другой - что как будто бы этих позиционных понятий для наших целей должно быть достаточно.
Как выглядит мир клеточного листа, какие там есть позиционные понятия?
Ну, там есть клетки, в некоторых клетках есть символы. Есть клетки, в которых символы выглядят одинаковыми, и есть клетки, в которых они выглядят ��азными. Клетки соседствуют с некоторыми другими клетками. Для данной клетки соседняя может располагаться только справа, слева, сверху и снизу. В этих описаниях я использовал понятия: клетка, символ, отношение соседства справа/слева/сверху/снизу, отношение эквивалентности символов в двух клетках и неявно – отношение тождественности (совпадения) двух клеток. Чтобы получить возможность оперировать этими понятиями определим вспомогательный предикатный язык логики первого порядка, назовем его Язык1.
Простейший описательный язык.
Как и все предикатные языки, Язык1 мы построим из символов переменных, констант, отношений, скобок и логических связок. Для простоты мы даже не будем использовать кванторы. Предложения Языка1 будут линейными и мы разрешим записывать их на клеточных листах в любом количестве, но с тем ограничением, чтобы каждое помещалось в одну строку и было отделено хотя бы одной пустой строкой от других предложений или иных символьных формаций. Плоский язык-структуру, который предполагает, что на листе размещены только предложения Языка1, мы будем называть Структурой1.0. Перейдем к определению Языка1.
Для обозначения переменных-клеток мы будем использовать сочетание символа “#” и любой малой латинской буквы: #, #
, …, #
, #
. Переменных для символов нет. Каждый символ может выступать «константой» внутри какого-нибудь утверждения, но для этого его нужно обрамить апострофами, например, ‘#’ – это «называние» символа “#”, а ‘
’ – это называние символа “
”.
Как и у всех предикатных языков, предложения Языка1 строятся из атомарных утверждений, их будет всего 6. Записи «##
», «#
#
», «#
#
», «#
#
» выражают собой атомарные утверждения, что клетка #
является соседней с клеткой #
и лежит от нее соответственно слева, справа, сверху, снизу. Запись «#
#
» означает, что переменные
# и #
называют одну и ту же клетку. Наконец, запись «#
'
' » говорит о том, что внутри клетки #
находится символ
(например, «#
'
'» – в клетке #
находится символ “
”, #
‘’’ – внутри клетки #
находится символ апострофа, #
‘
’ – внутри клетки #
находится символ «стрелка вверх»).
Как и во всех предикатных языках, мы позволим Языку1 объединять атомарные высказывания в сложные логические предложения. Пользуясь этой техникой, мы можем построить, например такие высказывания (некоторые скобки опущены за ненадобностью):
(##
)
(#
#
),
или
(##
)
( (
’#’)
(
’’’))
((#
’
’)
(#
’
’)
…
(#
’
’))
(назовите, какие свойства эти формулы выражают?).
Формально множество предложений Языка1 можно задать следующим списком правил:
1. Каждое атомарное утверждение Языка1, является в том числе и его предложением;
2. Если – это предложение Языка1, то
(
) – тоже его предложение;
3. Если и
– предложения Языка1, то (
)
(
), (
)
(
), (
)
(
) -тоже его предложения;
4. Никаких других предложений, кроме как построенных по правилам 1-3 в Языке1 нет.
Какие свойства может выразить Язык1?
Например, хоть и очень длинной формулой, он может выразить утверждение, что в клетках # и #
стоят одинаковые символы:
((#’’’)
(#
’’’))
((#
’#’)
(#
’#’))
…(так для всех спецсимволов)…
((#
’
’)
(#
’
’))
((#
’
’)
(#
’
’))
…
((#
’
’)
(#
’
’))
или, что пять клеток в положении «крест» заполнены как на рисунке ниже:
(# ’
’)
((#
#
)
(#
’ ’))
((#
#
)
(#
’#’))
((#
#
)
(#
’ ’))
((#
#
)
(#
’
’))

Вообще, если бы латинский алфавит был бесконечным, то на Языке1 можно было выразить любое свойство о конкретном взаимном расположении конечного числа клеток с любым конкретным заполнением их символами, а также любое конечное объединение таких свойств. Ровно такими свойствами понятийный запас Языка1 и ограничивался бы (следует из того, что любое его предложение можно перевести в нормальную дизъюнктивную форму). Мы будем называть эти свойства «конечно-ограниченными».
Поговорим теперь о структуре, которая у нас получилась. Структура1.0 – это клеточный лист с записанными туда предложениями Языка1, следовательно внутри нее есть способ изображать такие содержательные высказывания, которые описывают позиционные свойства текста. Хорошо, кое-какие черты мета-замкнутости у Структуры1.0 есть, а как насчет механизма референции? Поскольку предложения Языка1 никак не указывают на то, какие именно клетки обозначают их переменные, то никакого механизма референции внутри Структуры1 пока нет. Давайте подумаем, как его можно туда добавить.
Адресная структура и самообъяснимая внутренняя референция.
Чтобы сделать понятным, о каком именно фрагменте клеточного листа высказывается предложение Языка1, достаточно указать, какую именно клетку называет каждая его переменная. Наверное, самый очевидный способ сделать это заключается в том, чтобы соединить переменные и обозначаемые ими клетки линиями, как на рисунке ниже. Такие линии можно строить, расставляя в клетках специальные символы (рис ниже).


Несмотря на свою наглядность и простоту, техника референций линиями имеет ряд недостатков, которые затрудняют ее применение: чтобы линии не сливались друг с другом, вокруг высказываний и их объектов должно быть достаточно много свободного пространства;
линию невозможно провести к клетке, если та с четырех сторон закрыта другими символами;
хотелось бы, чтобы об одной и той же клетке могли высказываться разные предложения и, чтобы одно и то же предложение могло высказываться о разных наборах клеток – и то и другое трудно реализовать линиями так, чтобы линии от разных референций не перепутались;
Ладно, линии не подходят, но тогда что? Попробуем перенять опыт программистов и построить референцию через адреса. Назначим каждой клетке уникальный адрес. Теперь для референции логического высказывания достаточно перечислить его переменные и рядом с каждой из них написать адрес той клетки, которую она обозначает. Позвольте мне описать эту идею чуть более детально.
Пусть для определенности наши листы имеют размер тысячу на тысячу клеток. Пронумеруем их строки и столбцы десятичными числами длины три: строки в порядке сверху вниз, а столбцы слева направо. Адресом клетки будем считать шестизначное десятичное число (например, 003999), где
– это номер строки, а
– номер столбца, внутри которых стоит эта клетка. Определим теперь стандарт для формул референции (мы будем называть его Референцией1). Каждая формула Референции1 – это записанная в одну строку последовательность символов:
«спецсимвол “&”», «адрес начала реферируемого высказывания», «имя переменной1»: «адрес клетки1», «имя переменной2»: «адрес клетки2», …, «имя переменной »: «адрес клетки
», «истинностная оценка буквой “
” или “
”», «спецсимвол “&”».
При помощи спецсимвола (пусть это будет “&”) мы говорим, что все написанное в этой строке вплоть до следующего “&” является формулой референции. Указав адрес начальной клетки логического высказывания (адрес клетки, где стоит его самый правый символ), мы даем возможность понять, какое именно высказывание здесь реферируется. Далее перечисляются имена переменных реферируемого высказывания и адреса обозначаемых ими клеток. Это будут записи вроде: #: 752046. Перед завершающим символом “&” мы будем ставить символ “
”, если значения, которые референция назначила переменным реферируемого ею высказывания, делают это высказывание истинным, и букву “
” в противном случае. Также, как и предложения Языка1, Формулы Референции1 будем располагать таким образом, чтобы строка над ними, под ними и хотя бы по одной клетке справа и слева от них оставались пустыми. Текст из размещенных на клеточном листе логических высказываний Языка1 и референтных формул Референции1 договоримся называть Структурой1.1.
Проблемы простейшего решения.
Является ли Структурой1.1 самообъяснимой, является ли она мета-замкнутой?
Сможет ли достаточно разумное существо, получив достаточно большую стопку клеточных листов, на которых записаны высказывания Языка1 и реферирующие их формулы Референции1, выяснить, что есть что и какой у всего этого смысл? Если смысл действительно определяется закономерностями, сможет ли оно записать их в виде текста со Структурой1.1?
Поставьте себя на место этого существа, и вы тут же увидите сложности:
1) Структура1.1 определяет адрес клетки как что-то воображаемое и виртуальное. Если не знаешь, как это сделано, то поди догадайся, что какое-то сочетание символов указывает на определенную клетку в другой части листа. Ребус с адресами решался бы куда проще, если бы каждая клетка была как-то помечена своим адресом.
2) По условию у вас нет никаких предварительных знаний о том, что означают отдельные символы и их сочетания. Как тогда установить смысл значков “#”, “=”, “”, “
”, “
”, “
”,
“”? Как понять, что предложения Языка1 – это атомарные утверждения, соединенные логическими операторами и скобками в сложные логические высказывания? По задумке все это должно быть открыто из закономерностей употребления букв “
” и “
” на конце референтных формул. Особенно простыми эти закономерности будут в случае, когда реферируемое предложение Языка1 – это атомарное высказывание. По референциям «одноатомных» предложений легко угадывается и идея переменной-клетки, и смысл значков отношений, и даже сама суть знаков “
” и “
”. Для составных формул Языка1 все уже не так очевидно. Дело в том, что ни сами логические предложения Языка1, ни формулы Референции1 своей структурой никак нам не подсказывают, как именно вычисляется истинность составных утверждений. По одной лишь букве “
” или “
” в конце длинного перечисления имен переменных с адресами трудно догадаться, как работают скобки и что делает каждый логический оператор.
3) Если в двух предыдущих пунктах описывались трудности самообъяснимости, то здесь будет показана трудность в мета-замкнутости. Смотрите, даже если игнорировать ограниченность переменных, одно или несколько предложений Языка1 могут наложить ограничение на расстановку символов только в ограниченном множестве клеток. Действительно, всякое предложение Языка1 эквивалентно объединению (дизъюнкции) конечного числа свойств, каждое из которых говорит о конкретном способе заполнения символами определенного числа клеток, находящихся друг относительно друга в конкретном взаимном расположении. В то же время правила грамматики Языка1, даже с использованием ограниченного числа переменных, дают возможность составлять сколь угодно длинные логические высказывания. Последнее делает невозможным написать на Языке1 такое свойство, которое бы определило, как правильно составлять его собственные предложения.
И так, перед нами есть несколько проблем, давайте попробуем их решить. Начнем с более явного отображения адресов.
Самообъяснимая адресная структура.
Формул Референции1 связывают имена переменных с конкретными клетками при помощи записей вида #:
. Как заставить читающего эту запись разумное существо обратить внимание на клетку с адресом
? Кажется, что если бы мы прикрепили ко всем клеткам ярлычки с их адресами, то существо подметило бы совпадение редкого шестибуквенного слова
, встретившегося ему в референтной формуле, с таким же словом на ярлычке и включило бы свойства помеченной этим ярлычком клетки в свои гипотезы о закономерностях.
Предположим, что идея с ярлычками рабочая, но как ее реализовать, ведь по условию мы не можем крепить на лист ярлычки или делать с ним что-то еще, кроме как рисовать на нем символы? Мы могли бы попытаться записать адрес каждой клетки в клетках рядом с ней на самом листе, но такая попытка обречена на неудачу. Разместить рядом с каждой клеткой 6 символов ее адреса на мне даст ни арифметика, ни топология листа. Решение проблемы нехватки места под адреса мы снова можем подсмотреть у программистов. Когда они работают с компьютерной памятью, то раздают адреса не отдельным ее односимвольным ячейкам, а блокам из сразу нескольких таких ячеек. Блоки хранят целые машинные слова, а если требуется получить доступ к отдельной ячейке, то программист передает компьютеру адрес блока, в котором содержится нужная ячейка, и ее порядковый номер внутри этого блока. Переложим эту технику на наш клеточный лист.
Разобьем лист на вертикальные блоки по 8 клеток в каждом. Чтобы такое разбиение удалось, возьмем листы размера 1000 800 клеток. При таком размере листа блоки на нем выстроятся в матрицу со 100-а строками и 1000-ей столбцами. Пронумеруем строки и столбцы этой матрицы десятичными числами: строки - сверху вниз числами длинны 2, а столбцы – слева направо числами длины 3. Назначим каждому блоку адрес в виде пятизначного числа
, где
– это номера строки и столбца, в котором находится этот блок.
Наконец сделаем адресацию наглядной: для этого в пять верхних клеток каждого блока впишем его адрес так, чтобы он читался сверху вниз. Самую нижнюю и третью снизу клетки блока оставим навсегда пустыми, а вторую снизу – объявим вакантной. Вакантные клетки блоков, расположенных на одной горизонтали, образуют клеточные строки, назовем эти строки тоже вакантными. Все значимые записи: высказывания и референции, мы будем вести в вакантных строках. Благодаря пустым клеткам эти записи будут отделены пустыми строками друг от друга и от нумерующих блоки адресов.
Хорошо, мы разбили лист на блоки и явно их пронумеровали. Однако объективно клеточные блоки существуют пока только в нашей голове: на самом листе их явно еще ничто не выделяет. Попробуем это исправить и сделать так, чтобы блоки стали более реальными для разумных существ, которые будут изучать наши записи.
В первую очередь добавим идею блока в наш описательный язык. Пусть сочетание символов @, где
– это любая маленькая буква латинского алфавита, служат именами переменных-блоков. В свою очередь записи вида @
.1, @
.2, …, @
.8 – это обозначения 1-ой, 2-ой, …, 8-ой сверху клеток в блоке @
. Наконец пополним Язык1 еще одним типом атомарных утверждений: @
.
= #
, которое выражает свойство клетке с именем #
быть по счету
-ой сверху клеткой в блоке @
. Получившийся язык назовем Язык1.1.
Раз мы изменили язык высказываний и способ адресации, то нужно скорректировать и механизм референции. Определим формат Референции1.1, он будет повторять формат Референции1 во всем, кроме двух моментов. Первый момент – мы добавим в формулы Референции1.1 записи, которые наделяют значением имена переменных-блоков. Это будут записи вида @:
, где @
– это имя переменной, а
– адрес называемого этим именем блока. Второй момент – изменится формат адреса клетки. Теперь запись, наделяющая значением переменную-клетку #
, будет выглядеть так: #
:
.
. В этой записи
– это адрес блока, в котором находится обозначенная именем #
клетка, а
– ее порядок в этом столбце в направлении сверху вниз.
Мы будем говорить, что клеточный лист обладает Структурой1.2, если он разбит на пронумерованные блоки, а в вакантных строках записаны высказывания Язык1.1 и реферирующие их формулы Референции1.1. Самообъясняет ли Структура1.2 механизмы адресации и идею клеточных блоков? Сильно упрощая, на этот вопрос можно ответить так:
Размещенные в начале реферирующих формул и внутри них рядом с именами переменных редкие цепочки символов должны заставить изучающего текст обратить его внимание на то, где еще на листе встречаются эти цепочки и какие символы стоят рядом с ними. Благодаря этому в восприятии исследователя должна возникнуть связь между реферирующей формулой, реферируемым высказыванием, и местами на листе, где расположены клетки и блоки, которые реферирующая формула назначает переменным реферируемого высказывания. Как теперь из этой связи выловить идею блоков и позиций клеток в них?
Предположим, что листов огромное количество, что они заполнены разнообразно и поэтому достаточно много раз встречаются отреферированные высказывания вида:
«(@.
= #
)
(#
)».
Каждое такое высказывание выражают собой свойство, что в -той сверху клетке блока @
стоит символ
. Наблюдая за тем, в каких случаях на конце реферирующих эти утверждения формул стоит буква “
”, а в каких - “
” и опираясь на предыдущее замечание об адресах, можно догадаться, что имя @
называет несколько стоящих друг над другом клеток, а каждое из значений
– определенную позицию в их порядке сверху вниз.
С проблемой адресации худо-бедно разобрались, займемся теперь проблемами 2) и 3).
Графовые описания как решение проблемы слишком длинных предложений.
Если вы не знакомы с математическими языками и смотрите на длинное логическое высказывание, то видите в нем лес скобок и армию значков-операторов. Вам будет по-настоящему трудно понять, почему в конце одних формул референции этого высказывания стоит “”, а на конце других - “
”. Эта трудность проистекает из нелокальности: «открывшаяся» скобка может закрыться миллионом символов правее, под действие логического оператора могут подпадать очень сложные и длинные куски предложения. Давайте разработаем альтернативный способ представления высказываний Языка1.1 такой, чтобы и правила построения этих представлений, и правила оценки их истинности были просты и локальны, то есть формулировались в терминах заведомо ограниченного числа символов и клеток. Получить такое представление нам поможет процесс декомпозиции.
Как вы помните, в определении Языка1.1 было сказано, что если и
– это его предложения, то цепочки символов, построенные по грамматическим схемам: (
)
(
),
()
(
), (
)
(
) и
(
)– тоже являются предложения Языка1.1, причем никакие другие цепочки символов, за исключением атомарных утверждений, предложениями Языка1.1 не являются. Такой принцип конструирования предложений позволяет в некотором смысле повернуть себя вспять. Смотрите:
Пусть – это цепочка символов, изображающая неатомарное утверждение Языка1.1, тогда ее можно представить либо как (
)Op(
) (Op – это конкретных логический оператор), либо как
(
). Предположим, имеет место первый случай (второй разбирается аналогично). Вместо того, чтобы выписывать саму цепочку
, мы можем записать порождающую ее грамматическую схему «(
)Op(
)» и где-то рядом пояснить, какие именно цепочки
и
должны быть подставлены в этой схеме вместо букв
и
(буквы в таких схемах называют пропозициональными переменными). В совокупности грамматическая схема и пояснительные записи будут задавать собой то же высказывание
, что и изначальная цепочка
. Переход к такому альтернативному способу представления
мы и будем называть процессом его декомпозиции. Декомпозицией атомарного утверждения будем считать его само.
Упражнение.
Докажите, что способ декомпозиции однозначен: любое предложение Языка1.1 либо является атомарным утверждением, либо его можно единственным способом представить в виде одной из 4-ех сокращенных схем: как ()
(
), как (
)
(
),
как ()
(
), или как
(
), где
и
– это снова предложения Языка1.1.
Предложения и
(или только
, когда
нет), на которые раскладывается неатомарное высказывание
, мы будем называть главными подвысказываниями
, а действующий на них (или на единственное главное подвысказывание) оператор – главным логическим оператором
.
После того, как мы декомпозировали предложение и представили его как как грамматическую схему и подставляемые в нее главные подвысказывания
, эти главные подвысказывания тоже можно декомпозировать, затем декомпозировать их главные подвысказывания и так далее пока не дойдем до атомарных утверждений. Предложение
после такой рекурсивной декомпозиции превратится в подстановочный граф. Узлами подстановочного графа являются либо атомарные утверждения, либо грамматические порождающие схемы. Каждое ребро, выходящее из узла этого графа, указывает, какое высказывание (это высказывание также декомпозировано и представлено в виде подстановочного графа) должно быть подставлено вместо той или иной пропозициональной переменной записанной в этом узле грамматической схемы. Давайте на примере посмотрим, как это работает.
Возьмем высказывание: (#’ ' ’)
(((#
#
)
(#
‘ ’ ’))
(((#
#
)
(#
#
))
(#
' ' '))) – оно описывает закономерность с которой внутри Структуры1.2 употребляется апостроф. Подстановочный граф этого высказывания выглядит так:

Упражнение: проверьте, что переход от предложения Языка1.1 к его подстановочному графу обратим, алгоритм обращения может быть, например, таким:
На первом шаге вы заменяете внутри грамматических схем графа каждую пропозициональную букву, в которую входит ребро от атомарного утверждение на это атомарное утверждение. В результате в некоторых узлах грамматические схемы преобразуются в предложения Языка1.1 или преобразуются в них «наполовину». Далее, если на каком-то шаге узел графа превратился в предложение Языка1.1, то на следующем шаге вы заменяете им все пропозициональные буквы, к которому от этого узла есть ребро. Через конечное число шагов подстановочный граф превратится в то предложение Языка1.1, которое изначально в него декомпозировалось.
Обратимость перехода от предложений Языка1.1 к их подстановочным графам показывает, что они являются точными эквивалентами друг друга, следовательно выражают одно и тот же множество свойств. Вместе с тем подстановочные графы имеют важное для нас преимущество над предложениями Языка1.1: правила их построения локальны, ну или почти так. Смотрите, в предложениях Языка1.1 нужно следить за правильностью открытия закрытия скобок – и этот критерий «правильности» не может быть выражен как свойство, объединяющее конечное число конкретных расположений клеток с конкретными символами в них (то есть конечно-ограниченным свойством). Когда же мы смотрим на подстановочный граф, то, напротив, видим простую структуру:
G1) каждый узел помечен либо атомарным высказыванием, либо грамматической схемой;
G2) из узлов, помеченных атомарными высказываниями нет исходящих стрелок и есть по крайней мере одна входящая;
G3) из каждого узла, помеченного схемой выходит в точности одна стрелка, а из каждого узла, помеченного одной из трех двухбуквенных грамматических схем – ровно две стрелки: «правая» и «левая» (графы, в которых учитывается порядок стрелок, называют упорядоченными).
Если взять узел подстановочного графа и все узлы и стрелки, которые находятся «под ним» то есть лежат на каком-нибудь выходящем из этого узла направленном пути стрелок, то такой подграф сам будет подстановочным графом для некоторого логического высказывания. Это «фрактальное» свойство подстановочных графов позволяет легко проследить за тем, как формируется оценка истинности их узлов. Достаточно рекурсивно найти оценку истинности узлов, к которым из данной грамматической схемы идут стрелки, после чего применить к этим оценкам стоящий в схеме логический оператор. Референцию узлов мы тоже можем задать рекурсивно: как стоящую в узле схему плюс референции узлов, к которым от этой схемы идут стрелки. Референцию «листовых» узлов, то есть таких, в которых стоят атомарные высказывая, можно оставить такой же, как и у Языка1.1.
«Лишние» высказывания.
Правила построения, правила референции, правила истинностной оценки подстановочных графов являются «локальными» и «конечно-ограниченными», то есть формулируются в терминах ограниченного сверху конечного числа «ближайших» дуг к другу конструктивных объектов. Эта простота и «конечно-ограниченность» грамматики подстановочных графов создают соблазн использовать их в качестве описательного языка самообъяснимой структуры вместо предложений Языка1.1. Можем ли мы это сделать? Очевидно, что стрелки мы можем «изобразить» при помощи адресации и даже сделать это так, чтобы способ «изображения» описывался «конечно-ограниченным» свойством расположения клеток и символов в них. Хорошо, а как насчет правил G1-G3, предположим, что граф ими обладает, будет ли он подстановочным для какого-нибудь предложения Языка1.1? И тут ответ: «Нет».
Вот два характерных примера:

В этих примерах оба графа подчиняются правилам G1-G3, но ни один из них не является подстановочным: первый – потому что имеет две «верхних» вершины, а второй – потому что закольцован. Если же к правилам G1-G3 прибавить требования G4 единственности вершины, из которой нет стрелок, и требование G5 отсутствия циклических путей, то удовлетворяющие этому расширенному набору требований графы действительно будут только подстановочными. Но вот беда: и свойство единственности «верхней» вершины и свойство ацикличности не являются «конечно-ограниченными», мы не сможем их выразить предложениями Языка1.1. Что делать?
Ну, требование единственности вершины для нас не так важно: если граф построен по правилам G1-G3 и ацикличен, то подграф под каждым его узлом будет самым настоящим подстановочным графом некоторого предложения Языка1.1. С цикличностью тоже можно ужиться. Да, из-за нее появятся бессмысленные высказывания вроде «Парадокса Лжеца», но мы их просто не будем реферировать. Если же циклическому утверждению можно приписать какой-то смысл, как например «Тавтологии Правдивца», то зачем ее запрещать.

И так, наш графовый описательный Язык2.0 будет выглядеть следующим образом. Его предложения в каком-то смысле будут «сборными» и представлять собой графы со свойствами G1-G3. Вершины этих графов мы определим как записи двух типов. Первый тип — это элементарные высказывания Языка1.1. Второй тип будет записью, состоящей из грамматической схемы одного из четырех видов: ,
,
,
и приписанным к ней адресам первых символов одной или двух записей, которые тоже являются вершинами графа и должны быть подставлены вместо пропозициональных букв этой схемы (например «
, 12345.7, 67924.7» или «
, 12345.7»). Теперь поговорим о референциях, их тоже стоит существенно поменять.
Графовые референции графового языка.
Как я уже говорил выше, референцию высказываний, представленных в виде подстановочных графов, наиболее естественно изобразить тоже в виде графов. Идея в том, что если построена референция узла подстановочного графа (высказывания, которое этот узел передает), то она полностью определяется референциями узлов под ним, то есть тех одного или двух узлов, к которым от этого узла идут стрелки. Непосредственная (наивная) реализация этой идеи заключается в том, чтобы для подстановочного графа построить его структурный граф-двойник. В этом графе-двойнике все узлы и все ребра будут двойниками соответствующих им ребер и узлов подстановочного графа, но только с другими записями внутри.
Если узел подстановочного графа помечен атомарным высказыванием, то в качестве его двойника
взять референцию этого высказывания в форме Референции1.1 (она в том числе содержит оценку истинности
или
). Если же узел
содержит грамматическую схему, то в его узле-двойнике
записать адрес первого символа самого узла
, далее записать адреса первых символов тех одного или двух узлов реферирующего графа, которые построены как двойники узлов дочерних к
(те узлы, к которым от
идут стрелки), затем поставить оценку истинности высказывания узла
при данной референции. Референцию построенными по таким правилам графами мы будем называть Референцией 2.0. Для некоторых цикличных подстановочных графов тоже могут существовать реферирующие их графы со структурой Референции2.0

К сожалению у Референции 2.0 есть трудность: правильность построения реферирующего графа не описывается «конечно-ограниченным» свойством. Если узел подстановочного графа является грамматической схемой с двумя буквами, и вы возьмете две произвольные референции, подставляемых вместо этих букв высказываний, то вместе референции подвысказываний референцию сложного высказывания, вообще говоря, не дадут. Дело в том, что в атомарные утверждения, из которых строятся подвысказывания, могут входить переменные с одинаковыми именами, а референции этих подвысказываний могут по-разному придать таким переменным значения (пример ниже). Понятно, что референции сложного высказывания в таком случае не получится.
Узлы реферирующего графа, в которых одна и та же переменная наделяется значениями, могут находится в нем «далеко» друг от друга (реберный путь от одной к другой может быть сколь угодно «длинным»), поэтому требование одинаковости этих значений нельзя выразить каким-то «конечно-ограниченным» свойством. Как следствие Структура2.0 образованная Языком2.0. и Референцией2.0 не будет в полной мере мета-замкнутой как минимум потому, что она не сможет описать правила построения своих референтных графов. Давайте попробуем решить эту проблему.

Самым очевидным решением было бы дополнить каждый узел реферирующего графа перечислением референций всех тех переменных, которые входят в реферируемое им высказывание. Поскольку переменных в нашем языке конечно (по числу букв в алфавите), то проверка того, что в дочерних узлах реферирующего графа тем же самым переменным приписаны те же самые значения, будет описываться хоть и очень длинным, но все же «конечно-ограниченным» свойством. А что, если мы захотим построить язык с бесконечным набором переменных? Тогда перечисления станут неограниченными по длине, и мы вернемся к той же проблеме, с которой начали. Можно ли придумать решение получше?
Я нашел такое: вынести проблему проверки согласованности значений каждой переменной в отдельный граф граф-спутник, а затем прикрепить эти спутники к основному реферирующему графу. Выглядит это так:
Пусть – это переменная, которая входит в высказывание, представленное подстановочным графом
, а граф
реферирует
. Спутник
графа
для переменной
создается по следующему алгоритму. Для каждого узла
в графе
, который реферирует содержащее
высказывание в
, создадим в
узел-двойник
. В каждом таком этом узле
запишем единое для всего
значение переменной
. Ребра в
строятся как двойники ребер в
(или
): мы проводим ребро из
в
тогда и только тогда, когда
– это двойник узла
в
,
– это двойник узла
в
и в графе
из
в
есть ребро. Читатель может увидеть, что на уровне структуры (чертежа из ребер и узлов) граф
является копией подграфа
, образованного всеми такими узлами
, которые выражают высказывания с переменной
, и всеми такими ребрами
, которые выражают их подстановки.
Чтобы использовать граф для проверки согласованность значений
в реферирующем графе
, привяжем его к
. В каждом узле
’’ графа
напишем адрес первого символа того узла
графа
, для которого
был построен двойником – это проведет «межграфовые» стрелки от узлов
к узлам
. В том случае, когда узел
в
– это референция атомарного высказывания, мы проведем стрелку и в обратном направлении: для этого допишем к
адрес первого символа его
-двойника
в
. Поскольку атомарные утверждения Языка1 содержат только одну или две переменные, то добавление к некоторым узлам реферирующего графа
«указателей» на один или два узла в его графов спутников оставит записи узлов R ограниченными по длине.

Реферирующие графы дополненные графами спутниками договоримся называть Референцией2.1. Структуру листа с пронумерованными блоками клеток, размещенными в его вакантных строках высказываниями в форме графов Языка2.0 и реферирующих эти высказывания графов Референции2.1 назовем Структурой2.0.
Картина в целом.
Получилось ли у нас сделать так, чтобы правила построения Структуры2.0 можно было описать «конечно-ограниченными» свойствами?
Ну смотрите. Пусть на листе есть записи, которые имеют вид узлов подстановочных графов, узлов графов референции и узлов графов спутников. Заведомо мы не утверждаем, что эти записи действительно образуют соответствующие графы, но пусть выполняется следующее:
для всех записей, имеющих вид узлов подстановочных графов выполнены свойства G1-G3 (это уже гарантирует, что все такие записи действительно формируют подстановочные графы);
от каждой записи
, имеющей вид реферирующего узла, идет ровно одна межграфовая стрелка к ровно одной записи
, имеющей вид узла подстановочного графа. Если у узла
есть дочерний узел
(то есть такой, к которому от
есть «внутриграфовая» стрелка), то и у реферирующего узла
тоже есть дочерний
узел , причем «межграфовая» стрелка от
идет к
(межграфовые и внутриграфовые стрелки коммутируют);
каждая запись, которая имеет вид узла, реферирующего атомарное утверждение, действительно им является, кроме того от этой записи идет одна или две «межграфовые» стрелки, в зависимости от числа переменных в атомарном утверждении, к записям, имеющим вид узлов графов-спутников этих переменных;
от каждой записи
, имеющей вид узла графа-спутника идет в точности одна «межграфовая» стрелка в точности к одной записи
, имеющей вид узла реферирующего графа. Если у
есть дочерние узлы, то и у
тоже есть дочерние узлы и в этом случае «межграфовые» и «внутриграфовые» стрелки коммутируют;
в том и только в том случае к узлу
графа-спутника есть «межграфовая» стрелка от узла
реферирующего графа, когда есть «межграфовая» стрелка от
к
и у
нет дочерних узлов (от него не идут «внутриграфовые» стрелки);
имя переменной и адрес назначенного ей объекта, указанные в любом узле графа-спутника, ровно такие же, как и в его дочерних узлах. Если у узла
дочерних узлов нет, то эти имя и адрес такие же, как в реферирующем узле
, к которому от
ведет «межграфовая» стрелка.
узлы реферирующие атомарные утверждения корректно оценивают их истинность. Для узла, реферирующего грамматическую форму, стоящая в нем истинностная оценка согласуется с истинностной оценкой, стоящей в его дочерних узлах и логической связкой этой формы.
я, конечно, могу ошибаться, но вроде бы перечисленного достаточно, чтобы все записи на листе, имеющие вид узлов подстановочных графов, объединялись в подстановочные графы, записи, имеющие вид узлов реферирующих графов и графов спутников – формировали реферирующие графы и графы-спутники. Последние при этом будут правильно реферировать и правильно оценивать истинность высказываний, даже если те представлены подстановочным графом с циклами. Пусть читатель проверит это в качестве упражнения.
Осталось ответить на главный вопрос, обладает ли Структура2.0 всеми желательными свойствами языков мышления?
В Структура2.0, вроде бы, хватает закономерностей, чтобы она была самообъяснимой. Ее легко можно расширить, чтобы она могла изображать внутри себя потоки данных: достаточно реализовать их в виде последовательности особых символов в вакантных строках клеточного листа. Внутри нее есть механизм референции и он, по всей видимости, самообъяснимый, так что она, наверное, автореферентна. Как насчет метазамкнутости, можно ли на встроенном в Структуры2.0 описательном языке объяснить ее грамматические правила и то, как этот язык получает смысл? Вот здесь есть пробел.
Да, мы можем на языке подстановочных графов описать грамматические свойства Структуры2.0. Поскольку мы предполагаем, что она самообъяснима, то и смысл закодированных в этих графах высказываний должен выражаться через грамматические особенности текста на листе. Но есть проблема: и правила грамматики, и смысловые определения представляют из себя нечто большее обычных свойств – они являются закономерностями, а с последними не все так просто.
Трудная загадка о «закономерностях».
Вряд ли в наши дни есть такой человек, который исчерпывающе и точно сможет ответить на вопрос, что такое закономерность. Это действительно сложная проблема и она только ждет своих смелых исследователей. Я собираюсь поговорить об этой проблеме в третьей статье этой серии, а пока позвольте мне дать вам немного почувствовать ее глубину. Смотрите:
Интуитивно, закономерность – это что-то противоположное случайности. Наверное, если вы много раз бросаете честную монетку, то получившаяся в результате последовательность выпадения орлов и решек не должна проявлять в себе никаких закономерностей – ведь она абсолютно случайна. Если мы говорим только о категоричных свойствах (об истинности которых можно сказать либо "да" либо "нет", в противовес свойствам статстическим), то, наверное, категоричное свойство является закономерностью только тогда, когда оно выполняется для всех частей конструктивного объекта, а вероятность того, что это произошло случайно, пренебрежимо мала. Хорошо, предположим, у вас есть конструктивный объект (цепочка символов, текс, граф, конечная модель какой-нибудь теории) и такое его свойство
, что
выполняется для всех частей
, причем почти невероятно, чтобы
выполнялось для всех частей другого подобного объекта
, если тот получен случайно. Стоит ли считать
закономерностью в
?
Рассмотрим такой пример:
Бросим «честную» монетку десять тысяч раз и запишем последовательность выпавших орлов и решек. В этой последовательности без малого десять тысяч подслов длины 10. Вероятность наблюдения любого такого подслова в 10 подбрасываниях монетки – два в минус десятой, что примерно одна тысячная. Получается, что каждая последовательность орлов и решек длины 10 в любом реальном эксперименте с десятью тысячами подбрасываний встретится примерно 10 раз. Вероятность, что в подобном эксперименте она не встретится ни разу, равна примерно «е в минус десятой» (это сильно меньше одной тысячной).
Возьмем в нашей последовательности букв “o” и “p” любое подслово длины 10 так, чтобы оно стояло в дали от ее правого конца, и обозначим его как . Скорее всего все экземпляры слова
в нашей последовательности не стоя на ее конце и за ними есть еще 14 символов. Пусть
, …
– это все 14-ти символьные слова, стоящие непосредственно за экземплярами
, их примерно 10. Запишем такое свойство
:
«Если подряд идущие 10 символов последовательности орлов и решек – это слово , то следующие за ими 14 символов образуют одно из слов:
, …
».
Свойство выполняется для всех частей нашей последовательности, и только менее чем в одном из тысячи случаев оно будет выполняется для всех частей последовательности орлов и решек, полученных в другом эксперименте с десятью тысячами случайных подбрасываний «честной» монетки (докажите). Так стоит ли назвать
закономерностью нашего эксперимента?
Замечания.
В статье я говорил о языках в их достаточно классическом математическом определении: как о некотором подмножестве всех возможных цепочек (или плоских матриц) символов из фиксированного алфавита. И цепочки и матрицы отражают наши ограничения в том, как мы произносим, записываем или воспринимаем символы. Устная или письменная речь - это всегда последовательности, изобразительная - всегда плоские картины. Мышление не имеет таких ограничений и скорее всего множества "предложений" языков мышления, если такие языки действительно существуют, будут описываться как особые подмножества гиперграфов среди всех возможных гиперграфов с фиксированным набором типов гиперребер или почти тоже самое, как множества конечных моделей некоторой теории (на любое k-местное отношение можно смотреть как на тип k-местных гиперребер). Обычные линейные и плоские "матричные" языки оказываются частным случаем такого определения.
Структура2.0 выразительно очень бедна: на встроенном в нее Языке2.1 нельзя выразить даже конечно-автоматных свойств цепочек символов (иначе – регулярные выражения). Но для меня это был вызов - построить претендующую на самообъяснимость, авторефентность и метазамкнутость структуру с максимально бедным понятиями языком. Гораздо проще строить такую структуру, если в ее основу положить описательный язык, способный выразить любые алгоритмические свойства текста. В качестве еще одного упражнения, возьмите свой любимый язык программирования и придумайте как на его основе создать такой формат текста, который бы сделал программы на этом языке самообъяснимыми. Для решения этой задачи вам будет полезно самообъяснимым образом изобразить в тексте то, как процесс выполнения программы меняет содержимое оперативной памяти и состояния процессора. Клеточный лист вам в помощь:)
Сергей Коваленко,
magnolia@bk.ru
Алма-Аты,
ноябрь 2025 года.
Комментарии (9)

pavel_kudinov
18.11.2025 15:16Спасибо, у вас хорошо получилось продвинуться! Правильный переход от "алгебры" к "геометрии" и обратно. Задача описания пространства и объектов в символах. Задача описания закономерностей в сигналах. Реферирующий и реферируемый графы.
Сам для своей симуляции изначально хотел разработать похожую динамическую поведенческую символьную онтологию, чтобы распознавать паттерны в сигналах рецепции виртуальных существ (занимаюсь симулятором жизни, писал о нём на Хабре)
Рекомендую из классики познакомиться с https://www.opennars.org/ - там ребята тоже на ходу обучения агента в неизвестной среде с неизвестными смыслами выдумывают динамические символьные описания (графы с операторами действий над ними, т.е. когда агент проживает свой опыт у него постоянно этот граф перестраивается - и такой подход решает те же 3 задачи - описание пространства, выделение паттернов в сигналах и сверение с паттернами, а также индуктивный переход от низкоуровневых к высокоуровневым логикам)
особенно рекомендую поискать видео где эта штука управляет агентами в виртуальной среде, бегает марио-подобные существа по миру-рогалику, решает всякие головоломки а в голове у него граф-модель мира символами динамически описывается (видно во втором окне граф), гипотезы проверяются и отпадают и тд и всё это управляет поведением агента "осознанно" изучающего закономерности мира

3epka
18.11.2025 15:16Вот краткая выжимка статьи «Гипотеза о роли скрытого описательного языка в механизмах мышления и о том, как у этого языка появляется смысл»
Основные идеи
Гипотеза скрытого языка в мышлении
Автор предполагает, что в основе мышления (у животных и человека) лежит не просто поток ощущений, а описательный языкоподобный внутренний язык.Значимость описаний закономерностей
Мы не просто воспринимаем ощущения, но формируем описания закономерностей сенсорных данных (паттернов), и затем оперируем этими описаниями.Смысл как внутренняя структура языка
За смыслом не обязательно стоит внешний интерпретатор — смысл может быть встроен в саму структуру языка: через закономерности в синтаксисе и структуре текста.-
Желаемые свойства “языка мышления”
Автор выделяет несколько ключевых качеств:Самообъяснимость — понятия языка описываются через синтаксические закономерности самого языка.
Мета-замкнутость — язык может рассуждать о своей собственной структуре.
Автореферентность (референция) — текст может ссылаться сам на себя: предложения языка могут указывать на объекты, выражённые другими частями текста.
Предложение конкретной структуры языка
В статье автор предлагает “плоскую” (матричную) структуру языка: символы располагаются на клеточном листе (матрица), а синтаксис, семантика и референция выражаются через конфигурации символов в этом листе.Потенциал для “мышления машин”
Он представляет машину, которая “мысленно” заполняет листы такого языка, просматривает предыдущие листы (“кадры мыслей”), находит закономерности в структуре и таким образом реализует мышление — память, представление о времени, реакцию на внешние сигналы.-
Проблемы и вызовы
Как сделать так, чтобы структура была интуитивно понятна разумному существу без предварительных знаний языка.
Трудности в самообъяснении адресной структуры (как связать переменные с физическим расположением клеток) и референции.
Баланс между выразительностью языка (чтобы можно было описывать поток символов, их закономерности) и его самозакрытостью.
Значение и выводы
Это философско-математическая гипотеза о том, как может быть устроено мышление: не просто через нейроны, а через язык внутри нас, который описывает паттерны.
Если такая модель окажется работоспособной, она может дать новый путь к созданию машин, которые действительно “понимают” смысл, а не просто манипулируют символами.
При этом остаётся много нерешённых технических и философских вопросов: как “язык мышления” должен быть устроен, как на нём мыслить и как обеспечить, чтобы этот язык сам по себе нес смысл.

Sergey_Kovalenko Автор
18.11.2025 15:16Да, с самореферентностью не поняла. Это слово используют обычно в другом смысле, именно как возможность говорить о себе. У меня самореферентность - это именно обладание внутренним механизмом референции собственных описательных предложений. Но так, плю минус для тех, кто не любит фолианты, пересказ сойдет.
Спасибо вам!

NeriaLab
18.11.2025 15:16Статья - методологически чистая попытка реконструировать мышление как оперирование самообъяснимым описательным языком. Особенно ценна идея отделения смысла от внешнего интерпретатора за счёт кодирования семантики в синтаксических закономерностях. Это действительно может стать основой для объяснимых, верифицируемых и этически устойчивых ИИ-систем, в отличие от LLM, где смысл остаётся статистической иллюзией.
Однако здесь возникает два важных момента, на которые стоило бы обратить внимание.
Во-первых, в когнитивной науке уже давно сложился консенсус: мышление не сводится к языку, даже к внутреннему или "самообъяснимому". Язык - это мощный инструмент выражения, коммуникации и структурирования мыслей, но не их источник. Эмпирические данные, от исследований глухонемых детей (вроде Хелен Келлер) до нейровизуализации доязыкового рассуждения у младенцев - показывают, что ментальные представления первичны, а лингвистическая форма - вторична.
Фодор, Пинкер, Барсалу и современные работы в рамках теории предиктивного кодирования (Фристон) демонстрируют, что мышление мультимодально: оно опирается на визуальные образы, моторные схемы, каузальные модели, эмоциональные оценки - всё это существует до и независимо от слов. Даже в Вашем примере с арифметикой: чтобы расшифровать "12+27=39", инопланетянин должен уже обладать интуицией числа, последовательности, действия и результата, а без этого - синтаксис останется "пустой игрой в символы".
Таким образом, риск текущего подхода - свести онтологию мышления к лингвистической структуре.
Во-вторых, предложенные Вами концепции - языковая природа мышления, метауровень рассуждения, символьное заземление через структуру данных, формализация восприятия как потока символов, референция через адресацию, представление мышления как последовательности "кадров", давно и системно разрабатывались в рамках когнитивно-символьных архитектур:
Soar оперирует "состояниями" и "операторами", где каждое состояние - это символьное описание, а рассуждение - поиск в пространстве таких состояний;
ACT-R формализует восприятие через "чанки", сопоставляемые с сенсорными потоками и рекурсивно объединяемые в иерархии;
SNePS реализует "теорию разума" через эпистемические операторы и обладает мета-замкнутым языком, на котором можно рассуждать о собственных знаниях;
Cyc явно кодирует семантику в онтологии и может объяснять каждый шаг вывода, включая источники знаний и каузальные цепочки;
DR-Prolog, LegalRuleML, FLIX и ранние версии OpenCog также реализуют идеи автореферентности, логической верификации и структурной референции.
Даже LinCos, упомянутый Вами, был вдохновлён логико-математической традицией (Гёдель, Smullyan, теория вычислимости), а не стал её началом. Идея "самообъяснимого языка" - это, по сути, обобщение давно известного принципа символьного заземления и автореферентных формальных систем.
Это не умаляет оригинальности Вашего подхода, напротив, Вы независимо приходите к тем же выводам, что подтверждает фундаментальную необходимость символьного, структурированного и метаязыкового уровня в любой системе, претендующей на мышление. Но это также означает, что мы уже имеем рабочие архитектуры, реализующие эти идеи на практике и дальнейшее развитие должно строиться не на "изобретении с нуля", а на интеграции, рефлексии и масштабировании существующих решений.

Sergey_Kovalenko Автор
18.11.2025 15:16Спасибо за развернутый комментарий, подробно отвечу на него завтра, пока только скажу, что большая часть вашей критики возникла из-за того, что я подразумеваю под "языком мышления" чуть чуть другое, чем просто язык внутренних рассуждений.
slupoke
Лонгрид на 43 минуты с громким началом. Целое исследование на серию статей.
С первой минуты меня посетила мысль, что весь текст представляет собой не системное, но "логичное" размышление автора. Это и отбросило все желание читать статью.
Хотелось бы в самом начале познакомится с автором, узнать "вес" его слов.
UPD: пробежав глазами, увидел ссылку на первое исследование, но там 403. Т.е. есть какая-то предыстория, которая не представлена
wiki7979
Скормите ллм-ке, пусть оценит
Sergey_Kovalenko Автор
Мне аж самому интересно стало:)
Если у вас платная, напишите, какого она о мой работе мнения. Моя бесплатная только поддакивать умеет.