3,583 papers
arXiv:2608.03291 79 4 авг. 2026 г. FREE

Проверка на рассуждение наоборот: почему LLM не умеет доказывать «невозможно»

КЛЮЧЕВАЯ СУТЬ
Модель ищет решение, даже когда её прямо просят доказать, что решения нет. Метод <перебор всех случаев вместо угадывания> поднимает точность Llama3-70B на задачах «докажи невозможность» с 13% до 85% — одним промптом, без дообучения. Фишка: просьба «подумай ещё раз внимательнее» не помогает — модель просто повторяет тот же кривой подход. Нужно явно сменить процедуру рассуждения: разбить на случаи, вывести следствия, найти противоречие в каждом.
Адаптировать под запрос

TL;DR

Когда нужно доказать, что решения не существует — задача нерешаема, план невозможен, обход защиты не сработает — модель по умолчанию продолжает искать один удачный пример вместо того, чтобы систематически перебрать все случаи и найти противоречие в каждом. Она ведёт себя так, будто перед ней задача «найди хоть один вариант», даже когда задача на самом деле «докажи, что вариантов нет».

Исследователи заметили две беды. Первая: когда модель ошибается на простых задачах («найди решение»), её рассуждение резко сужается — она начинает раньше времени проверять один и тот же вариант по кругу и быстро останавливается на ответе, хотя формально «просмотрела» всю задачу. Вторая, более серьёзная: на задачах «докажи, что решения нет» модель почти всегда ошибочно объявляет «решение есть» — потому что вместо разбора всех случаев она перебирает кандидатов, как будто ищет пример, а не строит доказательство невозможности.

Простая просьба «попробуй ещё раз внимательнее» эту ошибку не лечит — модель просто повторяет тот же неправильный подход. Помогает только явное указание сменить процедуру рассуждения: разбить задачу на случаи, вывести все следствия каждого случая и искать противоречие. Такой промпт поднял точность модели Llama3-70B на задачах «докажи невозможность» с 13% до 85% — исправив 85 из 100 ошибок.


🔬

Схема метода

ШАГ 1: Определи тип задачи → «найти решение» или «доказать, что решения нет»
ШАГ 2 (если «доказать, что нет»): Разбей на случаи → перечисли все варианты, которые надо проверить
ШАГ 3: Для каждого случая выведи прямые следствия → что становится обязательным или запрещённым
ШАГ 4: Найди противоречие в каждом случае → если противоречие есть везде — решения нет
ШАГ 5: Заявляй «решение есть» только после полной проверки конкретного примера по всем условиям

Всё выполняется в одном промпте — это инструкция к порядку рассуждения, не отдельные запросы.


🚀

Пример применения

Задача: Комплаенс-менеджер в банке проверяет, может ли сотрудник с определённым набором ролей в системе получить доступ к данным клиентов, если по регламенту это запрещено. Нужно не найти пример нарушения, а доказать, что нарушение невозможно при текущей матрице прав.

Промпт:

Мне нужно доказать, что сотрудник с ролями [Аналитик отчётности, Оператор колл-центра] 
НЕ МОЖЕТ получить доступ к персональным данным клиентов, если система прав построена так: 
[описание правил доступа].

Не пытайся сразу угадать один сценарий и остановиться. Действуй так:
1. Разбей все возможные комбинации действий сотрудника на отдельные случаи 
   (через основное меню, через экспорт отчётов, через API, через смену роли).
2. Для каждого случая выведи, что из правил доступа прямо следует — 
   что становится разрешено или запрещено в этом случае.
3. Найди противоречие: покажи, где следствия случая конфликтуют 
   с требованием «доступ запрещён».
4. Заяви «доступ возможен» только если нашёл полностью рабочий сценарий, 
   который проверил по всем правилам. Если противоречие нашлось во всех случаях — 
   заяви «доступ невозможен» и покажи, в каком случае и почему.

Результат: Модель выдаст структурированный разбор — список случаев, для каждого явные следствия из правил доступа, и либо найденное противоречие (доступ невозможен), либо конкретный рабочий сценарий с полной проверкой (доступ возможен). Ответ будет опираться на цепочку логики, а не на быстрое «скорее всего, невозможно» без разбора.


🧠

Почему это работает

LLM обучена на огромном количестве задач вида «найди ответ» — там правильная стратегия: предложи вариант, проверь, если не сработало — предложи другой. Эта стратегия зашита как рефлекс, и модель применяет её даже там, где нужна прямо противоположная логика: не искать пример, а исключить все примеры сразу.

Модель хорошо умеет следовать явно расписанной процедуре, если её проговорить по шагам — это сильная сторона рассуждения через текст. Проблема не в том, что модель «не может» доказать невозможность, а в том, что без подсказки она даже не понимает, что задача требует другой процедуры.

Метод обходит это, называя процедуру напрямую: разбей на случаи → выведи следствия → ищи противоречие → не спеши с «решение есть». Это переключает модель из режима «угадай и проверь» в режим «докажи полным перебором», и эффект — резкий скачок точности.

Рычаги управления: - Число случаев для разбора — задай явно («минимум 3 случая»), если модель разбирает слишком грубо. - Порядок «сначала следствия, потом противоречие» — если убрать, модель может искать противоречие вслепую и промахнуться. - Условие для вывода «решение есть» («полная проверка примера») — без него модель по привычке радуется первому похожему варианту.


📋

Шаблон промпта

Мне нужно доказать, что {условие/ограничение} делает {результат} невозможным.
Не ищи сразу один пример и не останавливайся на нём. Действуй по шагам:

1. Разбей ситуацию на все возможные случаи (перечисли варианты, которые нужно проверить).
2. Для каждого случая выведи прямые следствия — что становится обязательным 
   или запрещённым, если этот случай верен.
3. Найди противоречие в каждом случае — покажи конфликт с условием {условие}.
4. Заяви, что {результат} возможен, ТОЛЬКО если нашёл полностью работающий пример 
   и проверил его по всем условиям. Если во всех случаях есть противоречие — 
   заяви, что {результат} невозможен, и покажи, где именно противоречие.

Что подставлять: {условие/ограничение} — правило или ограничение, которое не должно нарушаться (регламент, бюджет, физический лимит). {результат} — то, что проверяется на возможность/невозможность.

🚀 Быстрый старт — вставь в чат:

Вот шаблон для доказательства невозможности. Адаптируй под мою задачу: 
{твоя задача — например, "докажи, что бюджет не позволяет запустить проект за 2 месяца"}.
Задавай вопросы, чтобы заполнить поля.

[вставить шаблон выше]

LLM спросит про конкретные ограничения и возможные случаи — потому что без них разбор на случаи и поиск противоречий бессмысленны. Она возьмёт логику шаблона и подставит твои условия.


⚠️

Ограничения

⚠️ Только для задач «докажи, что невозможно»: Если задача в стиле «найди хоть один вариант», этот промпт избыточен и может усложнить простой ответ.

⚠️ Не гарантия правильности: Метод меняет процедуру рассуждения модели, но не проверяет её математически — если модель ошибётся при выводе следствий, вывод всё равно будет неверным. Для критичных решений (безопасность, юридические выводы) результат нужно проверять отдельно.

⚠️ Эффект слабее на слабых моделях: В исследовании метод сильнее всего сработал на крупной модели (70B параметров); на менее способных моделях улучшение может быть заметно меньше.


🔍

Как исследовали

Исследователи взяли пять разных моделей (Qwen3, Llama3, OLMo2) и прогнали их через задачи булевой выполнимости (SAT) — формальные логические задачи с проверяемым решателем ответом, где часть задач решается «найди пример», а часть — «докажи, что примера нет» (UNSAT). Чтобы честно сравнивать модели, для каждой подобрали свой уровень сложности — такой, где модель то угадывает, то ошибается, а не всегда права или всегда неправа.

Дальше они разбили рассуждение модели на предложения и пометили каждое предложение ролью (проверка, откат, финализация и так далее) — вручную заданными правилами, а не через отдельную модель. Сравнивая ошибочные и верные рассуждения на одной и той же задаче, увидели: ошибочные короче, чаще повторяют одни и те же проверки и раньше финализируют ответ — при этом покрывают формулу не хуже верных.

Самое интересное — на задачах «докажи невозможность» модели почти всегда ошибочно заявляли «решение есть», причём эффект не пропадал, даже если убрать из текста все слова про финальный ответ (значит, дело в структуре рассуждения, не просто в формулировке вывода). Тогда исследователи попробовали два вмешательства: просто попросить «попробуй ещё раз внимательнее» — не сработало, и явно расписать процедуру доказательства через случаи — сработало резко, подняв точность с 13% до 85%. Это и есть главный практический вывод: лечится не мотивацией «будь внимательнее», а точным указанием, какую процедуру рассуждения применить.


💡

Адаптации и экстраполяции

💡 Адаптация для бизнес-фидбека: Тот же принцип работает при проверке бизнес-гипотез на нежизнеспособность — например, «докажи, что при таких юнит-экономике и CAC маркетинговый канал никогда не выйдет в плюс».

Докажи, что при цене подписки {X} руб/мес, стоимости привлечения клиента {Y} руб 
и оттоке {Z}% в месяц, юнит-экономика никогда не станет положительной.
Разбей на случаи по горизонту удержания клиента (3 мес, 6 мес, 12 мес, бессрочно), 
для каждого случая выведи накопленную выручку и сравни со стоимостью привлечения.
Заяви "экономика сходится", только если нашёл конкретный горизонт, 
где выручка полностью покрывает затраты — и показал расчёт.

🔧 Техника: добавь запрос «покажи альтернативные пути перед ответом» → снижает риск скороспелого вывода

Исследование показало, что ошибочные рассуждения часто зацикливаются на одной и той же проверке и быстро финализируют ответ. Если добавить в промпт «прежде чем дать финальный ответ, покажи минимум два разных подхода к проверке и сравни их результаты» — это форсирует модель разнообразить рассуждение и снижает риск раннего неверного вывода, особенно на сложных многошаговых задачах.


🔗

Ресурсы

The Tell-Tale Trace: Detecting Reasoning Failures in LLMs Using Chain-of-Thought Dynamics — Shashwat Sourav (Washington University in St. Louis), Aishwarya Balwani (St. Jude Children's Research Hospital).


📋 Дайджест исследования

Ключевая суть

Модель ищет решение, даже когда её прямо просят доказать, что решения нет. Метод <перебор всех случаев вместо угадывания> поднимает точность Llama3-70B на задачах «докажи невозможность» с 13% до 85% — одним промптом, без дообучения. Фишка: просьба «подумай ещё раз внимательнее» не помогает — модель просто повторяет тот же кривой подход. Нужно явно сменить процедуру рассуждения: разбить на случаи, вывести следствия, найти противоречие в каждом.

Принцип работы

У LLM есть рефлекс поиска — она обучена на задачах «найди ответ», где стратегия простая: пробуй вариант за вариантом, пока не сработает. Для задач «докажи, что вариантов нет» нужна ровно противоположная логика — не искать пример, а исключить все сразу. Модель как студент, который на экзамене ищет решение задачи, даже если его просят доказать, что задача не имеет решения — привычка сильнее смысла вопроса. Явная инструкция разбей на случаи → выведи следствия → найди противоречие переключает модель на нужный режим.

Почему работает

Модель отлично следует прописанной процедуре — это её сильная сторона. Но без подсказки она даже не понимает, что задача требует другой процедуры, и по привычке радуется первому похожему варианту. Достаточно назвать шаги вслух — разбор на случаи, следствия, поиск противоречия — и точность прыгает с 13% до 85%. Это не дообучение и не новая архитектура — просто модели проговорили, что именно перебирать.

Когда применять

Юриспруденция, безопасность, комплаенс → доказательство, что обход правил невозможен, проверка что план физически неосуществим, анализ «сработает ли атака». Особенно ценно там, где ошибочное «решение есть» стоит дорого — аудит прав доступа, проверка бюджета проекта, оценка риска. НЕ подходит для задач «найди хоть один вариант» — там метод только усложнит простой ответ.

Мини-рецепт

1. Определи тип задачи: «найти решение» или «доказать, что решения нет» — это разные процедуры рассуждения, не путай их.
2. Разбей на случаи: перечисли явно все варианты, которые нужно проверить (задай минимум 3, если модель ленится и разбирает грубо).
3. Выведи следствия: для каждого случая — что становится обязательным или запрещённым.
4. Найди противоречие: покажи конфликт следствий с условием в каждом случае отдельно.
5. Заяви результат только после полной проверки: «решение есть» — только если нашёл рабочий пример и проверил его по всем правилам.

Примеры

[ПЛОХО] : Докажи, что сотрудник с этими ролями не может получить доступ к данным клиентов
[ХОРОШО] : Докажи, что доступ невозможен. Не ищи сразу один сценарий и не останавливайся на нём. Разбей на случаи (через основное меню, через экспорт отчётов, через API, через смену роли). Для каждого случая выведи следствия из правил доступа — что разрешено или запрещено. Найди противоречие с требованием «доступ запрещён» в каждом случае. Заяви «доступ возможен» только если нашёл рабочий сценарий и проверил его по всем правилам.
Источник: The Tell-Tale Trace: Detecting Reasoning Failures in LLMs Using Chain-of-Thought Dynamics
ArXiv ID: 2608.03291 | Сгенерировано: 2026-08-05 04:27

Проблемы LLM

ПроблемаСутьКак обойти
Модель ищет пример вместо доказательства невозможностиЗадача "докажи, что решения нет" требует перебрать все случаи и найти противоречие в каждом. Модель вместо этого действует как в задаче "найди решение" — подбирает кандидатов, и как только один выглядит рабочим, останавливается. Почти всегда в итоге заявляет "решение есть", хотя решения не существует. Проблема всплывает везде, где нужно доказать отсутствие: невозможность обхода защиты, нарушение регламента, недостижимость плана, неразрешимость задачиПросто попросить "проверь внимательнее" не помогает — модель повторяет тот же неверный подход. Нужно явно расписать другую процедуру: разбей на случаи выведи следствия каждого случая ищи противоречие заявляй "решение есть" только после полной проверки конкретного примера

Методы

МетодСуть
Разбор на случаи с поиском противоречия — доказательство невозможностиКогда нужно доказать, что чего-то сделать нельзя, дай модели процедуру: 1) перечисли все возможные случаи; 2) для каждого выведи прямые следствия — что становится обязательным или запрещённым; 3) найди противоречие в каждом случае с заданным условием; 4) заяви "возможно" только если нашёл рабочий пример и проверил его по всем условиям — иначе заяви "невозможно" и покажи противоречие. Работает, потому что называет модели незнакомую для неё процедуру напрямую — иначе она по рефлексу ищет один удачный пример вместо полного перебора. Всё выполняется в одном запросе как инструкция к порядку рассуждения, без отдельных вызовов. Подходит для: юридических и комплаенс-проверок, оценки безопасности, доказательства недостижимости плана, логических задач. Не подходит: если нужно просто найти хоть один вариант — тогда это лишняя нагрузка на ответ
📖 Простыми словами

The Tell-Tale Trace: Detecting Reasoning Failures inLLMsUsingChain-of-Thought Dynamics

arXiv: 2608.03291

Проблема в том, что современные нейронки — это не логические машины, а одержимые оптимисты. Когда ты просишь модель доказать, что задача не имеет решения или система безопасности непробиваема, она ломается на уровне фундамента. Вместо того чтобы методично перебрать все варианты и найти системную ошибку, LLM начинает судорожно искать лазейку. Она работает по принципу «а вдруг получится», даже если ты прямо сказал ей доказать обратное. Это не баг конкретной модели, это дефект архитектуры: нейронка просто не умеет мыслить категориями отсутствия результата.

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

В реальности это выливается в полный провал верификации. Исследователи выяснили, что в задачах на доказательство невозможности (например, в поиске уязвимостей или проверке прав доступа) модели используют стратегию бесконечного перебора. Вместо системного анализа они выдают цепочку рассуждений, где раз за разом пытаются «найти ответ», которого нет. В итоге, если модель не нашла дыру в защите за пять минут, она радостно рапортует, что система безопасна, хотя на самом деле она просто плохо искала.

Этот принцип универсален и касается не только кибербезопасности. Тестировали на логических задачах, но это же лажа в комплаенсе, аудите кода и даже в юридических вопросах. Везде, где нужно гарантировать, что «событие X никогда не произойдет», AI будет бесполезен, потому что он заточен под поиск «события X». SEO-логика поиска ответов здесь не работает: модель не может осознать границы системы и продолжает биться головой в стену, выдавая галлюцинации за доказательства.

Короче: никогда не проси ChatGPT подтвердить, что твой план идеален или код безопасен. Она по привычке будет искать подтверждение успеха и, не найдя его с первого раза, просто соврет тебе из вежливости. Чтобы реально проверить систему на прочность, нужно менять саму логику запроса, заставляя модель не «искать вариант», а «опровергать возможность». Пока мы не научим AI признавать поражение и работать от противного, цена ошибки в критических задачах будет оставаться запредельной.

Работа с исследованием

Адаптируйте исследование под ваши задачи или создайте готовый промпт на основе техник из исследования.

0 / 2000
~0.5-2 N-токенов ~10-30с
~0.3-1 N-токенов ~5-15с