**Auteur** : Équipe 4NK # Chaîne Hensel décalée (Phase 3) ## Objectif Fermer des racines en démarrant la chaîne de Hensel à m=19 (au lieu de m=15) pour les résidus dont le frère à m=19 est déjà fermable par la grammaire Phase 1 (terminal + D_minor). ## Hypothèse La Piste 3 échouait car les frères à m=16 ne sont pas fermables. Avec Phase 1 (terminal + D_minor à m=19,20,21), certains frères à m≥19 deviennent fermables. Pour chaque parent (18, r18) ayant exactement un enfant dans le leaf set à m=19, on tente de fermer l'autre enfant par une chaîne Hensel de m=19 à m_end. ## Script `applications/collatz/collatz_k_scripts/collatz_build_hensel_chain_leaves_shifted.py` **Paramètres** : - `--start-m 19|20|21` : niveau de démarrage de la chaîne - `--leaf-json` : chemins vers terminal + D_minor (par défaut : palier 19–21 + D_minor m=20,21) **Sorties** : - `clauses_hensel_chain_leaves_shifted_mod2p19.json` : feuilles à palier 19 (format compatible multilevel) - `certs_shifted/*.json` : certificats par résidu fermé ## Résultat (exécution 2026-03-10) - 1373 résidus fermés à m=19 - open_roots : 1349 → 1101 (−248) - tracked.max, tracked.p99 : inchangés (les racines fermées ne sont pas dans le top 200 par lb_any) ## Option B (start_m=20, 21) - 1373 résidus fermés à m=20 et à m=21 (même structure qu’à m=19) - Aucun impact supplémentaire : closed_roots, open_roots, tracked.max, tracked.p99 inchangés - Rapport : `docs/artefacts/collatz/refinement_K/palier2p15/option_b_hensel_m20_m21_report.md` ## Prolongation (start_m=22, 23, 24) - m=22 : 1388 résidus ; m=23 : 1394 ; m=24 : 1419 - Bundle terminal + Hensel 19..24 : closed_roots=15283, open_roots=1101 inchangés ## Optimisation mémoire - Chargement prioritaire de `.residues.json` (streaming ijson) pour les clauses terminales - `_ResidueBitset` pour `leaves_by_m` quand palier ≥ 20 ## Références - `docs/features/collatz_grammar_extensions_implementation_plan.md` : Phase 3 - `docs/artefacts/collatz/refinement_K/palier2p15/phase1_grammar_extensions_report.md` : rapport Phase 1 + 3