diff --git a/PREREG_controls_2026-09-22.md b/PREREG_controls_2026-09-22.md new file mode 100644 index 0000000..674ba8b --- /dev/null +++ b/PREREG_controls_2026-09-22.md @@ -0,0 +1,98 @@ +# PREREG — контроли: классическое преобразование и простые детекторы плоскости + +Составлено 2026-09-22 до кода и до прогона, ветка `release`. Валерий: «помечай и начинай +предрегистрацию контролей». + +## Вопрос + +Выигрыш A′ может нести разбиение (7) — ложное положение на sign(f)|f|^{1/m}, классика +Шрёдера и Трауба — **плюс любой разумный детектор плоскости**, а не распознавание по аналогии +(повторяемость безразмерной конфигурации последних трёх точек). Пока это не сравнено, утверждение §8.6 +«решающий слой по подобию прогона своему прошлому несёт выигрыш» не доказано. + +Два контроля: + +- **К1 (замечание 5): классическое преобразование с известной кратностью.** Библиотечные Chandrupatla + и Brent, применённые к g(x) = sign(f(x))·|f(x)|^{1/m*}, где m* — истинный порядок корня. Это + **верхняя граница** подхода «преобразовать и интерполировать»: кратность дана даром, методу её + оценивать не нужно. Недостижимо на практике, но отделяет вклад преобразования от вклада оценки порядка. +- **К2 (замечание 6): A′ с другим детектором.** Всё в A′ остаётся как есть — флаг невыполненного + обещания, память на прогон, разбиение (7), суждение выхода, шаг допуска, половина, противоречие + знаков, паттерн шага, ветвь перелёта. Меняется **только то, откуда берутся решение «режим плоский» + и порядок m для разбиения**. + +## К1 — определения + +**m\*.** Наклон ln|f| по ln|x−r| в самом корне r, известном по построению: +m\* = (ln|f(r+2h)| − ln|f(r+h)|)/ln 2, среднее по двум сторонам (±h), h = 10⁻⁵·max(1, |r|). +Если значение не определено или не конечно, m\* = 1 (преобразование не применяется). h — точность +измерения оракула, не параметр метода; объявлено здесь и не меняется по результату. + +**Где.** Только корпуса с известным корнем: APS (154), Chandrupatla (45), новый корпус 1 (206), +корпус 4 (240). Для Roots.jl и прикладного корпуса корень известен не везде, там К1 не считается. + +**Счёт.** Вызов g — ровно один вызов f, считается та же обёртка, бюджет 200, критерий успеха — +единый: смена знака **f** в пределах 10⁻⁶ или f = 0. Допуски библиотек те же, что везде. + +## К2 — определения детекторов + +Во всех трёх вариантах: состояние режима, память, вход по флагу, выход по суждению «ближе к прямой, +чем к нулю» и разбиение (7) — код A′ без изменений. Компонента «предел трансляции» (exp) принадлежит +чтению по аналогии и в контролях отсутствует; её роль (m = ∞) берёт на себя формула Лагуанеля при +θ ≥ 1. + +m_L — оценка Лагуанеля по трём последним точкам (производные параболы), **без отказа за пределами +(0, 1)**: θ = f·f''/f'², m_L = 1/(1 − θ) при θ < 1 (так m_L ∈ (0, 1) при θ < 0 — ветвь дробного +порядка), m_L = ∞ при θ ≥ 1; не определена, если f' = 0 или не конечна. + +| вариант | «крутой» (m ≥ 2, вход по флагу недовыполнения) | «пологий» (вход по флагу перелёта) | m для разбиения | +|---|---|---|---| +| **К2-Л: Лагуанель с гистерезисом** | m_L ≥ 2, запоминается на прогон до выхода | 0 < m_L ≤ ⅔, запоминается | последнее m_L, давшее «крутой»/«пологий» | +| **К2-П: полоса Chandrupatla** | полоса отвергает текущую тройку (1−√(1−ξ) < φ < √ξ нарушено), запоминается | полоса отвергает, запоминается | m_L текущего состояния (∞, если не определена) | +| **К2-Ф: без детектора** | всегда (режим с первого флага) | всегда | m_L текущего состояния (∞, если не определена) | + +К2-Ф — нижняя граница: сколько даёт разбиение (7) с выходом вообще без распознавания. +«Гистерезис» у К2-Л — ровно тот же механизм памяти, что у A′: признак, раз увиденный, держится до +суждения выхода. Ни одного нового числа: ½, ¼, 2 и ⅔ — те же, что в A′. + +**Известно заранее (не результат).** В §10, п. 5 та же оценка Лагуанеля по трём точкам, поставленная +в масштаб шага, ошибалась: m > 1 на 27.9% шагов канонического набора. Здесь она решает только при +невыполненном обещании и снимается суждением выхода — это другое употребление, и исход не предрешён. + +## Критерии и правило вывода + +Сравнение на шести корпусах §9, единый критерий; **решающий — корпус 4** (как в M1 для ModAB): это +корпус, на котором A′ проверен один раз после заморозки. Контроли не настраиваются ни на каком +корпусе: их определение выше окончательное. + +| # | сообщается / ПРОЙДЕНО, если | +|---|---| +| **C1** | для каждого варианта К2 на корпусе 4: сумма A′ меньше **и** по задачам побед больше, чем поражений, знаковый тест p < 0.05 | +| **C2** | шесть корпусов: суммы, w/t/l, p для A′ против К2-Л, К2-П, К2-Ф — сообщается | +| **C3** | К1: на задачах с m\* ≥ 2 или m\* < 1 и отдельно на остальных — суммы A′, Chandrupatla(g), Brent(g), Chandrupatla(f); по задачам A′ против Chandrupatla(g) — сообщается | +| **C4** | гарантия: нарушения границы 2⌈log₂(w/xtol)⌉ + 4 у всех вариантов К2 — сообщается (ожидается 0: проекция не тронута) | +| **C5** | по семействам (единица независимости): A′ против лучшего из К2 на корпусе 4 по шести классам — сообщается | + +**Что пишется в статье — при любом исходе:** + +- C1 пройден для всех трёх вариантов → «детектор по аналогии заработан против Лагуанеля с + гистерезисом, полосы Chandrupatla и режима без детектора» с числами; иначе. +- C1 не пройден хотя бы для одного → утверждение §8.6 о том, что выигрыш несёт распознавание по + аналогии, **снимается** в пользу «разбиение (7) с детектором плоскости; наш детектор — один из + работающих, с такими-то числами». Заголовок и аннотация следуют за этим. +- К1: если Chandrupatla(g) с известной кратностью дешевле A′ на кратных корнях, пишется прямо: при + известной кратности классическое преобразование лучше, вклад A′ — оценка порядка без знания его, и + разрыв с К1 — цена этой оценки. Если дороже — так же прямо, с числами. + +**Стоп-правило.** Один прогон всех вариантов на всех корпусах. После него определения не меняются; +любая новая идея — отдельная предрегистрация. A′ заморожен: его код и результаты не трогаются, в +прогоне он воспроизводится бит в бит (проверяется: суммы A′ = таблица 10). + +## Реализация (план, до кода) + +- `simroot/pure.py`: три новых варианта плоского режима — `flatlagmempt`, `flatbandmempt`, + `flatflagmempt` — в том же месте, где `flatanalogmempt`; составной prestep A′ и все прежние режимы + не меняются (тест бит-в-бит против `simbracket` и против сохранённых сумм A′). +- `sweep_controls.py`: К2 через обвязку `sweep_fourth.evaluate`, К1 отдельной функцией с оракулом m\*. +- Проверка до прогона: смоук ×2 локально, смоук на сервере, затем полный прогон (`setsid nohup`, лог + с прогрессом, 40% свободных ядер).