collatz: add hensel chain, targeted refinement leaves and brother-derived D_minor
**Motivations:** - Extend refinement tooling with hensel chain leaves, targeted refinement leaves and brother-derived minorated clauses. - Document grammar extensions and targeted leaves/diagnostics workflows. **Root causes:** - N/A (evolutions) **Correctifs:** - N/A **Evolutions:** - Add collatz_build_hensel_chain_leaves.py, collatz_verify_hensel_chain_leaves.py. - Add collatz_build_targeted_refinement_leaves.py, collatz_verify_targeted_refinement_leaves.py, collatz_diagnose_targeted_leaves_failure.py. - Add collatz_build_refinement_bundle_over_Sm_multilevel.py. - Add collatz_derive_brother_minorated_clauses_from_terminal_over_Sm.py, collatz_verify_brother_derived_minorated_clauses_over_Sm.py. - Add refinement_K artefacts (bundle, hensel_chain_leaves, targeted_leaves) and minorated_clauses_over_Sm_derived_from_brothers. - Update README, conjoncture, and feature docs. **Pages affectées:** - applications/collatz/collatz_k_scripts/README.md - applications/collatz/conjoncture_collatz.md - applications/collatz/collatz_k_scripts/*.py (new) - docs/features/*.md - docs/artefacts/collatz/**
This commit is contained in:
parent
bd529682bf
commit
9759114f49
@ -35,5 +35,7 @@ python reproduce_all_audits.py --root /chemin/fichiers_source --out /chemin/sort
|
|||||||
- `collatz_generate_terminal_clauses_over_Sm.py` : clauses terminales (D/F) directement décidables sur \(S_M\).
|
- `collatz_generate_terminal_clauses_over_Sm.py` : clauses terminales (D/F) directement décidables sur \(S_M\).
|
||||||
- `collatz_generate_minorated_descent_clauses_over_Sm.py` : clauses de descente minorées (D_minor) sur \(S_M\).
|
- `collatz_generate_minorated_descent_clauses_over_Sm.py` : clauses de descente minorées (D_minor) sur \(S_M\).
|
||||||
- `collatz_verify_minorated_descent_clauses_over_Sm.py` : vérification déterministe des clauses D_minor.
|
- `collatz_verify_minorated_descent_clauses_over_Sm.py` : vérification déterministe des clauses D_minor.
|
||||||
|
- `collatz_derive_brother_minorated_clauses_from_terminal_over_Sm.py` : dérivation de clauses D_minor “par frères” à partir de clauses D_exact sur \(S_m\).
|
||||||
- `collatz_build_refinement_certificate_over_Sm_multilevel.py` : audit de fermeture par raffinement (multi-niveaux) sur \(S_M\).
|
- `collatz_build_refinement_certificate_over_Sm_multilevel.py` : audit de fermeture par raffinement (multi-niveaux) sur \(S_M\).
|
||||||
- `collatz_compare_dminor_families_incremental.py` : tableau d’impact incrémental (Δopen_roots, Δq_m, Δparents_one_child, quantiles lb) par ajout de familles D_minor groupées par \(k\).
|
- `collatz_compare_dminor_families_incremental.py` : tableau d’impact incrémental (Δopen_roots, Δq_m, Δparents_one_child, quantiles lb) par ajout de familles D_minor groupées par \(k\).
|
||||||
|
- `collatz_build_refinement_bundle_over_Sm_multilevel.py` : pipeline “1 commande” (fermeture multi-niveaux + profil d’obstruction + diagnostic ciblé optionnel).
|
||||||
|
|||||||
@ -0,0 +1,409 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
"""
|
||||||
|
collatz_build_hensel_chain_leaves.py
|
||||||
|
|
||||||
|
New leaf grammar: Hensel-chain compression for difficult roots.
|
||||||
|
|
||||||
|
For a tracked root residue r0 (mod 2^M), we search a horizon k such that the affine numerator
|
||||||
|
L_k(n) = 3^k n + B_k (where B_k = 3*C_{k-1}+2^{A_{k-1}} from the stable prefix of length k-1)
|
||||||
|
vanishes modulo 2^M (or more). This defines a unique 2-adic Hensel lift chain r_m (m>=M)
|
||||||
|
such that L_k(r_m) ≡ 0 (mod 2^m).
|
||||||
|
|
||||||
|
We build a compact refinement certificate:
|
||||||
|
- at each level m -> m+1, only ONE child continues the chain (the unique lift),
|
||||||
|
- the sibling subtree is closed immediately by an exact D/F clause at palier m+1 (deterministic search),
|
||||||
|
- finally the chain node is closed by a D_minor clause at palier u_min(k) where 2^{u_min}>3^k.
|
||||||
|
|
||||||
|
Outputs:
|
||||||
|
- clauses_hensel_chain_leaves_mod2p<M>.{json,md} (leaf set at palier M, plugging into multilevel closure)
|
||||||
|
- certs/*.json per root (deterministic proof object)
|
||||||
|
"""
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
import hashlib
|
||||||
|
import json
|
||||||
|
from dataclasses import dataclass
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
from collatz_k_core import (
|
||||||
|
PrefixData,
|
||||||
|
delta_D,
|
||||||
|
delta_F,
|
||||||
|
fusion_choice_a,
|
||||||
|
N0_D,
|
||||||
|
Nf_F,
|
||||||
|
prefix_data,
|
||||||
|
preimage_m,
|
||||||
|
v2_fast,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def _read_json(path: Path) -> object:
|
||||||
|
return json.loads(path.read_text(encoding="utf-8", errors="strict"))
|
||||||
|
|
||||||
|
|
||||||
|
def _write_json(path: Path, obj: object) -> None:
|
||||||
|
path.parent.mkdir(parents=True, exist_ok=True)
|
||||||
|
path.write_text(json.dumps(obj, indent=2, ensure_ascii=False) + "\n", encoding="utf-8")
|
||||||
|
|
||||||
|
|
||||||
|
def _write_md(path: Path, lines: list[str]) -> None:
|
||||||
|
path.parent.mkdir(parents=True, exist_ok=True)
|
||||||
|
path.write_text("\n".join(lines) + "\n", encoding="utf-8")
|
||||||
|
|
||||||
|
|
||||||
|
def _sha256_file(path: Path, chunk_size: int = 16 * 1024 * 1024) -> str:
|
||||||
|
h = hashlib.sha256()
|
||||||
|
with path.open("rb") as f:
|
||||||
|
while True:
|
||||||
|
chunk = f.read(chunk_size)
|
||||||
|
if not chunk:
|
||||||
|
break
|
||||||
|
h.update(chunk)
|
||||||
|
return h.hexdigest()
|
||||||
|
|
||||||
|
|
||||||
|
def _req_int(d: dict[str, object], key: str) -> int:
|
||||||
|
v = d.get(key)
|
||||||
|
if not isinstance(v, int):
|
||||||
|
raise ValueError(f"Expected int for {key}")
|
||||||
|
return v
|
||||||
|
|
||||||
|
|
||||||
|
def _read_tracked_roots_file(path: Path) -> list[int]:
|
||||||
|
roots: list[int] = []
|
||||||
|
seen: set[int] = set()
|
||||||
|
for line in path.read_text(encoding="utf-8", errors="strict").splitlines():
|
||||||
|
s = line.strip()
|
||||||
|
if not s or s.startswith("#"):
|
||||||
|
continue
|
||||||
|
if "#" in s:
|
||||||
|
s = s.split("#", 1)[0].strip()
|
||||||
|
if not s:
|
||||||
|
continue
|
||||||
|
r = int(s, 10)
|
||||||
|
if r <= 0 or (r % 2) == 0:
|
||||||
|
raise ValueError(f"Invalid tracked root (must be positive odd integer): {r}")
|
||||||
|
if r not in seen:
|
||||||
|
roots.append(r)
|
||||||
|
seen.add(r)
|
||||||
|
return roots
|
||||||
|
|
||||||
|
|
||||||
|
def _u_min_for_k(k: int) -> int:
|
||||||
|
return (3**k).bit_length()
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass(frozen=True)
|
||||||
|
class Leaf:
|
||||||
|
kind: str # D_exact | F | D_minor
|
||||||
|
m: int
|
||||||
|
r: int
|
||||||
|
k_or_t: int
|
||||||
|
A: int | None
|
||||||
|
threshold: int
|
||||||
|
extra: dict[str, int]
|
||||||
|
|
||||||
|
def to_json(self) -> dict[str, object]:
|
||||||
|
return {
|
||||||
|
"kind": self.kind,
|
||||||
|
"modulus_power": self.m,
|
||||||
|
"residue_mod_2p": self.r,
|
||||||
|
"k_or_t": self.k_or_t,
|
||||||
|
"A": self.A,
|
||||||
|
"threshold": self.threshold,
|
||||||
|
"extra": self.extra,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def _best_exact_D(*, residue: int, m: int, k_max: int) -> Leaf | None:
|
||||||
|
best: Leaf | None = None
|
||||||
|
best_key: tuple[int, int, int, int] | None = None
|
||||||
|
for k in range(1, k_max + 1):
|
||||||
|
pref = prefix_data(residue, k)
|
||||||
|
req_m = pref.A + 1
|
||||||
|
if req_m > m:
|
||||||
|
break
|
||||||
|
if delta_D(pref.A, k) <= 0:
|
||||||
|
continue
|
||||||
|
N0 = N0_D(pref.C, pref.A, k)
|
||||||
|
key = (req_m, pref.A, k, N0)
|
||||||
|
if best_key is None or key < best_key:
|
||||||
|
best_key = key
|
||||||
|
best = Leaf(
|
||||||
|
kind="D_exact",
|
||||||
|
m=m,
|
||||||
|
r=residue,
|
||||||
|
k_or_t=k,
|
||||||
|
A=pref.A,
|
||||||
|
threshold=N0,
|
||||||
|
extra={"k": k, "C_k": int(pref.C)},
|
||||||
|
)
|
||||||
|
return best
|
||||||
|
|
||||||
|
|
||||||
|
def _best_exact_F(*, residue: int, m: int, t_max: int) -> Leaf | None:
|
||||||
|
best: Leaf | None = None
|
||||||
|
best_key: tuple[int, int, int, int, int] | None = None
|
||||||
|
for t in range(1, t_max + 1):
|
||||||
|
pref = prefix_data(residue, t)
|
||||||
|
req_m = pref.A + 1
|
||||||
|
if req_m > m:
|
||||||
|
break
|
||||||
|
a = fusion_choice_a(pref.y)
|
||||||
|
if a is None:
|
||||||
|
continue
|
||||||
|
if delta_F(pref.A, t, a) <= 0:
|
||||||
|
continue
|
||||||
|
Nf = Nf_F(pref.C, pref.A, t, a)
|
||||||
|
m_pre = preimage_m(pref.y, a)
|
||||||
|
key = (req_m, pref.A, t, Nf, m_pre)
|
||||||
|
if best_key is None or key < best_key:
|
||||||
|
best_key = key
|
||||||
|
best = Leaf(
|
||||||
|
kind="F",
|
||||||
|
m=m,
|
||||||
|
r=residue,
|
||||||
|
k_or_t=t,
|
||||||
|
A=pref.A,
|
||||||
|
threshold=Nf,
|
||||||
|
extra={"t": t, "a": int(a), "y": int(pref.y), "preimage_m": int(m_pre), "C_t": int(pref.C)},
|
||||||
|
)
|
||||||
|
return best
|
||||||
|
|
||||||
|
|
||||||
|
def _leaf_for_sibling(*, residue: int, m: int, k_max: int, t_max: int) -> Leaf | None:
|
||||||
|
d = _best_exact_D(residue=residue, m=m, k_max=k_max)
|
||||||
|
f = _best_exact_F(residue=residue, m=m, t_max=t_max)
|
||||||
|
if d is None:
|
||||||
|
return f
|
||||||
|
if f is None:
|
||||||
|
return d
|
||||||
|
return d if (d.threshold, d.k_or_t) <= (f.threshold, f.k_or_t) else f
|
||||||
|
|
||||||
|
|
||||||
|
def _hensel_chain_for_root(*, root_palier: int, r0: int, k_chain_max: int) -> tuple[int, int] | None:
|
||||||
|
"""
|
||||||
|
Return (k, v) where v=v2(L_k(r0)) and k chosen to minimize u_min(k) subject to v>=u_min(k) and v>=root_palier.
|
||||||
|
"""
|
||||||
|
best: tuple[int, int, int] | None = None # (u_min, k, v)
|
||||||
|
for k in range(2, k_chain_max + 1):
|
||||||
|
pref = prefix_data(r0, k - 1)
|
||||||
|
Bk = 3 * pref.C + (1 << pref.A)
|
||||||
|
v = v2_fast((3**k) * r0 + Bk)
|
||||||
|
if v < root_palier:
|
||||||
|
continue
|
||||||
|
u = _u_min_for_k(k)
|
||||||
|
if v < u:
|
||||||
|
continue
|
||||||
|
key = (u, k, v)
|
||||||
|
if best is None or key < best:
|
||||||
|
best = key
|
||||||
|
if best is None:
|
||||||
|
return None
|
||||||
|
_, k, v = best
|
||||||
|
return (k, v)
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass(frozen=True)
|
||||||
|
class ChainStep:
|
||||||
|
m: int
|
||||||
|
chain_r: int
|
||||||
|
sibling_r: int
|
||||||
|
sibling_leaf: Leaf
|
||||||
|
|
||||||
|
def to_json(self) -> dict[str, object]:
|
||||||
|
return {
|
||||||
|
"m": self.m,
|
||||||
|
"chain_r": self.chain_r,
|
||||||
|
"sibling_r": self.sibling_r,
|
||||||
|
"sibling_leaf": self.sibling_leaf.to_json(),
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def run(
|
||||||
|
*,
|
||||||
|
repo_root: Path,
|
||||||
|
root_palier: int,
|
||||||
|
tracked_roots_file: Path,
|
||||||
|
k_chain_max: int,
|
||||||
|
k_leaf_max: int,
|
||||||
|
t_leaf_max: int,
|
||||||
|
output_dir: Path,
|
||||||
|
) -> None:
|
||||||
|
roots = _read_tracked_roots_file(tracked_roots_file)
|
||||||
|
if not roots:
|
||||||
|
raise ValueError("tracked_roots_file is empty")
|
||||||
|
|
||||||
|
certs_dir = output_dir / "certs"
|
||||||
|
certs_dir.mkdir(parents=True, exist_ok=True)
|
||||||
|
|
||||||
|
leaves: list[dict[str, object]] = []
|
||||||
|
lines: list[str] = []
|
||||||
|
lines.append("**Auteur** : Équipe 4NK")
|
||||||
|
lines.append("")
|
||||||
|
lines.append(f"# Feuilles “chaîne de Hensel” — racine 2^{root_palier}")
|
||||||
|
lines.append("")
|
||||||
|
lines.append(f"- tracked_roots_file : `{tracked_roots_file}`")
|
||||||
|
lines.append(f"- k_chain_max : {k_chain_max}")
|
||||||
|
lines.append(f"- k_leaf_max : {k_leaf_max}")
|
||||||
|
lines.append(f"- t_leaf_max : {t_leaf_max}")
|
||||||
|
lines.append("")
|
||||||
|
lines.append("| root | k | u_min(k) | v2(L_k(root)) | closed | cert |")
|
||||||
|
lines.append("| --- | --- | --- | --- | --- | --- |")
|
||||||
|
|
||||||
|
ok = 0
|
||||||
|
for r0 in roots:
|
||||||
|
cand = _hensel_chain_for_root(root_palier=root_palier, r0=r0, k_chain_max=k_chain_max)
|
||||||
|
if cand is None:
|
||||||
|
lines.append(f"| {r0} | | | | no | |")
|
||||||
|
continue
|
||||||
|
k, v = cand
|
||||||
|
u = _u_min_for_k(k)
|
||||||
|
m_end = u
|
||||||
|
|
||||||
|
# build chain from m=root_palier to m_end with sibling closures
|
||||||
|
chain_r = r0
|
||||||
|
steps: list[ChainStep] = []
|
||||||
|
for m in range(root_palier, m_end):
|
||||||
|
step = 1 << m
|
||||||
|
r_low = chain_r
|
||||||
|
r_high = chain_r + step
|
||||||
|
pref = prefix_data(chain_r, k - 1)
|
||||||
|
Bk = 3 * pref.C + (1 << pref.A)
|
||||||
|
# pick the unique child that increases divisibility
|
||||||
|
v_low = v2_fast((3**k) * r_low + Bk)
|
||||||
|
v_high = v2_fast((3**k) * r_high + Bk)
|
||||||
|
if v_low >= (m + 1) and v_high >= (m + 1):
|
||||||
|
# should not happen with odd coefficient unless overflow in reasoning; treat as failure
|
||||||
|
steps = []
|
||||||
|
break
|
||||||
|
if v_low >= (m + 1):
|
||||||
|
chain_next = r_low
|
||||||
|
sibling = r_high
|
||||||
|
elif v_high >= (m + 1):
|
||||||
|
chain_next = r_high
|
||||||
|
sibling = r_low
|
||||||
|
else:
|
||||||
|
steps = []
|
||||||
|
break
|
||||||
|
|
||||||
|
sibling_leaf = _leaf_for_sibling(residue=sibling, m=m + 1, k_max=k_leaf_max, t_max=t_leaf_max)
|
||||||
|
if sibling_leaf is None:
|
||||||
|
steps = []
|
||||||
|
break
|
||||||
|
steps.append(ChainStep(m=m + 1, chain_r=chain_next, sibling_r=sibling, sibling_leaf=sibling_leaf))
|
||||||
|
chain_r = chain_next
|
||||||
|
|
||||||
|
if not steps:
|
||||||
|
lines.append(f"| {r0} | {k} | {u} | {v} | no | |")
|
||||||
|
continue
|
||||||
|
|
||||||
|
# final D_minor on chain node at m_end
|
||||||
|
pref_end = prefix_data(chain_r, k - 1)
|
||||||
|
Bk_end = 3 * pref_end.C + (1 << pref_end.A)
|
||||||
|
if v2_fast((3**k) * chain_r + Bk_end) < m_end:
|
||||||
|
lines.append(f"| {r0} | {k} | {u} | {v} | no | |")
|
||||||
|
continue
|
||||||
|
d = (1 << m_end) - (3**k)
|
||||||
|
if d <= 0:
|
||||||
|
lines.append(f"| {r0} | {k} | {u} | {v} | no | |")
|
||||||
|
continue
|
||||||
|
N0 = (Bk_end // d) + 1
|
||||||
|
final_leaf = Leaf(
|
||||||
|
kind="D_minor",
|
||||||
|
m=m_end,
|
||||||
|
r=chain_r,
|
||||||
|
k_or_t=k,
|
||||||
|
A=None,
|
||||||
|
threshold=N0,
|
||||||
|
extra={
|
||||||
|
"k": k,
|
||||||
|
"underlineA": m_end,
|
||||||
|
"A_km1": int(pref_end.A),
|
||||||
|
"C_km1": int(pref_end.C),
|
||||||
|
"B_k": int(Bk_end),
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
|
cert_path = certs_dir / f"hensel_chain_leaf_root{r0}_mod2p{root_palier}_k{k}_to2p{m_end}.json"
|
||||||
|
cert_obj = {
|
||||||
|
"domain": {"root_palier": root_palier, "root_residue_mod_2p": r0, "k": k, "m_end": m_end},
|
||||||
|
"params": {"k_leaf_max": k_leaf_max, "t_leaf_max": t_leaf_max, "k_chain_max": k_chain_max},
|
||||||
|
"chain": {
|
||||||
|
"u_min": u,
|
||||||
|
"v2_L_root": v,
|
||||||
|
"steps": [s.to_json() for s in steps],
|
||||||
|
"final": final_leaf.to_json(),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
_write_json(cert_path, cert_obj)
|
||||||
|
leaves.append(
|
||||||
|
{
|
||||||
|
"kind": "HenselChainLeaf",
|
||||||
|
"modulus_power": root_palier,
|
||||||
|
"residue_mod_2p": r0,
|
||||||
|
"certificate_path": str(cert_path),
|
||||||
|
"certificate_sha256": _sha256_file(cert_path),
|
||||||
|
}
|
||||||
|
)
|
||||||
|
ok += 1
|
||||||
|
lines.append(f"| {r0} | {k} | {u} | {v} | yes | `{cert_path}` |")
|
||||||
|
|
||||||
|
out_json = output_dir / f"clauses_hensel_chain_leaves_mod2p{root_palier}.json"
|
||||||
|
out_md = output_dir / f"clauses_hensel_chain_leaves_mod2p{root_palier}.md"
|
||||||
|
out_obj = {
|
||||||
|
"domain": {"palier": root_palier},
|
||||||
|
"inputs": {"tracked_roots_file": str(tracked_roots_file)},
|
||||||
|
"params": {"k_chain_max": k_chain_max, "k_leaf_max": k_leaf_max, "t_leaf_max": t_leaf_max},
|
||||||
|
"counts": {"tracked_roots": len(roots), "closed_roots": ok, "failed_roots": len(roots) - ok},
|
||||||
|
"clauses": leaves,
|
||||||
|
"sha256": {
|
||||||
|
"inputs": {
|
||||||
|
str(tracked_roots_file): _sha256_file(tracked_roots_file),
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
_write_json(out_json, out_obj)
|
||||||
|
lines.append("")
|
||||||
|
lines.append("## Sorties")
|
||||||
|
lines.append("")
|
||||||
|
lines.append(f"- JSON : `{out_json}`")
|
||||||
|
lines.append(f"- Markdown : `{out_md}`")
|
||||||
|
lines.append("")
|
||||||
|
_write_md(out_md, lines)
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
ap = argparse.ArgumentParser(description="Build Hensel-chain leaves for a tracked roots list")
|
||||||
|
ap.add_argument("--repo-root", default=".", help="Repository root")
|
||||||
|
ap.add_argument("--root-palier", type=int, default=15)
|
||||||
|
ap.add_argument("--tracked-roots-file", required=True)
|
||||||
|
ap.add_argument("--k-chain-max", type=int, default=80)
|
||||||
|
ap.add_argument("--k-leaf-max", type=int, default=256)
|
||||||
|
ap.add_argument("--t-leaf-max", type=int, default=256)
|
||||||
|
ap.add_argument("--output-dir", default="", help="Output directory (defaults under docs/artefacts/...)")
|
||||||
|
args = ap.parse_args()
|
||||||
|
|
||||||
|
repo_root = Path(args.repo_root).resolve()
|
||||||
|
root_palier = int(args.root_palier)
|
||||||
|
output_dir = Path(args.output_dir).resolve() if args.output_dir.strip() else (
|
||||||
|
repo_root / "docs" / "artefacts" / "collatz" / "refinement_K" / f"palier2p{root_palier}" / "hensel_chain_leaves"
|
||||||
|
)
|
||||||
|
run(
|
||||||
|
repo_root=repo_root,
|
||||||
|
root_palier=root_palier,
|
||||||
|
tracked_roots_file=Path(args.tracked_roots_file).resolve(),
|
||||||
|
k_chain_max=int(args.k_chain_max),
|
||||||
|
k_leaf_max=int(args.k_leaf_max),
|
||||||
|
t_leaf_max=int(args.t_leaf_max),
|
||||||
|
output_dir=output_dir,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
|
|
||||||
@ -0,0 +1,234 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
"""
|
||||||
|
collatz_build_refinement_bundle_over_Sm_multilevel.py
|
||||||
|
|
||||||
|
Pipeline wrapper that produces a "bundle" of deterministic artefacts for multilevel refinement closure over S_M:
|
||||||
|
- multilevel closure certificate (Sm)
|
||||||
|
- open roots obstruction profile (lb histograms, quantiles, motifs)
|
||||||
|
- optional targeted-leaves failure diagnostic for a fixed tracked roots list
|
||||||
|
|
||||||
|
This wrapper is intended to keep the closure workflow reproducible with a single command.
|
||||||
|
"""
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
import json
|
||||||
|
import subprocess
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
|
||||||
|
def _run(cmd: list[str]) -> None:
|
||||||
|
subprocess.run(cmd, check=True)
|
||||||
|
|
||||||
|
|
||||||
|
def _read_leaf_domain_palier(path: Path) -> int | None:
|
||||||
|
try:
|
||||||
|
obj = json.loads(path.read_text(encoding="utf-8", errors="strict"))
|
||||||
|
except (OSError, json.JSONDecodeError):
|
||||||
|
return None
|
||||||
|
if not isinstance(obj, dict):
|
||||||
|
return None
|
||||||
|
domain = obj.get("domain")
|
||||||
|
if not isinstance(domain, dict):
|
||||||
|
return None
|
||||||
|
palier = domain.get("palier")
|
||||||
|
return palier if isinstance(palier, int) else None
|
||||||
|
|
||||||
|
|
||||||
|
def run(
|
||||||
|
*,
|
||||||
|
repo_root: Path,
|
||||||
|
root_palier: int,
|
||||||
|
max_palier: int,
|
||||||
|
leaf_json: list[Path],
|
||||||
|
bundle_dir: Path,
|
||||||
|
k_max: int,
|
||||||
|
t_max: int,
|
||||||
|
search_max_required_m: int,
|
||||||
|
tracked_roots_file: Path | None,
|
||||||
|
include_brother_derived_dminor: bool,
|
||||||
|
verify_brother_derived_dminor: bool,
|
||||||
|
) -> None:
|
||||||
|
scripts_dir = repo_root / "applications" / "collatz" / "collatz_k_scripts"
|
||||||
|
multilevel = scripts_dir / "collatz_build_refinement_certificate_over_Sm_multilevel.py"
|
||||||
|
open_roots = scripts_dir / "collatz_analyze_open_roots_refinement.py"
|
||||||
|
targeted_diag = scripts_dir / "collatz_diagnose_targeted_leaves_failure.py"
|
||||||
|
derive_bro = scripts_dir / "collatz_derive_brother_minorated_clauses_from_terminal_over_Sm.py"
|
||||||
|
verify_bro = scripts_dir / "collatz_verify_brother_derived_minorated_clauses_over_Sm.py"
|
||||||
|
|
||||||
|
bundle_dir.mkdir(parents=True, exist_ok=True)
|
||||||
|
|
||||||
|
if include_brother_derived_dminor:
|
||||||
|
derived_root = bundle_dir / "derived_brother_dminor"
|
||||||
|
derived_root.mkdir(parents=True, exist_ok=True)
|
||||||
|
derived_paths: list[Path] = []
|
||||||
|
for p in leaf_json:
|
||||||
|
palier = _read_leaf_domain_palier(p)
|
||||||
|
if palier is None:
|
||||||
|
continue
|
||||||
|
# Only derive from terminal clause artefacts (heuristic by filename).
|
||||||
|
if "clauses_terminal_over_Sm_mod2p" not in p.name:
|
||||||
|
continue
|
||||||
|
out_dir = derived_root / f"palier2p{palier}"
|
||||||
|
out_dir.mkdir(parents=True, exist_ok=True)
|
||||||
|
_run(
|
||||||
|
[
|
||||||
|
"python3",
|
||||||
|
str(derive_bro),
|
||||||
|
"--terminal-json",
|
||||||
|
str(p),
|
||||||
|
"--output-dir",
|
||||||
|
str(out_dir),
|
||||||
|
]
|
||||||
|
)
|
||||||
|
derived_json = out_dir / f"clauses_D_minor_derived_from_brothers_over_Sm_mod2p{palier}.json"
|
||||||
|
derived_paths.append(derived_json)
|
||||||
|
if verify_brother_derived_dminor:
|
||||||
|
_run(
|
||||||
|
[
|
||||||
|
"python3",
|
||||||
|
str(verify_bro),
|
||||||
|
"--derived-json",
|
||||||
|
str(derived_json),
|
||||||
|
"--output-dir",
|
||||||
|
str(out_dir),
|
||||||
|
]
|
||||||
|
)
|
||||||
|
leaf_json = leaf_json + derived_paths
|
||||||
|
|
||||||
|
leaf_args: list[str] = []
|
||||||
|
for p in leaf_json:
|
||||||
|
leaf_args.extend(["--leaf-json", str(p)])
|
||||||
|
|
||||||
|
_run(
|
||||||
|
[
|
||||||
|
"python3",
|
||||||
|
str(multilevel),
|
||||||
|
"--repo-root",
|
||||||
|
str(repo_root),
|
||||||
|
"--root-palier",
|
||||||
|
str(root_palier),
|
||||||
|
"--max-palier",
|
||||||
|
str(max_palier),
|
||||||
|
"--output-dir",
|
||||||
|
str(bundle_dir),
|
||||||
|
*leaf_args,
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
cert_json = bundle_dir / f"refinement_certificate_Sm_multilevel_mod2p{root_palier}_to2p{max_palier}.json"
|
||||||
|
_run(
|
||||||
|
[
|
||||||
|
"python3",
|
||||||
|
str(open_roots),
|
||||||
|
"--root-palier",
|
||||||
|
str(root_palier),
|
||||||
|
"--max-palier",
|
||||||
|
str(max_palier),
|
||||||
|
"--multilevel-json",
|
||||||
|
str(cert_json),
|
||||||
|
"--output-dir",
|
||||||
|
str(bundle_dir),
|
||||||
|
"--k-max",
|
||||||
|
str(k_max),
|
||||||
|
"--t-max",
|
||||||
|
str(t_max),
|
||||||
|
"--search-max-required-m",
|
||||||
|
str(search_max_required_m),
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
if tracked_roots_file is not None:
|
||||||
|
_run(
|
||||||
|
[
|
||||||
|
"python3",
|
||||||
|
str(targeted_diag),
|
||||||
|
"--root-palier",
|
||||||
|
str(root_palier),
|
||||||
|
"--tracked-roots-file",
|
||||||
|
str(tracked_roots_file),
|
||||||
|
"--k-max",
|
||||||
|
str(k_max),
|
||||||
|
"--t-max",
|
||||||
|
str(t_max),
|
||||||
|
"--search-max-required-m",
|
||||||
|
str(search_max_required_m),
|
||||||
|
"--output-dir",
|
||||||
|
str(bundle_dir),
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
ap = argparse.ArgumentParser(description="Build a bundle of refinement closure + diagnostics over S_M (multilevel)")
|
||||||
|
ap.add_argument("--repo-root", default=".", help="Repository root")
|
||||||
|
ap.add_argument("--root-palier", type=int, default=15)
|
||||||
|
ap.add_argument("--max-palier", type=int, default=18)
|
||||||
|
ap.add_argument("--leaf-json", action="append", default=[], help="Leaf JSON path (repeatable). If omitted, uses terminal_clauses_over_Sm for M..Mmax.")
|
||||||
|
ap.add_argument("--bundle-dir", default="", help="Bundle output directory (defaults under docs/artefacts/...)")
|
||||||
|
ap.add_argument("--k-max", type=int, default=256)
|
||||||
|
ap.add_argument("--t-max", type=int, default=256)
|
||||||
|
ap.add_argument("--search-max-required-m", type=int, default=256)
|
||||||
|
ap.add_argument("--tracked-roots-file", default="", help="Optional fixed roots list file for targeted diagnostic")
|
||||||
|
ap.add_argument(
|
||||||
|
"--include-brother-derived-dminor",
|
||||||
|
action="store_true",
|
||||||
|
help="Generate and include D_minor leaves derived from brothers (from terminal D_exact artefacts) in the bundle",
|
||||||
|
)
|
||||||
|
ap.add_argument(
|
||||||
|
"--verify-brother-derived-dminor",
|
||||||
|
action="store_true",
|
||||||
|
help="When including brother-derived D_minor, also run its deterministic verifier",
|
||||||
|
)
|
||||||
|
args = ap.parse_args()
|
||||||
|
|
||||||
|
repo_root = Path(args.repo_root).resolve()
|
||||||
|
root_palier = int(args.root_palier)
|
||||||
|
max_palier = int(args.max_palier)
|
||||||
|
|
||||||
|
if args.leaf_json:
|
||||||
|
leaf_json = [Path(p).resolve() for p in args.leaf_json]
|
||||||
|
else:
|
||||||
|
leaf_json = [
|
||||||
|
repo_root
|
||||||
|
/ "docs"
|
||||||
|
/ "artefacts"
|
||||||
|
/ "collatz"
|
||||||
|
/ "terminal_clauses_over_Sm"
|
||||||
|
/ f"palier2p{m}"
|
||||||
|
/ f"clauses_terminal_over_Sm_mod2p{m}.json"
|
||||||
|
for m in range(root_palier, max_palier + 1)
|
||||||
|
]
|
||||||
|
|
||||||
|
bundle_dir = Path(args.bundle_dir).resolve() if args.bundle_dir.strip() else (
|
||||||
|
repo_root
|
||||||
|
/ "docs"
|
||||||
|
/ "artefacts"
|
||||||
|
/ "collatz"
|
||||||
|
/ "refinement_K"
|
||||||
|
/ f"palier2p{root_palier}"
|
||||||
|
/ f"bundle_mod2p{root_palier}_to2p{max_palier}"
|
||||||
|
)
|
||||||
|
|
||||||
|
tracked_roots_file = Path(args.tracked_roots_file).resolve() if args.tracked_roots_file.strip() else None
|
||||||
|
|
||||||
|
run(
|
||||||
|
repo_root=repo_root,
|
||||||
|
root_palier=root_palier,
|
||||||
|
max_palier=max_palier,
|
||||||
|
leaf_json=leaf_json,
|
||||||
|
bundle_dir=bundle_dir,
|
||||||
|
k_max=int(args.k_max),
|
||||||
|
t_max=int(args.t_max),
|
||||||
|
search_max_required_m=int(args.search_max_required_m),
|
||||||
|
tracked_roots_file=tracked_roots_file,
|
||||||
|
include_brother_derived_dminor=bool(args.include_brother_derived_dminor),
|
||||||
|
verify_brother_derived_dminor=bool(args.verify_brother_derived_dminor),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
|
|
||||||
@ -0,0 +1,574 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
"""
|
||||||
|
collatz_build_targeted_refinement_leaves.py
|
||||||
|
|
||||||
|
New leaf grammar: "targeted deep refinement leaves" over S_M.
|
||||||
|
|
||||||
|
Goal:
|
||||||
|
- close a *fixed list* of difficult roots r0 in S_M by paying a local "debt of observability":
|
||||||
|
we refine only those roots to a deeper palier, and close every reached node by an exact D/F clause
|
||||||
|
(or by an already-known D_minor leaf when available).
|
||||||
|
- output a leaf JSON at palier M (so it plugs into collatz_build_refinement_certificate_over_Sm_multilevel.py)
|
||||||
|
plus per-root certificates (deterministic, verifiable).
|
||||||
|
|
||||||
|
This is not a global palier lift: the deep observability is localized to the tracked roots.
|
||||||
|
"""
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
import hashlib
|
||||||
|
import json
|
||||||
|
from dataclasses import dataclass
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
from collatz_k_core import (
|
||||||
|
PrefixData,
|
||||||
|
delta_D,
|
||||||
|
delta_F,
|
||||||
|
fusion_choice_a,
|
||||||
|
N0_D,
|
||||||
|
Nf_F,
|
||||||
|
prefix_data,
|
||||||
|
preimage_m,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def _read_json(path: Path) -> object:
|
||||||
|
return json.loads(path.read_text(encoding="utf-8", errors="strict"))
|
||||||
|
|
||||||
|
|
||||||
|
def _write_json(path: Path, obj: object) -> None:
|
||||||
|
path.parent.mkdir(parents=True, exist_ok=True)
|
||||||
|
path.write_text(json.dumps(obj, indent=2, ensure_ascii=False) + "\n", encoding="utf-8")
|
||||||
|
|
||||||
|
|
||||||
|
def _write_md(path: Path, lines: list[str]) -> None:
|
||||||
|
path.parent.mkdir(parents=True, exist_ok=True)
|
||||||
|
path.write_text("\n".join(lines) + "\n", encoding="utf-8")
|
||||||
|
|
||||||
|
|
||||||
|
def _sha256_file(path: Path, chunk_size: int = 16 * 1024 * 1024) -> str:
|
||||||
|
h = hashlib.sha256()
|
||||||
|
with path.open("rb") as f:
|
||||||
|
while True:
|
||||||
|
chunk = f.read(chunk_size)
|
||||||
|
if not chunk:
|
||||||
|
break
|
||||||
|
h.update(chunk)
|
||||||
|
return h.hexdigest()
|
||||||
|
|
||||||
|
|
||||||
|
def _req_int(d: dict[str, object], key: str) -> int:
|
||||||
|
v = d.get(key)
|
||||||
|
if not isinstance(v, int):
|
||||||
|
raise ValueError(f"Expected int for {key}")
|
||||||
|
return v
|
||||||
|
|
||||||
|
|
||||||
|
def _read_tracked_roots_file(path: Path) -> list[int]:
|
||||||
|
roots: list[int] = []
|
||||||
|
seen: set[int] = set()
|
||||||
|
for line in path.read_text(encoding="utf-8", errors="strict").splitlines():
|
||||||
|
s = line.strip()
|
||||||
|
if not s or s.startswith("#"):
|
||||||
|
continue
|
||||||
|
if "#" in s:
|
||||||
|
s = s.split("#", 1)[0].strip()
|
||||||
|
if not s:
|
||||||
|
continue
|
||||||
|
r = int(s, 10)
|
||||||
|
if r <= 0 or (r % 2) == 0:
|
||||||
|
raise ValueError(f"Invalid tracked root (must be positive odd integer): {r}")
|
||||||
|
if r not in seen:
|
||||||
|
roots.append(r)
|
||||||
|
seen.add(r)
|
||||||
|
return roots
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass(frozen=True)
|
||||||
|
class TerminalClause:
|
||||||
|
kind: str # D_exact | F | D_minor
|
||||||
|
modulus_power: int
|
||||||
|
residue_mod_2p: int
|
||||||
|
k_or_t: int | None
|
||||||
|
A: int | None
|
||||||
|
threshold: int | None
|
||||||
|
extra: dict[str, int]
|
||||||
|
|
||||||
|
def to_json(self) -> dict[str, object]:
|
||||||
|
return {
|
||||||
|
"kind": self.kind,
|
||||||
|
"modulus_power": self.modulus_power,
|
||||||
|
"residue_mod_2p": self.residue_mod_2p,
|
||||||
|
"k_or_t": self.k_or_t,
|
||||||
|
"A": self.A,
|
||||||
|
"threshold": self.threshold,
|
||||||
|
"extra": self.extra,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def _best_exact_D(*, residue: int, m: int, k_max: int) -> TerminalClause | None:
|
||||||
|
best: TerminalClause | None = None
|
||||||
|
best_key: tuple[int, int, int, int] | None = None
|
||||||
|
for k in range(1, k_max + 1):
|
||||||
|
pref = prefix_data(residue, k)
|
||||||
|
req_m = pref.A + 1
|
||||||
|
if req_m > m:
|
||||||
|
break
|
||||||
|
if delta_D(pref.A, k) <= 0:
|
||||||
|
continue
|
||||||
|
N0 = N0_D(pref.C, pref.A, k)
|
||||||
|
key = (req_m, pref.A, k, N0)
|
||||||
|
if best_key is None or key < best_key:
|
||||||
|
best_key = key
|
||||||
|
best = TerminalClause(
|
||||||
|
kind="D_exact",
|
||||||
|
modulus_power=m,
|
||||||
|
residue_mod_2p=residue,
|
||||||
|
k_or_t=k,
|
||||||
|
A=pref.A,
|
||||||
|
threshold=N0,
|
||||||
|
extra={"k": k, "C_k": int(pref.C)},
|
||||||
|
)
|
||||||
|
return best
|
||||||
|
|
||||||
|
|
||||||
|
def _best_exact_F(*, residue: int, m: int, t_max: int) -> TerminalClause | None:
|
||||||
|
best: TerminalClause | None = None
|
||||||
|
best_key: tuple[int, int, int, int, int] | None = None
|
||||||
|
for t in range(1, t_max + 1):
|
||||||
|
pref = prefix_data(residue, t)
|
||||||
|
req_m = pref.A + 1
|
||||||
|
if req_m > m:
|
||||||
|
break
|
||||||
|
a = fusion_choice_a(pref.y)
|
||||||
|
if a is None:
|
||||||
|
continue
|
||||||
|
if delta_F(pref.A, t, a) <= 0:
|
||||||
|
continue
|
||||||
|
Nf = Nf_F(pref.C, pref.A, t, a)
|
||||||
|
m_pre = preimage_m(pref.y, a)
|
||||||
|
# strict fusion requires m_pre < residue; but for a leaf in the refinement grammar,
|
||||||
|
# we store the computed preimage and leave the "global well-foundedness" to the main proof layer.
|
||||||
|
key = (req_m, pref.A, t, Nf, m_pre)
|
||||||
|
if best_key is None or key < best_key:
|
||||||
|
best_key = key
|
||||||
|
best = TerminalClause(
|
||||||
|
kind="F",
|
||||||
|
modulus_power=m,
|
||||||
|
residue_mod_2p=residue,
|
||||||
|
k_or_t=t,
|
||||||
|
A=pref.A,
|
||||||
|
threshold=Nf,
|
||||||
|
extra={"t": t, "a": int(a), "y": int(pref.y), "preimage_m": int(m_pre), "C_t": int(pref.C)},
|
||||||
|
)
|
||||||
|
return best
|
||||||
|
|
||||||
|
|
||||||
|
def _u_min_for_k(k: int) -> int:
|
||||||
|
# minimal underlineA such that 2^underlineA > 3^k
|
||||||
|
return (3**k).bit_length()
|
||||||
|
|
||||||
|
|
||||||
|
def _best_dminor(*, residue: int, m: int, k_max: int) -> TerminalClause | None:
|
||||||
|
best: TerminalClause | None = None
|
||||||
|
best_key: tuple[int, int, int] | None = None
|
||||||
|
for k in range(2, k_max + 1):
|
||||||
|
u = _u_min_for_k(k)
|
||||||
|
if u > m:
|
||||||
|
break
|
||||||
|
pref = prefix_data(residue, k - 1)
|
||||||
|
if pref.A + 1 > m:
|
||||||
|
# prefix not stable at this palier
|
||||||
|
continue
|
||||||
|
B_k = 3 * pref.C + (1 << pref.A)
|
||||||
|
mod = 1 << u
|
||||||
|
if ((3**k) * residue + B_k) % mod != 0:
|
||||||
|
continue
|
||||||
|
d = (1 << u) - (3**k)
|
||||||
|
N0 = (B_k // d) + 1
|
||||||
|
key = (u, k, N0)
|
||||||
|
if best_key is None or key < best_key:
|
||||||
|
best_key = key
|
||||||
|
best = TerminalClause(
|
||||||
|
kind="D_minor",
|
||||||
|
modulus_power=m,
|
||||||
|
residue_mod_2p=residue,
|
||||||
|
k_or_t=k,
|
||||||
|
A=None,
|
||||||
|
threshold=N0,
|
||||||
|
extra={"k": k, "underlineA": u, "A_km1": int(pref.A), "C_km1": int(pref.C), "B_k": int(B_k)},
|
||||||
|
)
|
||||||
|
return best
|
||||||
|
|
||||||
|
|
||||||
|
def _derive_brother_dminor_from_exact_D(
|
||||||
|
*,
|
||||||
|
exact_D: TerminalClause,
|
||||||
|
brother_residue: int,
|
||||||
|
m_child: int,
|
||||||
|
) -> TerminalClause | None:
|
||||||
|
if exact_D.kind != "D_exact" or exact_D.k_or_t is None:
|
||||||
|
return None
|
||||||
|
k = int(exact_D.k_or_t)
|
||||||
|
u = _u_min_for_k(k)
|
||||||
|
if u > m_child or u < 2:
|
||||||
|
return None
|
||||||
|
C_k = exact_D.extra.get("C_k")
|
||||||
|
if not isinstance(C_k, int):
|
||||||
|
return None
|
||||||
|
|
||||||
|
pref_bro = prefix_data(brother_residue, k - 1)
|
||||||
|
if pref_bro.A + 1 > m_child:
|
||||||
|
return None
|
||||||
|
B_k = 3 * pref_bro.C + (1 << pref_bro.A)
|
||||||
|
if int(B_k) != int(C_k):
|
||||||
|
return None
|
||||||
|
mod = 1 << u
|
||||||
|
if ((3**k) * brother_residue + B_k) % mod != 0:
|
||||||
|
return None
|
||||||
|
d = (1 << u) - (3**k)
|
||||||
|
if d <= 0:
|
||||||
|
return None
|
||||||
|
N0 = (B_k // d) + 1
|
||||||
|
return TerminalClause(
|
||||||
|
kind="D_minor",
|
||||||
|
modulus_power=m_child,
|
||||||
|
residue_mod_2p=brother_residue,
|
||||||
|
k_or_t=k,
|
||||||
|
A=None,
|
||||||
|
threshold=int(N0),
|
||||||
|
extra={
|
||||||
|
"k": k,
|
||||||
|
"underlineA": u,
|
||||||
|
"A_km1": int(pref_bro.A),
|
||||||
|
"C_km1": int(pref_bro.C),
|
||||||
|
"B_k": int(B_k),
|
||||||
|
"derived_from": "brother_exact_D",
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def _load_dminor_residues(*, dminor_json_paths: list[Path]) -> dict[int, set[int]]:
|
||||||
|
by_m: dict[int, set[int]] = {}
|
||||||
|
for p in dminor_json_paths:
|
||||||
|
obj = _read_json(p)
|
||||||
|
if not isinstance(obj, dict):
|
||||||
|
raise ValueError(f"Invalid D_minor JSON: {p}")
|
||||||
|
domain = obj.get("domain")
|
||||||
|
clauses = obj.get("clauses")
|
||||||
|
if not isinstance(domain, dict) or not isinstance(clauses, list) or not all(isinstance(x, dict) for x in clauses):
|
||||||
|
raise ValueError(f"Invalid D_minor JSON: missing domain/clauses: {p}")
|
||||||
|
m = _req_int(domain, "palier")
|
||||||
|
s = by_m.setdefault(m, set())
|
||||||
|
for c in clauses:
|
||||||
|
r = c.get("residue_mod_2p")
|
||||||
|
if not isinstance(r, int):
|
||||||
|
raise ValueError("Invalid D_minor clause entry: residue_mod_2p")
|
||||||
|
s.add(r)
|
||||||
|
return by_m
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass(frozen=True)
|
||||||
|
class CertNode:
|
||||||
|
m: int
|
||||||
|
r: int
|
||||||
|
leaf: TerminalClause | None
|
||||||
|
left: "CertNode | None"
|
||||||
|
right: "CertNode | None"
|
||||||
|
|
||||||
|
def to_json(self) -> dict[str, object]:
|
||||||
|
out: dict[str, object] = {"m": self.m, "r": self.r}
|
||||||
|
if self.leaf is not None:
|
||||||
|
out["leaf"] = self.leaf.to_json()
|
||||||
|
if self.left is not None and self.right is not None:
|
||||||
|
out["children"] = [self.left.to_json(), self.right.to_json()]
|
||||||
|
return out
|
||||||
|
|
||||||
|
|
||||||
|
def _build_tree(
|
||||||
|
*,
|
||||||
|
root_palier: int,
|
||||||
|
r0: int,
|
||||||
|
target_max_palier: int,
|
||||||
|
k_max: int,
|
||||||
|
t_max: int,
|
||||||
|
dminor_by_m: dict[int, set[int]],
|
||||||
|
) -> CertNode | None:
|
||||||
|
memo: dict[tuple[int, int], CertNode | None] = {}
|
||||||
|
|
||||||
|
def rec(m: int, r: int) -> CertNode | None:
|
||||||
|
key = (m, r)
|
||||||
|
if key in memo:
|
||||||
|
return memo[key]
|
||||||
|
if m > target_max_palier:
|
||||||
|
memo[key] = None
|
||||||
|
return None
|
||||||
|
|
||||||
|
# Fast path: precomputed D_minor at this palier (treated as terminal)
|
||||||
|
if r in dminor_by_m.get(m, set()):
|
||||||
|
node = CertNode(
|
||||||
|
m=m,
|
||||||
|
r=r,
|
||||||
|
leaf=TerminalClause(
|
||||||
|
kind="D_minor",
|
||||||
|
modulus_power=m,
|
||||||
|
residue_mod_2p=r,
|
||||||
|
k_or_t=None,
|
||||||
|
A=None,
|
||||||
|
threshold=None,
|
||||||
|
extra={"source": "precomputed"},
|
||||||
|
),
|
||||||
|
left=None,
|
||||||
|
right=None,
|
||||||
|
)
|
||||||
|
memo[key] = node
|
||||||
|
return node
|
||||||
|
|
||||||
|
d = _best_exact_D(residue=r, m=m, k_max=k_max)
|
||||||
|
f = _best_exact_F(residue=r, m=m, t_max=t_max)
|
||||||
|
dm = _best_dminor(residue=r, m=m, k_max=k_max)
|
||||||
|
leaf = None
|
||||||
|
# Deterministic preference order: D_exact, then F, then D_minor (lower bound)
|
||||||
|
if d is not None:
|
||||||
|
leaf = d
|
||||||
|
elif f is not None:
|
||||||
|
leaf = f
|
||||||
|
else:
|
||||||
|
leaf = dm
|
||||||
|
if leaf is not None:
|
||||||
|
node = CertNode(m=m, r=r, leaf=leaf, left=None, right=None)
|
||||||
|
memo[key] = node
|
||||||
|
return node
|
||||||
|
|
||||||
|
if m == target_max_palier:
|
||||||
|
memo[key] = None
|
||||||
|
return None
|
||||||
|
|
||||||
|
step = 1 << m
|
||||||
|
left_r = r
|
||||||
|
right_r = r + step
|
||||||
|
|
||||||
|
left = rec(m + 1, left_r)
|
||||||
|
if left is None:
|
||||||
|
memo[key] = None
|
||||||
|
return None
|
||||||
|
|
||||||
|
# Recombination attempt: if one child closes by an exact D leaf, try to close its brother
|
||||||
|
# by a derived D_minor leaf using the same affine numerator (brother completion).
|
||||||
|
if left.leaf is not None and left.leaf.kind == "D_exact":
|
||||||
|
derived = _derive_brother_dminor_from_exact_D(
|
||||||
|
exact_D=left.leaf,
|
||||||
|
brother_residue=right_r,
|
||||||
|
m_child=m + 1,
|
||||||
|
)
|
||||||
|
if derived is not None:
|
||||||
|
right = CertNode(m=m + 1, r=right_r, leaf=derived, left=None, right=None)
|
||||||
|
node = CertNode(m=m, r=r, leaf=None, left=left, right=right)
|
||||||
|
memo[key] = node
|
||||||
|
return node
|
||||||
|
|
||||||
|
right = rec(m + 1, right_r)
|
||||||
|
if right is None:
|
||||||
|
memo[key] = None
|
||||||
|
return None
|
||||||
|
|
||||||
|
if right.leaf is not None and right.leaf.kind == "D_exact":
|
||||||
|
derived = _derive_brother_dminor_from_exact_D(
|
||||||
|
exact_D=right.leaf,
|
||||||
|
brother_residue=left_r,
|
||||||
|
m_child=m + 1,
|
||||||
|
)
|
||||||
|
if derived is not None:
|
||||||
|
left2 = CertNode(m=m + 1, r=left_r, leaf=derived, left=None, right=None)
|
||||||
|
node = CertNode(m=m, r=r, leaf=None, left=left2, right=right)
|
||||||
|
memo[key] = node
|
||||||
|
return node
|
||||||
|
|
||||||
|
node = CertNode(m=m, r=r, leaf=None, left=left, right=right)
|
||||||
|
memo[key] = node
|
||||||
|
return node
|
||||||
|
|
||||||
|
return rec(root_palier, r0)
|
||||||
|
|
||||||
|
|
||||||
|
def run(
|
||||||
|
*,
|
||||||
|
repo_root: Path,
|
||||||
|
root_palier: int,
|
||||||
|
tracked_roots_file: Path,
|
||||||
|
target_max_palier_cap: int,
|
||||||
|
obstruction_json: Path,
|
||||||
|
k_max: int,
|
||||||
|
t_max: int,
|
||||||
|
dminor_json_paths: list[Path],
|
||||||
|
output_dir: Path,
|
||||||
|
) -> None:
|
||||||
|
tracked_roots = _read_tracked_roots_file(tracked_roots_file)
|
||||||
|
if not tracked_roots:
|
||||||
|
raise ValueError("tracked_roots_file is empty")
|
||||||
|
|
||||||
|
obs = _read_json(obstruction_json)
|
||||||
|
if not isinstance(obs, dict):
|
||||||
|
raise ValueError("Invalid obstruction JSON")
|
||||||
|
rows = obs.get("rows")
|
||||||
|
if not isinstance(rows, list) or not all(isinstance(x, dict) for x in rows):
|
||||||
|
raise ValueError("Invalid obstruction JSON: missing rows")
|
||||||
|
lb_by_root: dict[int, int] = {}
|
||||||
|
for row in rows:
|
||||||
|
r0 = row.get("root_residue_mod_2p")
|
||||||
|
if not isinstance(r0, int):
|
||||||
|
continue
|
||||||
|
lb = row.get("lower_bound_required_m_to_close_root")
|
||||||
|
if not isinstance(lb, dict):
|
||||||
|
continue
|
||||||
|
lb_any = lb.get("any")
|
||||||
|
if isinstance(lb_any, int):
|
||||||
|
lb_by_root[r0] = lb_any
|
||||||
|
|
||||||
|
dminor_by_m = _load_dminor_residues(dminor_json_paths=dminor_json_paths)
|
||||||
|
|
||||||
|
certs_dir = output_dir / "certs"
|
||||||
|
certs_dir.mkdir(parents=True, exist_ok=True)
|
||||||
|
|
||||||
|
leaf_clauses: list[dict[str, object]] = []
|
||||||
|
md: list[str] = []
|
||||||
|
md.append("**Auteur** : Équipe 4NK")
|
||||||
|
md.append("")
|
||||||
|
md.append(f"# Feuilles ciblées (raffinement profond local) — racine 2^{root_palier}")
|
||||||
|
md.append("")
|
||||||
|
md.append(f"- tracked_roots_file : `{tracked_roots_file}`")
|
||||||
|
md.append(f"- target_max_palier_cap : {target_max_palier_cap}")
|
||||||
|
md.append(f"- k_max : {k_max}")
|
||||||
|
md.append(f"- t_max : {t_max}")
|
||||||
|
md.append("")
|
||||||
|
md.append("| root | lb_any (from obstruction) | target_max | closed | cert |")
|
||||||
|
md.append("| --- | --- | --- | --- | --- |")
|
||||||
|
|
||||||
|
closed = 0
|
||||||
|
for r0 in tracked_roots:
|
||||||
|
lb = lb_by_root.get(r0)
|
||||||
|
target_max = target_max_palier_cap
|
||||||
|
tree = _build_tree(
|
||||||
|
root_palier=root_palier,
|
||||||
|
r0=r0,
|
||||||
|
target_max_palier=target_max,
|
||||||
|
k_max=k_max,
|
||||||
|
t_max=t_max,
|
||||||
|
dminor_by_m=dminor_by_m,
|
||||||
|
)
|
||||||
|
if tree is None:
|
||||||
|
md.append(f"| {r0} | {'' if lb is None else lb} | {target_max} | no | |")
|
||||||
|
continue
|
||||||
|
cert_path = certs_dir / f"targeted_leaf_cert_root{r0}_mod2p{root_palier}_to2p{target_max}.json"
|
||||||
|
_write_json(
|
||||||
|
cert_path,
|
||||||
|
{
|
||||||
|
"domain": {"root_palier": root_palier, "root_residue_mod_2p": r0, "target_max_palier": target_max},
|
||||||
|
"params": {"k_max": k_max, "t_max": t_max},
|
||||||
|
"certificate": tree.to_json(),
|
||||||
|
},
|
||||||
|
)
|
||||||
|
leaf_clauses.append(
|
||||||
|
{
|
||||||
|
"kind": "TargetedRefinementLeaf",
|
||||||
|
"modulus_power": root_palier,
|
||||||
|
"residue_mod_2p": r0,
|
||||||
|
"certificate_path": str(cert_path),
|
||||||
|
"certificate_sha256": _sha256_file(cert_path),
|
||||||
|
}
|
||||||
|
)
|
||||||
|
closed += 1
|
||||||
|
md.append(f"| {r0} | {'' if lb is None else lb} | {target_max} | yes | `{cert_path}` |")
|
||||||
|
|
||||||
|
out_json = output_dir / f"clauses_targeted_refinement_leaves_mod2p{root_palier}.json"
|
||||||
|
out_md = output_dir / f"clauses_targeted_refinement_leaves_mod2p{root_palier}.md"
|
||||||
|
obj_out = {
|
||||||
|
"domain": {"palier": root_palier},
|
||||||
|
"inputs": {
|
||||||
|
"tracked_roots_file": str(tracked_roots_file),
|
||||||
|
"obstruction_json": str(obstruction_json),
|
||||||
|
"dminor_json_paths": [str(p) for p in dminor_json_paths],
|
||||||
|
},
|
||||||
|
"params": {
|
||||||
|
"target_max_palier_cap": target_max_palier_cap,
|
||||||
|
"k_max": k_max,
|
||||||
|
"t_max": t_max,
|
||||||
|
},
|
||||||
|
"counts": {"tracked_roots": len(tracked_roots), "closed_roots": closed, "failed_roots": len(tracked_roots) - closed},
|
||||||
|
"clauses": leaf_clauses,
|
||||||
|
"sha256": {
|
||||||
|
"inputs": {
|
||||||
|
str(tracked_roots_file): _sha256_file(tracked_roots_file),
|
||||||
|
str(obstruction_json): _sha256_file(obstruction_json),
|
||||||
|
**{str(p): _sha256_file(p) for p in dminor_json_paths if p.exists()},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
_write_json(out_json, obj_out)
|
||||||
|
|
||||||
|
md.append("")
|
||||||
|
md.append("## Sorties")
|
||||||
|
md.append("")
|
||||||
|
md.append(f"- JSON : `{out_json}`")
|
||||||
|
md.append(f"- Markdown : `{out_md}`")
|
||||||
|
md.append("")
|
||||||
|
_write_md(out_md, md)
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
ap = argparse.ArgumentParser(description="Build targeted deep refinement leaves for a fixed roots list")
|
||||||
|
ap.add_argument("--repo-root", default=".", help="Repository root")
|
||||||
|
ap.add_argument("--root-palier", type=int, default=15)
|
||||||
|
ap.add_argument("--tracked-roots-file", required=True)
|
||||||
|
ap.add_argument("--obstruction-json", default="", help="Path to open_roots_obstruction_profile JSON (for lb_any)")
|
||||||
|
ap.add_argument("--target-max-palier-cap", type=int, default=160)
|
||||||
|
ap.add_argument("--k-max", type=int, default=256)
|
||||||
|
ap.add_argument("--t-max", type=int, default=256)
|
||||||
|
ap.add_argument(
|
||||||
|
"--dminor-json",
|
||||||
|
action="append",
|
||||||
|
default=[],
|
||||||
|
help="Optional D_minor JSON leaf sources (can be repeated) to treat them as terminals inside certificates",
|
||||||
|
)
|
||||||
|
ap.add_argument("--output-dir", default="", help="Output directory (defaults under docs/artefacts/...)")
|
||||||
|
args = ap.parse_args()
|
||||||
|
|
||||||
|
repo_root = Path(args.repo_root).resolve()
|
||||||
|
root_palier = int(args.root_palier)
|
||||||
|
tracked_roots_file = Path(args.tracked_roots_file).resolve()
|
||||||
|
if args.obstruction_json.strip():
|
||||||
|
obstruction_json = Path(args.obstruction_json).resolve()
|
||||||
|
else:
|
||||||
|
obstruction_json = (
|
||||||
|
repo_root
|
||||||
|
/ "docs"
|
||||||
|
/ "artefacts"
|
||||||
|
/ "collatz"
|
||||||
|
/ "refinement_K"
|
||||||
|
/ f"palier2p{root_palier}"
|
||||||
|
/ f"open_roots_obstruction_profile_mod2p{root_palier}_to2p18.json"
|
||||||
|
).resolve()
|
||||||
|
|
||||||
|
output_dir = Path(args.output_dir).resolve() if args.output_dir.strip() else (
|
||||||
|
repo_root / "docs" / "artefacts" / "collatz" / "refinement_K" / f"palier2p{root_palier}" / "targeted_leaves"
|
||||||
|
)
|
||||||
|
dminor_json_paths = [Path(p).resolve() for p in args.dminor_json]
|
||||||
|
run(
|
||||||
|
repo_root=repo_root,
|
||||||
|
root_palier=root_palier,
|
||||||
|
tracked_roots_file=tracked_roots_file,
|
||||||
|
target_max_palier_cap=int(args.target_max_palier_cap),
|
||||||
|
obstruction_json=obstruction_json,
|
||||||
|
k_max=int(args.k_max),
|
||||||
|
t_max=int(args.t_max),
|
||||||
|
dminor_json_paths=dminor_json_paths,
|
||||||
|
output_dir=output_dir,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
|
|
||||||
@ -0,0 +1,182 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
"""
|
||||||
|
collatz_derive_brother_minorated_clauses_from_terminal_over_Sm.py
|
||||||
|
|
||||||
|
Derive D_minor clauses for "brothers" from exact D clauses over S_m.
|
||||||
|
|
||||||
|
Idea (completion by brothers):
|
||||||
|
At palier 2^m, children of a parent at 2^(m-1) come in pairs (r, r ^ 2^(m-1)).
|
||||||
|
If an exact D clause exists on one child at horizon k, and the brother shares the same (k-1)-prefix
|
||||||
|
(so the affine numerator constant B_k is the same), then it can become a valid minorated descent
|
||||||
|
clause as soon as v2(3^k n + B_k) is high enough (>= u_min(k)).
|
||||||
|
|
||||||
|
This script materializes the deterministic test suggested in conjoncture_collatz.md
|
||||||
|
and outputs a leaf JSON that can be fed as an additional leaf source.
|
||||||
|
"""
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
import hashlib
|
||||||
|
import json
|
||||||
|
from dataclasses import dataclass
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
from collatz_k_core import prefix_data
|
||||||
|
|
||||||
|
|
||||||
|
def _read_json(path: Path) -> object:
|
||||||
|
return json.loads(path.read_text(encoding="utf-8", errors="strict"))
|
||||||
|
|
||||||
|
|
||||||
|
def _write_json(path: Path, obj: object) -> None:
|
||||||
|
path.parent.mkdir(parents=True, exist_ok=True)
|
||||||
|
path.write_text(json.dumps(obj, indent=2, ensure_ascii=False) + "\n", encoding="utf-8")
|
||||||
|
|
||||||
|
|
||||||
|
def _sha256_file(path: Path, chunk_size: int = 16 * 1024 * 1024) -> str:
|
||||||
|
h = hashlib.sha256()
|
||||||
|
with path.open("rb") as f:
|
||||||
|
while True:
|
||||||
|
chunk = f.read(chunk_size)
|
||||||
|
if not chunk:
|
||||||
|
break
|
||||||
|
h.update(chunk)
|
||||||
|
return h.hexdigest()
|
||||||
|
|
||||||
|
|
||||||
|
def _u_min_for_k(k: int) -> int:
|
||||||
|
return (3**k).bit_length()
|
||||||
|
|
||||||
|
|
||||||
|
def _req_int(d: dict[str, object], key: str) -> int:
|
||||||
|
v = d.get(key)
|
||||||
|
if not isinstance(v, int):
|
||||||
|
raise ValueError(f"Expected int for {key}")
|
||||||
|
return v
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass(frozen=True)
|
||||||
|
class DerivedDMinor:
|
||||||
|
modulus_power: int
|
||||||
|
residue_mod_2p: int
|
||||||
|
k: int
|
||||||
|
underlineA: int
|
||||||
|
numerator_B_k: int
|
||||||
|
prefix_word_len_km1: tuple[int, ...]
|
||||||
|
A_km1: int
|
||||||
|
C_km1: int
|
||||||
|
N0: int
|
||||||
|
derived_from_residue: int
|
||||||
|
|
||||||
|
def to_json(self) -> dict[str, object]:
|
||||||
|
return {
|
||||||
|
"kind": "D_minor",
|
||||||
|
"modulus_power": self.modulus_power,
|
||||||
|
"residue_mod_2p": self.residue_mod_2p,
|
||||||
|
"k": self.k,
|
||||||
|
"underlineA": self.underlineA,
|
||||||
|
"numerator_B_k": self.numerator_B_k,
|
||||||
|
"prefix_word_len_km1": list(self.prefix_word_len_km1),
|
||||||
|
"A_km1": self.A_km1,
|
||||||
|
"C_km1": self.C_km1,
|
||||||
|
"N0": self.N0,
|
||||||
|
"derived_from": {"kind": "D_exact", "residue_mod_2p": self.derived_from_residue},
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def run(*, terminal_json: Path, output_dir: Path) -> None:
|
||||||
|
obj = _read_json(terminal_json)
|
||||||
|
if not isinstance(obj, dict):
|
||||||
|
raise ValueError("Invalid terminal JSON: expected object")
|
||||||
|
domain = obj.get("domain")
|
||||||
|
if not isinstance(domain, dict):
|
||||||
|
raise ValueError("Invalid terminal JSON: missing domain")
|
||||||
|
m = _req_int(domain, "palier")
|
||||||
|
|
||||||
|
clauses = obj.get("clauses")
|
||||||
|
if not isinstance(clauses, list) or not all(isinstance(x, dict) for x in clauses):
|
||||||
|
raise ValueError("Invalid terminal JSON: missing clauses list")
|
||||||
|
|
||||||
|
shift = 1 << (m - 1)
|
||||||
|
derived: list[DerivedDMinor] = []
|
||||||
|
|
||||||
|
for c in clauses:
|
||||||
|
if c.get("kind") != "D_exact":
|
||||||
|
continue
|
||||||
|
if c.get("modulus_power") != m:
|
||||||
|
continue
|
||||||
|
r = c.get("residue_mod_2p")
|
||||||
|
if not isinstance(r, int):
|
||||||
|
continue
|
||||||
|
k = c.get("k_or_t")
|
||||||
|
if not isinstance(k, int):
|
||||||
|
continue
|
||||||
|
C_k = c.get("C")
|
||||||
|
if not isinstance(C_k, int):
|
||||||
|
continue
|
||||||
|
|
||||||
|
u = _u_min_for_k(k)
|
||||||
|
if u > m:
|
||||||
|
continue
|
||||||
|
|
||||||
|
bro = r ^ shift
|
||||||
|
pref = prefix_data(bro, k - 1)
|
||||||
|
if pref.A + 1 > m:
|
||||||
|
continue
|
||||||
|
w_prefix = tuple(int(x) for x in pref.word)
|
||||||
|
B_k = 3 * pref.C + (1 << pref.A)
|
||||||
|
if int(B_k) != int(C_k):
|
||||||
|
continue
|
||||||
|
if ((3**k) * bro + B_k) % (1 << u) != 0:
|
||||||
|
continue
|
||||||
|
|
||||||
|
d = (1 << u) - (3**k)
|
||||||
|
if d <= 0:
|
||||||
|
continue
|
||||||
|
N0 = (B_k // d) + 1
|
||||||
|
|
||||||
|
derived.append(
|
||||||
|
DerivedDMinor(
|
||||||
|
modulus_power=m,
|
||||||
|
residue_mod_2p=int(bro),
|
||||||
|
k=int(k),
|
||||||
|
underlineA=int(u),
|
||||||
|
numerator_B_k=int(B_k),
|
||||||
|
prefix_word_len_km1=w_prefix,
|
||||||
|
A_km1=int(pref.A),
|
||||||
|
C_km1=int(pref.C),
|
||||||
|
N0=int(N0),
|
||||||
|
derived_from_residue=int(r),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
# Stable output order for determinism
|
||||||
|
derived = sorted(derived, key=lambda x: (x.residue_mod_2p, x.k, x.underlineA, x.N0))
|
||||||
|
|
||||||
|
out_json = output_dir / f"clauses_D_minor_derived_from_brothers_over_Sm_mod2p{m}.json"
|
||||||
|
obj_out: dict[str, object] = {
|
||||||
|
"domain": {"palier": m},
|
||||||
|
"inputs": {"terminal_json": str(terminal_json)},
|
||||||
|
"counts": {"derived_clauses": len(derived)},
|
||||||
|
"clauses": [d.to_json() for d in derived],
|
||||||
|
"sha256": {"inputs": {str(terminal_json): _sha256_file(terminal_json)}},
|
||||||
|
}
|
||||||
|
_write_json(out_json, obj_out)
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
ap = argparse.ArgumentParser(description="Derive D_minor clauses for brothers from D_exact terminal clauses over S_m")
|
||||||
|
ap.add_argument("--terminal-json", required=True)
|
||||||
|
ap.add_argument("--output-dir", default=".")
|
||||||
|
args = ap.parse_args()
|
||||||
|
|
||||||
|
terminal_json = Path(args.terminal_json).resolve()
|
||||||
|
output_dir = Path(args.output_dir).resolve()
|
||||||
|
run(terminal_json=terminal_json, output_dir=output_dir)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
|
|
||||||
@ -0,0 +1,244 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
"""
|
||||||
|
collatz_diagnose_targeted_leaves_failure.py
|
||||||
|
|
||||||
|
Diagnostic report for the failure of "targeted leaves" attempts:
|
||||||
|
explain where closure fails for each tracked root under a given leaf grammar (D/F/D_minor),
|
||||||
|
by locating the earliest depth where both children have no immediately decidable terminal
|
||||||
|
clause (within given k_max/t_max bounds) and by reporting the lower-bound required_m of each child.
|
||||||
|
|
||||||
|
This report is deterministic and intended to guide the design of a stronger leaf grammar.
|
||||||
|
"""
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
import json
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
from collatz_k_core import delta_D, delta_F, fusion_choice_a, prefix_data
|
||||||
|
|
||||||
|
|
||||||
|
def _read_json(path: Path) -> object:
|
||||||
|
return json.loads(path.read_text(encoding="utf-8", errors="strict"))
|
||||||
|
|
||||||
|
|
||||||
|
def _write_json(path: Path, obj: object) -> None:
|
||||||
|
path.parent.mkdir(parents=True, exist_ok=True)
|
||||||
|
path.write_text(json.dumps(obj, indent=2, ensure_ascii=False) + "\n", encoding="utf-8")
|
||||||
|
|
||||||
|
|
||||||
|
def _write_md(path: Path, lines: list[str]) -> None:
|
||||||
|
path.parent.mkdir(parents=True, exist_ok=True)
|
||||||
|
path.write_text("\n".join(lines) + "\n", encoding="utf-8")
|
||||||
|
|
||||||
|
|
||||||
|
def _read_tracked_roots_file(path: Path) -> list[int]:
|
||||||
|
roots: list[int] = []
|
||||||
|
seen: set[int] = set()
|
||||||
|
for line in path.read_text(encoding="utf-8", errors="strict").splitlines():
|
||||||
|
s = line.strip()
|
||||||
|
if not s or s.startswith("#"):
|
||||||
|
continue
|
||||||
|
if "#" in s:
|
||||||
|
s = s.split("#", 1)[0].strip()
|
||||||
|
if not s:
|
||||||
|
continue
|
||||||
|
r = int(s, 10)
|
||||||
|
if r <= 0 or (r % 2) == 0:
|
||||||
|
raise ValueError(f"Invalid tracked root (must be positive odd integer): {r}")
|
||||||
|
if r not in seen:
|
||||||
|
roots.append(r)
|
||||||
|
seen.add(r)
|
||||||
|
return roots
|
||||||
|
|
||||||
|
|
||||||
|
def _best_required_m_D(*, residue: int, k_max: int, search_max_required_m: int) -> int | None:
|
||||||
|
best: int | None = None
|
||||||
|
for k in range(1, k_max + 1):
|
||||||
|
pref = prefix_data(residue, k)
|
||||||
|
req = pref.A + 1
|
||||||
|
if req > search_max_required_m:
|
||||||
|
break
|
||||||
|
if delta_D(pref.A, k) <= 0:
|
||||||
|
continue
|
||||||
|
best = req if best is None else min(best, req)
|
||||||
|
return best
|
||||||
|
|
||||||
|
|
||||||
|
def _best_required_m_F(*, residue: int, t_max: int, search_max_required_m: int) -> int | None:
|
||||||
|
best: int | None = None
|
||||||
|
for t in range(1, t_max + 1):
|
||||||
|
pref = prefix_data(residue, t)
|
||||||
|
req = pref.A + 1
|
||||||
|
if req > search_max_required_m:
|
||||||
|
break
|
||||||
|
a = fusion_choice_a(pref.y)
|
||||||
|
if a is None:
|
||||||
|
continue
|
||||||
|
if delta_F(pref.A, t, a) <= 0:
|
||||||
|
continue
|
||||||
|
best = req if best is None else min(best, req)
|
||||||
|
return best
|
||||||
|
|
||||||
|
|
||||||
|
def _has_any_terminal_now(*, residue: int, m: int, k_max: int, t_max: int) -> bool:
|
||||||
|
# a terminal is "immediately decidable at this node" if there exists a contractive D/F with A+1 <= m.
|
||||||
|
for k in range(1, k_max + 1):
|
||||||
|
pref = prefix_data(residue, k)
|
||||||
|
if pref.A + 1 > m:
|
||||||
|
break
|
||||||
|
if delta_D(pref.A, k) > 0:
|
||||||
|
return True
|
||||||
|
for t in range(1, t_max + 1):
|
||||||
|
pref = prefix_data(residue, t)
|
||||||
|
if pref.A + 1 > m:
|
||||||
|
break
|
||||||
|
a = fusion_choice_a(pref.y)
|
||||||
|
if a is None:
|
||||||
|
continue
|
||||||
|
if delta_F(pref.A, t, a) > 0:
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
def run(
|
||||||
|
*,
|
||||||
|
root_palier: int,
|
||||||
|
tracked_roots_file: Path,
|
||||||
|
k_max: int,
|
||||||
|
t_max: int,
|
||||||
|
search_max_required_m: int,
|
||||||
|
scan_depth: int,
|
||||||
|
output_dir: Path,
|
||||||
|
) -> None:
|
||||||
|
roots = _read_tracked_roots_file(tracked_roots_file)
|
||||||
|
if not roots:
|
||||||
|
raise ValueError("tracked roots list is empty")
|
||||||
|
|
||||||
|
rows: list[dict[str, object]] = []
|
||||||
|
for r0 in roots:
|
||||||
|
# we scan along refinement levels m = root_palier .. root_palier+scan_depth-1
|
||||||
|
# to find the first m where BOTH children at level m+1 have no immediate terminal.
|
||||||
|
fail_m: int | None = None
|
||||||
|
for m in range(root_palier, root_palier + scan_depth):
|
||||||
|
step = 1 << m
|
||||||
|
c0 = r0 if m == root_palier else None
|
||||||
|
# At level m, root corresponds to residue r0 modulo 2^root_palier, but at deeper levels
|
||||||
|
# there are many nodes; here we diagnose the *two direct children at level root_palier+1*
|
||||||
|
# which are the relevant split for S_root.
|
||||||
|
if m != root_palier:
|
||||||
|
break
|
||||||
|
child_low = r0
|
||||||
|
child_high = r0 + (1 << root_palier)
|
||||||
|
ok_low = _has_any_terminal_now(residue=child_low, m=root_palier + 1, k_max=k_max, t_max=t_max)
|
||||||
|
ok_high = _has_any_terminal_now(residue=child_high, m=root_palier + 1, k_max=k_max, t_max=t_max)
|
||||||
|
if (not ok_low) and (not ok_high):
|
||||||
|
fail_m = root_palier
|
||||||
|
break
|
||||||
|
|
||||||
|
child_low = r0
|
||||||
|
child_high = r0 + (1 << root_palier)
|
||||||
|
lbD_low = _best_required_m_D(residue=child_low, k_max=k_max, search_max_required_m=search_max_required_m)
|
||||||
|
lbF_low = _best_required_m_F(residue=child_low, t_max=t_max, search_max_required_m=search_max_required_m)
|
||||||
|
lb_any_low = min([x for x in [lbD_low, lbF_low] if x is not None], default=None)
|
||||||
|
lbD_high = _best_required_m_D(residue=child_high, k_max=k_max, search_max_required_m=search_max_required_m)
|
||||||
|
lbF_high = _best_required_m_F(residue=child_high, t_max=t_max, search_max_required_m=search_max_required_m)
|
||||||
|
lb_any_high = min([x for x in [lbD_high, lbF_high] if x is not None], default=None)
|
||||||
|
lb_root = max([x for x in [lb_any_low, lb_any_high] if x is not None], default=None)
|
||||||
|
|
||||||
|
rows.append(
|
||||||
|
{
|
||||||
|
"root": r0,
|
||||||
|
"children": [child_low, child_high],
|
||||||
|
"immediate_terminal_at_m16": {
|
||||||
|
"low": _has_any_terminal_now(residue=child_low, m=root_palier + 1, k_max=k_max, t_max=t_max),
|
||||||
|
"high": _has_any_terminal_now(residue=child_high, m=root_palier + 1, k_max=k_max, t_max=t_max),
|
||||||
|
},
|
||||||
|
"lower_bounds_required_m": {
|
||||||
|
"low": {"any": lb_any_low, "D": lbD_low, "F": lbF_low},
|
||||||
|
"high": {"any": lb_any_high, "D": lbD_high, "F": lbF_high},
|
||||||
|
"root": lb_root,
|
||||||
|
},
|
||||||
|
"first_m_where_both_children_blocked": fail_m,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
out_json = output_dir / f"diagnostic_targeted_leaves_failure_mod2p{root_palier}.json"
|
||||||
|
out_md = output_dir / f"diagnostic_targeted_leaves_failure_mod2p{root_palier}.md"
|
||||||
|
_write_json(
|
||||||
|
out_json,
|
||||||
|
{
|
||||||
|
"domain": {"root_palier": root_palier},
|
||||||
|
"params": {"k_max": k_max, "t_max": t_max, "search_max_required_m": search_max_required_m, "scan_depth": scan_depth},
|
||||||
|
"counts": {"tracked_roots": len(rows)},
|
||||||
|
"rows": rows,
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
|
md: list[str] = []
|
||||||
|
md.append("**Auteur** : Équipe 4NK")
|
||||||
|
md.append("")
|
||||||
|
md.append(f"# Diagnostic — échec targeted leaves — racine 2^{root_palier}")
|
||||||
|
md.append("")
|
||||||
|
md.append(f"- tracked_roots_file : `{tracked_roots_file}`")
|
||||||
|
md.append(f"- k_max : {k_max}")
|
||||||
|
md.append(f"- t_max : {t_max}")
|
||||||
|
md.append(f"- search_max_required_m : {search_max_required_m}")
|
||||||
|
md.append("")
|
||||||
|
md.append("Table (par racine) :")
|
||||||
|
md.append("")
|
||||||
|
md.append("| root | child_low | child_high | immediate_low@16 | immediate_high@16 | lb_root | lb_low | lb_high |")
|
||||||
|
md.append("| --- | --- | --- | --- | --- | --- | --- | --- |")
|
||||||
|
for r in rows[:80]:
|
||||||
|
root = int(r["root"]) # type: ignore[arg-type]
|
||||||
|
ch = r["children"] # type: ignore[assignment]
|
||||||
|
low = int(ch[0]) # type: ignore[index]
|
||||||
|
high = int(ch[1]) # type: ignore[index]
|
||||||
|
imm = r["immediate_terminal_at_m16"] # type: ignore[assignment]
|
||||||
|
imm_low = "yes" if imm["low"] else "no" # type: ignore[index]
|
||||||
|
imm_high = "yes" if imm["high"] else "no" # type: ignore[index]
|
||||||
|
lbs = r["lower_bounds_required_m"] # type: ignore[assignment]
|
||||||
|
lb_root = lbs["root"] # type: ignore[index]
|
||||||
|
lb_low = lbs["low"]["any"] # type: ignore[index]
|
||||||
|
lb_high = lbs["high"]["any"] # type: ignore[index]
|
||||||
|
md.append(f"| {root} | {low} | {high} | {imm_low} | {imm_high} | {'' if lb_root is None else lb_root} | {'' if lb_low is None else lb_low} | {'' if lb_high is None else lb_high} |")
|
||||||
|
md.append("")
|
||||||
|
md.append("## Sorties")
|
||||||
|
md.append("")
|
||||||
|
md.append(f"- JSON : `{out_json}`")
|
||||||
|
md.append(f"- Markdown : `{out_md}`")
|
||||||
|
md.append("")
|
||||||
|
_write_md(out_md, md)
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
ap = argparse.ArgumentParser(description="Diagnose why targeted leaves closure fails for a tracked roots list")
|
||||||
|
ap.add_argument("--root-palier", type=int, default=15)
|
||||||
|
ap.add_argument("--tracked-roots-file", required=True)
|
||||||
|
ap.add_argument("--k-max", type=int, default=256)
|
||||||
|
ap.add_argument("--t-max", type=int, default=256)
|
||||||
|
ap.add_argument("--search-max-required-m", type=int, default=256)
|
||||||
|
ap.add_argument("--scan-depth", type=int, default=1)
|
||||||
|
ap.add_argument("--output-dir", default="", help="Output directory (defaults under docs/artefacts/...)")
|
||||||
|
args = ap.parse_args()
|
||||||
|
|
||||||
|
root_palier = int(args.root_palier)
|
||||||
|
output_dir = Path(args.output_dir).resolve() if args.output_dir.strip() else (
|
||||||
|
Path("docs") / "artefacts" / "collatz" / "refinement_K" / f"palier2p{root_palier}" / "targeted_leaves"
|
||||||
|
).resolve()
|
||||||
|
run(
|
||||||
|
root_palier=root_palier,
|
||||||
|
tracked_roots_file=Path(args.tracked_roots_file).resolve(),
|
||||||
|
k_max=int(args.k_max),
|
||||||
|
t_max=int(args.t_max),
|
||||||
|
search_max_required_m=int(args.search_max_required_m),
|
||||||
|
scan_depth=int(args.scan_depth),
|
||||||
|
output_dir=output_dir,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
|
|
||||||
@ -0,0 +1,190 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
"""
|
||||||
|
collatz_verify_brother_derived_minorated_clauses_over_Sm.py
|
||||||
|
|
||||||
|
Deterministic verification of D_minor leaves derived "by brothers" from a terminal D_exact artefact.
|
||||||
|
"""
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
import json
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
from collatz_k_core import prefix_data
|
||||||
|
|
||||||
|
|
||||||
|
def _read_json(path: Path) -> object:
|
||||||
|
return json.loads(path.read_text(encoding="utf-8", errors="strict"))
|
||||||
|
|
||||||
|
|
||||||
|
def _write_json(path: Path, obj: object) -> None:
|
||||||
|
path.parent.mkdir(parents=True, exist_ok=True)
|
||||||
|
path.write_text(json.dumps(obj, indent=2, ensure_ascii=False) + "\n", encoding="utf-8")
|
||||||
|
|
||||||
|
|
||||||
|
def _write_md(path: Path, lines: list[str]) -> None:
|
||||||
|
path.parent.mkdir(parents=True, exist_ok=True)
|
||||||
|
path.write_text("\n".join(lines) + "\n", encoding="utf-8")
|
||||||
|
|
||||||
|
|
||||||
|
def _req_int(d: dict[str, object], key: str) -> int:
|
||||||
|
v = d.get(key)
|
||||||
|
if not isinstance(v, int):
|
||||||
|
raise ValueError(f"Expected int for {key}")
|
||||||
|
return v
|
||||||
|
|
||||||
|
|
||||||
|
def _u_min_for_k(k: int) -> int:
|
||||||
|
return (3**k).bit_length()
|
||||||
|
|
||||||
|
|
||||||
|
def run(*, derived_json: Path, output_dir: Path) -> None:
|
||||||
|
obj = _read_json(derived_json)
|
||||||
|
if not isinstance(obj, dict):
|
||||||
|
raise ValueError("Invalid derived JSON: expected object")
|
||||||
|
domain = obj.get("domain")
|
||||||
|
inputs = obj.get("inputs")
|
||||||
|
clauses = obj.get("clauses")
|
||||||
|
if not isinstance(domain, dict) or not isinstance(inputs, dict) or not isinstance(clauses, list):
|
||||||
|
raise ValueError("Invalid derived JSON: missing domain/inputs/clauses")
|
||||||
|
palier = _req_int(domain, "palier")
|
||||||
|
terminal_json_raw = inputs.get("terminal_json")
|
||||||
|
if not isinstance(terminal_json_raw, str) or not terminal_json_raw:
|
||||||
|
raise ValueError("Invalid derived JSON: inputs.terminal_json must be a non-empty string")
|
||||||
|
|
||||||
|
terminal_json = Path(terminal_json_raw).resolve()
|
||||||
|
term_obj = _read_json(terminal_json)
|
||||||
|
if not isinstance(term_obj, dict):
|
||||||
|
raise ValueError("Invalid terminal JSON: expected object")
|
||||||
|
term_clauses = term_obj.get("clauses")
|
||||||
|
if not isinstance(term_clauses, list) or not all(isinstance(x, dict) for x in term_clauses):
|
||||||
|
raise ValueError("Invalid terminal JSON: missing clauses list")
|
||||||
|
|
||||||
|
exact_by_res: dict[int, dict[str, object]] = {}
|
||||||
|
for c in term_clauses:
|
||||||
|
if c.get("kind") != "D_exact":
|
||||||
|
continue
|
||||||
|
if c.get("modulus_power") != palier:
|
||||||
|
continue
|
||||||
|
r = c.get("residue_mod_2p")
|
||||||
|
if isinstance(r, int):
|
||||||
|
exact_by_res[r] = c
|
||||||
|
|
||||||
|
ok = 0
|
||||||
|
errors: list[str] = []
|
||||||
|
|
||||||
|
for c in clauses:
|
||||||
|
if not isinstance(c, dict):
|
||||||
|
raise ValueError("Invalid clause entry: expected object")
|
||||||
|
if c.get("kind") != "D_minor":
|
||||||
|
raise ValueError("Invalid clause entry: kind must be D_minor")
|
||||||
|
m = _req_int(c, "modulus_power")
|
||||||
|
r = _req_int(c, "residue_mod_2p")
|
||||||
|
k = _req_int(c, "k")
|
||||||
|
uA = _req_int(c, "underlineA")
|
||||||
|
numerator_B_k = _req_int(c, "numerator_B_k")
|
||||||
|
A_km1 = _req_int(c, "A_km1")
|
||||||
|
C_km1 = _req_int(c, "C_km1")
|
||||||
|
N0 = _req_int(c, "N0")
|
||||||
|
derived_from = c.get("derived_from")
|
||||||
|
if not isinstance(derived_from, dict):
|
||||||
|
raise ValueError("Invalid clause entry: missing derived_from object")
|
||||||
|
derived_from_res = _req_int(derived_from, "residue_mod_2p")
|
||||||
|
|
||||||
|
if m != palier:
|
||||||
|
raise ValueError("Invalid clause entry: modulus_power mismatch vs header palier")
|
||||||
|
if uA != _u_min_for_k(k):
|
||||||
|
errors.append(f"underlineA != u_min(k) for r={r} (k={k})")
|
||||||
|
continue
|
||||||
|
if uA > palier:
|
||||||
|
errors.append(f"underlineA > palier for r={r}")
|
||||||
|
continue
|
||||||
|
if A_km1 + 1 > palier:
|
||||||
|
errors.append(f"Prefix stability violated for r={r}")
|
||||||
|
continue
|
||||||
|
|
||||||
|
term = exact_by_res.get(derived_from_res)
|
||||||
|
if term is None:
|
||||||
|
errors.append(f"missing source D_exact residue={derived_from_res} for r={r}")
|
||||||
|
continue
|
||||||
|
k_src = term.get("k_or_t")
|
||||||
|
C_k_src = term.get("C")
|
||||||
|
if not isinstance(k_src, int) or not isinstance(C_k_src, int):
|
||||||
|
errors.append(f"invalid source D_exact fields for residue={derived_from_res}")
|
||||||
|
continue
|
||||||
|
if k_src != k:
|
||||||
|
errors.append(f"source k mismatch for r={r}: got {k}, source {k_src}")
|
||||||
|
continue
|
||||||
|
|
||||||
|
pref = prefix_data(r, k - 1)
|
||||||
|
if int(pref.A) != A_km1 or int(pref.C) != C_km1:
|
||||||
|
errors.append(f"prefix data mismatch for r={r}")
|
||||||
|
continue
|
||||||
|
expected_B_k = 3 * C_km1 + (1 << A_km1)
|
||||||
|
if expected_B_k != numerator_B_k:
|
||||||
|
errors.append(f"numerator_B_k mismatch for r={r}")
|
||||||
|
continue
|
||||||
|
if expected_B_k != C_k_src:
|
||||||
|
errors.append(f"B_k != C_k(source) for r={r}")
|
||||||
|
continue
|
||||||
|
if ((3**k) * r + numerator_B_k) % (1 << uA) != 0:
|
||||||
|
errors.append(f"divisibility failed for r={r}")
|
||||||
|
continue
|
||||||
|
delta_min = (1 << uA) - (3**k)
|
||||||
|
if delta_min <= 0:
|
||||||
|
errors.append(f"delta_min <= 0 for r={r}")
|
||||||
|
continue
|
||||||
|
expected_N0 = (numerator_B_k // delta_min) + 1
|
||||||
|
if expected_N0 != N0:
|
||||||
|
errors.append(f"N0 mismatch for r={r}: got {N0}, expected {expected_N0}")
|
||||||
|
continue
|
||||||
|
|
||||||
|
ok += 1
|
||||||
|
|
||||||
|
out_json = output_dir / f"verification_D_minor_derived_from_brothers_over_Sm_mod2p{palier}.json"
|
||||||
|
out_md = output_dir / f"verification_D_minor_derived_from_brothers_over_Sm_mod2p{palier}.md"
|
||||||
|
|
||||||
|
out = {
|
||||||
|
"domain": {"palier": palier},
|
||||||
|
"inputs": {"derived_json": str(derived_json), "terminal_json": str(terminal_json)},
|
||||||
|
"counts": {"total": len(clauses), "ok": ok, "errors": len(errors)},
|
||||||
|
"ok": (ok == len(clauses)),
|
||||||
|
"errors_sample": errors[:50],
|
||||||
|
}
|
||||||
|
_write_json(out_json, out)
|
||||||
|
|
||||||
|
md: list[str] = []
|
||||||
|
md.append("**Auteur** : Équipe 4NK")
|
||||||
|
md.append("")
|
||||||
|
md.append(f"# Vérification — clauses D minorées dérivées par frères sur S_M (2^{palier})")
|
||||||
|
md.append("")
|
||||||
|
md.append(f"- total : {len(clauses)}")
|
||||||
|
md.append(f"- ok : {ok}")
|
||||||
|
md.append(f"- errors : {len(errors)}")
|
||||||
|
md.append(f"- ok_all : {out['ok']}")
|
||||||
|
md.append("")
|
||||||
|
if errors:
|
||||||
|
md.append("## Erreurs (extrait)")
|
||||||
|
md.append("")
|
||||||
|
for e in errors[:30]:
|
||||||
|
md.append(f"- {e}")
|
||||||
|
md.append("")
|
||||||
|
_write_md(out_md, md)
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
ap = argparse.ArgumentParser(description="Verify brother-derived D_minor clauses over S_M")
|
||||||
|
ap.add_argument("--derived-json", required=True)
|
||||||
|
ap.add_argument("--output-dir", default="", help="Output directory (defaults to same directory as input)")
|
||||||
|
args = ap.parse_args()
|
||||||
|
|
||||||
|
derived_json = Path(args.derived_json).resolve()
|
||||||
|
output_dir = Path(args.output_dir).resolve() if args.output_dir.strip() else derived_json.parent
|
||||||
|
run(derived_json=derived_json, output_dir=output_dir)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
|
|
||||||
@ -0,0 +1,235 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
"""
|
||||||
|
collatz_verify_hensel_chain_leaves.py
|
||||||
|
|
||||||
|
Deterministic verification of Hensel-chain leaf certificates produced by
|
||||||
|
collatz_build_hensel_chain_leaves.py.
|
||||||
|
"""
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
import json
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
from collatz_k_core import delta_D, delta_F, fusion_choice_a, N0_D, Nf_F, prefix_data, preimage_m, v2_fast
|
||||||
|
|
||||||
|
|
||||||
|
def _read_json(path: Path) -> object:
|
||||||
|
return json.loads(path.read_text(encoding="utf-8", errors="strict"))
|
||||||
|
|
||||||
|
|
||||||
|
def _write_json(path: Path, obj: object) -> None:
|
||||||
|
path.parent.mkdir(parents=True, exist_ok=True)
|
||||||
|
path.write_text(json.dumps(obj, indent=2, ensure_ascii=False) + "\n", encoding="utf-8")
|
||||||
|
|
||||||
|
|
||||||
|
def _write_md(path: Path, lines: list[str]) -> None:
|
||||||
|
path.parent.mkdir(parents=True, exist_ok=True)
|
||||||
|
path.write_text("\n".join(lines) + "\n", encoding="utf-8")
|
||||||
|
|
||||||
|
|
||||||
|
def _req_int(d: dict[str, object], key: str) -> int:
|
||||||
|
v = d.get(key)
|
||||||
|
if not isinstance(v, int):
|
||||||
|
raise ValueError(f"Expected int for {key}")
|
||||||
|
return v
|
||||||
|
|
||||||
|
|
||||||
|
def _verify_leaf(*, leaf: dict[str, object], k_leaf_max: int, t_leaf_max: int) -> None:
|
||||||
|
kind = leaf.get("kind")
|
||||||
|
m = leaf.get("modulus_power")
|
||||||
|
r = leaf.get("residue_mod_2p")
|
||||||
|
k_or_t = leaf.get("k_or_t")
|
||||||
|
A = leaf.get("A")
|
||||||
|
thr = leaf.get("threshold")
|
||||||
|
extra = leaf.get("extra")
|
||||||
|
if not isinstance(m, int) or not isinstance(r, int) or not isinstance(k_or_t, int) or not isinstance(thr, int) or not isinstance(extra, dict):
|
||||||
|
raise ValueError("Invalid leaf structure")
|
||||||
|
if kind == "D_exact":
|
||||||
|
if not isinstance(A, int):
|
||||||
|
raise ValueError("D_exact A missing")
|
||||||
|
if k_or_t < 1 or k_or_t > k_leaf_max:
|
||||||
|
raise ValueError("D_exact k out of range")
|
||||||
|
pref = prefix_data(r, k_or_t)
|
||||||
|
if pref.A != A:
|
||||||
|
raise ValueError("D_exact A mismatch")
|
||||||
|
if pref.A + 1 > m:
|
||||||
|
raise ValueError("D_exact requires m>=A+1")
|
||||||
|
if delta_D(pref.A, k_or_t) <= 0:
|
||||||
|
raise ValueError("D_exact Δ_D <=0")
|
||||||
|
if N0_D(pref.C, pref.A, k_or_t) != thr:
|
||||||
|
raise ValueError("D_exact N0 mismatch")
|
||||||
|
return
|
||||||
|
if kind == "F":
|
||||||
|
if not isinstance(A, int):
|
||||||
|
raise ValueError("F A missing")
|
||||||
|
if k_or_t < 1 or k_or_t > t_leaf_max:
|
||||||
|
raise ValueError("F t out of range")
|
||||||
|
pref = prefix_data(r, k_or_t)
|
||||||
|
if pref.A != A:
|
||||||
|
raise ValueError("F A mismatch")
|
||||||
|
if pref.A + 1 > m:
|
||||||
|
raise ValueError("F requires m>=A+1")
|
||||||
|
a = fusion_choice_a(pref.y)
|
||||||
|
if a is None:
|
||||||
|
raise ValueError("F y mod3 ==0")
|
||||||
|
if delta_F(pref.A, k_or_t, a) <= 0:
|
||||||
|
raise ValueError("F Δ_F <=0")
|
||||||
|
if Nf_F(pref.C, pref.A, k_or_t, a) != thr:
|
||||||
|
raise ValueError("F Nf mismatch")
|
||||||
|
if extra.get("preimage_m") != preimage_m(pref.y, a):
|
||||||
|
raise ValueError("F preimage_m mismatch")
|
||||||
|
return
|
||||||
|
if kind == "D_minor":
|
||||||
|
u = extra.get("underlineA")
|
||||||
|
Akm1 = extra.get("A_km1")
|
||||||
|
Ckm1 = extra.get("C_km1")
|
||||||
|
Bk = extra.get("B_k")
|
||||||
|
if not isinstance(u, int) or not isinstance(Akm1, int) or not isinstance(Ckm1, int) or not isinstance(Bk, int):
|
||||||
|
raise ValueError("D_minor extra fields missing")
|
||||||
|
if u != m:
|
||||||
|
raise ValueError("D_minor expects underlineA == modulus_power in this certificate")
|
||||||
|
if k_or_t < 2:
|
||||||
|
raise ValueError("D_minor k must be >=2")
|
||||||
|
pref = prefix_data(r, k_or_t - 1)
|
||||||
|
if pref.A != Akm1 or pref.C != Ckm1:
|
||||||
|
raise ValueError("D_minor prefix mismatch")
|
||||||
|
exp_Bk = 3 * pref.C + (1 << pref.A)
|
||||||
|
if exp_Bk != Bk:
|
||||||
|
raise ValueError("D_minor B_k mismatch")
|
||||||
|
if v2_fast((3**k_or_t) * r + Bk) < u:
|
||||||
|
raise ValueError("D_minor divisibility mismatch")
|
||||||
|
d = (1 << u) - (3**k_or_t)
|
||||||
|
if d <= 0:
|
||||||
|
raise ValueError("D_minor Δ<=0")
|
||||||
|
exp_N0 = (Bk // d) + 1
|
||||||
|
if exp_N0 != thr:
|
||||||
|
raise ValueError("D_minor N0 mismatch")
|
||||||
|
return
|
||||||
|
raise ValueError(f"Unknown leaf kind: {kind!r}")
|
||||||
|
|
||||||
|
|
||||||
|
def run(*, leaves_json: Path, output_dir: Path) -> None:
|
||||||
|
obj = _read_json(leaves_json)
|
||||||
|
if not isinstance(obj, dict):
|
||||||
|
raise ValueError("Invalid leaves JSON")
|
||||||
|
domain = obj.get("domain")
|
||||||
|
params = obj.get("params")
|
||||||
|
clauses = obj.get("clauses")
|
||||||
|
if not isinstance(domain, dict) or not isinstance(params, dict) or not isinstance(clauses, list):
|
||||||
|
raise ValueError("Invalid leaves JSON: missing domain/params/clauses")
|
||||||
|
root_palier = _req_int(domain, "palier")
|
||||||
|
k_leaf_max = _req_int(params, "k_leaf_max")
|
||||||
|
t_leaf_max = _req_int(params, "t_leaf_max")
|
||||||
|
|
||||||
|
ok = 0
|
||||||
|
errors: list[str] = []
|
||||||
|
for c in clauses:
|
||||||
|
if not isinstance(c, dict):
|
||||||
|
raise ValueError("Invalid clause entry")
|
||||||
|
if c.get("kind") != "HenselChainLeaf":
|
||||||
|
raise ValueError("Invalid clause kind (expected HenselChainLeaf)")
|
||||||
|
if c.get("modulus_power") != root_palier:
|
||||||
|
raise ValueError("modulus_power mismatch")
|
||||||
|
r0 = c.get("residue_mod_2p")
|
||||||
|
cert_path = c.get("certificate_path")
|
||||||
|
if not isinstance(r0, int) or not isinstance(cert_path, str):
|
||||||
|
raise ValueError("Invalid clause entry: residue/certificate_path")
|
||||||
|
cert = _read_json(Path(cert_path))
|
||||||
|
if not isinstance(cert, dict):
|
||||||
|
errors.append(f"invalid cert json for r={r0}")
|
||||||
|
continue
|
||||||
|
dom = cert.get("domain")
|
||||||
|
chain = cert.get("chain")
|
||||||
|
if not isinstance(dom, dict) or not isinstance(chain, dict):
|
||||||
|
errors.append(f"invalid cert structure for r={r0}")
|
||||||
|
continue
|
||||||
|
if _req_int(dom, "root_palier") != root_palier or _req_int(dom, "root_residue_mod_2p") != r0:
|
||||||
|
errors.append(f"domain mismatch for r={r0}")
|
||||||
|
continue
|
||||||
|
k = _req_int(dom, "k")
|
||||||
|
m_end = _req_int(dom, "m_end")
|
||||||
|
steps = chain.get("steps")
|
||||||
|
final = chain.get("final")
|
||||||
|
if not isinstance(steps, list) or not all(isinstance(x, dict) for x in steps) or not isinstance(final, dict):
|
||||||
|
errors.append(f"invalid chain steps/final for r={r0}")
|
||||||
|
continue
|
||||||
|
# Verify chain monotonicity and sibling leaves
|
||||||
|
chain_r = r0
|
||||||
|
for st in steps:
|
||||||
|
m = _req_int(st, "m")
|
||||||
|
chain_next = _req_int(st, "chain_r")
|
||||||
|
sibling = _req_int(st, "sibling_r")
|
||||||
|
leaf = st.get("sibling_leaf")
|
||||||
|
if not isinstance(leaf, dict):
|
||||||
|
errors.append(f"missing sibling_leaf for r={r0}")
|
||||||
|
break
|
||||||
|
if m <= root_palier or m > m_end:
|
||||||
|
errors.append(f"invalid step m for r={r0}")
|
||||||
|
break
|
||||||
|
step = 1 << (m - 1)
|
||||||
|
if not (chain_next == chain_r or chain_next == chain_r + step):
|
||||||
|
errors.append(f"invalid chain transition for r={r0}")
|
||||||
|
break
|
||||||
|
if not (sibling == chain_r or sibling == chain_r + step):
|
||||||
|
errors.append(f"invalid sibling for r={r0}")
|
||||||
|
break
|
||||||
|
if sibling == chain_next:
|
||||||
|
errors.append(f"sibling equals chain for r={r0}")
|
||||||
|
break
|
||||||
|
chain_r = chain_next
|
||||||
|
try:
|
||||||
|
_verify_leaf(leaf=leaf, k_leaf_max=k_leaf_max, t_leaf_max=t_leaf_max)
|
||||||
|
except Exception as e:
|
||||||
|
errors.append(f"sibling leaf invalid for r={r0}: {e}")
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
# final leaf at m_end on chain_r
|
||||||
|
try:
|
||||||
|
_verify_leaf(leaf=final, k_leaf_max=k_leaf_max, t_leaf_max=t_leaf_max)
|
||||||
|
except Exception as e:
|
||||||
|
errors.append(f"final leaf invalid for r={r0}: {e}")
|
||||||
|
else:
|
||||||
|
ok += 1
|
||||||
|
|
||||||
|
out_json = output_dir / f"verification_hensel_chain_leaves_mod2p{root_palier}.json"
|
||||||
|
out_md = output_dir / f"verification_hensel_chain_leaves_mod2p{root_palier}.md"
|
||||||
|
_write_json(
|
||||||
|
out_json,
|
||||||
|
{"domain": {"palier": root_palier}, "counts": {"total": len(clauses), "ok": ok, "errors": len(errors)}, "ok": ok == len(clauses), "errors_sample": errors[:50]},
|
||||||
|
)
|
||||||
|
md: list[str] = []
|
||||||
|
md.append("**Auteur** : Équipe 4NK")
|
||||||
|
md.append("")
|
||||||
|
md.append(f"# Vérification — feuilles “chaîne de Hensel” — 2^{root_palier}")
|
||||||
|
md.append("")
|
||||||
|
md.append(f"- total : {len(clauses)}")
|
||||||
|
md.append(f"- ok : {ok}")
|
||||||
|
md.append(f"- errors : {len(errors)}")
|
||||||
|
md.append(f"- ok_all : {ok == len(clauses)}")
|
||||||
|
md.append("")
|
||||||
|
if errors:
|
||||||
|
md.append("## Erreurs (extrait)")
|
||||||
|
md.append("")
|
||||||
|
for e in errors[:30]:
|
||||||
|
md.append(f"- {e}")
|
||||||
|
md.append("")
|
||||||
|
_write_md(out_md, md)
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
ap = argparse.ArgumentParser(description="Verify Hensel-chain leaves certificates")
|
||||||
|
ap.add_argument("--leaves-json", required=True)
|
||||||
|
ap.add_argument("--output-dir", default="", help="Output directory (defaults to same directory as input)")
|
||||||
|
args = ap.parse_args()
|
||||||
|
|
||||||
|
leaves_json = Path(args.leaves_json).resolve()
|
||||||
|
output_dir = Path(args.output_dir).resolve() if args.output_dir.strip() else leaves_json.parent
|
||||||
|
run(leaves_json=leaves_json, output_dir=output_dir)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
|
|
||||||
@ -0,0 +1,284 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
"""
|
||||||
|
collatz_verify_targeted_refinement_leaves.py
|
||||||
|
|
||||||
|
Deterministic verification of per-root targeted leaf certificates produced by
|
||||||
|
collatz_build_targeted_refinement_leaves.py.
|
||||||
|
"""
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
import json
|
||||||
|
from dataclasses import dataclass
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
from collatz_k_core import delta_D, delta_F, fusion_choice_a, N0_D, Nf_F, prefix_data, preimage_m
|
||||||
|
|
||||||
|
|
||||||
|
def _read_json(path: Path) -> object:
|
||||||
|
return json.loads(path.read_text(encoding="utf-8", errors="strict"))
|
||||||
|
|
||||||
|
|
||||||
|
def _write_json(path: Path, obj: object) -> None:
|
||||||
|
path.parent.mkdir(parents=True, exist_ok=True)
|
||||||
|
path.write_text(json.dumps(obj, indent=2, ensure_ascii=False) + "\n", encoding="utf-8")
|
||||||
|
|
||||||
|
|
||||||
|
def _write_md(path: Path, lines: list[str]) -> None:
|
||||||
|
path.parent.mkdir(parents=True, exist_ok=True)
|
||||||
|
path.write_text("\n".join(lines) + "\n", encoding="utf-8")
|
||||||
|
|
||||||
|
|
||||||
|
def _req_int(d: dict[str, object], key: str) -> int:
|
||||||
|
v = d.get(key)
|
||||||
|
if not isinstance(v, int):
|
||||||
|
raise ValueError(f"Expected int for {key}")
|
||||||
|
return v
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass(frozen=True)
|
||||||
|
class Stats:
|
||||||
|
nodes: int
|
||||||
|
leaves: int
|
||||||
|
max_m: int
|
||||||
|
|
||||||
|
|
||||||
|
def _verify_leaf(*, leaf: dict[str, object], m: int, r: int, k_max: int, t_max: int) -> None:
|
||||||
|
kind = leaf.get("kind")
|
||||||
|
if kind == "D_minor":
|
||||||
|
k = leaf.get("k_or_t")
|
||||||
|
thr = leaf.get("threshold")
|
||||||
|
extra = leaf.get("extra")
|
||||||
|
# precomputed leaves omit details
|
||||||
|
if k is None and thr is None:
|
||||||
|
return
|
||||||
|
if not isinstance(k, int) or not isinstance(thr, int) or not isinstance(extra, dict):
|
||||||
|
raise ValueError("Invalid D_minor leaf structure")
|
||||||
|
u = extra.get("underlineA")
|
||||||
|
Akm1 = extra.get("A_km1")
|
||||||
|
Ckm1 = extra.get("C_km1")
|
||||||
|
Bk = extra.get("B_k")
|
||||||
|
if not isinstance(u, int) or not isinstance(Akm1, int) or not isinstance(Ckm1, int) or not isinstance(Bk, int):
|
||||||
|
raise ValueError("Invalid D_minor extra fields")
|
||||||
|
if u > m:
|
||||||
|
raise ValueError("D_minor requires underlineA <= m")
|
||||||
|
pref = prefix_data(r, k - 1)
|
||||||
|
if pref.A != Akm1 or pref.C != Ckm1:
|
||||||
|
raise ValueError("D_minor prefix mismatch")
|
||||||
|
expected_Bk = 3 * pref.C + (1 << pref.A)
|
||||||
|
if expected_Bk != Bk:
|
||||||
|
raise ValueError("D_minor B_k mismatch")
|
||||||
|
if ((3**k) * r + Bk) % (1 << u) != 0:
|
||||||
|
raise ValueError("D_minor divisibility mismatch")
|
||||||
|
d = (1 << u) - (3**k)
|
||||||
|
if d <= 0:
|
||||||
|
raise ValueError("D_minor Δ <= 0")
|
||||||
|
expected_N0 = (Bk // d) + 1
|
||||||
|
if expected_N0 != thr:
|
||||||
|
raise ValueError("D_minor N0 mismatch")
|
||||||
|
return
|
||||||
|
if kind == "D_exact":
|
||||||
|
k = leaf.get("k_or_t")
|
||||||
|
A = leaf.get("A")
|
||||||
|
thr = leaf.get("threshold")
|
||||||
|
extra = leaf.get("extra")
|
||||||
|
if not isinstance(k, int) or not isinstance(A, int) or not isinstance(thr, int) or not isinstance(extra, dict):
|
||||||
|
raise ValueError("Invalid D_exact leaf structure")
|
||||||
|
if k < 1 or k > k_max:
|
||||||
|
raise ValueError("D_exact k out of range vs params")
|
||||||
|
pref = prefix_data(r, k)
|
||||||
|
if pref.A != A:
|
||||||
|
raise ValueError("D_exact A mismatch")
|
||||||
|
if pref.A + 1 > m:
|
||||||
|
raise ValueError("D_exact requires m >= A+1")
|
||||||
|
if delta_D(pref.A, k) <= 0:
|
||||||
|
raise ValueError("D_exact Δ_D <= 0")
|
||||||
|
if N0_D(pref.C, pref.A, k) != thr:
|
||||||
|
raise ValueError("D_exact N0 mismatch")
|
||||||
|
return
|
||||||
|
if kind == "F":
|
||||||
|
t = leaf.get("k_or_t")
|
||||||
|
A = leaf.get("A")
|
||||||
|
thr = leaf.get("threshold")
|
||||||
|
extra = leaf.get("extra")
|
||||||
|
if not isinstance(t, int) or not isinstance(A, int) or not isinstance(thr, int) or not isinstance(extra, dict):
|
||||||
|
raise ValueError("Invalid F leaf structure")
|
||||||
|
if t < 1 or t > t_max:
|
||||||
|
raise ValueError("F t out of range vs params")
|
||||||
|
pref = prefix_data(r, t)
|
||||||
|
if pref.A != A:
|
||||||
|
raise ValueError("F A mismatch")
|
||||||
|
if pref.A + 1 > m:
|
||||||
|
raise ValueError("F requires m >= A+1")
|
||||||
|
a = fusion_choice_a(pref.y)
|
||||||
|
if a is None:
|
||||||
|
raise ValueError("F invalid: y mod3 == 0")
|
||||||
|
if delta_F(pref.A, t, a) <= 0:
|
||||||
|
raise ValueError("F Δ_F <= 0")
|
||||||
|
if Nf_F(pref.C, pref.A, t, a) != thr:
|
||||||
|
raise ValueError("F Nf mismatch")
|
||||||
|
m_pre = preimage_m(pref.y, a)
|
||||||
|
pre2 = extra.get("preimage_m")
|
||||||
|
if not isinstance(pre2, int) or pre2 != m_pre:
|
||||||
|
raise ValueError("F preimage_m mismatch")
|
||||||
|
return
|
||||||
|
raise ValueError(f"Unknown leaf kind: {kind!r}")
|
||||||
|
|
||||||
|
|
||||||
|
def _verify_tree(
|
||||||
|
*,
|
||||||
|
node: dict[str, object],
|
||||||
|
root_palier: int,
|
||||||
|
target_max_palier: int,
|
||||||
|
k_max: int,
|
||||||
|
t_max: int,
|
||||||
|
) -> Stats:
|
||||||
|
m = node.get("m")
|
||||||
|
r = node.get("r")
|
||||||
|
if not isinstance(m, int) or not isinstance(r, int):
|
||||||
|
raise ValueError("Invalid node: missing m/r")
|
||||||
|
if m < root_palier or m > target_max_palier:
|
||||||
|
raise ValueError("Invalid node: m out of bounds")
|
||||||
|
if r <= 0 or (r % 2) == 0:
|
||||||
|
raise ValueError("Invalid node: r must be positive odd")
|
||||||
|
|
||||||
|
leaf = node.get("leaf")
|
||||||
|
children = node.get("children")
|
||||||
|
if leaf is not None and children is not None:
|
||||||
|
raise ValueError("Invalid node: both leaf and children present")
|
||||||
|
if leaf is None and children is None:
|
||||||
|
raise ValueError("Invalid node: neither leaf nor children present")
|
||||||
|
|
||||||
|
if leaf is not None:
|
||||||
|
if not isinstance(leaf, dict):
|
||||||
|
raise ValueError("Invalid leaf: must be object")
|
||||||
|
_verify_leaf(leaf=leaf, m=m, r=r, k_max=k_max, t_max=t_max)
|
||||||
|
return Stats(nodes=1, leaves=1, max_m=m)
|
||||||
|
|
||||||
|
if not isinstance(children, list) or len(children) != 2 or not all(isinstance(x, dict) for x in children):
|
||||||
|
raise ValueError("Invalid children: must be list of 2 objects")
|
||||||
|
step = 1 << m
|
||||||
|
c0 = children[0]
|
||||||
|
c1 = children[1]
|
||||||
|
if c0.get("m") != m + 1 or c1.get("m") != m + 1:
|
||||||
|
raise ValueError("Invalid children: m mismatch")
|
||||||
|
if c0.get("r") != r or c1.get("r") != r + step:
|
||||||
|
raise ValueError("Invalid children: r mismatch")
|
||||||
|
|
||||||
|
s0 = _verify_tree(node=c0, root_palier=root_palier, target_max_palier=target_max_palier, k_max=k_max, t_max=t_max)
|
||||||
|
s1 = _verify_tree(node=c1, root_palier=root_palier, target_max_palier=target_max_palier, k_max=k_max, t_max=t_max)
|
||||||
|
return Stats(nodes=1 + s0.nodes + s1.nodes, leaves=s0.leaves + s1.leaves, max_m=max(m, s0.max_m, s1.max_m))
|
||||||
|
|
||||||
|
|
||||||
|
def run(*, targeted_leaves_json: Path, output_dir: Path) -> None:
|
||||||
|
obj = _read_json(targeted_leaves_json)
|
||||||
|
if not isinstance(obj, dict):
|
||||||
|
raise ValueError("Invalid targeted leaves JSON")
|
||||||
|
domain = obj.get("domain")
|
||||||
|
params = obj.get("params")
|
||||||
|
clauses = obj.get("clauses")
|
||||||
|
if not isinstance(domain, dict) or not isinstance(params, dict) or not isinstance(clauses, list):
|
||||||
|
raise ValueError("Invalid targeted leaves JSON: missing domain/params/clauses")
|
||||||
|
root_palier = _req_int(domain, "palier")
|
||||||
|
k_max = _req_int(params, "k_max")
|
||||||
|
t_max = _req_int(params, "t_max")
|
||||||
|
cap = _req_int(params, "target_max_palier_cap")
|
||||||
|
|
||||||
|
ok = 0
|
||||||
|
errors: list[str] = []
|
||||||
|
total_nodes = 0
|
||||||
|
total_leaves = 0
|
||||||
|
max_m_seen = root_palier
|
||||||
|
for c in clauses:
|
||||||
|
if not isinstance(c, dict):
|
||||||
|
raise ValueError("Invalid clause entry: must be object")
|
||||||
|
if c.get("kind") != "TargetedRefinementLeaf":
|
||||||
|
raise ValueError("Invalid clause entry: kind must be TargetedRefinementLeaf")
|
||||||
|
m = c.get("modulus_power")
|
||||||
|
r = c.get("residue_mod_2p")
|
||||||
|
cert_path = c.get("certificate_path")
|
||||||
|
if m != root_palier or not isinstance(r, int) or not isinstance(cert_path, str):
|
||||||
|
raise ValueError("Invalid clause entry: modulus_power/residue/certificate_path")
|
||||||
|
cert = _read_json(Path(cert_path))
|
||||||
|
if not isinstance(cert, dict):
|
||||||
|
errors.append(f"invalid cert json for r={r}")
|
||||||
|
continue
|
||||||
|
dom = cert.get("domain")
|
||||||
|
par = cert.get("params")
|
||||||
|
tree = cert.get("certificate")
|
||||||
|
if not isinstance(dom, dict) or not isinstance(par, dict) or not isinstance(tree, dict):
|
||||||
|
errors.append(f"invalid cert structure for r={r}")
|
||||||
|
continue
|
||||||
|
if _req_int(dom, "root_palier") != root_palier:
|
||||||
|
errors.append(f"cert root_palier mismatch for r={r}")
|
||||||
|
continue
|
||||||
|
if _req_int(dom, "root_residue_mod_2p") != r:
|
||||||
|
errors.append(f"cert residue mismatch for r={r}")
|
||||||
|
continue
|
||||||
|
target_max = _req_int(dom, "target_max_palier")
|
||||||
|
if target_max > cap:
|
||||||
|
errors.append(f"cert target_max_palier exceeds cap for r={r}")
|
||||||
|
continue
|
||||||
|
if _req_int(par, "k_max") != k_max or _req_int(par, "t_max") != t_max:
|
||||||
|
errors.append(f"cert params mismatch for r={r}")
|
||||||
|
continue
|
||||||
|
try:
|
||||||
|
s = _verify_tree(node=tree, root_palier=root_palier, target_max_palier=target_max, k_max=k_max, t_max=t_max)
|
||||||
|
except Exception as e:
|
||||||
|
errors.append(f"tree verification failed for r={r}: {e}")
|
||||||
|
continue
|
||||||
|
total_nodes += s.nodes
|
||||||
|
total_leaves += s.leaves
|
||||||
|
max_m_seen = max(max_m_seen, s.max_m)
|
||||||
|
ok += 1
|
||||||
|
|
||||||
|
out_json = output_dir / f"verification_targeted_refinement_leaves_mod2p{root_palier}.json"
|
||||||
|
out_md = output_dir / f"verification_targeted_refinement_leaves_mod2p{root_palier}.md"
|
||||||
|
_write_json(
|
||||||
|
out_json,
|
||||||
|
{
|
||||||
|
"domain": {"palier": root_palier},
|
||||||
|
"counts": {"total": len(clauses), "ok": ok, "errors": len(errors)},
|
||||||
|
"stats": {"total_nodes": total_nodes, "total_leaves": total_leaves, "max_m_seen": max_m_seen},
|
||||||
|
"ok": (ok == len(clauses)),
|
||||||
|
"errors_sample": errors[:50],
|
||||||
|
},
|
||||||
|
)
|
||||||
|
md: list[str] = []
|
||||||
|
md.append("**Auteur** : Équipe 4NK")
|
||||||
|
md.append("")
|
||||||
|
md.append(f"# Vérification — feuilles ciblées (raffinement profond local) — 2^{root_palier}")
|
||||||
|
md.append("")
|
||||||
|
md.append(f"- total : {len(clauses)}")
|
||||||
|
md.append(f"- ok : {ok}")
|
||||||
|
md.append(f"- errors : {len(errors)}")
|
||||||
|
md.append(f"- ok_all : {ok == len(clauses)}")
|
||||||
|
md.append(f"- total_nodes : {total_nodes}")
|
||||||
|
md.append(f"- total_leaves : {total_leaves}")
|
||||||
|
md.append(f"- max_m_seen : {max_m_seen}")
|
||||||
|
md.append("")
|
||||||
|
if errors:
|
||||||
|
md.append("## Erreurs (extrait)")
|
||||||
|
md.append("")
|
||||||
|
for e in errors[:30]:
|
||||||
|
md.append(f"- {e}")
|
||||||
|
md.append("")
|
||||||
|
_write_md(out_md, md)
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
ap = argparse.ArgumentParser(description="Verify targeted deep refinement leaves (per-root certificates)")
|
||||||
|
ap.add_argument("--targeted-leaves-json", required=True)
|
||||||
|
ap.add_argument("--output-dir", default="", help="Output directory (defaults to same directory as input)")
|
||||||
|
args = ap.parse_args()
|
||||||
|
|
||||||
|
targeted_leaves_json = Path(args.targeted_leaves_json).resolve()
|
||||||
|
output_dir = Path(args.output_dir).resolve() if args.output_dir.strip() else targeted_leaves_json.parent
|
||||||
|
run(targeted_leaves_json=targeted_leaves_json, output_dir=output_dir)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
|
|
||||||
@ -2588,6 +2588,82 @@ Le cas (255\to 8447) est un représentant typique : le fils “plus profond” e
|
|||||||
Proposition de critère opérationnel (sans hypothèse probabiliste)
|
Proposition de critère opérationnel (sans hypothèse probabiliste)
|
||||||
Pour chaque clause exacte nouvellement trouvée au palier (m+1), tester systématiquement le frère au même palier par une clause minorée construite à partir du même numérateur linéaire (\alpha n+\beta). Quand la valuation du frère est plus élevée, la clause minorée devient souvent immédiate, comme dans la chaîne (255,8447,24831,\dots).
|
Pour chaque clause exacte nouvellement trouvée au palier (m+1), tester systématiquement le frère au même palier par une clause minorée construite à partir du même numérateur linéaire (\alpha n+\beta). Quand la valuation du frère est plus élevée, la clause minorée devient souvent immédiate, comme dans la chaîne (255,8447,24831,\dots).
|
||||||
|
|
||||||
|
### Règle (complétion par frère via clause (D) minorée dérivée)
|
||||||
|
|
||||||
|
**Hypothèses.**
|
||||||
|
- Un palier \(2^m\) et une paire de frères \(r,\ r^\star\in S_m\) telle que \(r^\star=r\oplus 2^{m-1}\) (les deux enfants d’un même parent dans \(S_{m-1}\)).
|
||||||
|
- Une clause exacte \(D\) au palier \(2^m\) pour \(r\), d’horizon \(k\ge 1\), avec numérateur affine \(3^k n + C_k\).
|
||||||
|
- Stabilité de préfixe au rang \(k-1\) sur le frère : \(r^\star \bmod 2^m\) impose les mêmes données \((A_{k-1},C_{k-1})\) que \(r\), donc le même \(B_k=3C_{k-1}+2^{A_{k-1}}=C_k\).
|
||||||
|
- Divisibilité contractante sur le frère : en posant \(\underline A=u_{\min}(k)\) (i.e. \(2^{\underline A}>3^k\)), on a
|
||||||
|
\[
|
||||||
|
v_2(3^k r^\star + B_k)\ \ge\ \underline A,\qquad \underline A\le m.
|
||||||
|
\]
|
||||||
|
|
||||||
|
**Conclusion.**
|
||||||
|
Sous ces hypothèses, la clause (D) minorée \((k,\underline A)\) est valide au palier \(2^m\) pour \(r^\star\) (lemme “validité d’une clause (D) minorée”). En particulier, dans un audit de fermeture par raffinement, un parent \(p\in S_{m-1}\) dont un enfant est couvert par une clause exacte peut devenir un cas “both” au niveau \(m\) via une clause minorée dérivée sur le frère.
|
||||||
|
|
||||||
|
**Version indexée par artefacts (dérivation déterministe des feuilles minorées “frère”).**
|
||||||
|
À palier \(2^m\), la dérivation systématique de clauses \((D)\) minorées pour les frères à partir d’un artefact `clauses_terminal_over_Sm_mod2p<m>.json` est produite par :
|
||||||
|
- `applications/collatz/collatz_k_scripts/collatz_derive_brother_minorated_clauses_from_terminal_over_Sm.py`
|
||||||
|
|
||||||
|
## Extensions de grammaire pour les cas « no/no » (dette d'observabilité)
|
||||||
|
|
||||||
|
Lorsque les deux enfants d'un nœud \((m,r)\) au premier raffinement n'admettent aucune clause terminale immédiatement décidable (\(A+1\le m+1\)), la grammaire actuelle \(D/F/D_{\underline{}}\) impose une **dette d'observabilité** : le raffinement binaire naïf conduit à une explosion combinatoire (taille \(2^{lb-m}\) pour \(lb\) la borne inférieure de profondeur requise). Les quatre pistes suivantes formalisent des extensions possibles, indexées par leurs hypothèses et leurs artefacts.
|
||||||
|
|
||||||
|
### Piste 1 : Raffinement multi-modulus (projection \(\Pi\) étendue)
|
||||||
|
|
||||||
|
**Hypothèses.**
|
||||||
|
- L'observable actuelle est \(\pi_M(n)=n\bmod 2^M\). La décidabilité des clauses dépend de la stabilité du préfixe de valuations à cette granularité.
|
||||||
|
- Pour les clauses de fusion, le choix de \(a\) (paramètre de fusion) dépend de \(y=U^{(t)}(n)\bmod 3\). Si \(y\bmod 3\) n'est pas constant sur la classe \(n\equiv r\pmod{2^m}\), la clause F n'est pas universelle.
|
||||||
|
|
||||||
|
**Énoncé.**
|
||||||
|
On étend la projection à \(\Pi_{(M,s)}: n\mapsto (n\bmod 2^M,\, n\bmod 3^s)\) (ou une autre projection finie). On raffine les nœuds non seulement par le bit \(2^{m}\) mais aussi par la congruence \(n\bmod 3^s\). Une classe \((m,r)\) devient une union de sous-classes \((m,r,b)\) avec \(b\in\{0,1,2\}\) (ou \(b\in\{0,\ldots,3^s-1\}\) si \(s>1\)). Sous hypothèse que \(y\bmod 3\) devient constant sur une sous-classe suffisamment fine, une clause F devient décidable.
|
||||||
|
|
||||||
|
**Indexation.** La conclusion est indexée par le choix de \(s\), le choix de la projection (2-adique vs 3-adique), et le protocole de raffinement (ordre des splits).
|
||||||
|
|
||||||
|
**Statut.** Proposition de recherche ; aucune implémentation ni artefact déterministe n'existe à ce jour.
|
||||||
|
|
||||||
|
### Piste 2 : Clauses \(D_{\underline{}}\) à horizon plus long et paliers plus profonds
|
||||||
|
|
||||||
|
**Hypothèses.**
|
||||||
|
- La grammaire actuelle utilise \(k\le 11\) et \(m\le 18\) pour les clauses minorées. Pour certaines racines extrêmes, le meilleur contractant \(D\) ou \(F\) a \(A+1\ge 50\) (voire 136).
|
||||||
|
- La stabilité du préfixe impose \(A_{k-1}+1\le m\). Pour \(k\) plus grand, \(A_{k-1}\) croît ; pour \(m\) plus grand, la condition devient satisfaisable.
|
||||||
|
|
||||||
|
**Énoncé.**
|
||||||
|
On génère des clauses \(D_{\underline{}}\) pour des \((k,\underline A)\) avec \(k \le k_{\max}\) (par ex. 64) et des paliers \(m\in\{19,\ldots,M_{\max}\}\) (par ex. 21 ou 24). La fermeture multi-niveaux est étendue sur \(S_M\to S_{M_{\max}}\). Les racines dont \(lb\) est dans \([19,M_{\max}]\) peuvent être fermées par ces feuilles dès que \(u_{\min}(k)\le m\) et \(A_{k-1}+1\le m\).
|
||||||
|
|
||||||
|
**Indexation.** La conclusion est indexée par \(k_{\max}\), \(M_{\max}\), et les familles \((k,\underline A)\) effectivement générées.
|
||||||
|
|
||||||
|
**Statut.** Extension mécanique : réutiliser `collatz_generate_minorated_descent_clauses_over_Sm.py` et `collatz_build_refinement_certificate_over_Sm_multilevel.py` avec des paramètres étendus.
|
||||||
|
|
||||||
|
### Piste 3 : Règle de chaîne Hensel (compression linéaire)
|
||||||
|
|
||||||
|
**Hypothèses.**
|
||||||
|
- Pour un \(k\ge 2\) et un résidu \(r\in S_m\), on pose \(L_k(n)=3^k n + B_k\) avec \(B_k=3C_{k-1}+2^{A_{k-1}}\) (préfixe \(k-1\) stable). L'équation \(L_k(n)\equiv 0\pmod{2^s}\) admet une solution unique modulo \(2^s\) (chaîne henselienne).
|
||||||
|
- À chaque palier \(m\to m+1\), un seul des deux enfants prolonge la chaîne (celui pour lequel \(v_2(L_k(n))\ge m+1\)). L'autre enfant (frère) a \(v_2(L_k(n))\) fixé à \(m\).
|
||||||
|
|
||||||
|
**Énoncé.**
|
||||||
|
On définit une règle de type « chaîne Hensel » : au lieu de raffiner binairement les deux enfants, on suit la branche unique de la chaîne jusqu'à \(m=u_{\min}(k)\), où une clause \(D_{\underline{}}\) ferme le nœud de la chaîne. À chaque niveau intermédiaire, le frère doit être fermé par une clause \(D/F/D_{\underline{}}\) au même niveau. La compression est linéaire en la profondeur (un seul chemin à suivre) au lieu d'exponentielle.
|
||||||
|
|
||||||
|
**Condition de blocage.** Pour les racines extrêmes, le frère à \(m=16\) n'a souvent pas de clause \(D/F/D_{\underline{}}\) décidable à ce niveau. La règle ne s'applique que si le frère est fermable à chaque niveau de la chaîne.
|
||||||
|
|
||||||
|
**Indexation.** La conclusion est indexée par \(k\), \(u_{\min}(k)\), et la disponibilité effective des clauses pour les frères le long de la chaîne.
|
||||||
|
|
||||||
|
**Statut.** Tentative implémentée (`collatz_build_hensel_chain_leaves.py`) ; échec sur la liste fixe (0 racines fermées) car les frères ne sont pas fermables aux niveaux intermédiaires.
|
||||||
|
|
||||||
|
### Piste 4 : Clause « \(D\) partielle » ou borne sur \(A(n)\)
|
||||||
|
|
||||||
|
**Hypothèses.**
|
||||||
|
- Une clause \(D\) exacte exige \(A(n)=A\) fixe (préfixe stable). Une clause \(D_{\underline{}}\) exige \(A(n)\ge \underline A\) et \(v_2(L_k(n))\ge \underline A\).
|
||||||
|
- Une clause « partielle » pourrait exiger une condition plus faible : par exemple, une borne sur \(A(n)\) sans exiger la stabilité complète du préfixe à la granularité \(2^m\), ou une condition de congruence sur \(n\) modulo une puissance de 2 ou de 3.
|
||||||
|
|
||||||
|
**Énoncé.**
|
||||||
|
On définit une règle de type « \(D\) partielle » : une condition \(C(n)\) sur \(n\equiv r\pmod{2^m}\) telle que, sous \(C(n)\), on puisse minorer \(U^{(k)}(n)\) par une expression affine dont le seuil de descente \(N_0\) est explicite, sans imposer \(A_{k-1}+1\le m\). La difficulté est de garantir que \(C(n)\) est décidable à la granularité \(2^m\) ou via un raffinement de taille bornée.
|
||||||
|
|
||||||
|
**Indexation.** La conclusion est indexée par la forme de \(C(n)\), le choix de \(k\), et le protocole de décidabilité.
|
||||||
|
|
||||||
|
**Statut.** Proposition de recherche ; aucune forme explicite de \(C(n)\) n'a été établie pour les cas bloquants.
|
||||||
|
|
||||||
## Prolongement immédiat au palier (2^{14})
|
## Prolongement immédiat au palier (2^{14})
|
||||||
|
|
||||||
La suite, dans le même style analytique, se décompose en deux chantiers strictement formels.
|
La suite, dans le même style analytique, se décompose en deux chantiers strictement formels.
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"domain": {
|
||||||
|
"palier": 15
|
||||||
|
},
|
||||||
|
"inputs": {
|
||||||
|
"derived_json": "/home/ncantu/code/algo/docs/artefacts/collatz/minorated_clauses_over_Sm_derived_from_brothers/palier2p15/clauses_D_minor_derived_from_brothers_over_Sm_mod2p15.json",
|
||||||
|
"terminal_json": "/home/ncantu/code/algo/docs/artefacts/collatz/terminal_clauses_over_Sm/palier2p15/clauses_terminal_over_Sm_mod2p15.json"
|
||||||
|
},
|
||||||
|
"counts": {
|
||||||
|
"total": 14500,
|
||||||
|
"ok": 14500,
|
||||||
|
"errors": 0
|
||||||
|
},
|
||||||
|
"ok": true,
|
||||||
|
"errors_sample": []
|
||||||
|
}
|
||||||
@ -0,0 +1,9 @@
|
|||||||
|
**Auteur** : Équipe 4NK
|
||||||
|
|
||||||
|
# Vérification — clauses D minorées dérivées par frères sur S_M (2^15)
|
||||||
|
|
||||||
|
- total : 14500
|
||||||
|
- ok : 14500
|
||||||
|
- errors : 0
|
||||||
|
- ok_all : True
|
||||||
|
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,446 @@
|
|||||||
|
{
|
||||||
|
"domain": {
|
||||||
|
"root_palier": 15,
|
||||||
|
"max_palier": 18,
|
||||||
|
"S_root_size": 16384
|
||||||
|
},
|
||||||
|
"closure": {
|
||||||
|
"closed_roots": 15270,
|
||||||
|
"open_roots": 1114,
|
||||||
|
"closed_ratio": 0.9320068359375,
|
||||||
|
"closed_roots_sample": [
|
||||||
|
1,
|
||||||
|
3,
|
||||||
|
5,
|
||||||
|
7,
|
||||||
|
9,
|
||||||
|
11,
|
||||||
|
13,
|
||||||
|
15,
|
||||||
|
17,
|
||||||
|
19,
|
||||||
|
21,
|
||||||
|
23,
|
||||||
|
25,
|
||||||
|
29,
|
||||||
|
33,
|
||||||
|
35,
|
||||||
|
37,
|
||||||
|
39,
|
||||||
|
41,
|
||||||
|
43,
|
||||||
|
45,
|
||||||
|
49,
|
||||||
|
51,
|
||||||
|
53,
|
||||||
|
55,
|
||||||
|
57,
|
||||||
|
59,
|
||||||
|
61,
|
||||||
|
65,
|
||||||
|
67,
|
||||||
|
69,
|
||||||
|
73,
|
||||||
|
75,
|
||||||
|
77,
|
||||||
|
79,
|
||||||
|
81,
|
||||||
|
83,
|
||||||
|
85,
|
||||||
|
87,
|
||||||
|
89,
|
||||||
|
93,
|
||||||
|
95,
|
||||||
|
97,
|
||||||
|
99,
|
||||||
|
101,
|
||||||
|
105,
|
||||||
|
107,
|
||||||
|
109,
|
||||||
|
113,
|
||||||
|
115,
|
||||||
|
117,
|
||||||
|
119,
|
||||||
|
121,
|
||||||
|
123,
|
||||||
|
125,
|
||||||
|
127,
|
||||||
|
129,
|
||||||
|
131,
|
||||||
|
133,
|
||||||
|
135,
|
||||||
|
137,
|
||||||
|
139,
|
||||||
|
141,
|
||||||
|
143,
|
||||||
|
145,
|
||||||
|
147,
|
||||||
|
149,
|
||||||
|
151,
|
||||||
|
153,
|
||||||
|
155,
|
||||||
|
157,
|
||||||
|
161,
|
||||||
|
163,
|
||||||
|
165,
|
||||||
|
169,
|
||||||
|
171,
|
||||||
|
173,
|
||||||
|
175,
|
||||||
|
177,
|
||||||
|
179,
|
||||||
|
181,
|
||||||
|
183,
|
||||||
|
185,
|
||||||
|
187,
|
||||||
|
189,
|
||||||
|
191,
|
||||||
|
193,
|
||||||
|
195,
|
||||||
|
197,
|
||||||
|
199,
|
||||||
|
201,
|
||||||
|
203,
|
||||||
|
205,
|
||||||
|
207,
|
||||||
|
209,
|
||||||
|
211,
|
||||||
|
213,
|
||||||
|
215,
|
||||||
|
217,
|
||||||
|
219,
|
||||||
|
221,
|
||||||
|
225,
|
||||||
|
227,
|
||||||
|
229,
|
||||||
|
231,
|
||||||
|
233,
|
||||||
|
235,
|
||||||
|
237,
|
||||||
|
241,
|
||||||
|
243,
|
||||||
|
245,
|
||||||
|
247,
|
||||||
|
249,
|
||||||
|
253,
|
||||||
|
255,
|
||||||
|
257,
|
||||||
|
259,
|
||||||
|
261,
|
||||||
|
263,
|
||||||
|
265,
|
||||||
|
267,
|
||||||
|
269,
|
||||||
|
271,
|
||||||
|
273,
|
||||||
|
275,
|
||||||
|
277,
|
||||||
|
279,
|
||||||
|
281,
|
||||||
|
285,
|
||||||
|
287,
|
||||||
|
289,
|
||||||
|
291,
|
||||||
|
293,
|
||||||
|
295,
|
||||||
|
297,
|
||||||
|
299,
|
||||||
|
301,
|
||||||
|
303,
|
||||||
|
305,
|
||||||
|
307,
|
||||||
|
309,
|
||||||
|
311,
|
||||||
|
313,
|
||||||
|
315,
|
||||||
|
317,
|
||||||
|
321,
|
||||||
|
323,
|
||||||
|
325,
|
||||||
|
329,
|
||||||
|
331,
|
||||||
|
333,
|
||||||
|
335,
|
||||||
|
337,
|
||||||
|
339,
|
||||||
|
341,
|
||||||
|
343,
|
||||||
|
345,
|
||||||
|
347,
|
||||||
|
349,
|
||||||
|
351,
|
||||||
|
353,
|
||||||
|
355,
|
||||||
|
357,
|
||||||
|
361,
|
||||||
|
363,
|
||||||
|
365,
|
||||||
|
367,
|
||||||
|
369,
|
||||||
|
371,
|
||||||
|
373,
|
||||||
|
375,
|
||||||
|
377,
|
||||||
|
379,
|
||||||
|
381,
|
||||||
|
383,
|
||||||
|
385,
|
||||||
|
387,
|
||||||
|
389,
|
||||||
|
391,
|
||||||
|
393,
|
||||||
|
395,
|
||||||
|
397,
|
||||||
|
399,
|
||||||
|
401,
|
||||||
|
403,
|
||||||
|
405,
|
||||||
|
407,
|
||||||
|
409,
|
||||||
|
411,
|
||||||
|
413,
|
||||||
|
415,
|
||||||
|
417,
|
||||||
|
419,
|
||||||
|
421,
|
||||||
|
423,
|
||||||
|
425,
|
||||||
|
427,
|
||||||
|
429,
|
||||||
|
431,
|
||||||
|
433
|
||||||
|
],
|
||||||
|
"still_open_roots_sample": [
|
||||||
|
27,
|
||||||
|
31,
|
||||||
|
47,
|
||||||
|
63,
|
||||||
|
71,
|
||||||
|
91,
|
||||||
|
103,
|
||||||
|
111,
|
||||||
|
159,
|
||||||
|
167,
|
||||||
|
223,
|
||||||
|
239,
|
||||||
|
251,
|
||||||
|
283,
|
||||||
|
319,
|
||||||
|
327,
|
||||||
|
359,
|
||||||
|
447,
|
||||||
|
479,
|
||||||
|
495,
|
||||||
|
511,
|
||||||
|
559,
|
||||||
|
603,
|
||||||
|
639,
|
||||||
|
667,
|
||||||
|
671,
|
||||||
|
703,
|
||||||
|
743,
|
||||||
|
751,
|
||||||
|
763,
|
||||||
|
767,
|
||||||
|
795,
|
||||||
|
859,
|
||||||
|
871,
|
||||||
|
895,
|
||||||
|
927,
|
||||||
|
943,
|
||||||
|
959,
|
||||||
|
991,
|
||||||
|
1007,
|
||||||
|
1023,
|
||||||
|
1051,
|
||||||
|
1055,
|
||||||
|
1115,
|
||||||
|
1127,
|
||||||
|
1179,
|
||||||
|
1183,
|
||||||
|
1255,
|
||||||
|
1263,
|
||||||
|
1279,
|
||||||
|
1307,
|
||||||
|
1343,
|
||||||
|
1383,
|
||||||
|
1407,
|
||||||
|
1439,
|
||||||
|
1471,
|
||||||
|
1503,
|
||||||
|
1519,
|
||||||
|
1535,
|
||||||
|
1583,
|
||||||
|
1639,
|
||||||
|
1663,
|
||||||
|
1691,
|
||||||
|
1695,
|
||||||
|
1767,
|
||||||
|
1791,
|
||||||
|
1819,
|
||||||
|
1883,
|
||||||
|
1887,
|
||||||
|
1895,
|
||||||
|
1919,
|
||||||
|
1951,
|
||||||
|
1959,
|
||||||
|
2043,
|
||||||
|
2047,
|
||||||
|
2111,
|
||||||
|
2139,
|
||||||
|
2151,
|
||||||
|
2159,
|
||||||
|
2175,
|
||||||
|
2207,
|
||||||
|
2215,
|
||||||
|
2287,
|
||||||
|
2367,
|
||||||
|
2375,
|
||||||
|
2407,
|
||||||
|
2463,
|
||||||
|
2495,
|
||||||
|
2527,
|
||||||
|
2543,
|
||||||
|
2559,
|
||||||
|
2651,
|
||||||
|
2671,
|
||||||
|
2687,
|
||||||
|
2715,
|
||||||
|
2751,
|
||||||
|
2791,
|
||||||
|
2811,
|
||||||
|
2831,
|
||||||
|
2843,
|
||||||
|
2879,
|
||||||
|
2887,
|
||||||
|
2919,
|
||||||
|
2943,
|
||||||
|
3007,
|
||||||
|
3055,
|
||||||
|
3071,
|
||||||
|
3099,
|
||||||
|
3103,
|
||||||
|
3175,
|
||||||
|
3183,
|
||||||
|
3199,
|
||||||
|
3227,
|
||||||
|
3231,
|
||||||
|
3263,
|
||||||
|
3311,
|
||||||
|
3323,
|
||||||
|
3327,
|
||||||
|
3355,
|
||||||
|
3375,
|
||||||
|
3391,
|
||||||
|
3399,
|
||||||
|
3431,
|
||||||
|
3487,
|
||||||
|
3519,
|
||||||
|
3567,
|
||||||
|
3583,
|
||||||
|
3615,
|
||||||
|
3631,
|
||||||
|
3711,
|
||||||
|
3739,
|
||||||
|
3775,
|
||||||
|
3815,
|
||||||
|
3823,
|
||||||
|
3839,
|
||||||
|
3867,
|
||||||
|
3931,
|
||||||
|
3943,
|
||||||
|
3999,
|
||||||
|
4095,
|
||||||
|
4127,
|
||||||
|
4167,
|
||||||
|
4207,
|
||||||
|
4255,
|
||||||
|
4263,
|
||||||
|
4319,
|
||||||
|
4335,
|
||||||
|
4347,
|
||||||
|
4351,
|
||||||
|
4379,
|
||||||
|
4399,
|
||||||
|
4415,
|
||||||
|
4423,
|
||||||
|
4511,
|
||||||
|
4575,
|
||||||
|
4591,
|
||||||
|
4607,
|
||||||
|
4635,
|
||||||
|
4699,
|
||||||
|
4719,
|
||||||
|
4735,
|
||||||
|
4763,
|
||||||
|
4767,
|
||||||
|
4775,
|
||||||
|
4799,
|
||||||
|
4839,
|
||||||
|
4847,
|
||||||
|
4863,
|
||||||
|
4891,
|
||||||
|
4935,
|
||||||
|
4967,
|
||||||
|
4991,
|
||||||
|
5055,
|
||||||
|
5119,
|
||||||
|
5147,
|
||||||
|
5151,
|
||||||
|
5211,
|
||||||
|
5223,
|
||||||
|
5247,
|
||||||
|
5279,
|
||||||
|
5287,
|
||||||
|
5343,
|
||||||
|
5351,
|
||||||
|
5359,
|
||||||
|
5375,
|
||||||
|
5403,
|
||||||
|
5423,
|
||||||
|
5447,
|
||||||
|
5479,
|
||||||
|
5503,
|
||||||
|
5535,
|
||||||
|
5567,
|
||||||
|
5659,
|
||||||
|
5663,
|
||||||
|
5679,
|
||||||
|
5735,
|
||||||
|
5759,
|
||||||
|
5791,
|
||||||
|
5823,
|
||||||
|
5863
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"generated_at": "2026-03-10T06:59:35.299015Z",
|
||||||
|
"sha256": {
|
||||||
|
"inputs": {
|
||||||
|
"docs/artefacts/collatz/terminal_clauses_over_Sm/palier2p15/clauses_terminal_over_Sm_mod2p15.json": "efd03bab49da30cb4be9cedc53e0e7fe2cb92e0e87c3e0fd1aa3514a17427fa3",
|
||||||
|
"docs/artefacts/collatz/terminal_clauses_over_Sm/palier2p16/clauses_terminal_over_Sm_mod2p16.json": "09629196bfbf1fd5576df72a7a34729b0d19be3febaa64d8a3817438d95e9d35",
|
||||||
|
"docs/artefacts/collatz/terminal_clauses_over_Sm/palier2p17/clauses_terminal_over_Sm_mod2p17.json": "07dc98763cc42491c937305fd7d153959c7f54f2e5cfee3a4deebe97744bae7c",
|
||||||
|
"docs/artefacts/collatz/terminal_clauses_over_Sm/palier2p18/clauses_terminal_over_Sm_mod2p18.json": "16662d98a05c93a177823c3e44f84b50dff300d53152f9d525ff781e2aa89ac2",
|
||||||
|
"docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p15/clauses_D_minor_over_Sm_mod2p15_k8_u13.json": "8b437c0a8215f942e0aaf47c387e7e52842ff87886fb7c6a04e9dd7776f738f5",
|
||||||
|
"docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p15/clauses_D_minor_over_Sm_mod2p15_k9_u15.json": "4086ecee3718de33d1580db99d9f3d68677afe7ba7d6d46739b3c85c9fb77fe0",
|
||||||
|
"docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p16/clauses_D_minor_over_Sm_mod2p16_k6_u10.json": "342285a5302ea82db64501b4b456fbde9d4335cf114243fa95a955eb5e4f46c6",
|
||||||
|
"docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p16/clauses_D_minor_over_Sm_mod2p16_k7_u12.json": "d7f5e9e53e09da79bf244a0d9ec30dce2b2c0f21342c765ee5cf68b9300044c9",
|
||||||
|
"docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p16/clauses_D_minor_over_Sm_mod2p16_k8_u13.json": "954a62a86c3d70f83f224541118d6a4ecf21a194e052650801973aff4a026ad8",
|
||||||
|
"docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p16/clauses_D_minor_over_Sm_mod2p16_k9_u15.json": "80047d4a01761a80f071d48a0bfd0337826b090af1bca3467d73d918c5de64d6",
|
||||||
|
"docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p16/clauses_D_minor_over_Sm_mod2p16_k10_u16.json": "386a2aeed2017724682775f0b12567520a603a315682829963fd5ea571f4e31c",
|
||||||
|
"docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p17/clauses_D_minor_over_Sm_mod2p17_k6_u10.json": "608b13150f7abcdfff3453be52e84db491a958408c3019e512ecf90c081d8328",
|
||||||
|
"docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p17/clauses_D_minor_over_Sm_mod2p17_k7_u12.json": "78ab06661923d8489810167fb249d0cb87993b8d5fe65fdd56f1f17e73dc8a5d",
|
||||||
|
"docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p17/clauses_D_minor_over_Sm_mod2p17_k8_u13.json": "4d71267c627e630570c4b226c32bad9e30525da7d160045e2360ee4a2f36199d",
|
||||||
|
"docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p17/clauses_D_minor_over_Sm_mod2p17_k9_u15.json": "a0f80ac79111ebad80888649d10f51cedb7f6f76c681ba98095fcbb6e6a57bfd",
|
||||||
|
"docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p17/clauses_D_minor_over_Sm_mod2p17_k10_u16.json": "dcf0de1d69b492f8ea072e1c6045acddf4bd3a6e43e93a1f5313757ac7d430d2",
|
||||||
|
"docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p18/clauses_D_minor_over_Sm_mod2p18_k6_u10.json": "ae047b4b91858df1ab5ade8d6f619340528fa536a163e42f5d10a92e1ea7176a",
|
||||||
|
"docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p18/clauses_D_minor_over_Sm_mod2p18_k7_u12.json": "33a4236e7438a8f7f73165083f9d14a21dac0e6c64ac252072d3ff5d053dd5a4",
|
||||||
|
"docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p18/clauses_D_minor_over_Sm_mod2p18_k8_u13.json": "30f7cf398782508933f0a7ed0be842ce087fc2ee0297f0cf0e1f759d8a0d832e",
|
||||||
|
"docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p18/clauses_D_minor_over_Sm_mod2p18_k9_u15.json": "c309d9173847b8073a37cf3d62f35b380a7d22cfad4a1aa0d2074f3ae20258e9",
|
||||||
|
"docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p18/clauses_D_minor_over_Sm_mod2p18_k10_u16.json": "933210e286995000b98b2575847185fc93f9c042ffbebe38a6178053a202cd80",
|
||||||
|
"docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p18/clauses_D_minor_over_Sm_mod2p18_k11_u18.json": "f6176d0a032c473e638da83c7fcd756aa14cd4e65950fd18e59085016717e268"
|
||||||
|
},
|
||||||
|
"outputs": {
|
||||||
|
"docs/artefacts/collatz/refinement_K/palier2p15/bundle_mod2p15_to2p18/refinement_certificate_Sm_multilevel_mod2p15_to2p18.json": "f905eea71c19fcd25b1c485fab82c597ee7695cb6d00c902534142f3a8bef701"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,8 @@
|
|||||||
|
**Auteur** : Équipe 4NK
|
||||||
|
|
||||||
|
# Audit — raffinement multi-niveaux sur S_M (2^15→2^18)
|
||||||
|
|
||||||
|
- closed_roots : 15270
|
||||||
|
- open_roots : 1114
|
||||||
|
- closed_ratio : 0.9320068359375
|
||||||
|
|
||||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,99 @@
|
|||||||
|
**Auteur** : Équipe 4NK
|
||||||
|
|
||||||
|
# Diagnostic — échec targeted leaves — racine 2^15
|
||||||
|
|
||||||
|
- tracked_roots_file : `/home/ncantu/code/algo/docs/artefacts/collatz/refinement_K/palier2p15/incremental_D_minor/tracked_roots_lb_any_top200_mod2p15_to2p18.txt`
|
||||||
|
- k_max : 256
|
||||||
|
- t_max : 256
|
||||||
|
- search_max_required_m : 256
|
||||||
|
|
||||||
|
Table (par racine) :
|
||||||
|
|
||||||
|
| root | child_low | child_high | immediate_low@16 | immediate_high@16 | lb_root | lb_low | lb_high |
|
||||||
|
| --- | --- | --- | --- | --- | --- | --- | --- |
|
||||||
|
| 27 | 27 | 32795 | no | no | 60 | 60 | 26 |
|
||||||
|
| 31 | 31 | 32799 | no | no | 57 | 57 | 25 |
|
||||||
|
| 47 | 47 | 32815 | no | no | 56 | 56 | 42 |
|
||||||
|
| 63 | 63 | 32831 | no | no | 55 | 55 | 25 |
|
||||||
|
| 71 | 71 | 32839 | no | no | 52 | 52 | 22 |
|
||||||
|
| 251 | 251 | 33019 | no | no | 80 | 30 | 80 |
|
||||||
|
| 703 | 703 | 33471 | no | no | 84 | 84 | 61 |
|
||||||
|
| 1055 | 1055 | 33823 | no | no | 83 | 83 | 28 |
|
||||||
|
| 1183 | 1183 | 33951 | no | no | 55 | 17 | 55 |
|
||||||
|
| 1279 | 1279 | 34047 | no | no | 70 | 25 | 70 |
|
||||||
|
| 1407 | 1407 | 34175 | no | no | 85 | 85 | 23 |
|
||||||
|
| 1471 | 1471 | 34239 | no | no | 80 | 32 | 80 |
|
||||||
|
| 1535 | 1535 | 34303 | no | no | 56 | 20 | 56 |
|
||||||
|
| 1583 | 1583 | 34351 | no | no | 82 | 82 | 38 |
|
||||||
|
| 1819 | 1819 | 34587 | no | no | 62 | 62 | 23 |
|
||||||
|
| 2047 | 2047 | 34815 | no | no | 59 | 59 | 20 |
|
||||||
|
| 2111 | 2111 | 34879 | no | no | 84 | 84 | 36 |
|
||||||
|
| 2151 | 2151 | 34919 | no | no | 52 | 42 | 52 |
|
||||||
|
| 2287 | 2287 | 35055 | no | no | 54 | 54 | 22 |
|
||||||
|
| 2527 | 2527 | 35295 | no | no | 66 | 28 | 66 |
|
||||||
|
| 2887 | 2887 | 35655 | no | no | 136 | 17 | 136 |
|
||||||
|
| 3071 | 3071 | 35839 | no | no | 50 | 50 | 20 |
|
||||||
|
| 3199 | 3199 | 35967 | no | no | 66 | 18 | 66 |
|
||||||
|
| 3263 | 3263 | 36031 | no | no | 56 | 20 | 56 |
|
||||||
|
| 3399 | 3399 | 36167 | no | no | 49 | 49 | 22 |
|
||||||
|
| 4095 | 4095 | 36863 | no | no | 52 | 52 | 39 |
|
||||||
|
| 4255 | 4255 | 37023 | no | no | 71 | 71 | 18 |
|
||||||
|
| 4263 | 4263 | 37031 | no | no | 55 | 55 | 32 |
|
||||||
|
| 4379 | 4379 | 37147 | no | no | 77 | 17 | 77 |
|
||||||
|
| 4591 | 4591 | 37359 | no | no | 66 | 66 | 21 |
|
||||||
|
| 4607 | 4607 | 37375 | no | no | 49 | 49 | 21 |
|
||||||
|
| 4735 | 4735 | 37503 | no | no | 128 | 18 | 128 |
|
||||||
|
| 5119 | 5119 | 37887 | no | no | 52 | 39 | 52 |
|
||||||
|
| 5535 | 5535 | 38303 | no | no | 67 | 28 | 67 |
|
||||||
|
| 5823 | 5823 | 38591 | no | no | 53 | 24 | 53 |
|
||||||
|
| 6143 | 6143 | 38911 | no | no | 51 | 51 | 20 |
|
||||||
|
| 6171 | 6171 | 38939 | no | no | 56 | 56 | 25 |
|
||||||
|
| 6303 | 6303 | 39071 | no | no | 59 | 29 | 59 |
|
||||||
|
| 6383 | 6383 | 39151 | no | no | 70 | 70 | 22 |
|
||||||
|
| 6471 | 6471 | 39239 | no | no | 51 | 51 | 33 |
|
||||||
|
| 6887 | 6887 | 39655 | no | no | 58 | 58 | 25 |
|
||||||
|
| 6939 | 6939 | 39707 | no | no | 63 | 29 | 63 |
|
||||||
|
| 7039 | 7039 | 39807 | no | no | 63 | 18 | 63 |
|
||||||
|
| 7167 | 7167 | 39935 | no | no | 65 | 34 | 65 |
|
||||||
|
| 7279 | 7279 | 40047 | no | no | 58 | 58 | 20 |
|
||||||
|
| 7423 | 7423 | 40191 | no | no | 54 | 39 | 54 |
|
||||||
|
| 7451 | 7451 | 40219 | no | no | 60 | 17 | 60 |
|
||||||
|
| 7527 | 7527 | 40295 | no | no | 75 | 75 | 39 |
|
||||||
|
| 7935 | 7935 | 40703 | no | no | 71 | 43 | 71 |
|
||||||
|
| 7963 | 7963 | 40731 | no | no | 76 | 76 | 25 |
|
||||||
|
| 8191 | 8191 | 40959 | no | no | 52 | 45 | 52 |
|
||||||
|
| 8223 | 8223 | 40991 | no | no | 53 | 29 | 53 |
|
||||||
|
| 8351 | 8351 | 41119 | no | no | 66 | 36 | 66 |
|
||||||
|
| 8359 | 8359 | 41127 | no | no | 51 | 51 | 23 |
|
||||||
|
| 8639 | 8639 | 41407 | no | no | 56 | 35 | 56 |
|
||||||
|
| 8959 | 8959 | 41727 | no | no | 73 | 73 | 23 |
|
||||||
|
| 9023 | 9023 | 41791 | no | no | 74 | 18 | 74 |
|
||||||
|
| 9183 | 9183 | 41951 | no | no | 55 | 55 | 38 |
|
||||||
|
| 9215 | 9215 | 41983 | no | no | 50 | 50 | 20 |
|
||||||
|
| 9663 | 9663 | 42431 | no | no | 55 | 55 | 45 |
|
||||||
|
| 9695 | 9695 | 42463 | no | no | 72 | 24 | 72 |
|
||||||
|
| 9831 | 9831 | 42599 | no | no | 52 | 18 | 52 |
|
||||||
|
| 9855 | 9855 | 42623 | no | no | 49 | 29 | 49 |
|
||||||
|
| 10011 | 10011 | 42779 | no | no | 56 | 56 | 33 |
|
||||||
|
| 10087 | 10087 | 42855 | no | no | 102 | 102 | 22 |
|
||||||
|
| 10239 | 10239 | 43007 | no | no | 71 | 35 | 71 |
|
||||||
|
| 10331 | 10331 | 43099 | no | no | 52 | 52 | 24 |
|
||||||
|
| 10351 | 10351 | 43119 | no | no | 51 | 30 | 51 |
|
||||||
|
| 10407 | 10407 | 43175 | no | no | 70 | 29 | 70 |
|
||||||
|
| 10719 | 10719 | 43487 | no | no | 49 | 23 | 49 |
|
||||||
|
| 10919 | 10919 | 43687 | no | no | 57 | 57 | 20 |
|
||||||
|
| 11263 | 11263 | 44031 | no | no | 53 | 53 | 25 |
|
||||||
|
| 11291 | 11291 | 44059 | no | no | 74 | 74 | 18 |
|
||||||
|
| 11391 | 11391 | 44159 | no | no | 50 | 50 | 38 |
|
||||||
|
| 11623 | 11623 | 44391 | no | no | 49 | 49 | 21 |
|
||||||
|
| 11903 | 11903 | 44671 | no | no | 60 | 42 | 60 |
|
||||||
|
| 11931 | 11931 | 44699 | no | no | 49 | 49 | 19 |
|
||||||
|
| 12015 | 12015 | 44783 | no | no | 60 | 23 | 60 |
|
||||||
|
| 12135 | 12135 | 44903 | no | no | 57 | 40 | 57 |
|
||||||
|
| 12287 | 12287 | 45055 | no | no | 114 | 44 | 114 |
|
||||||
|
|
||||||
|
## Sorties
|
||||||
|
|
||||||
|
- JSON : `/home/ncantu/code/algo/docs/artefacts/collatz/refinement_K/palier2p15/bundle_mod2p15_to2p18/diagnostic_targeted_leaves_failure_mod2p15.json`
|
||||||
|
- Markdown : `/home/ncantu/code/algo/docs/artefacts/collatz/refinement_K/palier2p15/bundle_mod2p15_to2p18/diagnostic_targeted_leaves_failure_mod2p15.md`
|
||||||
|
|
||||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,548 @@
|
|||||||
|
**Auteur** : Équipe 4NK
|
||||||
|
|
||||||
|
# Profil d’obstruction — racines ouvertes sur S_15 (raffinement jusqu’à 2^18)
|
||||||
|
|
||||||
|
## Domaine
|
||||||
|
|
||||||
|
- racine : 2^15
|
||||||
|
- max : 2^18
|
||||||
|
- open_roots : 1114
|
||||||
|
|
||||||
|
## Recherche (borne inférieure de profondeur)
|
||||||
|
|
||||||
|
- k_max : 256
|
||||||
|
- t_max : 256
|
||||||
|
- max_required_m (pruning) : 256
|
||||||
|
|
||||||
|
### Buckets — lower_bound_required_m_to_close_root
|
||||||
|
|
||||||
|
Buckets (any):
|
||||||
|
- required_m=17 : 6
|
||||||
|
- required_m=18 : 4
|
||||||
|
- required_m=19 : 50
|
||||||
|
- required_m=20 : 50
|
||||||
|
- required_m=21 : 49
|
||||||
|
- required_m=22 : 63
|
||||||
|
- required_m=23 : 42
|
||||||
|
- required_m=24 : 42
|
||||||
|
- required_m=25 : 56
|
||||||
|
- required_m=26 : 39
|
||||||
|
- required_m=27 : 32
|
||||||
|
- required_m=28 : 52
|
||||||
|
- required_m=29 : 44
|
||||||
|
- required_m=30 : 36
|
||||||
|
- required_m=31 : 29
|
||||||
|
- required_m=32 : 18
|
||||||
|
- required_m=33 : 35
|
||||||
|
- required_m=34 : 25
|
||||||
|
- required_m=35 : 18
|
||||||
|
- required_m=36 : 31
|
||||||
|
- required_m=37 : 27
|
||||||
|
- required_m=38 : 23
|
||||||
|
- required_m=39 : 11
|
||||||
|
- required_m=40 : 8
|
||||||
|
- required_m=41 : 17
|
||||||
|
- required_m=42 : 14
|
||||||
|
- required_m=43 : 12
|
||||||
|
- required_m=44 : 14
|
||||||
|
- required_m=45 : 20
|
||||||
|
- required_m=46 : 14
|
||||||
|
- required_m=47 : 17
|
||||||
|
- required_m=48 : 16
|
||||||
|
- required_m=49 : 10
|
||||||
|
- required_m=50 : 6
|
||||||
|
- required_m=51 : 9
|
||||||
|
- required_m=52 : 10
|
||||||
|
- required_m=53 : 9
|
||||||
|
- required_m=54 : 9
|
||||||
|
- required_m=55 : 9
|
||||||
|
- required_m=56 : 10
|
||||||
|
- required_m=57 : 5
|
||||||
|
- required_m=58 : 6
|
||||||
|
- required_m=59 : 6
|
||||||
|
- required_m=60 : 7
|
||||||
|
- required_m=61 : 6
|
||||||
|
- required_m=62 : 3
|
||||||
|
- required_m=63 : 5
|
||||||
|
- required_m=64 : 4
|
||||||
|
- required_m=65 : 4
|
||||||
|
- required_m=66 : 8
|
||||||
|
- required_m=67 : 4
|
||||||
|
- required_m=68 : 5
|
||||||
|
- required_m=69 : 5
|
||||||
|
- required_m=70 : 6
|
||||||
|
- required_m=71 : 8
|
||||||
|
- required_m=72 : 8
|
||||||
|
- required_m=73 : 7
|
||||||
|
- required_m=74 : 2
|
||||||
|
- required_m=75 : 2
|
||||||
|
- required_m=76 : 3
|
||||||
|
- required_m=77 : 1
|
||||||
|
- required_m=78 : 1
|
||||||
|
- required_m=79 : 2
|
||||||
|
- required_m=80 : 2
|
||||||
|
- required_m=82 : 1
|
||||||
|
- required_m=83 : 2
|
||||||
|
- required_m=84 : 3
|
||||||
|
- required_m=85 : 2
|
||||||
|
- required_m=90 : 1
|
||||||
|
- required_m=102 : 1
|
||||||
|
- required_m=114 : 1
|
||||||
|
- required_m=118 : 1
|
||||||
|
- required_m=121 : 1
|
||||||
|
- required_m=127 : 1
|
||||||
|
- required_m=128 : 2
|
||||||
|
- required_m=130 : 1
|
||||||
|
- required_m=136 : 1
|
||||||
|
|
||||||
|
Buckets (D only):
|
||||||
|
- required_m=17 : 6
|
||||||
|
- required_m=18 : 4
|
||||||
|
- required_m=19 : 50
|
||||||
|
- required_m=20 : 27
|
||||||
|
- required_m=21 : 41
|
||||||
|
- required_m=22 : 63
|
||||||
|
- required_m=23 : 37
|
||||||
|
- required_m=24 : 39
|
||||||
|
- required_m=25 : 58
|
||||||
|
- required_m=26 : 34
|
||||||
|
- required_m=27 : 35
|
||||||
|
- required_m=28 : 55
|
||||||
|
- required_m=29 : 24
|
||||||
|
- required_m=30 : 37
|
||||||
|
- required_m=31 : 17
|
||||||
|
- required_m=32 : 25
|
||||||
|
- required_m=33 : 44
|
||||||
|
- required_m=34 : 25
|
||||||
|
- required_m=35 : 23
|
||||||
|
- required_m=36 : 36
|
||||||
|
- required_m=37 : 24
|
||||||
|
- required_m=38 : 28
|
||||||
|
- required_m=39 : 10
|
||||||
|
- required_m=40 : 9
|
||||||
|
- required_m=41 : 20
|
||||||
|
- required_m=42 : 11
|
||||||
|
- required_m=43 : 13
|
||||||
|
- required_m=44 : 20
|
||||||
|
- required_m=45 : 17
|
||||||
|
- required_m=46 : 17
|
||||||
|
- required_m=47 : 25
|
||||||
|
- required_m=48 : 15
|
||||||
|
- required_m=49 : 11
|
||||||
|
- required_m=50 : 5
|
||||||
|
- required_m=51 : 13
|
||||||
|
- required_m=52 : 15
|
||||||
|
- required_m=53 : 6
|
||||||
|
- required_m=54 : 11
|
||||||
|
- required_m=55 : 14
|
||||||
|
- required_m=56 : 4
|
||||||
|
- required_m=57 : 6
|
||||||
|
- required_m=58 : 4
|
||||||
|
- required_m=59 : 7
|
||||||
|
- required_m=60 : 10
|
||||||
|
- required_m=61 : 5
|
||||||
|
- required_m=62 : 3
|
||||||
|
- required_m=63 : 9
|
||||||
|
- required_m=64 : 2
|
||||||
|
- required_m=65 : 7
|
||||||
|
- required_m=66 : 8
|
||||||
|
- required_m=67 : 6
|
||||||
|
- required_m=68 : 5
|
||||||
|
- required_m=69 : 5
|
||||||
|
- required_m=70 : 7
|
||||||
|
- required_m=71 : 8
|
||||||
|
- required_m=72 : 6
|
||||||
|
- required_m=73 : 8
|
||||||
|
- required_m=74 : 5
|
||||||
|
- required_m=75 : 3
|
||||||
|
- required_m=76 : 3
|
||||||
|
- required_m=77 : 1
|
||||||
|
- required_m=78 : 1
|
||||||
|
- required_m=79 : 3
|
||||||
|
- required_m=80 : 2
|
||||||
|
- required_m=81 : 1
|
||||||
|
- required_m=82 : 2
|
||||||
|
- required_m=83 : 2
|
||||||
|
- required_m=84 : 3
|
||||||
|
- required_m=85 : 2
|
||||||
|
- required_m=87 : 1
|
||||||
|
- required_m=90 : 1
|
||||||
|
- required_m=95 : 1
|
||||||
|
- required_m=109 : 1
|
||||||
|
- required_m=114 : 1
|
||||||
|
- required_m=121 : 1
|
||||||
|
- required_m=124 : 1
|
||||||
|
- required_m=127 : 1
|
||||||
|
- required_m=128 : 2
|
||||||
|
- required_m=130 : 1
|
||||||
|
- required_m=136 : 1
|
||||||
|
|
||||||
|
Buckets (F only):
|
||||||
|
- required_m=17 : 6
|
||||||
|
- required_m=18 : 4
|
||||||
|
- required_m=19 : 50
|
||||||
|
- required_m=20 : 42
|
||||||
|
- required_m=21 : 53
|
||||||
|
- required_m=22 : 52
|
||||||
|
- required_m=23 : 50
|
||||||
|
- required_m=24 : 43
|
||||||
|
- required_m=25 : 42
|
||||||
|
- required_m=26 : 42
|
||||||
|
- required_m=27 : 38
|
||||||
|
- required_m=28 : 43
|
||||||
|
- required_m=29 : 48
|
||||||
|
- required_m=30 : 41
|
||||||
|
- required_m=31 : 35
|
||||||
|
- required_m=32 : 19
|
||||||
|
- required_m=33 : 27
|
||||||
|
- required_m=34 : 31
|
||||||
|
- required_m=35 : 18
|
||||||
|
- required_m=36 : 26
|
||||||
|
- required_m=37 : 31
|
||||||
|
- required_m=38 : 25
|
||||||
|
- required_m=39 : 13
|
||||||
|
- required_m=40 : 9
|
||||||
|
- required_m=41 : 12
|
||||||
|
- required_m=42 : 19
|
||||||
|
- required_m=43 : 12
|
||||||
|
- required_m=44 : 11
|
||||||
|
- required_m=45 : 23
|
||||||
|
- required_m=46 : 16
|
||||||
|
- required_m=47 : 13
|
||||||
|
- required_m=48 : 19
|
||||||
|
- required_m=49 : 10
|
||||||
|
- required_m=50 : 6
|
||||||
|
- required_m=51 : 10
|
||||||
|
- required_m=52 : 8
|
||||||
|
- required_m=53 : 10
|
||||||
|
- required_m=54 : 9
|
||||||
|
- required_m=55 : 5
|
||||||
|
- required_m=56 : 13
|
||||||
|
- required_m=57 : 5
|
||||||
|
- required_m=58 : 8
|
||||||
|
- required_m=59 : 6
|
||||||
|
- required_m=60 : 6
|
||||||
|
- required_m=61 : 7
|
||||||
|
- required_m=62 : 3
|
||||||
|
- required_m=63 : 5
|
||||||
|
- required_m=64 : 4
|
||||||
|
- required_m=65 : 4
|
||||||
|
- required_m=66 : 8
|
||||||
|
- required_m=67 : 4
|
||||||
|
- required_m=68 : 5
|
||||||
|
- required_m=69 : 5
|
||||||
|
- required_m=70 : 6
|
||||||
|
- required_m=71 : 7
|
||||||
|
- required_m=72 : 9
|
||||||
|
- required_m=73 : 7
|
||||||
|
- required_m=74 : 2
|
||||||
|
- required_m=75 : 2
|
||||||
|
- required_m=76 : 3
|
||||||
|
- required_m=77 : 1
|
||||||
|
- required_m=78 : 1
|
||||||
|
- required_m=79 : 1
|
||||||
|
- required_m=80 : 3
|
||||||
|
- required_m=82 : 1
|
||||||
|
- required_m=83 : 2
|
||||||
|
- required_m=84 : 3
|
||||||
|
- required_m=85 : 2
|
||||||
|
- required_m=90 : 1
|
||||||
|
- required_m=102 : 1
|
||||||
|
- required_m=114 : 1
|
||||||
|
- required_m=118 : 1
|
||||||
|
- required_m=121 : 1
|
||||||
|
- required_m=127 : 1
|
||||||
|
- required_m=128 : 1
|
||||||
|
- required_m=129 : 1
|
||||||
|
- required_m=130 : 1
|
||||||
|
- required_m=136 : 1
|
||||||
|
|
||||||
|
## Motifs dominants (<=32)
|
||||||
|
|
||||||
|
- both_children_no_contracting_D_up_to32 : 8
|
||||||
|
- both_children_F_blocked_by_deltaF_up_to32 : 7
|
||||||
|
- both_children_no_contracting_F_up_to32 : 7
|
||||||
|
|
||||||
|
## Histogrammes (<=32, agrégés sur les deux enfants)
|
||||||
|
|
||||||
|
### first_k_contracting_D_up_to32
|
||||||
|
- k=1 : 2
|
||||||
|
- k=2 : 2
|
||||||
|
- k=3 : 4
|
||||||
|
- k=4 : 6
|
||||||
|
- k=5 : 12
|
||||||
|
- k=10 : 346
|
||||||
|
- k=11 : 203
|
||||||
|
- k=12 : 152
|
||||||
|
- k=13 : 223
|
||||||
|
- k=14 : 116
|
||||||
|
- k=15 : 175
|
||||||
|
- k=16 : 88
|
||||||
|
- k=17 : 121
|
||||||
|
- k=18 : 65
|
||||||
|
- k=19 : 53
|
||||||
|
- k=20 : 81
|
||||||
|
- k=21 : 51
|
||||||
|
- k=22 : 67
|
||||||
|
- k=23 : 37
|
||||||
|
- k=24 : 21
|
||||||
|
- k=25 : 44
|
||||||
|
- k=26 : 24
|
||||||
|
- k=27 : 48
|
||||||
|
- k=28 : 26
|
||||||
|
- k=29 : 32
|
||||||
|
- k=30 : 18
|
||||||
|
- k=31 : 14
|
||||||
|
- k=32 : 20
|
||||||
|
|
||||||
|
### first_k_contracting_D_up_to32 (low child)
|
||||||
|
- k=1 : 1
|
||||||
|
- k=2 : 1
|
||||||
|
- k=3 : 2
|
||||||
|
- k=4 : 3
|
||||||
|
- k=5 : 6
|
||||||
|
- k=10 : 174
|
||||||
|
- k=11 : 99
|
||||||
|
- k=12 : 78
|
||||||
|
- k=13 : 106
|
||||||
|
- k=14 : 57
|
||||||
|
- k=15 : 89
|
||||||
|
- k=16 : 45
|
||||||
|
- k=17 : 66
|
||||||
|
- k=18 : 33
|
||||||
|
- k=19 : 30
|
||||||
|
- k=20 : 32
|
||||||
|
- k=21 : 23
|
||||||
|
- k=22 : 30
|
||||||
|
- k=23 : 19
|
||||||
|
- k=24 : 13
|
||||||
|
- k=25 : 19
|
||||||
|
- k=26 : 15
|
||||||
|
- k=27 : 25
|
||||||
|
- k=28 : 12
|
||||||
|
- k=29 : 14
|
||||||
|
- k=30 : 13
|
||||||
|
- k=31 : 8
|
||||||
|
- k=32 : 13
|
||||||
|
|
||||||
|
### first_k_contracting_D_up_to32 (high child)
|
||||||
|
- k=1 : 1
|
||||||
|
- k=2 : 1
|
||||||
|
- k=3 : 2
|
||||||
|
- k=4 : 3
|
||||||
|
- k=5 : 6
|
||||||
|
- k=10 : 172
|
||||||
|
- k=11 : 104
|
||||||
|
- k=12 : 74
|
||||||
|
- k=13 : 117
|
||||||
|
- k=14 : 59
|
||||||
|
- k=15 : 86
|
||||||
|
- k=16 : 43
|
||||||
|
- k=17 : 55
|
||||||
|
- k=18 : 32
|
||||||
|
- k=19 : 23
|
||||||
|
- k=20 : 49
|
||||||
|
- k=21 : 28
|
||||||
|
- k=22 : 37
|
||||||
|
- k=23 : 18
|
||||||
|
- k=24 : 8
|
||||||
|
- k=25 : 25
|
||||||
|
- k=26 : 9
|
||||||
|
- k=27 : 23
|
||||||
|
- k=28 : 14
|
||||||
|
- k=29 : 18
|
||||||
|
- k=30 : 5
|
||||||
|
- k=31 : 6
|
||||||
|
- k=32 : 7
|
||||||
|
|
||||||
|
### first_t_contracting_F_up_to32
|
||||||
|
- t=1 : 2
|
||||||
|
- t=2 : 2
|
||||||
|
- t=3 : 4
|
||||||
|
- t=4 : 6
|
||||||
|
- t=5 : 12
|
||||||
|
- t=10 : 260
|
||||||
|
- t=11 : 366
|
||||||
|
- t=12 : 199
|
||||||
|
- t=13 : 119
|
||||||
|
- t=14 : 185
|
||||||
|
- t=15 : 108
|
||||||
|
- t=16 : 144
|
||||||
|
- t=17 : 73
|
||||||
|
- t=18 : 110
|
||||||
|
- t=19 : 57
|
||||||
|
- t=20 : 40
|
||||||
|
- t=21 : 68
|
||||||
|
- t=22 : 40
|
||||||
|
- t=23 : 56
|
||||||
|
- t=24 : 27
|
||||||
|
- t=25 : 22
|
||||||
|
- t=26 : 36
|
||||||
|
- t=27 : 30
|
||||||
|
- t=28 : 30
|
||||||
|
- t=29 : 16
|
||||||
|
- t=30 : 30
|
||||||
|
- t=31 : 12
|
||||||
|
- t=32 : 12
|
||||||
|
|
||||||
|
### first_t_y_mod3_nonzero_up_to32
|
||||||
|
- t=1 : 2228
|
||||||
|
|
||||||
|
### y_mod3_zero_count_up_to32
|
||||||
|
- count=0 : 2228
|
||||||
|
|
||||||
|
### y_mod3_zero_count_up_to32 (low child)
|
||||||
|
- count=0 : 1114
|
||||||
|
|
||||||
|
### y_mod3_zero_count_up_to32 (high child)
|
||||||
|
- count=0 : 1114
|
||||||
|
|
||||||
|
## Corrélations (borne inférieure)
|
||||||
|
|
||||||
|
### lb_D - lb_F
|
||||||
|
- diff=-8 : 2
|
||||||
|
- diff=-7 : 2
|
||||||
|
- diff=-6 : 5
|
||||||
|
- diff=-5 : 3
|
||||||
|
- diff=-4 : 6
|
||||||
|
- diff=-3 : 17
|
||||||
|
- diff=-2 : 13
|
||||||
|
- diff=-1 : 39
|
||||||
|
- diff=0 : 840
|
||||||
|
- diff=1 : 9
|
||||||
|
- diff=2 : 21
|
||||||
|
- diff=3 : 30
|
||||||
|
- diff=4 : 14
|
||||||
|
- diff=5 : 17
|
||||||
|
- diff=6 : 9
|
||||||
|
- diff=7 : 20
|
||||||
|
- diff=8 : 10
|
||||||
|
- diff=9 : 7
|
||||||
|
- diff=10 : 5
|
||||||
|
- diff=11 : 4
|
||||||
|
- diff=12 : 7
|
||||||
|
- diff=13 : 2
|
||||||
|
- diff=14 : 2
|
||||||
|
- diff=15 : 3
|
||||||
|
- diff=16 : 2
|
||||||
|
- diff=17 : 4
|
||||||
|
- diff=18 : 2
|
||||||
|
- diff=19 : 1
|
||||||
|
- diff=20 : 1
|
||||||
|
- diff=21 : 2
|
||||||
|
- diff=22 : 2
|
||||||
|
- diff=24 : 1
|
||||||
|
- diff=25 : 1
|
||||||
|
- diff=26 : 2
|
||||||
|
- diff=28 : 1
|
||||||
|
- diff=30 : 2
|
||||||
|
- diff=31 : 2
|
||||||
|
- diff=38 : 1
|
||||||
|
- diff=40 : 1
|
||||||
|
- diff=42 : 1
|
||||||
|
- diff=44 : 1
|
||||||
|
|
||||||
|
### lb_any - lb_D
|
||||||
|
- diff=-44 : 1
|
||||||
|
- diff=-42 : 1
|
||||||
|
- diff=-40 : 1
|
||||||
|
- diff=-38 : 1
|
||||||
|
- diff=-31 : 2
|
||||||
|
- diff=-30 : 2
|
||||||
|
- diff=-28 : 1
|
||||||
|
- diff=-26 : 3
|
||||||
|
- diff=-25 : 1
|
||||||
|
- diff=-23 : 1
|
||||||
|
- diff=-22 : 2
|
||||||
|
- diff=-21 : 1
|
||||||
|
- diff=-20 : 1
|
||||||
|
- diff=-19 : 1
|
||||||
|
- diff=-18 : 2
|
||||||
|
- diff=-17 : 4
|
||||||
|
- diff=-16 : 2
|
||||||
|
- diff=-15 : 3
|
||||||
|
- diff=-14 : 2
|
||||||
|
- diff=-13 : 3
|
||||||
|
- diff=-12 : 7
|
||||||
|
- diff=-11 : 4
|
||||||
|
- diff=-10 : 5
|
||||||
|
- diff=-9 : 7
|
||||||
|
- diff=-8 : 9
|
||||||
|
- diff=-7 : 21
|
||||||
|
- diff=-6 : 10
|
||||||
|
- diff=-5 : 17
|
||||||
|
- diff=-4 : 15
|
||||||
|
- diff=-3 : 30
|
||||||
|
- diff=-2 : 20
|
||||||
|
- diff=-1 : 8
|
||||||
|
- diff=0 : 926
|
||||||
|
|
||||||
|
### lb_any - lb_F
|
||||||
|
- diff=-8 : 2
|
||||||
|
- diff=-7 : 2
|
||||||
|
- diff=-6 : 5
|
||||||
|
- diff=-5 : 3
|
||||||
|
- diff=-4 : 6
|
||||||
|
- diff=-3 : 19
|
||||||
|
- diff=-2 : 20
|
||||||
|
- diff=-1 : 42
|
||||||
|
- diff=0 : 1015
|
||||||
|
|
||||||
|
## Quantiles (borne inférieure)
|
||||||
|
|
||||||
|
| metric | p50 | p75 | p90 | p95 | p99 | max |
|
||||||
|
| --- | --- | --- | --- | --- | --- | --- |
|
||||||
|
| lb_any | 30 | 44 | 59 | 70 | 84 | 136 |
|
||||||
|
| lb_D | 33 | 46 | 62 | 71 | 85 | 136 |
|
||||||
|
| lb_F | 31 | 44 | 59 | 70 | 84 | 136 |
|
||||||
|
|
||||||
|
## Exemples (premières lignes)
|
||||||
|
|
||||||
|
| r | child0 | child1 | lb_any | lb_D | lb_F |
|
||||||
|
| --- | --- | --- | --- | --- | --- |
|
||||||
|
| 27 | 27 | 32795 | 60 | 60 | 60 |
|
||||||
|
| 31 | 31 | 32799 | 57 | 57 | 57 |
|
||||||
|
| 47 | 47 | 32815 | 56 | 56 | 56 |
|
||||||
|
| 63 | 63 | 32831 | 55 | 55 | 58 |
|
||||||
|
| 71 | 71 | 32839 | 52 | 52 | 55 |
|
||||||
|
| 91 | 91 | 32859 | 46 | 46 | 46 |
|
||||||
|
| 103 | 103 | 32871 | 43 | 43 | 43 |
|
||||||
|
| 111 | 111 | 32879 | 32 | 32 | 32 |
|
||||||
|
| 159 | 159 | 32927 | 24 | 24 | 24 |
|
||||||
|
| 167 | 167 | 32935 | 31 | 31 | 31 |
|
||||||
|
| 223 | 223 | 32991 | 33 | 33 | 33 |
|
||||||
|
| 239 | 239 | 33007 | 22 | 22 | 22 |
|
||||||
|
| 251 | 251 | 33019 | 80 | 80 | 80 |
|
||||||
|
| 283 | 283 | 33051 | 41 | 41 | 42 |
|
||||||
|
| 319 | 319 | 33087 | 24 | 24 | 24 |
|
||||||
|
| 327 | 327 | 33095 | 25 | 25 | 25 |
|
||||||
|
| 359 | 359 | 33127 | 20 | 23 | 21 |
|
||||||
|
| 447 | 447 | 33215 | 42 | 42 | 42 |
|
||||||
|
| 479 | 479 | 33247 | 22 | 22 | 22 |
|
||||||
|
| 495 | 495 | 33263 | 29 | 29 | 29 |
|
||||||
|
| 511 | 511 | 33279 | 38 | 38 | 38 |
|
||||||
|
| 559 | 559 | 33327 | 31 | 34 | 31 |
|
||||||
|
| 603 | 603 | 33371 | 26 | 38 | 26 |
|
||||||
|
| 639 | 639 | 33407 | 34 | 34 | 34 |
|
||||||
|
| 667 | 667 | 33435 | 30 | 30 | 30 |
|
||||||
|
| 671 | 671 | 33439 | 24 | 41 | 24 |
|
||||||
|
| 703 | 703 | 33471 | 84 | 84 | 84 |
|
||||||
|
| 743 | 743 | 33511 | 25 | 25 | 28 |
|
||||||
|
| 751 | 751 | 33519 | 47 | 47 | 47 |
|
||||||
|
| 763 | 763 | 33531 | 23 | 23 | 23 |
|
||||||
|
| 767 | 767 | 33535 | 21 | 21 | 21 |
|
||||||
|
| 795 | 795 | 33563 | 28 | 28 | 28 |
|
||||||
|
| 859 | 859 | 33627 | 24 | 24 | 24 |
|
||||||
|
| 871 | 871 | 33639 | 48 | 48 | 48 |
|
||||||
|
| 895 | 895 | 33663 | 25 | 25 | 25 |
|
||||||
|
| 927 | 927 | 33695 | 38 | 38 | 38 |
|
||||||
|
| 943 | 943 | 33711 | 17 | 17 | 17 |
|
||||||
|
| 959 | 959 | 33727 | 24 | 24 | 24 |
|
||||||
|
| 991 | 991 | 33759 | 27 | 27 | 27 |
|
||||||
|
| 1007 | 1007 | 33775 | 22 | 22 | 22 |
|
||||||
|
|
||||||
|
## Sorties
|
||||||
|
|
||||||
|
- JSON : `/home/ncantu/code/algo/docs/artefacts/collatz/refinement_K/palier2p15/bundle_mod2p15_to2p18/open_roots_obstruction_profile_mod2p15_to2p18.json`
|
||||||
|
- Markdown : `/home/ncantu/code/algo/docs/artefacts/collatz/refinement_K/palier2p15/bundle_mod2p15_to2p18/open_roots_obstruction_profile_mod2p15_to2p18.md`
|
||||||
|
|
||||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,152 @@
|
|||||||
|
**Auteur** : Équipe 4NK
|
||||||
|
|
||||||
|
# Certificat de raffinement multi-niveaux sur S_M — racine 2^15 vers 2^18
|
||||||
|
|
||||||
|
## Domaine
|
||||||
|
|
||||||
|
- racine : 2^15
|
||||||
|
- profondeur max : 2^18
|
||||||
|
- |S_15| (impairs) : 16384
|
||||||
|
|
||||||
|
## Entrées (feuilles terminales)
|
||||||
|
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/terminal_clauses_over_Sm/palier2p15/clauses_terminal_over_Sm_mod2p15.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/terminal_clauses_over_Sm/palier2p16/clauses_terminal_over_Sm_mod2p16.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/terminal_clauses_over_Sm/palier2p17/clauses_terminal_over_Sm_mod2p17.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/terminal_clauses_over_Sm/palier2p18/clauses_terminal_over_Sm_mod2p18.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p15/clauses_D_minor_over_Sm_mod2p15_k8_u13.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p15/clauses_D_minor_over_Sm_mod2p15_k9_u15.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p16/clauses_D_minor_over_Sm_mod2p16_k6_u10.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p16/clauses_D_minor_over_Sm_mod2p16_k7_u12.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p16/clauses_D_minor_over_Sm_mod2p16_k8_u13.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p16/clauses_D_minor_over_Sm_mod2p16_k9_u15.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p16/clauses_D_minor_over_Sm_mod2p16_k10_u16.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p17/clauses_D_minor_over_Sm_mod2p17_k6_u10.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p17/clauses_D_minor_over_Sm_mod2p17_k7_u12.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p17/clauses_D_minor_over_Sm_mod2p17_k8_u13.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p17/clauses_D_minor_over_Sm_mod2p17_k9_u15.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p17/clauses_D_minor_over_Sm_mod2p17_k10_u16.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p18/clauses_D_minor_over_Sm_mod2p18_k6_u10.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p18/clauses_D_minor_over_Sm_mod2p18_k7_u12.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p18/clauses_D_minor_over_Sm_mod2p18_k8_u13.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p18/clauses_D_minor_over_Sm_mod2p18_k9_u15.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p18/clauses_D_minor_over_Sm_mod2p18_k10_u16.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p18/clauses_D_minor_over_Sm_mod2p18_k11_u18.json`
|
||||||
|
|
||||||
|
## Fermeture (sur S_M)
|
||||||
|
|
||||||
|
- closed_roots : 15270
|
||||||
|
- open_roots : 1114
|
||||||
|
- closed_ratio : 0.9320068359375
|
||||||
|
|
||||||
|
## Timeline (première profondeur de fermeture)
|
||||||
|
|
||||||
|
| cible | newly_closed | closed | open | closed_ratio |
|
||||||
|
| --- | --- | --- | --- | --- |
|
||||||
|
| 15 | 15235 | 15235 | 1149 | 0.929871 |
|
||||||
|
| 16 | 35 | 15270 | 1114 | 0.932007 |
|
||||||
|
| 17 | 0 | 15270 | 1114 | 0.932007 |
|
||||||
|
| 18 | 0 | 15270 | 1114 | 0.932007 |
|
||||||
|
|
||||||
|
## Audit du résidu (comptes, q_m, parents à un enfant)
|
||||||
|
|
||||||
|
| m | open_count | q_m | parents_one_child |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| 15 | 1114 | 0.838868940754 | 359 |
|
||||||
|
| 16 | 1869 | 0.915462814339 | 316 |
|
||||||
|
| 17 | 3422 | 0.928550555231 | 489 |
|
||||||
|
| 18 | 6355 | | |
|
||||||
|
|
||||||
|
### Racines encore ouvertes (extrait)
|
||||||
|
|
||||||
|
- r=27
|
||||||
|
- r=31
|
||||||
|
- r=47
|
||||||
|
- r=63
|
||||||
|
- r=71
|
||||||
|
- r=91
|
||||||
|
- r=103
|
||||||
|
- r=111
|
||||||
|
- r=159
|
||||||
|
- r=167
|
||||||
|
- r=223
|
||||||
|
- r=239
|
||||||
|
- r=251
|
||||||
|
- r=283
|
||||||
|
- r=319
|
||||||
|
- r=327
|
||||||
|
- r=359
|
||||||
|
- r=447
|
||||||
|
- r=479
|
||||||
|
- r=495
|
||||||
|
- r=511
|
||||||
|
- r=559
|
||||||
|
- r=603
|
||||||
|
- r=639
|
||||||
|
- r=667
|
||||||
|
- r=671
|
||||||
|
- r=703
|
||||||
|
- r=743
|
||||||
|
- r=751
|
||||||
|
- r=763
|
||||||
|
- r=767
|
||||||
|
- r=795
|
||||||
|
- r=859
|
||||||
|
- r=871
|
||||||
|
- r=895
|
||||||
|
- r=927
|
||||||
|
- r=943
|
||||||
|
- r=959
|
||||||
|
- r=991
|
||||||
|
- r=1007
|
||||||
|
- ... (1074 more)
|
||||||
|
|
||||||
|
### Racines fermées (extrait)
|
||||||
|
|
||||||
|
- r=1
|
||||||
|
- r=3
|
||||||
|
- r=5
|
||||||
|
- r=7
|
||||||
|
- r=9
|
||||||
|
- r=11
|
||||||
|
- r=13
|
||||||
|
- r=15
|
||||||
|
- r=17
|
||||||
|
- r=19
|
||||||
|
- r=21
|
||||||
|
- r=23
|
||||||
|
- r=25
|
||||||
|
- r=29
|
||||||
|
- r=33
|
||||||
|
- r=35
|
||||||
|
- r=37
|
||||||
|
- r=39
|
||||||
|
- r=41
|
||||||
|
- r=43
|
||||||
|
- r=45
|
||||||
|
- r=49
|
||||||
|
- r=51
|
||||||
|
- r=53
|
||||||
|
- r=55
|
||||||
|
- r=57
|
||||||
|
- r=59
|
||||||
|
- r=61
|
||||||
|
- r=65
|
||||||
|
- r=67
|
||||||
|
- r=69
|
||||||
|
- r=73
|
||||||
|
- r=75
|
||||||
|
- r=77
|
||||||
|
- r=79
|
||||||
|
- r=81
|
||||||
|
- r=83
|
||||||
|
- r=85
|
||||||
|
- r=87
|
||||||
|
- r=89
|
||||||
|
- ... (15230 more)
|
||||||
|
|
||||||
|
## Sorties
|
||||||
|
|
||||||
|
- JSON : `/home/ncantu/code/algo/docs/artefacts/collatz/refinement_K/palier2p15/bundle_mod2p15_to2p18/refinement_certificate_Sm_multilevel_mod2p15_to2p18.json`
|
||||||
|
- Audit JSON : `/home/ncantu/code/algo/docs/artefacts/collatz/refinement_K/palier2p15/bundle_mod2p15_to2p18/audit_refinement_certificate_Sm_multilevel_mod2p15_to2p18.json`
|
||||||
|
|
||||||
@ -0,0 +1,450 @@
|
|||||||
|
{
|
||||||
|
"domain": {
|
||||||
|
"root_palier": 15,
|
||||||
|
"max_palier": 18,
|
||||||
|
"S_root_size": 16384
|
||||||
|
},
|
||||||
|
"closure": {
|
||||||
|
"closed_roots": 15283,
|
||||||
|
"open_roots": 1101,
|
||||||
|
"closed_ratio": 0.93280029296875,
|
||||||
|
"closed_roots_sample": [
|
||||||
|
1,
|
||||||
|
3,
|
||||||
|
5,
|
||||||
|
7,
|
||||||
|
9,
|
||||||
|
11,
|
||||||
|
13,
|
||||||
|
15,
|
||||||
|
17,
|
||||||
|
19,
|
||||||
|
21,
|
||||||
|
23,
|
||||||
|
25,
|
||||||
|
29,
|
||||||
|
33,
|
||||||
|
35,
|
||||||
|
37,
|
||||||
|
39,
|
||||||
|
41,
|
||||||
|
43,
|
||||||
|
45,
|
||||||
|
49,
|
||||||
|
51,
|
||||||
|
53,
|
||||||
|
55,
|
||||||
|
57,
|
||||||
|
59,
|
||||||
|
61,
|
||||||
|
65,
|
||||||
|
67,
|
||||||
|
69,
|
||||||
|
73,
|
||||||
|
75,
|
||||||
|
77,
|
||||||
|
79,
|
||||||
|
81,
|
||||||
|
83,
|
||||||
|
85,
|
||||||
|
87,
|
||||||
|
89,
|
||||||
|
93,
|
||||||
|
95,
|
||||||
|
97,
|
||||||
|
99,
|
||||||
|
101,
|
||||||
|
105,
|
||||||
|
107,
|
||||||
|
109,
|
||||||
|
113,
|
||||||
|
115,
|
||||||
|
117,
|
||||||
|
119,
|
||||||
|
121,
|
||||||
|
123,
|
||||||
|
125,
|
||||||
|
127,
|
||||||
|
129,
|
||||||
|
131,
|
||||||
|
133,
|
||||||
|
135,
|
||||||
|
137,
|
||||||
|
139,
|
||||||
|
141,
|
||||||
|
143,
|
||||||
|
145,
|
||||||
|
147,
|
||||||
|
149,
|
||||||
|
151,
|
||||||
|
153,
|
||||||
|
155,
|
||||||
|
157,
|
||||||
|
161,
|
||||||
|
163,
|
||||||
|
165,
|
||||||
|
169,
|
||||||
|
171,
|
||||||
|
173,
|
||||||
|
175,
|
||||||
|
177,
|
||||||
|
179,
|
||||||
|
181,
|
||||||
|
183,
|
||||||
|
185,
|
||||||
|
187,
|
||||||
|
189,
|
||||||
|
191,
|
||||||
|
193,
|
||||||
|
195,
|
||||||
|
197,
|
||||||
|
199,
|
||||||
|
201,
|
||||||
|
203,
|
||||||
|
205,
|
||||||
|
207,
|
||||||
|
209,
|
||||||
|
211,
|
||||||
|
213,
|
||||||
|
215,
|
||||||
|
217,
|
||||||
|
219,
|
||||||
|
221,
|
||||||
|
225,
|
||||||
|
227,
|
||||||
|
229,
|
||||||
|
231,
|
||||||
|
233,
|
||||||
|
235,
|
||||||
|
237,
|
||||||
|
241,
|
||||||
|
243,
|
||||||
|
245,
|
||||||
|
247,
|
||||||
|
249,
|
||||||
|
253,
|
||||||
|
255,
|
||||||
|
257,
|
||||||
|
259,
|
||||||
|
261,
|
||||||
|
263,
|
||||||
|
265,
|
||||||
|
267,
|
||||||
|
269,
|
||||||
|
271,
|
||||||
|
273,
|
||||||
|
275,
|
||||||
|
277,
|
||||||
|
279,
|
||||||
|
281,
|
||||||
|
285,
|
||||||
|
287,
|
||||||
|
289,
|
||||||
|
291,
|
||||||
|
293,
|
||||||
|
295,
|
||||||
|
297,
|
||||||
|
299,
|
||||||
|
301,
|
||||||
|
303,
|
||||||
|
305,
|
||||||
|
307,
|
||||||
|
309,
|
||||||
|
311,
|
||||||
|
313,
|
||||||
|
315,
|
||||||
|
317,
|
||||||
|
321,
|
||||||
|
323,
|
||||||
|
325,
|
||||||
|
329,
|
||||||
|
331,
|
||||||
|
333,
|
||||||
|
335,
|
||||||
|
337,
|
||||||
|
339,
|
||||||
|
341,
|
||||||
|
343,
|
||||||
|
345,
|
||||||
|
347,
|
||||||
|
349,
|
||||||
|
351,
|
||||||
|
353,
|
||||||
|
355,
|
||||||
|
357,
|
||||||
|
361,
|
||||||
|
363,
|
||||||
|
365,
|
||||||
|
367,
|
||||||
|
369,
|
||||||
|
371,
|
||||||
|
373,
|
||||||
|
375,
|
||||||
|
377,
|
||||||
|
379,
|
||||||
|
381,
|
||||||
|
383,
|
||||||
|
385,
|
||||||
|
387,
|
||||||
|
389,
|
||||||
|
391,
|
||||||
|
393,
|
||||||
|
395,
|
||||||
|
397,
|
||||||
|
399,
|
||||||
|
401,
|
||||||
|
403,
|
||||||
|
405,
|
||||||
|
407,
|
||||||
|
409,
|
||||||
|
411,
|
||||||
|
413,
|
||||||
|
415,
|
||||||
|
417,
|
||||||
|
419,
|
||||||
|
421,
|
||||||
|
423,
|
||||||
|
425,
|
||||||
|
427,
|
||||||
|
429,
|
||||||
|
431,
|
||||||
|
433
|
||||||
|
],
|
||||||
|
"still_open_roots_sample": [
|
||||||
|
27,
|
||||||
|
31,
|
||||||
|
47,
|
||||||
|
63,
|
||||||
|
71,
|
||||||
|
91,
|
||||||
|
103,
|
||||||
|
111,
|
||||||
|
159,
|
||||||
|
167,
|
||||||
|
223,
|
||||||
|
239,
|
||||||
|
251,
|
||||||
|
283,
|
||||||
|
319,
|
||||||
|
327,
|
||||||
|
359,
|
||||||
|
447,
|
||||||
|
479,
|
||||||
|
495,
|
||||||
|
511,
|
||||||
|
559,
|
||||||
|
603,
|
||||||
|
639,
|
||||||
|
667,
|
||||||
|
671,
|
||||||
|
703,
|
||||||
|
743,
|
||||||
|
751,
|
||||||
|
763,
|
||||||
|
767,
|
||||||
|
795,
|
||||||
|
859,
|
||||||
|
871,
|
||||||
|
895,
|
||||||
|
927,
|
||||||
|
959,
|
||||||
|
991,
|
||||||
|
1007,
|
||||||
|
1023,
|
||||||
|
1051,
|
||||||
|
1055,
|
||||||
|
1115,
|
||||||
|
1127,
|
||||||
|
1179,
|
||||||
|
1183,
|
||||||
|
1255,
|
||||||
|
1263,
|
||||||
|
1279,
|
||||||
|
1307,
|
||||||
|
1343,
|
||||||
|
1383,
|
||||||
|
1407,
|
||||||
|
1439,
|
||||||
|
1471,
|
||||||
|
1503,
|
||||||
|
1519,
|
||||||
|
1535,
|
||||||
|
1583,
|
||||||
|
1639,
|
||||||
|
1663,
|
||||||
|
1691,
|
||||||
|
1695,
|
||||||
|
1767,
|
||||||
|
1791,
|
||||||
|
1819,
|
||||||
|
1883,
|
||||||
|
1895,
|
||||||
|
1919,
|
||||||
|
1951,
|
||||||
|
1959,
|
||||||
|
2043,
|
||||||
|
2047,
|
||||||
|
2111,
|
||||||
|
2139,
|
||||||
|
2151,
|
||||||
|
2159,
|
||||||
|
2175,
|
||||||
|
2207,
|
||||||
|
2215,
|
||||||
|
2287,
|
||||||
|
2367,
|
||||||
|
2375,
|
||||||
|
2407,
|
||||||
|
2463,
|
||||||
|
2495,
|
||||||
|
2527,
|
||||||
|
2543,
|
||||||
|
2559,
|
||||||
|
2651,
|
||||||
|
2671,
|
||||||
|
2687,
|
||||||
|
2715,
|
||||||
|
2751,
|
||||||
|
2791,
|
||||||
|
2811,
|
||||||
|
2843,
|
||||||
|
2879,
|
||||||
|
2887,
|
||||||
|
2919,
|
||||||
|
2943,
|
||||||
|
3007,
|
||||||
|
3055,
|
||||||
|
3071,
|
||||||
|
3099,
|
||||||
|
3103,
|
||||||
|
3175,
|
||||||
|
3183,
|
||||||
|
3199,
|
||||||
|
3227,
|
||||||
|
3231,
|
||||||
|
3263,
|
||||||
|
3311,
|
||||||
|
3323,
|
||||||
|
3327,
|
||||||
|
3355,
|
||||||
|
3375,
|
||||||
|
3391,
|
||||||
|
3399,
|
||||||
|
3431,
|
||||||
|
3487,
|
||||||
|
3519,
|
||||||
|
3567,
|
||||||
|
3583,
|
||||||
|
3615,
|
||||||
|
3631,
|
||||||
|
3711,
|
||||||
|
3739,
|
||||||
|
3775,
|
||||||
|
3815,
|
||||||
|
3823,
|
||||||
|
3839,
|
||||||
|
3867,
|
||||||
|
3931,
|
||||||
|
3943,
|
||||||
|
3999,
|
||||||
|
4095,
|
||||||
|
4127,
|
||||||
|
4167,
|
||||||
|
4207,
|
||||||
|
4255,
|
||||||
|
4263,
|
||||||
|
4319,
|
||||||
|
4335,
|
||||||
|
4347,
|
||||||
|
4351,
|
||||||
|
4379,
|
||||||
|
4399,
|
||||||
|
4415,
|
||||||
|
4423,
|
||||||
|
4511,
|
||||||
|
4575,
|
||||||
|
4591,
|
||||||
|
4607,
|
||||||
|
4635,
|
||||||
|
4699,
|
||||||
|
4719,
|
||||||
|
4735,
|
||||||
|
4763,
|
||||||
|
4767,
|
||||||
|
4775,
|
||||||
|
4799,
|
||||||
|
4839,
|
||||||
|
4847,
|
||||||
|
4863,
|
||||||
|
4891,
|
||||||
|
4935,
|
||||||
|
4967,
|
||||||
|
4991,
|
||||||
|
5055,
|
||||||
|
5119,
|
||||||
|
5147,
|
||||||
|
5151,
|
||||||
|
5211,
|
||||||
|
5223,
|
||||||
|
5247,
|
||||||
|
5279,
|
||||||
|
5287,
|
||||||
|
5343,
|
||||||
|
5351,
|
||||||
|
5359,
|
||||||
|
5375,
|
||||||
|
5403,
|
||||||
|
5423,
|
||||||
|
5447,
|
||||||
|
5479,
|
||||||
|
5503,
|
||||||
|
5535,
|
||||||
|
5567,
|
||||||
|
5659,
|
||||||
|
5663,
|
||||||
|
5679,
|
||||||
|
5735,
|
||||||
|
5759,
|
||||||
|
5791,
|
||||||
|
5823,
|
||||||
|
5863,
|
||||||
|
5887,
|
||||||
|
5915,
|
||||||
|
5991
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"generated_at": "2026-03-10T07:19:24.524931Z",
|
||||||
|
"sha256": {
|
||||||
|
"inputs": {
|
||||||
|
"docs/artefacts/collatz/terminal_clauses_over_Sm/palier2p15/clauses_terminal_over_Sm_mod2p15.json": "efd03bab49da30cb4be9cedc53e0e7fe2cb92e0e87c3e0fd1aa3514a17427fa3",
|
||||||
|
"docs/artefacts/collatz/terminal_clauses_over_Sm/palier2p16/clauses_terminal_over_Sm_mod2p16.json": "09629196bfbf1fd5576df72a7a34729b0d19be3febaa64d8a3817438d95e9d35",
|
||||||
|
"docs/artefacts/collatz/terminal_clauses_over_Sm/palier2p17/clauses_terminal_over_Sm_mod2p17.json": "07dc98763cc42491c937305fd7d153959c7f54f2e5cfee3a4deebe97744bae7c",
|
||||||
|
"docs/artefacts/collatz/terminal_clauses_over_Sm/palier2p18/clauses_terminal_over_Sm_mod2p18.json": "16662d98a05c93a177823c3e44f84b50dff300d53152f9d525ff781e2aa89ac2",
|
||||||
|
"docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p15/clauses_D_minor_over_Sm_mod2p15_k8_u13.json": "8b437c0a8215f942e0aaf47c387e7e52842ff87886fb7c6a04e9dd7776f738f5",
|
||||||
|
"docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p15/clauses_D_minor_over_Sm_mod2p15_k9_u15.json": "4086ecee3718de33d1580db99d9f3d68677afe7ba7d6d46739b3c85c9fb77fe0",
|
||||||
|
"docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p16/clauses_D_minor_over_Sm_mod2p16_k6_u10.json": "342285a5302ea82db64501b4b456fbde9d4335cf114243fa95a955eb5e4f46c6",
|
||||||
|
"docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p16/clauses_D_minor_over_Sm_mod2p16_k7_u12.json": "d7f5e9e53e09da79bf244a0d9ec30dce2b2c0f21342c765ee5cf68b9300044c9",
|
||||||
|
"docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p16/clauses_D_minor_over_Sm_mod2p16_k8_u13.json": "954a62a86c3d70f83f224541118d6a4ecf21a194e052650801973aff4a026ad8",
|
||||||
|
"docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p16/clauses_D_minor_over_Sm_mod2p16_k9_u15.json": "80047d4a01761a80f071d48a0bfd0337826b090af1bca3467d73d918c5de64d6",
|
||||||
|
"docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p16/clauses_D_minor_over_Sm_mod2p16_k10_u16.json": "386a2aeed2017724682775f0b12567520a603a315682829963fd5ea571f4e31c",
|
||||||
|
"docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p17/clauses_D_minor_over_Sm_mod2p17_k6_u10.json": "608b13150f7abcdfff3453be52e84db491a958408c3019e512ecf90c081d8328",
|
||||||
|
"docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p17/clauses_D_minor_over_Sm_mod2p17_k7_u12.json": "78ab06661923d8489810167fb249d0cb87993b8d5fe65fdd56f1f17e73dc8a5d",
|
||||||
|
"docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p17/clauses_D_minor_over_Sm_mod2p17_k8_u13.json": "4d71267c627e630570c4b226c32bad9e30525da7d160045e2360ee4a2f36199d",
|
||||||
|
"docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p17/clauses_D_minor_over_Sm_mod2p17_k9_u15.json": "a0f80ac79111ebad80888649d10f51cedb7f6f76c681ba98095fcbb6e6a57bfd",
|
||||||
|
"docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p17/clauses_D_minor_over_Sm_mod2p17_k10_u16.json": "dcf0de1d69b492f8ea072e1c6045acddf4bd3a6e43e93a1f5313757ac7d430d2",
|
||||||
|
"docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p18/clauses_D_minor_over_Sm_mod2p18_k6_u10.json": "ae047b4b91858df1ab5ade8d6f619340528fa536a163e42f5d10a92e1ea7176a",
|
||||||
|
"docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p18/clauses_D_minor_over_Sm_mod2p18_k7_u12.json": "33a4236e7438a8f7f73165083f9d14a21dac0e6c64ac252072d3ff5d053dd5a4",
|
||||||
|
"docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p18/clauses_D_minor_over_Sm_mod2p18_k8_u13.json": "30f7cf398782508933f0a7ed0be842ce087fc2ee0297f0cf0e1f759d8a0d832e",
|
||||||
|
"docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p18/clauses_D_minor_over_Sm_mod2p18_k9_u15.json": "c309d9173847b8073a37cf3d62f35b380a7d22cfad4a1aa0d2074f3ae20258e9",
|
||||||
|
"docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p18/clauses_D_minor_over_Sm_mod2p18_k10_u16.json": "933210e286995000b98b2575847185fc93f9c042ffbebe38a6178053a202cd80",
|
||||||
|
"docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p18/clauses_D_minor_over_Sm_mod2p18_k11_u18.json": "f6176d0a032c473e638da83c7fcd756aa14cd4e65950fd18e59085016717e268",
|
||||||
|
"docs/artefacts/collatz/refinement_K/palier2p15/bundle_mod2p15_to2p18_autoderive_brother/derived_brother_dminor/palier2p15/clauses_D_minor_derived_from_brothers_over_Sm_mod2p15.json": "3175e951681f1f05ce9bf91423025f7cef003e8e272ca1515253d59e920477d0",
|
||||||
|
"docs/artefacts/collatz/refinement_K/palier2p15/bundle_mod2p15_to2p18_autoderive_brother/derived_brother_dminor/palier2p16/clauses_D_minor_derived_from_brothers_over_Sm_mod2p16.json": "e0944088881af42e7b2569c60702a9162e201e0d9a22dfd9b976cd7c12984bbd",
|
||||||
|
"docs/artefacts/collatz/refinement_K/palier2p15/bundle_mod2p15_to2p18_autoderive_brother/derived_brother_dminor/palier2p17/clauses_D_minor_derived_from_brothers_over_Sm_mod2p17.json": "78a0a9e4afb64333b078e0f88eb4cbb0f6df6516de47c68d936af731cffcdafb",
|
||||||
|
"docs/artefacts/collatz/refinement_K/palier2p15/bundle_mod2p15_to2p18_autoderive_brother/derived_brother_dminor/palier2p18/clauses_D_minor_derived_from_brothers_over_Sm_mod2p18.json": "799d79c423e06d28eac44fc318854c86fd70a924a43bbdb0c61ef56dfd71bfae"
|
||||||
|
},
|
||||||
|
"outputs": {
|
||||||
|
"docs/artefacts/collatz/refinement_K/palier2p15/bundle_mod2p15_to2p18_autoderive_brother/refinement_certificate_Sm_multilevel_mod2p15_to2p18.json": "f9856c74ed88e5b61b6bd1f610a5fe2e95c889dd281ff673e7cf939a41c6e07a"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,8 @@
|
|||||||
|
**Auteur** : Équipe 4NK
|
||||||
|
|
||||||
|
# Audit — raffinement multi-niveaux sur S_M (2^15→2^18)
|
||||||
|
|
||||||
|
- closed_roots : 15283
|
||||||
|
- open_roots : 1101
|
||||||
|
- closed_ratio : 0.93280029296875
|
||||||
|
|
||||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"domain": {
|
||||||
|
"palier": 15
|
||||||
|
},
|
||||||
|
"inputs": {
|
||||||
|
"derived_json": "/home/ncantu/code/algo/docs/artefacts/collatz/refinement_K/palier2p15/bundle_mod2p15_to2p18_autoderive_brother/derived_brother_dminor/palier2p15/clauses_D_minor_derived_from_brothers_over_Sm_mod2p15.json",
|
||||||
|
"terminal_json": "/home/ncantu/code/algo/docs/artefacts/collatz/terminal_clauses_over_Sm/palier2p15/clauses_terminal_over_Sm_mod2p15.json"
|
||||||
|
},
|
||||||
|
"counts": {
|
||||||
|
"total": 14500,
|
||||||
|
"ok": 14500,
|
||||||
|
"errors": 0
|
||||||
|
},
|
||||||
|
"ok": true,
|
||||||
|
"errors_sample": []
|
||||||
|
}
|
||||||
@ -0,0 +1,9 @@
|
|||||||
|
**Auteur** : Équipe 4NK
|
||||||
|
|
||||||
|
# Vérification — clauses D minorées dérivées par frères sur S_M (2^15)
|
||||||
|
|
||||||
|
- total : 14500
|
||||||
|
- ok : 14500
|
||||||
|
- errors : 0
|
||||||
|
- ok_all : True
|
||||||
|
|
||||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"domain": {
|
||||||
|
"palier": 16
|
||||||
|
},
|
||||||
|
"inputs": {
|
||||||
|
"derived_json": "/home/ncantu/code/algo/docs/artefacts/collatz/refinement_K/palier2p15/bundle_mod2p15_to2p18_autoderive_brother/derived_brother_dminor/palier2p16/clauses_D_minor_derived_from_brothers_over_Sm_mod2p16.json",
|
||||||
|
"terminal_json": "/home/ncantu/code/algo/docs/artefacts/collatz/terminal_clauses_over_Sm/palier2p16/clauses_terminal_over_Sm_mod2p16.json"
|
||||||
|
},
|
||||||
|
"counts": {
|
||||||
|
"total": 29248,
|
||||||
|
"ok": 29248,
|
||||||
|
"errors": 0
|
||||||
|
},
|
||||||
|
"ok": true,
|
||||||
|
"errors_sample": []
|
||||||
|
}
|
||||||
@ -0,0 +1,9 @@
|
|||||||
|
**Auteur** : Équipe 4NK
|
||||||
|
|
||||||
|
# Vérification — clauses D minorées dérivées par frères sur S_M (2^16)
|
||||||
|
|
||||||
|
- total : 29248
|
||||||
|
- ok : 29248
|
||||||
|
- errors : 0
|
||||||
|
- ok_all : True
|
||||||
|
|
||||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"domain": {
|
||||||
|
"palier": 17
|
||||||
|
},
|
||||||
|
"inputs": {
|
||||||
|
"derived_json": "/home/ncantu/code/algo/docs/artefacts/collatz/refinement_K/palier2p15/bundle_mod2p15_to2p18_autoderive_brother/derived_brother_dminor/palier2p17/clauses_D_minor_derived_from_brothers_over_Sm_mod2p17.json",
|
||||||
|
"terminal_json": "/home/ncantu/code/algo/docs/artefacts/collatz/terminal_clauses_over_Sm/palier2p17/clauses_terminal_over_Sm_mod2p17.json"
|
||||||
|
},
|
||||||
|
"counts": {
|
||||||
|
"total": 59090,
|
||||||
|
"ok": 59090,
|
||||||
|
"errors": 0
|
||||||
|
},
|
||||||
|
"ok": true,
|
||||||
|
"errors_sample": []
|
||||||
|
}
|
||||||
@ -0,0 +1,9 @@
|
|||||||
|
**Auteur** : Équipe 4NK
|
||||||
|
|
||||||
|
# Vérification — clauses D minorées dérivées par frères sur S_M (2^17)
|
||||||
|
|
||||||
|
- total : 59090
|
||||||
|
- ok : 59090
|
||||||
|
- errors : 0
|
||||||
|
- ok_all : True
|
||||||
|
|
||||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"domain": {
|
||||||
|
"palier": 18
|
||||||
|
},
|
||||||
|
"inputs": {
|
||||||
|
"derived_json": "/home/ncantu/code/algo/docs/artefacts/collatz/refinement_K/palier2p15/bundle_mod2p15_to2p18_autoderive_brother/derived_brother_dminor/palier2p18/clauses_D_minor_derived_from_brothers_over_Sm_mod2p18.json",
|
||||||
|
"terminal_json": "/home/ncantu/code/algo/docs/artefacts/collatz/terminal_clauses_over_Sm/palier2p18/clauses_terminal_over_Sm_mod2p18.json"
|
||||||
|
},
|
||||||
|
"counts": {
|
||||||
|
"total": 118774,
|
||||||
|
"ok": 118774,
|
||||||
|
"errors": 0
|
||||||
|
},
|
||||||
|
"ok": true,
|
||||||
|
"errors_sample": []
|
||||||
|
}
|
||||||
@ -0,0 +1,9 @@
|
|||||||
|
**Auteur** : Équipe 4NK
|
||||||
|
|
||||||
|
# Vérification — clauses D minorées dérivées par frères sur S_M (2^18)
|
||||||
|
|
||||||
|
- total : 118774
|
||||||
|
- ok : 118774
|
||||||
|
- errors : 0
|
||||||
|
- ok_all : True
|
||||||
|
|
||||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,99 @@
|
|||||||
|
**Auteur** : Équipe 4NK
|
||||||
|
|
||||||
|
# Diagnostic — échec targeted leaves — racine 2^15
|
||||||
|
|
||||||
|
- tracked_roots_file : `/home/ncantu/code/algo/docs/artefacts/collatz/refinement_K/palier2p15/incremental_D_minor/tracked_roots_lb_any_top200_mod2p15_to2p18.txt`
|
||||||
|
- k_max : 256
|
||||||
|
- t_max : 256
|
||||||
|
- search_max_required_m : 256
|
||||||
|
|
||||||
|
Table (par racine) :
|
||||||
|
|
||||||
|
| root | child_low | child_high | immediate_low@16 | immediate_high@16 | lb_root | lb_low | lb_high |
|
||||||
|
| --- | --- | --- | --- | --- | --- | --- | --- |
|
||||||
|
| 27 | 27 | 32795 | no | no | 60 | 60 | 26 |
|
||||||
|
| 31 | 31 | 32799 | no | no | 57 | 57 | 25 |
|
||||||
|
| 47 | 47 | 32815 | no | no | 56 | 56 | 42 |
|
||||||
|
| 63 | 63 | 32831 | no | no | 55 | 55 | 25 |
|
||||||
|
| 71 | 71 | 32839 | no | no | 52 | 52 | 22 |
|
||||||
|
| 251 | 251 | 33019 | no | no | 80 | 30 | 80 |
|
||||||
|
| 703 | 703 | 33471 | no | no | 84 | 84 | 61 |
|
||||||
|
| 1055 | 1055 | 33823 | no | no | 83 | 83 | 28 |
|
||||||
|
| 1183 | 1183 | 33951 | no | no | 55 | 17 | 55 |
|
||||||
|
| 1279 | 1279 | 34047 | no | no | 70 | 25 | 70 |
|
||||||
|
| 1407 | 1407 | 34175 | no | no | 85 | 85 | 23 |
|
||||||
|
| 1471 | 1471 | 34239 | no | no | 80 | 32 | 80 |
|
||||||
|
| 1535 | 1535 | 34303 | no | no | 56 | 20 | 56 |
|
||||||
|
| 1583 | 1583 | 34351 | no | no | 82 | 82 | 38 |
|
||||||
|
| 1819 | 1819 | 34587 | no | no | 62 | 62 | 23 |
|
||||||
|
| 2047 | 2047 | 34815 | no | no | 59 | 59 | 20 |
|
||||||
|
| 2111 | 2111 | 34879 | no | no | 84 | 84 | 36 |
|
||||||
|
| 2151 | 2151 | 34919 | no | no | 52 | 42 | 52 |
|
||||||
|
| 2287 | 2287 | 35055 | no | no | 54 | 54 | 22 |
|
||||||
|
| 2527 | 2527 | 35295 | no | no | 66 | 28 | 66 |
|
||||||
|
| 2887 | 2887 | 35655 | no | no | 136 | 17 | 136 |
|
||||||
|
| 3071 | 3071 | 35839 | no | no | 50 | 50 | 20 |
|
||||||
|
| 3199 | 3199 | 35967 | no | no | 66 | 18 | 66 |
|
||||||
|
| 3263 | 3263 | 36031 | no | no | 56 | 20 | 56 |
|
||||||
|
| 3399 | 3399 | 36167 | no | no | 49 | 49 | 22 |
|
||||||
|
| 4095 | 4095 | 36863 | no | no | 52 | 52 | 39 |
|
||||||
|
| 4255 | 4255 | 37023 | no | no | 71 | 71 | 18 |
|
||||||
|
| 4263 | 4263 | 37031 | no | no | 55 | 55 | 32 |
|
||||||
|
| 4379 | 4379 | 37147 | no | no | 77 | 17 | 77 |
|
||||||
|
| 4591 | 4591 | 37359 | no | no | 66 | 66 | 21 |
|
||||||
|
| 4607 | 4607 | 37375 | no | no | 49 | 49 | 21 |
|
||||||
|
| 4735 | 4735 | 37503 | no | no | 128 | 18 | 128 |
|
||||||
|
| 5119 | 5119 | 37887 | no | no | 52 | 39 | 52 |
|
||||||
|
| 5535 | 5535 | 38303 | no | no | 67 | 28 | 67 |
|
||||||
|
| 5823 | 5823 | 38591 | no | no | 53 | 24 | 53 |
|
||||||
|
| 6143 | 6143 | 38911 | no | no | 51 | 51 | 20 |
|
||||||
|
| 6171 | 6171 | 38939 | no | no | 56 | 56 | 25 |
|
||||||
|
| 6303 | 6303 | 39071 | no | no | 59 | 29 | 59 |
|
||||||
|
| 6383 | 6383 | 39151 | no | no | 70 | 70 | 22 |
|
||||||
|
| 6471 | 6471 | 39239 | no | no | 51 | 51 | 33 |
|
||||||
|
| 6887 | 6887 | 39655 | no | no | 58 | 58 | 25 |
|
||||||
|
| 6939 | 6939 | 39707 | no | no | 63 | 29 | 63 |
|
||||||
|
| 7039 | 7039 | 39807 | no | no | 63 | 18 | 63 |
|
||||||
|
| 7167 | 7167 | 39935 | no | no | 65 | 34 | 65 |
|
||||||
|
| 7279 | 7279 | 40047 | no | no | 58 | 58 | 20 |
|
||||||
|
| 7423 | 7423 | 40191 | no | no | 54 | 39 | 54 |
|
||||||
|
| 7451 | 7451 | 40219 | no | no | 60 | 17 | 60 |
|
||||||
|
| 7527 | 7527 | 40295 | no | no | 75 | 75 | 39 |
|
||||||
|
| 7935 | 7935 | 40703 | no | no | 71 | 43 | 71 |
|
||||||
|
| 7963 | 7963 | 40731 | no | no | 76 | 76 | 25 |
|
||||||
|
| 8191 | 8191 | 40959 | no | no | 52 | 45 | 52 |
|
||||||
|
| 8223 | 8223 | 40991 | no | no | 53 | 29 | 53 |
|
||||||
|
| 8351 | 8351 | 41119 | no | no | 66 | 36 | 66 |
|
||||||
|
| 8359 | 8359 | 41127 | no | no | 51 | 51 | 23 |
|
||||||
|
| 8639 | 8639 | 41407 | no | no | 56 | 35 | 56 |
|
||||||
|
| 8959 | 8959 | 41727 | no | no | 73 | 73 | 23 |
|
||||||
|
| 9023 | 9023 | 41791 | no | no | 74 | 18 | 74 |
|
||||||
|
| 9183 | 9183 | 41951 | no | no | 55 | 55 | 38 |
|
||||||
|
| 9215 | 9215 | 41983 | no | no | 50 | 50 | 20 |
|
||||||
|
| 9663 | 9663 | 42431 | no | no | 55 | 55 | 45 |
|
||||||
|
| 9695 | 9695 | 42463 | no | no | 72 | 24 | 72 |
|
||||||
|
| 9831 | 9831 | 42599 | no | no | 52 | 18 | 52 |
|
||||||
|
| 9855 | 9855 | 42623 | no | no | 49 | 29 | 49 |
|
||||||
|
| 10011 | 10011 | 42779 | no | no | 56 | 56 | 33 |
|
||||||
|
| 10087 | 10087 | 42855 | no | no | 102 | 102 | 22 |
|
||||||
|
| 10239 | 10239 | 43007 | no | no | 71 | 35 | 71 |
|
||||||
|
| 10331 | 10331 | 43099 | no | no | 52 | 52 | 24 |
|
||||||
|
| 10351 | 10351 | 43119 | no | no | 51 | 30 | 51 |
|
||||||
|
| 10407 | 10407 | 43175 | no | no | 70 | 29 | 70 |
|
||||||
|
| 10719 | 10719 | 43487 | no | no | 49 | 23 | 49 |
|
||||||
|
| 10919 | 10919 | 43687 | no | no | 57 | 57 | 20 |
|
||||||
|
| 11263 | 11263 | 44031 | no | no | 53 | 53 | 25 |
|
||||||
|
| 11291 | 11291 | 44059 | no | no | 74 | 74 | 18 |
|
||||||
|
| 11391 | 11391 | 44159 | no | no | 50 | 50 | 38 |
|
||||||
|
| 11623 | 11623 | 44391 | no | no | 49 | 49 | 21 |
|
||||||
|
| 11903 | 11903 | 44671 | no | no | 60 | 42 | 60 |
|
||||||
|
| 11931 | 11931 | 44699 | no | no | 49 | 49 | 19 |
|
||||||
|
| 12015 | 12015 | 44783 | no | no | 60 | 23 | 60 |
|
||||||
|
| 12135 | 12135 | 44903 | no | no | 57 | 40 | 57 |
|
||||||
|
| 12287 | 12287 | 45055 | no | no | 114 | 44 | 114 |
|
||||||
|
|
||||||
|
## Sorties
|
||||||
|
|
||||||
|
- JSON : `/home/ncantu/code/algo/docs/artefacts/collatz/refinement_K/palier2p15/bundle_mod2p15_to2p18_autoderive_brother/diagnostic_targeted_leaves_failure_mod2p15.json`
|
||||||
|
- Markdown : `/home/ncantu/code/algo/docs/artefacts/collatz/refinement_K/palier2p15/bundle_mod2p15_to2p18_autoderive_brother/diagnostic_targeted_leaves_failure_mod2p15.md`
|
||||||
|
|
||||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,522 @@
|
|||||||
|
**Auteur** : Équipe 4NK
|
||||||
|
|
||||||
|
# Profil d’obstruction — racines ouvertes sur S_15 (raffinement jusqu’à 2^18)
|
||||||
|
|
||||||
|
## Domaine
|
||||||
|
|
||||||
|
- racine : 2^15
|
||||||
|
- max : 2^18
|
||||||
|
- open_roots : 1101
|
||||||
|
|
||||||
|
## Recherche (borne inférieure de profondeur)
|
||||||
|
|
||||||
|
- k_max : 256
|
||||||
|
- t_max : 256
|
||||||
|
- max_required_m (pruning) : 256
|
||||||
|
|
||||||
|
### Buckets — lower_bound_required_m_to_close_root
|
||||||
|
|
||||||
|
Buckets (any):
|
||||||
|
- required_m=19 : 47
|
||||||
|
- required_m=20 : 50
|
||||||
|
- required_m=21 : 49
|
||||||
|
- required_m=22 : 63
|
||||||
|
- required_m=23 : 42
|
||||||
|
- required_m=24 : 42
|
||||||
|
- required_m=25 : 56
|
||||||
|
- required_m=26 : 39
|
||||||
|
- required_m=27 : 32
|
||||||
|
- required_m=28 : 52
|
||||||
|
- required_m=29 : 44
|
||||||
|
- required_m=30 : 36
|
||||||
|
- required_m=31 : 29
|
||||||
|
- required_m=32 : 18
|
||||||
|
- required_m=33 : 35
|
||||||
|
- required_m=34 : 25
|
||||||
|
- required_m=35 : 18
|
||||||
|
- required_m=36 : 31
|
||||||
|
- required_m=37 : 27
|
||||||
|
- required_m=38 : 23
|
||||||
|
- required_m=39 : 11
|
||||||
|
- required_m=40 : 8
|
||||||
|
- required_m=41 : 17
|
||||||
|
- required_m=42 : 14
|
||||||
|
- required_m=43 : 12
|
||||||
|
- required_m=44 : 14
|
||||||
|
- required_m=45 : 20
|
||||||
|
- required_m=46 : 14
|
||||||
|
- required_m=47 : 17
|
||||||
|
- required_m=48 : 16
|
||||||
|
- required_m=49 : 10
|
||||||
|
- required_m=50 : 6
|
||||||
|
- required_m=51 : 9
|
||||||
|
- required_m=52 : 10
|
||||||
|
- required_m=53 : 9
|
||||||
|
- required_m=54 : 9
|
||||||
|
- required_m=55 : 9
|
||||||
|
- required_m=56 : 10
|
||||||
|
- required_m=57 : 5
|
||||||
|
- required_m=58 : 6
|
||||||
|
- required_m=59 : 6
|
||||||
|
- required_m=60 : 7
|
||||||
|
- required_m=61 : 6
|
||||||
|
- required_m=62 : 3
|
||||||
|
- required_m=63 : 5
|
||||||
|
- required_m=64 : 4
|
||||||
|
- required_m=65 : 4
|
||||||
|
- required_m=66 : 8
|
||||||
|
- required_m=67 : 4
|
||||||
|
- required_m=68 : 5
|
||||||
|
- required_m=69 : 5
|
||||||
|
- required_m=70 : 6
|
||||||
|
- required_m=71 : 8
|
||||||
|
- required_m=72 : 8
|
||||||
|
- required_m=73 : 7
|
||||||
|
- required_m=74 : 2
|
||||||
|
- required_m=75 : 2
|
||||||
|
- required_m=76 : 3
|
||||||
|
- required_m=77 : 1
|
||||||
|
- required_m=78 : 1
|
||||||
|
- required_m=79 : 2
|
||||||
|
- required_m=80 : 2
|
||||||
|
- required_m=82 : 1
|
||||||
|
- required_m=83 : 2
|
||||||
|
- required_m=84 : 3
|
||||||
|
- required_m=85 : 2
|
||||||
|
- required_m=90 : 1
|
||||||
|
- required_m=102 : 1
|
||||||
|
- required_m=114 : 1
|
||||||
|
- required_m=118 : 1
|
||||||
|
- required_m=121 : 1
|
||||||
|
- required_m=127 : 1
|
||||||
|
- required_m=128 : 2
|
||||||
|
- required_m=130 : 1
|
||||||
|
- required_m=136 : 1
|
||||||
|
|
||||||
|
Buckets (D only):
|
||||||
|
- required_m=19 : 47
|
||||||
|
- required_m=20 : 27
|
||||||
|
- required_m=21 : 41
|
||||||
|
- required_m=22 : 63
|
||||||
|
- required_m=23 : 37
|
||||||
|
- required_m=24 : 39
|
||||||
|
- required_m=25 : 58
|
||||||
|
- required_m=26 : 34
|
||||||
|
- required_m=27 : 35
|
||||||
|
- required_m=28 : 55
|
||||||
|
- required_m=29 : 24
|
||||||
|
- required_m=30 : 37
|
||||||
|
- required_m=31 : 17
|
||||||
|
- required_m=32 : 25
|
||||||
|
- required_m=33 : 44
|
||||||
|
- required_m=34 : 25
|
||||||
|
- required_m=35 : 23
|
||||||
|
- required_m=36 : 36
|
||||||
|
- required_m=37 : 24
|
||||||
|
- required_m=38 : 28
|
||||||
|
- required_m=39 : 10
|
||||||
|
- required_m=40 : 9
|
||||||
|
- required_m=41 : 20
|
||||||
|
- required_m=42 : 11
|
||||||
|
- required_m=43 : 13
|
||||||
|
- required_m=44 : 20
|
||||||
|
- required_m=45 : 17
|
||||||
|
- required_m=46 : 17
|
||||||
|
- required_m=47 : 25
|
||||||
|
- required_m=48 : 15
|
||||||
|
- required_m=49 : 11
|
||||||
|
- required_m=50 : 5
|
||||||
|
- required_m=51 : 13
|
||||||
|
- required_m=52 : 15
|
||||||
|
- required_m=53 : 6
|
||||||
|
- required_m=54 : 11
|
||||||
|
- required_m=55 : 14
|
||||||
|
- required_m=56 : 4
|
||||||
|
- required_m=57 : 6
|
||||||
|
- required_m=58 : 4
|
||||||
|
- required_m=59 : 7
|
||||||
|
- required_m=60 : 10
|
||||||
|
- required_m=61 : 5
|
||||||
|
- required_m=62 : 3
|
||||||
|
- required_m=63 : 9
|
||||||
|
- required_m=64 : 2
|
||||||
|
- required_m=65 : 7
|
||||||
|
- required_m=66 : 8
|
||||||
|
- required_m=67 : 6
|
||||||
|
- required_m=68 : 5
|
||||||
|
- required_m=69 : 5
|
||||||
|
- required_m=70 : 7
|
||||||
|
- required_m=71 : 8
|
||||||
|
- required_m=72 : 6
|
||||||
|
- required_m=73 : 8
|
||||||
|
- required_m=74 : 5
|
||||||
|
- required_m=75 : 3
|
||||||
|
- required_m=76 : 3
|
||||||
|
- required_m=77 : 1
|
||||||
|
- required_m=78 : 1
|
||||||
|
- required_m=79 : 3
|
||||||
|
- required_m=80 : 2
|
||||||
|
- required_m=81 : 1
|
||||||
|
- required_m=82 : 2
|
||||||
|
- required_m=83 : 2
|
||||||
|
- required_m=84 : 3
|
||||||
|
- required_m=85 : 2
|
||||||
|
- required_m=87 : 1
|
||||||
|
- required_m=90 : 1
|
||||||
|
- required_m=95 : 1
|
||||||
|
- required_m=109 : 1
|
||||||
|
- required_m=114 : 1
|
||||||
|
- required_m=121 : 1
|
||||||
|
- required_m=124 : 1
|
||||||
|
- required_m=127 : 1
|
||||||
|
- required_m=128 : 2
|
||||||
|
- required_m=130 : 1
|
||||||
|
- required_m=136 : 1
|
||||||
|
|
||||||
|
Buckets (F only):
|
||||||
|
- required_m=19 : 47
|
||||||
|
- required_m=20 : 42
|
||||||
|
- required_m=21 : 53
|
||||||
|
- required_m=22 : 52
|
||||||
|
- required_m=23 : 50
|
||||||
|
- required_m=24 : 43
|
||||||
|
- required_m=25 : 42
|
||||||
|
- required_m=26 : 42
|
||||||
|
- required_m=27 : 38
|
||||||
|
- required_m=28 : 43
|
||||||
|
- required_m=29 : 48
|
||||||
|
- required_m=30 : 41
|
||||||
|
- required_m=31 : 35
|
||||||
|
- required_m=32 : 19
|
||||||
|
- required_m=33 : 27
|
||||||
|
- required_m=34 : 31
|
||||||
|
- required_m=35 : 18
|
||||||
|
- required_m=36 : 26
|
||||||
|
- required_m=37 : 31
|
||||||
|
- required_m=38 : 25
|
||||||
|
- required_m=39 : 13
|
||||||
|
- required_m=40 : 9
|
||||||
|
- required_m=41 : 12
|
||||||
|
- required_m=42 : 19
|
||||||
|
- required_m=43 : 12
|
||||||
|
- required_m=44 : 11
|
||||||
|
- required_m=45 : 23
|
||||||
|
- required_m=46 : 16
|
||||||
|
- required_m=47 : 13
|
||||||
|
- required_m=48 : 19
|
||||||
|
- required_m=49 : 10
|
||||||
|
- required_m=50 : 6
|
||||||
|
- required_m=51 : 10
|
||||||
|
- required_m=52 : 8
|
||||||
|
- required_m=53 : 10
|
||||||
|
- required_m=54 : 9
|
||||||
|
- required_m=55 : 5
|
||||||
|
- required_m=56 : 13
|
||||||
|
- required_m=57 : 5
|
||||||
|
- required_m=58 : 8
|
||||||
|
- required_m=59 : 6
|
||||||
|
- required_m=60 : 6
|
||||||
|
- required_m=61 : 7
|
||||||
|
- required_m=62 : 3
|
||||||
|
- required_m=63 : 5
|
||||||
|
- required_m=64 : 4
|
||||||
|
- required_m=65 : 4
|
||||||
|
- required_m=66 : 8
|
||||||
|
- required_m=67 : 4
|
||||||
|
- required_m=68 : 5
|
||||||
|
- required_m=69 : 5
|
||||||
|
- required_m=70 : 6
|
||||||
|
- required_m=71 : 7
|
||||||
|
- required_m=72 : 9
|
||||||
|
- required_m=73 : 7
|
||||||
|
- required_m=74 : 2
|
||||||
|
- required_m=75 : 2
|
||||||
|
- required_m=76 : 3
|
||||||
|
- required_m=77 : 1
|
||||||
|
- required_m=78 : 1
|
||||||
|
- required_m=79 : 1
|
||||||
|
- required_m=80 : 3
|
||||||
|
- required_m=82 : 1
|
||||||
|
- required_m=83 : 2
|
||||||
|
- required_m=84 : 3
|
||||||
|
- required_m=85 : 2
|
||||||
|
- required_m=90 : 1
|
||||||
|
- required_m=102 : 1
|
||||||
|
- required_m=114 : 1
|
||||||
|
- required_m=118 : 1
|
||||||
|
- required_m=121 : 1
|
||||||
|
- required_m=127 : 1
|
||||||
|
- required_m=128 : 1
|
||||||
|
- required_m=129 : 1
|
||||||
|
- required_m=130 : 1
|
||||||
|
- required_m=136 : 1
|
||||||
|
|
||||||
|
## Motifs dominants (<=32)
|
||||||
|
|
||||||
|
- both_children_no_contracting_D_up_to32 : 8
|
||||||
|
- both_children_F_blocked_by_deltaF_up_to32 : 7
|
||||||
|
- both_children_no_contracting_F_up_to32 : 7
|
||||||
|
|
||||||
|
## Histogrammes (<=32, agrégés sur les deux enfants)
|
||||||
|
|
||||||
|
### first_k_contracting_D_up_to32
|
||||||
|
- k=10 : 346
|
||||||
|
- k=11 : 203
|
||||||
|
- k=12 : 152
|
||||||
|
- k=13 : 223
|
||||||
|
- k=14 : 116
|
||||||
|
- k=15 : 175
|
||||||
|
- k=16 : 88
|
||||||
|
- k=17 : 121
|
||||||
|
- k=18 : 65
|
||||||
|
- k=19 : 53
|
||||||
|
- k=20 : 81
|
||||||
|
- k=21 : 51
|
||||||
|
- k=22 : 67
|
||||||
|
- k=23 : 37
|
||||||
|
- k=24 : 21
|
||||||
|
- k=25 : 44
|
||||||
|
- k=26 : 24
|
||||||
|
- k=27 : 48
|
||||||
|
- k=28 : 26
|
||||||
|
- k=29 : 32
|
||||||
|
- k=30 : 18
|
||||||
|
- k=31 : 14
|
||||||
|
- k=32 : 20
|
||||||
|
|
||||||
|
### first_k_contracting_D_up_to32 (low child)
|
||||||
|
- k=10 : 174
|
||||||
|
- k=11 : 99
|
||||||
|
- k=12 : 78
|
||||||
|
- k=13 : 106
|
||||||
|
- k=14 : 57
|
||||||
|
- k=15 : 89
|
||||||
|
- k=16 : 45
|
||||||
|
- k=17 : 66
|
||||||
|
- k=18 : 33
|
||||||
|
- k=19 : 30
|
||||||
|
- k=20 : 32
|
||||||
|
- k=21 : 23
|
||||||
|
- k=22 : 30
|
||||||
|
- k=23 : 19
|
||||||
|
- k=24 : 13
|
||||||
|
- k=25 : 19
|
||||||
|
- k=26 : 15
|
||||||
|
- k=27 : 25
|
||||||
|
- k=28 : 12
|
||||||
|
- k=29 : 14
|
||||||
|
- k=30 : 13
|
||||||
|
- k=31 : 8
|
||||||
|
- k=32 : 13
|
||||||
|
|
||||||
|
### first_k_contracting_D_up_to32 (high child)
|
||||||
|
- k=10 : 172
|
||||||
|
- k=11 : 104
|
||||||
|
- k=12 : 74
|
||||||
|
- k=13 : 117
|
||||||
|
- k=14 : 59
|
||||||
|
- k=15 : 86
|
||||||
|
- k=16 : 43
|
||||||
|
- k=17 : 55
|
||||||
|
- k=18 : 32
|
||||||
|
- k=19 : 23
|
||||||
|
- k=20 : 49
|
||||||
|
- k=21 : 28
|
||||||
|
- k=22 : 37
|
||||||
|
- k=23 : 18
|
||||||
|
- k=24 : 8
|
||||||
|
- k=25 : 25
|
||||||
|
- k=26 : 9
|
||||||
|
- k=27 : 23
|
||||||
|
- k=28 : 14
|
||||||
|
- k=29 : 18
|
||||||
|
- k=30 : 5
|
||||||
|
- k=31 : 6
|
||||||
|
- k=32 : 7
|
||||||
|
|
||||||
|
### first_t_contracting_F_up_to32
|
||||||
|
- t=10 : 260
|
||||||
|
- t=11 : 366
|
||||||
|
- t=12 : 199
|
||||||
|
- t=13 : 119
|
||||||
|
- t=14 : 185
|
||||||
|
- t=15 : 108
|
||||||
|
- t=16 : 144
|
||||||
|
- t=17 : 73
|
||||||
|
- t=18 : 110
|
||||||
|
- t=19 : 57
|
||||||
|
- t=20 : 40
|
||||||
|
- t=21 : 68
|
||||||
|
- t=22 : 40
|
||||||
|
- t=23 : 56
|
||||||
|
- t=24 : 27
|
||||||
|
- t=25 : 22
|
||||||
|
- t=26 : 36
|
||||||
|
- t=27 : 30
|
||||||
|
- t=28 : 30
|
||||||
|
- t=29 : 16
|
||||||
|
- t=30 : 30
|
||||||
|
- t=31 : 12
|
||||||
|
- t=32 : 12
|
||||||
|
|
||||||
|
### first_t_y_mod3_nonzero_up_to32
|
||||||
|
- t=1 : 2202
|
||||||
|
|
||||||
|
### y_mod3_zero_count_up_to32
|
||||||
|
- count=0 : 2202
|
||||||
|
|
||||||
|
### y_mod3_zero_count_up_to32 (low child)
|
||||||
|
- count=0 : 1101
|
||||||
|
|
||||||
|
### y_mod3_zero_count_up_to32 (high child)
|
||||||
|
- count=0 : 1101
|
||||||
|
|
||||||
|
## Corrélations (borne inférieure)
|
||||||
|
|
||||||
|
### lb_D - lb_F
|
||||||
|
- diff=-8 : 2
|
||||||
|
- diff=-7 : 2
|
||||||
|
- diff=-6 : 5
|
||||||
|
- diff=-5 : 3
|
||||||
|
- diff=-4 : 6
|
||||||
|
- diff=-3 : 17
|
||||||
|
- diff=-2 : 13
|
||||||
|
- diff=-1 : 39
|
||||||
|
- diff=0 : 827
|
||||||
|
- diff=1 : 9
|
||||||
|
- diff=2 : 21
|
||||||
|
- diff=3 : 30
|
||||||
|
- diff=4 : 14
|
||||||
|
- diff=5 : 17
|
||||||
|
- diff=6 : 9
|
||||||
|
- diff=7 : 20
|
||||||
|
- diff=8 : 10
|
||||||
|
- diff=9 : 7
|
||||||
|
- diff=10 : 5
|
||||||
|
- diff=11 : 4
|
||||||
|
- diff=12 : 7
|
||||||
|
- diff=13 : 2
|
||||||
|
- diff=14 : 2
|
||||||
|
- diff=15 : 3
|
||||||
|
- diff=16 : 2
|
||||||
|
- diff=17 : 4
|
||||||
|
- diff=18 : 2
|
||||||
|
- diff=19 : 1
|
||||||
|
- diff=20 : 1
|
||||||
|
- diff=21 : 2
|
||||||
|
- diff=22 : 2
|
||||||
|
- diff=24 : 1
|
||||||
|
- diff=25 : 1
|
||||||
|
- diff=26 : 2
|
||||||
|
- diff=28 : 1
|
||||||
|
- diff=30 : 2
|
||||||
|
- diff=31 : 2
|
||||||
|
- diff=38 : 1
|
||||||
|
- diff=40 : 1
|
||||||
|
- diff=42 : 1
|
||||||
|
- diff=44 : 1
|
||||||
|
|
||||||
|
### lb_any - lb_D
|
||||||
|
- diff=-44 : 1
|
||||||
|
- diff=-42 : 1
|
||||||
|
- diff=-40 : 1
|
||||||
|
- diff=-38 : 1
|
||||||
|
- diff=-31 : 2
|
||||||
|
- diff=-30 : 2
|
||||||
|
- diff=-28 : 1
|
||||||
|
- diff=-26 : 3
|
||||||
|
- diff=-25 : 1
|
||||||
|
- diff=-23 : 1
|
||||||
|
- diff=-22 : 2
|
||||||
|
- diff=-21 : 1
|
||||||
|
- diff=-20 : 1
|
||||||
|
- diff=-19 : 1
|
||||||
|
- diff=-18 : 2
|
||||||
|
- diff=-17 : 4
|
||||||
|
- diff=-16 : 2
|
||||||
|
- diff=-15 : 3
|
||||||
|
- diff=-14 : 2
|
||||||
|
- diff=-13 : 3
|
||||||
|
- diff=-12 : 7
|
||||||
|
- diff=-11 : 4
|
||||||
|
- diff=-10 : 5
|
||||||
|
- diff=-9 : 7
|
||||||
|
- diff=-8 : 9
|
||||||
|
- diff=-7 : 21
|
||||||
|
- diff=-6 : 10
|
||||||
|
- diff=-5 : 17
|
||||||
|
- diff=-4 : 15
|
||||||
|
- diff=-3 : 30
|
||||||
|
- diff=-2 : 20
|
||||||
|
- diff=-1 : 8
|
||||||
|
- diff=0 : 913
|
||||||
|
|
||||||
|
### lb_any - lb_F
|
||||||
|
- diff=-8 : 2
|
||||||
|
- diff=-7 : 2
|
||||||
|
- diff=-6 : 5
|
||||||
|
- diff=-5 : 3
|
||||||
|
- diff=-4 : 6
|
||||||
|
- diff=-3 : 19
|
||||||
|
- diff=-2 : 20
|
||||||
|
- diff=-1 : 42
|
||||||
|
- diff=0 : 1002
|
||||||
|
|
||||||
|
## Quantiles (borne inférieure)
|
||||||
|
|
||||||
|
| metric | p50 | p75 | p90 | p95 | p99 | max |
|
||||||
|
| --- | --- | --- | --- | --- | --- | --- |
|
||||||
|
| lb_any | 30 | 44 | 60 | 70 | 85 | 136 |
|
||||||
|
| lb_D | 33 | 46 | 63 | 71 | 87 | 136 |
|
||||||
|
| lb_F | 31 | 44 | 60 | 70 | 85 | 136 |
|
||||||
|
|
||||||
|
## Exemples (premières lignes)
|
||||||
|
|
||||||
|
| r | child0 | child1 | lb_any | lb_D | lb_F |
|
||||||
|
| --- | --- | --- | --- | --- | --- |
|
||||||
|
| 27 | 27 | 32795 | 60 | 60 | 60 |
|
||||||
|
| 31 | 31 | 32799 | 57 | 57 | 57 |
|
||||||
|
| 47 | 47 | 32815 | 56 | 56 | 56 |
|
||||||
|
| 63 | 63 | 32831 | 55 | 55 | 58 |
|
||||||
|
| 71 | 71 | 32839 | 52 | 52 | 55 |
|
||||||
|
| 91 | 91 | 32859 | 46 | 46 | 46 |
|
||||||
|
| 103 | 103 | 32871 | 43 | 43 | 43 |
|
||||||
|
| 111 | 111 | 32879 | 32 | 32 | 32 |
|
||||||
|
| 159 | 159 | 32927 | 24 | 24 | 24 |
|
||||||
|
| 167 | 167 | 32935 | 31 | 31 | 31 |
|
||||||
|
| 223 | 223 | 32991 | 33 | 33 | 33 |
|
||||||
|
| 239 | 239 | 33007 | 22 | 22 | 22 |
|
||||||
|
| 251 | 251 | 33019 | 80 | 80 | 80 |
|
||||||
|
| 283 | 283 | 33051 | 41 | 41 | 42 |
|
||||||
|
| 319 | 319 | 33087 | 24 | 24 | 24 |
|
||||||
|
| 327 | 327 | 33095 | 25 | 25 | 25 |
|
||||||
|
| 359 | 359 | 33127 | 20 | 23 | 21 |
|
||||||
|
| 447 | 447 | 33215 | 42 | 42 | 42 |
|
||||||
|
| 479 | 479 | 33247 | 22 | 22 | 22 |
|
||||||
|
| 495 | 495 | 33263 | 29 | 29 | 29 |
|
||||||
|
| 511 | 511 | 33279 | 38 | 38 | 38 |
|
||||||
|
| 559 | 559 | 33327 | 31 | 34 | 31 |
|
||||||
|
| 603 | 603 | 33371 | 26 | 38 | 26 |
|
||||||
|
| 639 | 639 | 33407 | 34 | 34 | 34 |
|
||||||
|
| 667 | 667 | 33435 | 30 | 30 | 30 |
|
||||||
|
| 671 | 671 | 33439 | 24 | 41 | 24 |
|
||||||
|
| 703 | 703 | 33471 | 84 | 84 | 84 |
|
||||||
|
| 743 | 743 | 33511 | 25 | 25 | 28 |
|
||||||
|
| 751 | 751 | 33519 | 47 | 47 | 47 |
|
||||||
|
| 763 | 763 | 33531 | 23 | 23 | 23 |
|
||||||
|
| 767 | 767 | 33535 | 21 | 21 | 21 |
|
||||||
|
| 795 | 795 | 33563 | 28 | 28 | 28 |
|
||||||
|
| 859 | 859 | 33627 | 24 | 24 | 24 |
|
||||||
|
| 871 | 871 | 33639 | 48 | 48 | 48 |
|
||||||
|
| 895 | 895 | 33663 | 25 | 25 | 25 |
|
||||||
|
| 927 | 927 | 33695 | 38 | 38 | 38 |
|
||||||
|
| 959 | 959 | 33727 | 24 | 24 | 24 |
|
||||||
|
| 991 | 991 | 33759 | 27 | 27 | 27 |
|
||||||
|
| 1007 | 1007 | 33775 | 22 | 22 | 22 |
|
||||||
|
| 1023 | 1023 | 33791 | 36 | 36 | 36 |
|
||||||
|
|
||||||
|
## Sorties
|
||||||
|
|
||||||
|
- JSON : `/home/ncantu/code/algo/docs/artefacts/collatz/refinement_K/palier2p15/bundle_mod2p15_to2p18_autoderive_brother/open_roots_obstruction_profile_mod2p15_to2p18.json`
|
||||||
|
- Markdown : `/home/ncantu/code/algo/docs/artefacts/collatz/refinement_K/palier2p15/bundle_mod2p15_to2p18_autoderive_brother/open_roots_obstruction_profile_mod2p15_to2p18.md`
|
||||||
|
|
||||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,156 @@
|
|||||||
|
**Auteur** : Équipe 4NK
|
||||||
|
|
||||||
|
# Certificat de raffinement multi-niveaux sur S_M — racine 2^15 vers 2^18
|
||||||
|
|
||||||
|
## Domaine
|
||||||
|
|
||||||
|
- racine : 2^15
|
||||||
|
- profondeur max : 2^18
|
||||||
|
- |S_15| (impairs) : 16384
|
||||||
|
|
||||||
|
## Entrées (feuilles terminales)
|
||||||
|
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/terminal_clauses_over_Sm/palier2p15/clauses_terminal_over_Sm_mod2p15.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/terminal_clauses_over_Sm/palier2p16/clauses_terminal_over_Sm_mod2p16.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/terminal_clauses_over_Sm/palier2p17/clauses_terminal_over_Sm_mod2p17.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/terminal_clauses_over_Sm/palier2p18/clauses_terminal_over_Sm_mod2p18.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p15/clauses_D_minor_over_Sm_mod2p15_k8_u13.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p15/clauses_D_minor_over_Sm_mod2p15_k9_u15.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p16/clauses_D_minor_over_Sm_mod2p16_k6_u10.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p16/clauses_D_minor_over_Sm_mod2p16_k7_u12.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p16/clauses_D_minor_over_Sm_mod2p16_k8_u13.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p16/clauses_D_minor_over_Sm_mod2p16_k9_u15.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p16/clauses_D_minor_over_Sm_mod2p16_k10_u16.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p17/clauses_D_minor_over_Sm_mod2p17_k6_u10.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p17/clauses_D_minor_over_Sm_mod2p17_k7_u12.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p17/clauses_D_minor_over_Sm_mod2p17_k8_u13.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p17/clauses_D_minor_over_Sm_mod2p17_k9_u15.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p17/clauses_D_minor_over_Sm_mod2p17_k10_u16.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p18/clauses_D_minor_over_Sm_mod2p18_k6_u10.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p18/clauses_D_minor_over_Sm_mod2p18_k7_u12.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p18/clauses_D_minor_over_Sm_mod2p18_k8_u13.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p18/clauses_D_minor_over_Sm_mod2p18_k9_u15.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p18/clauses_D_minor_over_Sm_mod2p18_k10_u16.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p18/clauses_D_minor_over_Sm_mod2p18_k11_u18.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/refinement_K/palier2p15/bundle_mod2p15_to2p18_autoderive_brother/derived_brother_dminor/palier2p15/clauses_D_minor_derived_from_brothers_over_Sm_mod2p15.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/refinement_K/palier2p15/bundle_mod2p15_to2p18_autoderive_brother/derived_brother_dminor/palier2p16/clauses_D_minor_derived_from_brothers_over_Sm_mod2p16.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/refinement_K/palier2p15/bundle_mod2p15_to2p18_autoderive_brother/derived_brother_dminor/palier2p17/clauses_D_minor_derived_from_brothers_over_Sm_mod2p17.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/refinement_K/palier2p15/bundle_mod2p15_to2p18_autoderive_brother/derived_brother_dminor/palier2p18/clauses_D_minor_derived_from_brothers_over_Sm_mod2p18.json`
|
||||||
|
|
||||||
|
## Fermeture (sur S_M)
|
||||||
|
|
||||||
|
- closed_roots : 15283
|
||||||
|
- open_roots : 1101
|
||||||
|
- closed_ratio : 0.93280029296875
|
||||||
|
|
||||||
|
## Timeline (première profondeur de fermeture)
|
||||||
|
|
||||||
|
| cible | newly_closed | closed | open | closed_ratio |
|
||||||
|
| --- | --- | --- | --- | --- |
|
||||||
|
| 15 | 15283 | 15283 | 1101 | 0.932800 |
|
||||||
|
| 16 | 0 | 15283 | 1101 | 0.932800 |
|
||||||
|
| 17 | 0 | 15283 | 1101 | 0.932800 |
|
||||||
|
| 18 | 0 | 15283 | 1101 | 0.932800 |
|
||||||
|
|
||||||
|
## Audit du résidu (comptes, q_m, parents à un enfant)
|
||||||
|
|
||||||
|
| m | open_count | q_m | parents_one_child |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| 15 | 1101 | 0.842870118074 | 346 |
|
||||||
|
| 16 | 1856 | 0.918372844828 | 303 |
|
||||||
|
| 17 | 3409 | 0.930184804928 | 476 |
|
||||||
|
| 18 | 6342 | | |
|
||||||
|
|
||||||
|
### Racines encore ouvertes (extrait)
|
||||||
|
|
||||||
|
- r=27
|
||||||
|
- r=31
|
||||||
|
- r=47
|
||||||
|
- r=63
|
||||||
|
- r=71
|
||||||
|
- r=91
|
||||||
|
- r=103
|
||||||
|
- r=111
|
||||||
|
- r=159
|
||||||
|
- r=167
|
||||||
|
- r=223
|
||||||
|
- r=239
|
||||||
|
- r=251
|
||||||
|
- r=283
|
||||||
|
- r=319
|
||||||
|
- r=327
|
||||||
|
- r=359
|
||||||
|
- r=447
|
||||||
|
- r=479
|
||||||
|
- r=495
|
||||||
|
- r=511
|
||||||
|
- r=559
|
||||||
|
- r=603
|
||||||
|
- r=639
|
||||||
|
- r=667
|
||||||
|
- r=671
|
||||||
|
- r=703
|
||||||
|
- r=743
|
||||||
|
- r=751
|
||||||
|
- r=763
|
||||||
|
- r=767
|
||||||
|
- r=795
|
||||||
|
- r=859
|
||||||
|
- r=871
|
||||||
|
- r=895
|
||||||
|
- r=927
|
||||||
|
- r=959
|
||||||
|
- r=991
|
||||||
|
- r=1007
|
||||||
|
- r=1023
|
||||||
|
- ... (1061 more)
|
||||||
|
|
||||||
|
### Racines fermées (extrait)
|
||||||
|
|
||||||
|
- r=1
|
||||||
|
- r=3
|
||||||
|
- r=5
|
||||||
|
- r=7
|
||||||
|
- r=9
|
||||||
|
- r=11
|
||||||
|
- r=13
|
||||||
|
- r=15
|
||||||
|
- r=17
|
||||||
|
- r=19
|
||||||
|
- r=21
|
||||||
|
- r=23
|
||||||
|
- r=25
|
||||||
|
- r=29
|
||||||
|
- r=33
|
||||||
|
- r=35
|
||||||
|
- r=37
|
||||||
|
- r=39
|
||||||
|
- r=41
|
||||||
|
- r=43
|
||||||
|
- r=45
|
||||||
|
- r=49
|
||||||
|
- r=51
|
||||||
|
- r=53
|
||||||
|
- r=55
|
||||||
|
- r=57
|
||||||
|
- r=59
|
||||||
|
- r=61
|
||||||
|
- r=65
|
||||||
|
- r=67
|
||||||
|
- r=69
|
||||||
|
- r=73
|
||||||
|
- r=75
|
||||||
|
- r=77
|
||||||
|
- r=79
|
||||||
|
- r=81
|
||||||
|
- r=83
|
||||||
|
- r=85
|
||||||
|
- r=87
|
||||||
|
- r=89
|
||||||
|
- ... (15243 more)
|
||||||
|
|
||||||
|
## Sorties
|
||||||
|
|
||||||
|
- JSON : `/home/ncantu/code/algo/docs/artefacts/collatz/refinement_K/palier2p15/bundle_mod2p15_to2p18_autoderive_brother/refinement_certificate_Sm_multilevel_mod2p15_to2p18.json`
|
||||||
|
- Audit JSON : `/home/ncantu/code/algo/docs/artefacts/collatz/refinement_K/palier2p15/bundle_mod2p15_to2p18_autoderive_brother/audit_refinement_certificate_Sm_multilevel_mod2p15_to2p18.json`
|
||||||
|
|
||||||
@ -0,0 +1,450 @@
|
|||||||
|
{
|
||||||
|
"domain": {
|
||||||
|
"root_palier": 15,
|
||||||
|
"max_palier": 18,
|
||||||
|
"S_root_size": 16384
|
||||||
|
},
|
||||||
|
"closure": {
|
||||||
|
"closed_roots": 15283,
|
||||||
|
"open_roots": 1101,
|
||||||
|
"closed_ratio": 0.93280029296875,
|
||||||
|
"closed_roots_sample": [
|
||||||
|
1,
|
||||||
|
3,
|
||||||
|
5,
|
||||||
|
7,
|
||||||
|
9,
|
||||||
|
11,
|
||||||
|
13,
|
||||||
|
15,
|
||||||
|
17,
|
||||||
|
19,
|
||||||
|
21,
|
||||||
|
23,
|
||||||
|
25,
|
||||||
|
29,
|
||||||
|
33,
|
||||||
|
35,
|
||||||
|
37,
|
||||||
|
39,
|
||||||
|
41,
|
||||||
|
43,
|
||||||
|
45,
|
||||||
|
49,
|
||||||
|
51,
|
||||||
|
53,
|
||||||
|
55,
|
||||||
|
57,
|
||||||
|
59,
|
||||||
|
61,
|
||||||
|
65,
|
||||||
|
67,
|
||||||
|
69,
|
||||||
|
73,
|
||||||
|
75,
|
||||||
|
77,
|
||||||
|
79,
|
||||||
|
81,
|
||||||
|
83,
|
||||||
|
85,
|
||||||
|
87,
|
||||||
|
89,
|
||||||
|
93,
|
||||||
|
95,
|
||||||
|
97,
|
||||||
|
99,
|
||||||
|
101,
|
||||||
|
105,
|
||||||
|
107,
|
||||||
|
109,
|
||||||
|
113,
|
||||||
|
115,
|
||||||
|
117,
|
||||||
|
119,
|
||||||
|
121,
|
||||||
|
123,
|
||||||
|
125,
|
||||||
|
127,
|
||||||
|
129,
|
||||||
|
131,
|
||||||
|
133,
|
||||||
|
135,
|
||||||
|
137,
|
||||||
|
139,
|
||||||
|
141,
|
||||||
|
143,
|
||||||
|
145,
|
||||||
|
147,
|
||||||
|
149,
|
||||||
|
151,
|
||||||
|
153,
|
||||||
|
155,
|
||||||
|
157,
|
||||||
|
161,
|
||||||
|
163,
|
||||||
|
165,
|
||||||
|
169,
|
||||||
|
171,
|
||||||
|
173,
|
||||||
|
175,
|
||||||
|
177,
|
||||||
|
179,
|
||||||
|
181,
|
||||||
|
183,
|
||||||
|
185,
|
||||||
|
187,
|
||||||
|
189,
|
||||||
|
191,
|
||||||
|
193,
|
||||||
|
195,
|
||||||
|
197,
|
||||||
|
199,
|
||||||
|
201,
|
||||||
|
203,
|
||||||
|
205,
|
||||||
|
207,
|
||||||
|
209,
|
||||||
|
211,
|
||||||
|
213,
|
||||||
|
215,
|
||||||
|
217,
|
||||||
|
219,
|
||||||
|
221,
|
||||||
|
225,
|
||||||
|
227,
|
||||||
|
229,
|
||||||
|
231,
|
||||||
|
233,
|
||||||
|
235,
|
||||||
|
237,
|
||||||
|
241,
|
||||||
|
243,
|
||||||
|
245,
|
||||||
|
247,
|
||||||
|
249,
|
||||||
|
253,
|
||||||
|
255,
|
||||||
|
257,
|
||||||
|
259,
|
||||||
|
261,
|
||||||
|
263,
|
||||||
|
265,
|
||||||
|
267,
|
||||||
|
269,
|
||||||
|
271,
|
||||||
|
273,
|
||||||
|
275,
|
||||||
|
277,
|
||||||
|
279,
|
||||||
|
281,
|
||||||
|
285,
|
||||||
|
287,
|
||||||
|
289,
|
||||||
|
291,
|
||||||
|
293,
|
||||||
|
295,
|
||||||
|
297,
|
||||||
|
299,
|
||||||
|
301,
|
||||||
|
303,
|
||||||
|
305,
|
||||||
|
307,
|
||||||
|
309,
|
||||||
|
311,
|
||||||
|
313,
|
||||||
|
315,
|
||||||
|
317,
|
||||||
|
321,
|
||||||
|
323,
|
||||||
|
325,
|
||||||
|
329,
|
||||||
|
331,
|
||||||
|
333,
|
||||||
|
335,
|
||||||
|
337,
|
||||||
|
339,
|
||||||
|
341,
|
||||||
|
343,
|
||||||
|
345,
|
||||||
|
347,
|
||||||
|
349,
|
||||||
|
351,
|
||||||
|
353,
|
||||||
|
355,
|
||||||
|
357,
|
||||||
|
361,
|
||||||
|
363,
|
||||||
|
365,
|
||||||
|
367,
|
||||||
|
369,
|
||||||
|
371,
|
||||||
|
373,
|
||||||
|
375,
|
||||||
|
377,
|
||||||
|
379,
|
||||||
|
381,
|
||||||
|
383,
|
||||||
|
385,
|
||||||
|
387,
|
||||||
|
389,
|
||||||
|
391,
|
||||||
|
393,
|
||||||
|
395,
|
||||||
|
397,
|
||||||
|
399,
|
||||||
|
401,
|
||||||
|
403,
|
||||||
|
405,
|
||||||
|
407,
|
||||||
|
409,
|
||||||
|
411,
|
||||||
|
413,
|
||||||
|
415,
|
||||||
|
417,
|
||||||
|
419,
|
||||||
|
421,
|
||||||
|
423,
|
||||||
|
425,
|
||||||
|
427,
|
||||||
|
429,
|
||||||
|
431,
|
||||||
|
433
|
||||||
|
],
|
||||||
|
"still_open_roots_sample": [
|
||||||
|
27,
|
||||||
|
31,
|
||||||
|
47,
|
||||||
|
63,
|
||||||
|
71,
|
||||||
|
91,
|
||||||
|
103,
|
||||||
|
111,
|
||||||
|
159,
|
||||||
|
167,
|
||||||
|
223,
|
||||||
|
239,
|
||||||
|
251,
|
||||||
|
283,
|
||||||
|
319,
|
||||||
|
327,
|
||||||
|
359,
|
||||||
|
447,
|
||||||
|
479,
|
||||||
|
495,
|
||||||
|
511,
|
||||||
|
559,
|
||||||
|
603,
|
||||||
|
639,
|
||||||
|
667,
|
||||||
|
671,
|
||||||
|
703,
|
||||||
|
743,
|
||||||
|
751,
|
||||||
|
763,
|
||||||
|
767,
|
||||||
|
795,
|
||||||
|
859,
|
||||||
|
871,
|
||||||
|
895,
|
||||||
|
927,
|
||||||
|
959,
|
||||||
|
991,
|
||||||
|
1007,
|
||||||
|
1023,
|
||||||
|
1051,
|
||||||
|
1055,
|
||||||
|
1115,
|
||||||
|
1127,
|
||||||
|
1179,
|
||||||
|
1183,
|
||||||
|
1255,
|
||||||
|
1263,
|
||||||
|
1279,
|
||||||
|
1307,
|
||||||
|
1343,
|
||||||
|
1383,
|
||||||
|
1407,
|
||||||
|
1439,
|
||||||
|
1471,
|
||||||
|
1503,
|
||||||
|
1519,
|
||||||
|
1535,
|
||||||
|
1583,
|
||||||
|
1639,
|
||||||
|
1663,
|
||||||
|
1691,
|
||||||
|
1695,
|
||||||
|
1767,
|
||||||
|
1791,
|
||||||
|
1819,
|
||||||
|
1883,
|
||||||
|
1895,
|
||||||
|
1919,
|
||||||
|
1951,
|
||||||
|
1959,
|
||||||
|
2043,
|
||||||
|
2047,
|
||||||
|
2111,
|
||||||
|
2139,
|
||||||
|
2151,
|
||||||
|
2159,
|
||||||
|
2175,
|
||||||
|
2207,
|
||||||
|
2215,
|
||||||
|
2287,
|
||||||
|
2367,
|
||||||
|
2375,
|
||||||
|
2407,
|
||||||
|
2463,
|
||||||
|
2495,
|
||||||
|
2527,
|
||||||
|
2543,
|
||||||
|
2559,
|
||||||
|
2651,
|
||||||
|
2671,
|
||||||
|
2687,
|
||||||
|
2715,
|
||||||
|
2751,
|
||||||
|
2791,
|
||||||
|
2811,
|
||||||
|
2843,
|
||||||
|
2879,
|
||||||
|
2887,
|
||||||
|
2919,
|
||||||
|
2943,
|
||||||
|
3007,
|
||||||
|
3055,
|
||||||
|
3071,
|
||||||
|
3099,
|
||||||
|
3103,
|
||||||
|
3175,
|
||||||
|
3183,
|
||||||
|
3199,
|
||||||
|
3227,
|
||||||
|
3231,
|
||||||
|
3263,
|
||||||
|
3311,
|
||||||
|
3323,
|
||||||
|
3327,
|
||||||
|
3355,
|
||||||
|
3375,
|
||||||
|
3391,
|
||||||
|
3399,
|
||||||
|
3431,
|
||||||
|
3487,
|
||||||
|
3519,
|
||||||
|
3567,
|
||||||
|
3583,
|
||||||
|
3615,
|
||||||
|
3631,
|
||||||
|
3711,
|
||||||
|
3739,
|
||||||
|
3775,
|
||||||
|
3815,
|
||||||
|
3823,
|
||||||
|
3839,
|
||||||
|
3867,
|
||||||
|
3931,
|
||||||
|
3943,
|
||||||
|
3999,
|
||||||
|
4095,
|
||||||
|
4127,
|
||||||
|
4167,
|
||||||
|
4207,
|
||||||
|
4255,
|
||||||
|
4263,
|
||||||
|
4319,
|
||||||
|
4335,
|
||||||
|
4347,
|
||||||
|
4351,
|
||||||
|
4379,
|
||||||
|
4399,
|
||||||
|
4415,
|
||||||
|
4423,
|
||||||
|
4511,
|
||||||
|
4575,
|
||||||
|
4591,
|
||||||
|
4607,
|
||||||
|
4635,
|
||||||
|
4699,
|
||||||
|
4719,
|
||||||
|
4735,
|
||||||
|
4763,
|
||||||
|
4767,
|
||||||
|
4775,
|
||||||
|
4799,
|
||||||
|
4839,
|
||||||
|
4847,
|
||||||
|
4863,
|
||||||
|
4891,
|
||||||
|
4935,
|
||||||
|
4967,
|
||||||
|
4991,
|
||||||
|
5055,
|
||||||
|
5119,
|
||||||
|
5147,
|
||||||
|
5151,
|
||||||
|
5211,
|
||||||
|
5223,
|
||||||
|
5247,
|
||||||
|
5279,
|
||||||
|
5287,
|
||||||
|
5343,
|
||||||
|
5351,
|
||||||
|
5359,
|
||||||
|
5375,
|
||||||
|
5403,
|
||||||
|
5423,
|
||||||
|
5447,
|
||||||
|
5479,
|
||||||
|
5503,
|
||||||
|
5535,
|
||||||
|
5567,
|
||||||
|
5659,
|
||||||
|
5663,
|
||||||
|
5679,
|
||||||
|
5735,
|
||||||
|
5759,
|
||||||
|
5791,
|
||||||
|
5823,
|
||||||
|
5863,
|
||||||
|
5887,
|
||||||
|
5915,
|
||||||
|
5991
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"generated_at": "2026-03-10T07:09:58.427120Z",
|
||||||
|
"sha256": {
|
||||||
|
"inputs": {
|
||||||
|
"docs/artefacts/collatz/terminal_clauses_over_Sm/palier2p15/clauses_terminal_over_Sm_mod2p15.json": "efd03bab49da30cb4be9cedc53e0e7fe2cb92e0e87c3e0fd1aa3514a17427fa3",
|
||||||
|
"docs/artefacts/collatz/terminal_clauses_over_Sm/palier2p16/clauses_terminal_over_Sm_mod2p16.json": "09629196bfbf1fd5576df72a7a34729b0d19be3febaa64d8a3817438d95e9d35",
|
||||||
|
"docs/artefacts/collatz/terminal_clauses_over_Sm/palier2p17/clauses_terminal_over_Sm_mod2p17.json": "07dc98763cc42491c937305fd7d153959c7f54f2e5cfee3a4deebe97744bae7c",
|
||||||
|
"docs/artefacts/collatz/terminal_clauses_over_Sm/palier2p18/clauses_terminal_over_Sm_mod2p18.json": "16662d98a05c93a177823c3e44f84b50dff300d53152f9d525ff781e2aa89ac2",
|
||||||
|
"docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p15/clauses_D_minor_over_Sm_mod2p15_k8_u13.json": "8b437c0a8215f942e0aaf47c387e7e52842ff87886fb7c6a04e9dd7776f738f5",
|
||||||
|
"docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p15/clauses_D_minor_over_Sm_mod2p15_k9_u15.json": "4086ecee3718de33d1580db99d9f3d68677afe7ba7d6d46739b3c85c9fb77fe0",
|
||||||
|
"docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p16/clauses_D_minor_over_Sm_mod2p16_k6_u10.json": "342285a5302ea82db64501b4b456fbde9d4335cf114243fa95a955eb5e4f46c6",
|
||||||
|
"docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p16/clauses_D_minor_over_Sm_mod2p16_k7_u12.json": "d7f5e9e53e09da79bf244a0d9ec30dce2b2c0f21342c765ee5cf68b9300044c9",
|
||||||
|
"docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p16/clauses_D_minor_over_Sm_mod2p16_k8_u13.json": "954a62a86c3d70f83f224541118d6a4ecf21a194e052650801973aff4a026ad8",
|
||||||
|
"docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p16/clauses_D_minor_over_Sm_mod2p16_k9_u15.json": "80047d4a01761a80f071d48a0bfd0337826b090af1bca3467d73d918c5de64d6",
|
||||||
|
"docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p16/clauses_D_minor_over_Sm_mod2p16_k10_u16.json": "386a2aeed2017724682775f0b12567520a603a315682829963fd5ea571f4e31c",
|
||||||
|
"docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p17/clauses_D_minor_over_Sm_mod2p17_k6_u10.json": "608b13150f7abcdfff3453be52e84db491a958408c3019e512ecf90c081d8328",
|
||||||
|
"docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p17/clauses_D_minor_over_Sm_mod2p17_k7_u12.json": "78ab06661923d8489810167fb249d0cb87993b8d5fe65fdd56f1f17e73dc8a5d",
|
||||||
|
"docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p17/clauses_D_minor_over_Sm_mod2p17_k8_u13.json": "4d71267c627e630570c4b226c32bad9e30525da7d160045e2360ee4a2f36199d",
|
||||||
|
"docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p17/clauses_D_minor_over_Sm_mod2p17_k9_u15.json": "a0f80ac79111ebad80888649d10f51cedb7f6f76c681ba98095fcbb6e6a57bfd",
|
||||||
|
"docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p17/clauses_D_minor_over_Sm_mod2p17_k10_u16.json": "dcf0de1d69b492f8ea072e1c6045acddf4bd3a6e43e93a1f5313757ac7d430d2",
|
||||||
|
"docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p18/clauses_D_minor_over_Sm_mod2p18_k6_u10.json": "ae047b4b91858df1ab5ade8d6f619340528fa536a163e42f5d10a92e1ea7176a",
|
||||||
|
"docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p18/clauses_D_minor_over_Sm_mod2p18_k7_u12.json": "33a4236e7438a8f7f73165083f9d14a21dac0e6c64ac252072d3ff5d053dd5a4",
|
||||||
|
"docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p18/clauses_D_minor_over_Sm_mod2p18_k8_u13.json": "30f7cf398782508933f0a7ed0be842ce087fc2ee0297f0cf0e1f759d8a0d832e",
|
||||||
|
"docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p18/clauses_D_minor_over_Sm_mod2p18_k9_u15.json": "c309d9173847b8073a37cf3d62f35b380a7d22cfad4a1aa0d2074f3ae20258e9",
|
||||||
|
"docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p18/clauses_D_minor_over_Sm_mod2p18_k10_u16.json": "933210e286995000b98b2575847185fc93f9c042ffbebe38a6178053a202cd80",
|
||||||
|
"docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p18/clauses_D_minor_over_Sm_mod2p18_k11_u18.json": "f6176d0a032c473e638da83c7fcd756aa14cd4e65950fd18e59085016717e268",
|
||||||
|
"docs/artefacts/collatz/minorated_clauses_over_Sm_derived_from_brothers/palier2p15/clauses_D_minor_derived_from_brothers_over_Sm_mod2p15.json": "3175e951681f1f05ce9bf91423025f7cef003e8e272ca1515253d59e920477d0",
|
||||||
|
"docs/artefacts/collatz/minorated_clauses_over_Sm_derived_from_brothers/palier2p16/clauses_D_minor_derived_from_brothers_over_Sm_mod2p16.json": "e0944088881af42e7b2569c60702a9162e201e0d9a22dfd9b976cd7c12984bbd",
|
||||||
|
"docs/artefacts/collatz/minorated_clauses_over_Sm_derived_from_brothers/palier2p17/clauses_D_minor_derived_from_brothers_over_Sm_mod2p17.json": "78a0a9e4afb64333b078e0f88eb4cbb0f6df6516de47c68d936af731cffcdafb",
|
||||||
|
"docs/artefacts/collatz/minorated_clauses_over_Sm_derived_from_brothers/palier2p18/clauses_D_minor_derived_from_brothers_over_Sm_mod2p18.json": "799d79c423e06d28eac44fc318854c86fd70a924a43bbdb0c61ef56dfd71bfae"
|
||||||
|
},
|
||||||
|
"outputs": {
|
||||||
|
"docs/artefacts/collatz/refinement_K/palier2p15/bundle_mod2p15_to2p18_with_brother_dminor/refinement_certificate_Sm_multilevel_mod2p15_to2p18.json": "1f8e76c003a7a87217740e14216382c5caa54de732146848ccb04cf055202c3e"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,8 @@
|
|||||||
|
**Auteur** : Équipe 4NK
|
||||||
|
|
||||||
|
# Audit — raffinement multi-niveaux sur S_M (2^15→2^18)
|
||||||
|
|
||||||
|
- closed_roots : 15283
|
||||||
|
- open_roots : 1101
|
||||||
|
- closed_ratio : 0.93280029296875
|
||||||
|
|
||||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,99 @@
|
|||||||
|
**Auteur** : Équipe 4NK
|
||||||
|
|
||||||
|
# Diagnostic — échec targeted leaves — racine 2^15
|
||||||
|
|
||||||
|
- tracked_roots_file : `/home/ncantu/code/algo/docs/artefacts/collatz/refinement_K/palier2p15/incremental_D_minor/tracked_roots_lb_any_top200_mod2p15_to2p18.txt`
|
||||||
|
- k_max : 256
|
||||||
|
- t_max : 256
|
||||||
|
- search_max_required_m : 256
|
||||||
|
|
||||||
|
Table (par racine) :
|
||||||
|
|
||||||
|
| root | child_low | child_high | immediate_low@16 | immediate_high@16 | lb_root | lb_low | lb_high |
|
||||||
|
| --- | --- | --- | --- | --- | --- | --- | --- |
|
||||||
|
| 27 | 27 | 32795 | no | no | 60 | 60 | 26 |
|
||||||
|
| 31 | 31 | 32799 | no | no | 57 | 57 | 25 |
|
||||||
|
| 47 | 47 | 32815 | no | no | 56 | 56 | 42 |
|
||||||
|
| 63 | 63 | 32831 | no | no | 55 | 55 | 25 |
|
||||||
|
| 71 | 71 | 32839 | no | no | 52 | 52 | 22 |
|
||||||
|
| 251 | 251 | 33019 | no | no | 80 | 30 | 80 |
|
||||||
|
| 703 | 703 | 33471 | no | no | 84 | 84 | 61 |
|
||||||
|
| 1055 | 1055 | 33823 | no | no | 83 | 83 | 28 |
|
||||||
|
| 1183 | 1183 | 33951 | no | no | 55 | 17 | 55 |
|
||||||
|
| 1279 | 1279 | 34047 | no | no | 70 | 25 | 70 |
|
||||||
|
| 1407 | 1407 | 34175 | no | no | 85 | 85 | 23 |
|
||||||
|
| 1471 | 1471 | 34239 | no | no | 80 | 32 | 80 |
|
||||||
|
| 1535 | 1535 | 34303 | no | no | 56 | 20 | 56 |
|
||||||
|
| 1583 | 1583 | 34351 | no | no | 82 | 82 | 38 |
|
||||||
|
| 1819 | 1819 | 34587 | no | no | 62 | 62 | 23 |
|
||||||
|
| 2047 | 2047 | 34815 | no | no | 59 | 59 | 20 |
|
||||||
|
| 2111 | 2111 | 34879 | no | no | 84 | 84 | 36 |
|
||||||
|
| 2151 | 2151 | 34919 | no | no | 52 | 42 | 52 |
|
||||||
|
| 2287 | 2287 | 35055 | no | no | 54 | 54 | 22 |
|
||||||
|
| 2527 | 2527 | 35295 | no | no | 66 | 28 | 66 |
|
||||||
|
| 2887 | 2887 | 35655 | no | no | 136 | 17 | 136 |
|
||||||
|
| 3071 | 3071 | 35839 | no | no | 50 | 50 | 20 |
|
||||||
|
| 3199 | 3199 | 35967 | no | no | 66 | 18 | 66 |
|
||||||
|
| 3263 | 3263 | 36031 | no | no | 56 | 20 | 56 |
|
||||||
|
| 3399 | 3399 | 36167 | no | no | 49 | 49 | 22 |
|
||||||
|
| 4095 | 4095 | 36863 | no | no | 52 | 52 | 39 |
|
||||||
|
| 4255 | 4255 | 37023 | no | no | 71 | 71 | 18 |
|
||||||
|
| 4263 | 4263 | 37031 | no | no | 55 | 55 | 32 |
|
||||||
|
| 4379 | 4379 | 37147 | no | no | 77 | 17 | 77 |
|
||||||
|
| 4591 | 4591 | 37359 | no | no | 66 | 66 | 21 |
|
||||||
|
| 4607 | 4607 | 37375 | no | no | 49 | 49 | 21 |
|
||||||
|
| 4735 | 4735 | 37503 | no | no | 128 | 18 | 128 |
|
||||||
|
| 5119 | 5119 | 37887 | no | no | 52 | 39 | 52 |
|
||||||
|
| 5535 | 5535 | 38303 | no | no | 67 | 28 | 67 |
|
||||||
|
| 5823 | 5823 | 38591 | no | no | 53 | 24 | 53 |
|
||||||
|
| 6143 | 6143 | 38911 | no | no | 51 | 51 | 20 |
|
||||||
|
| 6171 | 6171 | 38939 | no | no | 56 | 56 | 25 |
|
||||||
|
| 6303 | 6303 | 39071 | no | no | 59 | 29 | 59 |
|
||||||
|
| 6383 | 6383 | 39151 | no | no | 70 | 70 | 22 |
|
||||||
|
| 6471 | 6471 | 39239 | no | no | 51 | 51 | 33 |
|
||||||
|
| 6887 | 6887 | 39655 | no | no | 58 | 58 | 25 |
|
||||||
|
| 6939 | 6939 | 39707 | no | no | 63 | 29 | 63 |
|
||||||
|
| 7039 | 7039 | 39807 | no | no | 63 | 18 | 63 |
|
||||||
|
| 7167 | 7167 | 39935 | no | no | 65 | 34 | 65 |
|
||||||
|
| 7279 | 7279 | 40047 | no | no | 58 | 58 | 20 |
|
||||||
|
| 7423 | 7423 | 40191 | no | no | 54 | 39 | 54 |
|
||||||
|
| 7451 | 7451 | 40219 | no | no | 60 | 17 | 60 |
|
||||||
|
| 7527 | 7527 | 40295 | no | no | 75 | 75 | 39 |
|
||||||
|
| 7935 | 7935 | 40703 | no | no | 71 | 43 | 71 |
|
||||||
|
| 7963 | 7963 | 40731 | no | no | 76 | 76 | 25 |
|
||||||
|
| 8191 | 8191 | 40959 | no | no | 52 | 45 | 52 |
|
||||||
|
| 8223 | 8223 | 40991 | no | no | 53 | 29 | 53 |
|
||||||
|
| 8351 | 8351 | 41119 | no | no | 66 | 36 | 66 |
|
||||||
|
| 8359 | 8359 | 41127 | no | no | 51 | 51 | 23 |
|
||||||
|
| 8639 | 8639 | 41407 | no | no | 56 | 35 | 56 |
|
||||||
|
| 8959 | 8959 | 41727 | no | no | 73 | 73 | 23 |
|
||||||
|
| 9023 | 9023 | 41791 | no | no | 74 | 18 | 74 |
|
||||||
|
| 9183 | 9183 | 41951 | no | no | 55 | 55 | 38 |
|
||||||
|
| 9215 | 9215 | 41983 | no | no | 50 | 50 | 20 |
|
||||||
|
| 9663 | 9663 | 42431 | no | no | 55 | 55 | 45 |
|
||||||
|
| 9695 | 9695 | 42463 | no | no | 72 | 24 | 72 |
|
||||||
|
| 9831 | 9831 | 42599 | no | no | 52 | 18 | 52 |
|
||||||
|
| 9855 | 9855 | 42623 | no | no | 49 | 29 | 49 |
|
||||||
|
| 10011 | 10011 | 42779 | no | no | 56 | 56 | 33 |
|
||||||
|
| 10087 | 10087 | 42855 | no | no | 102 | 102 | 22 |
|
||||||
|
| 10239 | 10239 | 43007 | no | no | 71 | 35 | 71 |
|
||||||
|
| 10331 | 10331 | 43099 | no | no | 52 | 52 | 24 |
|
||||||
|
| 10351 | 10351 | 43119 | no | no | 51 | 30 | 51 |
|
||||||
|
| 10407 | 10407 | 43175 | no | no | 70 | 29 | 70 |
|
||||||
|
| 10719 | 10719 | 43487 | no | no | 49 | 23 | 49 |
|
||||||
|
| 10919 | 10919 | 43687 | no | no | 57 | 57 | 20 |
|
||||||
|
| 11263 | 11263 | 44031 | no | no | 53 | 53 | 25 |
|
||||||
|
| 11291 | 11291 | 44059 | no | no | 74 | 74 | 18 |
|
||||||
|
| 11391 | 11391 | 44159 | no | no | 50 | 50 | 38 |
|
||||||
|
| 11623 | 11623 | 44391 | no | no | 49 | 49 | 21 |
|
||||||
|
| 11903 | 11903 | 44671 | no | no | 60 | 42 | 60 |
|
||||||
|
| 11931 | 11931 | 44699 | no | no | 49 | 49 | 19 |
|
||||||
|
| 12015 | 12015 | 44783 | no | no | 60 | 23 | 60 |
|
||||||
|
| 12135 | 12135 | 44903 | no | no | 57 | 40 | 57 |
|
||||||
|
| 12287 | 12287 | 45055 | no | no | 114 | 44 | 114 |
|
||||||
|
|
||||||
|
## Sorties
|
||||||
|
|
||||||
|
- JSON : `/home/ncantu/code/algo/docs/artefacts/collatz/refinement_K/palier2p15/bundle_mod2p15_to2p18_with_brother_dminor/diagnostic_targeted_leaves_failure_mod2p15.json`
|
||||||
|
- Markdown : `/home/ncantu/code/algo/docs/artefacts/collatz/refinement_K/palier2p15/bundle_mod2p15_to2p18_with_brother_dminor/diagnostic_targeted_leaves_failure_mod2p15.md`
|
||||||
|
|
||||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,522 @@
|
|||||||
|
**Auteur** : Équipe 4NK
|
||||||
|
|
||||||
|
# Profil d’obstruction — racines ouvertes sur S_15 (raffinement jusqu’à 2^18)
|
||||||
|
|
||||||
|
## Domaine
|
||||||
|
|
||||||
|
- racine : 2^15
|
||||||
|
- max : 2^18
|
||||||
|
- open_roots : 1101
|
||||||
|
|
||||||
|
## Recherche (borne inférieure de profondeur)
|
||||||
|
|
||||||
|
- k_max : 256
|
||||||
|
- t_max : 256
|
||||||
|
- max_required_m (pruning) : 256
|
||||||
|
|
||||||
|
### Buckets — lower_bound_required_m_to_close_root
|
||||||
|
|
||||||
|
Buckets (any):
|
||||||
|
- required_m=19 : 47
|
||||||
|
- required_m=20 : 50
|
||||||
|
- required_m=21 : 49
|
||||||
|
- required_m=22 : 63
|
||||||
|
- required_m=23 : 42
|
||||||
|
- required_m=24 : 42
|
||||||
|
- required_m=25 : 56
|
||||||
|
- required_m=26 : 39
|
||||||
|
- required_m=27 : 32
|
||||||
|
- required_m=28 : 52
|
||||||
|
- required_m=29 : 44
|
||||||
|
- required_m=30 : 36
|
||||||
|
- required_m=31 : 29
|
||||||
|
- required_m=32 : 18
|
||||||
|
- required_m=33 : 35
|
||||||
|
- required_m=34 : 25
|
||||||
|
- required_m=35 : 18
|
||||||
|
- required_m=36 : 31
|
||||||
|
- required_m=37 : 27
|
||||||
|
- required_m=38 : 23
|
||||||
|
- required_m=39 : 11
|
||||||
|
- required_m=40 : 8
|
||||||
|
- required_m=41 : 17
|
||||||
|
- required_m=42 : 14
|
||||||
|
- required_m=43 : 12
|
||||||
|
- required_m=44 : 14
|
||||||
|
- required_m=45 : 20
|
||||||
|
- required_m=46 : 14
|
||||||
|
- required_m=47 : 17
|
||||||
|
- required_m=48 : 16
|
||||||
|
- required_m=49 : 10
|
||||||
|
- required_m=50 : 6
|
||||||
|
- required_m=51 : 9
|
||||||
|
- required_m=52 : 10
|
||||||
|
- required_m=53 : 9
|
||||||
|
- required_m=54 : 9
|
||||||
|
- required_m=55 : 9
|
||||||
|
- required_m=56 : 10
|
||||||
|
- required_m=57 : 5
|
||||||
|
- required_m=58 : 6
|
||||||
|
- required_m=59 : 6
|
||||||
|
- required_m=60 : 7
|
||||||
|
- required_m=61 : 6
|
||||||
|
- required_m=62 : 3
|
||||||
|
- required_m=63 : 5
|
||||||
|
- required_m=64 : 4
|
||||||
|
- required_m=65 : 4
|
||||||
|
- required_m=66 : 8
|
||||||
|
- required_m=67 : 4
|
||||||
|
- required_m=68 : 5
|
||||||
|
- required_m=69 : 5
|
||||||
|
- required_m=70 : 6
|
||||||
|
- required_m=71 : 8
|
||||||
|
- required_m=72 : 8
|
||||||
|
- required_m=73 : 7
|
||||||
|
- required_m=74 : 2
|
||||||
|
- required_m=75 : 2
|
||||||
|
- required_m=76 : 3
|
||||||
|
- required_m=77 : 1
|
||||||
|
- required_m=78 : 1
|
||||||
|
- required_m=79 : 2
|
||||||
|
- required_m=80 : 2
|
||||||
|
- required_m=82 : 1
|
||||||
|
- required_m=83 : 2
|
||||||
|
- required_m=84 : 3
|
||||||
|
- required_m=85 : 2
|
||||||
|
- required_m=90 : 1
|
||||||
|
- required_m=102 : 1
|
||||||
|
- required_m=114 : 1
|
||||||
|
- required_m=118 : 1
|
||||||
|
- required_m=121 : 1
|
||||||
|
- required_m=127 : 1
|
||||||
|
- required_m=128 : 2
|
||||||
|
- required_m=130 : 1
|
||||||
|
- required_m=136 : 1
|
||||||
|
|
||||||
|
Buckets (D only):
|
||||||
|
- required_m=19 : 47
|
||||||
|
- required_m=20 : 27
|
||||||
|
- required_m=21 : 41
|
||||||
|
- required_m=22 : 63
|
||||||
|
- required_m=23 : 37
|
||||||
|
- required_m=24 : 39
|
||||||
|
- required_m=25 : 58
|
||||||
|
- required_m=26 : 34
|
||||||
|
- required_m=27 : 35
|
||||||
|
- required_m=28 : 55
|
||||||
|
- required_m=29 : 24
|
||||||
|
- required_m=30 : 37
|
||||||
|
- required_m=31 : 17
|
||||||
|
- required_m=32 : 25
|
||||||
|
- required_m=33 : 44
|
||||||
|
- required_m=34 : 25
|
||||||
|
- required_m=35 : 23
|
||||||
|
- required_m=36 : 36
|
||||||
|
- required_m=37 : 24
|
||||||
|
- required_m=38 : 28
|
||||||
|
- required_m=39 : 10
|
||||||
|
- required_m=40 : 9
|
||||||
|
- required_m=41 : 20
|
||||||
|
- required_m=42 : 11
|
||||||
|
- required_m=43 : 13
|
||||||
|
- required_m=44 : 20
|
||||||
|
- required_m=45 : 17
|
||||||
|
- required_m=46 : 17
|
||||||
|
- required_m=47 : 25
|
||||||
|
- required_m=48 : 15
|
||||||
|
- required_m=49 : 11
|
||||||
|
- required_m=50 : 5
|
||||||
|
- required_m=51 : 13
|
||||||
|
- required_m=52 : 15
|
||||||
|
- required_m=53 : 6
|
||||||
|
- required_m=54 : 11
|
||||||
|
- required_m=55 : 14
|
||||||
|
- required_m=56 : 4
|
||||||
|
- required_m=57 : 6
|
||||||
|
- required_m=58 : 4
|
||||||
|
- required_m=59 : 7
|
||||||
|
- required_m=60 : 10
|
||||||
|
- required_m=61 : 5
|
||||||
|
- required_m=62 : 3
|
||||||
|
- required_m=63 : 9
|
||||||
|
- required_m=64 : 2
|
||||||
|
- required_m=65 : 7
|
||||||
|
- required_m=66 : 8
|
||||||
|
- required_m=67 : 6
|
||||||
|
- required_m=68 : 5
|
||||||
|
- required_m=69 : 5
|
||||||
|
- required_m=70 : 7
|
||||||
|
- required_m=71 : 8
|
||||||
|
- required_m=72 : 6
|
||||||
|
- required_m=73 : 8
|
||||||
|
- required_m=74 : 5
|
||||||
|
- required_m=75 : 3
|
||||||
|
- required_m=76 : 3
|
||||||
|
- required_m=77 : 1
|
||||||
|
- required_m=78 : 1
|
||||||
|
- required_m=79 : 3
|
||||||
|
- required_m=80 : 2
|
||||||
|
- required_m=81 : 1
|
||||||
|
- required_m=82 : 2
|
||||||
|
- required_m=83 : 2
|
||||||
|
- required_m=84 : 3
|
||||||
|
- required_m=85 : 2
|
||||||
|
- required_m=87 : 1
|
||||||
|
- required_m=90 : 1
|
||||||
|
- required_m=95 : 1
|
||||||
|
- required_m=109 : 1
|
||||||
|
- required_m=114 : 1
|
||||||
|
- required_m=121 : 1
|
||||||
|
- required_m=124 : 1
|
||||||
|
- required_m=127 : 1
|
||||||
|
- required_m=128 : 2
|
||||||
|
- required_m=130 : 1
|
||||||
|
- required_m=136 : 1
|
||||||
|
|
||||||
|
Buckets (F only):
|
||||||
|
- required_m=19 : 47
|
||||||
|
- required_m=20 : 42
|
||||||
|
- required_m=21 : 53
|
||||||
|
- required_m=22 : 52
|
||||||
|
- required_m=23 : 50
|
||||||
|
- required_m=24 : 43
|
||||||
|
- required_m=25 : 42
|
||||||
|
- required_m=26 : 42
|
||||||
|
- required_m=27 : 38
|
||||||
|
- required_m=28 : 43
|
||||||
|
- required_m=29 : 48
|
||||||
|
- required_m=30 : 41
|
||||||
|
- required_m=31 : 35
|
||||||
|
- required_m=32 : 19
|
||||||
|
- required_m=33 : 27
|
||||||
|
- required_m=34 : 31
|
||||||
|
- required_m=35 : 18
|
||||||
|
- required_m=36 : 26
|
||||||
|
- required_m=37 : 31
|
||||||
|
- required_m=38 : 25
|
||||||
|
- required_m=39 : 13
|
||||||
|
- required_m=40 : 9
|
||||||
|
- required_m=41 : 12
|
||||||
|
- required_m=42 : 19
|
||||||
|
- required_m=43 : 12
|
||||||
|
- required_m=44 : 11
|
||||||
|
- required_m=45 : 23
|
||||||
|
- required_m=46 : 16
|
||||||
|
- required_m=47 : 13
|
||||||
|
- required_m=48 : 19
|
||||||
|
- required_m=49 : 10
|
||||||
|
- required_m=50 : 6
|
||||||
|
- required_m=51 : 10
|
||||||
|
- required_m=52 : 8
|
||||||
|
- required_m=53 : 10
|
||||||
|
- required_m=54 : 9
|
||||||
|
- required_m=55 : 5
|
||||||
|
- required_m=56 : 13
|
||||||
|
- required_m=57 : 5
|
||||||
|
- required_m=58 : 8
|
||||||
|
- required_m=59 : 6
|
||||||
|
- required_m=60 : 6
|
||||||
|
- required_m=61 : 7
|
||||||
|
- required_m=62 : 3
|
||||||
|
- required_m=63 : 5
|
||||||
|
- required_m=64 : 4
|
||||||
|
- required_m=65 : 4
|
||||||
|
- required_m=66 : 8
|
||||||
|
- required_m=67 : 4
|
||||||
|
- required_m=68 : 5
|
||||||
|
- required_m=69 : 5
|
||||||
|
- required_m=70 : 6
|
||||||
|
- required_m=71 : 7
|
||||||
|
- required_m=72 : 9
|
||||||
|
- required_m=73 : 7
|
||||||
|
- required_m=74 : 2
|
||||||
|
- required_m=75 : 2
|
||||||
|
- required_m=76 : 3
|
||||||
|
- required_m=77 : 1
|
||||||
|
- required_m=78 : 1
|
||||||
|
- required_m=79 : 1
|
||||||
|
- required_m=80 : 3
|
||||||
|
- required_m=82 : 1
|
||||||
|
- required_m=83 : 2
|
||||||
|
- required_m=84 : 3
|
||||||
|
- required_m=85 : 2
|
||||||
|
- required_m=90 : 1
|
||||||
|
- required_m=102 : 1
|
||||||
|
- required_m=114 : 1
|
||||||
|
- required_m=118 : 1
|
||||||
|
- required_m=121 : 1
|
||||||
|
- required_m=127 : 1
|
||||||
|
- required_m=128 : 1
|
||||||
|
- required_m=129 : 1
|
||||||
|
- required_m=130 : 1
|
||||||
|
- required_m=136 : 1
|
||||||
|
|
||||||
|
## Motifs dominants (<=32)
|
||||||
|
|
||||||
|
- both_children_no_contracting_D_up_to32 : 8
|
||||||
|
- both_children_F_blocked_by_deltaF_up_to32 : 7
|
||||||
|
- both_children_no_contracting_F_up_to32 : 7
|
||||||
|
|
||||||
|
## Histogrammes (<=32, agrégés sur les deux enfants)
|
||||||
|
|
||||||
|
### first_k_contracting_D_up_to32
|
||||||
|
- k=10 : 346
|
||||||
|
- k=11 : 203
|
||||||
|
- k=12 : 152
|
||||||
|
- k=13 : 223
|
||||||
|
- k=14 : 116
|
||||||
|
- k=15 : 175
|
||||||
|
- k=16 : 88
|
||||||
|
- k=17 : 121
|
||||||
|
- k=18 : 65
|
||||||
|
- k=19 : 53
|
||||||
|
- k=20 : 81
|
||||||
|
- k=21 : 51
|
||||||
|
- k=22 : 67
|
||||||
|
- k=23 : 37
|
||||||
|
- k=24 : 21
|
||||||
|
- k=25 : 44
|
||||||
|
- k=26 : 24
|
||||||
|
- k=27 : 48
|
||||||
|
- k=28 : 26
|
||||||
|
- k=29 : 32
|
||||||
|
- k=30 : 18
|
||||||
|
- k=31 : 14
|
||||||
|
- k=32 : 20
|
||||||
|
|
||||||
|
### first_k_contracting_D_up_to32 (low child)
|
||||||
|
- k=10 : 174
|
||||||
|
- k=11 : 99
|
||||||
|
- k=12 : 78
|
||||||
|
- k=13 : 106
|
||||||
|
- k=14 : 57
|
||||||
|
- k=15 : 89
|
||||||
|
- k=16 : 45
|
||||||
|
- k=17 : 66
|
||||||
|
- k=18 : 33
|
||||||
|
- k=19 : 30
|
||||||
|
- k=20 : 32
|
||||||
|
- k=21 : 23
|
||||||
|
- k=22 : 30
|
||||||
|
- k=23 : 19
|
||||||
|
- k=24 : 13
|
||||||
|
- k=25 : 19
|
||||||
|
- k=26 : 15
|
||||||
|
- k=27 : 25
|
||||||
|
- k=28 : 12
|
||||||
|
- k=29 : 14
|
||||||
|
- k=30 : 13
|
||||||
|
- k=31 : 8
|
||||||
|
- k=32 : 13
|
||||||
|
|
||||||
|
### first_k_contracting_D_up_to32 (high child)
|
||||||
|
- k=10 : 172
|
||||||
|
- k=11 : 104
|
||||||
|
- k=12 : 74
|
||||||
|
- k=13 : 117
|
||||||
|
- k=14 : 59
|
||||||
|
- k=15 : 86
|
||||||
|
- k=16 : 43
|
||||||
|
- k=17 : 55
|
||||||
|
- k=18 : 32
|
||||||
|
- k=19 : 23
|
||||||
|
- k=20 : 49
|
||||||
|
- k=21 : 28
|
||||||
|
- k=22 : 37
|
||||||
|
- k=23 : 18
|
||||||
|
- k=24 : 8
|
||||||
|
- k=25 : 25
|
||||||
|
- k=26 : 9
|
||||||
|
- k=27 : 23
|
||||||
|
- k=28 : 14
|
||||||
|
- k=29 : 18
|
||||||
|
- k=30 : 5
|
||||||
|
- k=31 : 6
|
||||||
|
- k=32 : 7
|
||||||
|
|
||||||
|
### first_t_contracting_F_up_to32
|
||||||
|
- t=10 : 260
|
||||||
|
- t=11 : 366
|
||||||
|
- t=12 : 199
|
||||||
|
- t=13 : 119
|
||||||
|
- t=14 : 185
|
||||||
|
- t=15 : 108
|
||||||
|
- t=16 : 144
|
||||||
|
- t=17 : 73
|
||||||
|
- t=18 : 110
|
||||||
|
- t=19 : 57
|
||||||
|
- t=20 : 40
|
||||||
|
- t=21 : 68
|
||||||
|
- t=22 : 40
|
||||||
|
- t=23 : 56
|
||||||
|
- t=24 : 27
|
||||||
|
- t=25 : 22
|
||||||
|
- t=26 : 36
|
||||||
|
- t=27 : 30
|
||||||
|
- t=28 : 30
|
||||||
|
- t=29 : 16
|
||||||
|
- t=30 : 30
|
||||||
|
- t=31 : 12
|
||||||
|
- t=32 : 12
|
||||||
|
|
||||||
|
### first_t_y_mod3_nonzero_up_to32
|
||||||
|
- t=1 : 2202
|
||||||
|
|
||||||
|
### y_mod3_zero_count_up_to32
|
||||||
|
- count=0 : 2202
|
||||||
|
|
||||||
|
### y_mod3_zero_count_up_to32 (low child)
|
||||||
|
- count=0 : 1101
|
||||||
|
|
||||||
|
### y_mod3_zero_count_up_to32 (high child)
|
||||||
|
- count=0 : 1101
|
||||||
|
|
||||||
|
## Corrélations (borne inférieure)
|
||||||
|
|
||||||
|
### lb_D - lb_F
|
||||||
|
- diff=-8 : 2
|
||||||
|
- diff=-7 : 2
|
||||||
|
- diff=-6 : 5
|
||||||
|
- diff=-5 : 3
|
||||||
|
- diff=-4 : 6
|
||||||
|
- diff=-3 : 17
|
||||||
|
- diff=-2 : 13
|
||||||
|
- diff=-1 : 39
|
||||||
|
- diff=0 : 827
|
||||||
|
- diff=1 : 9
|
||||||
|
- diff=2 : 21
|
||||||
|
- diff=3 : 30
|
||||||
|
- diff=4 : 14
|
||||||
|
- diff=5 : 17
|
||||||
|
- diff=6 : 9
|
||||||
|
- diff=7 : 20
|
||||||
|
- diff=8 : 10
|
||||||
|
- diff=9 : 7
|
||||||
|
- diff=10 : 5
|
||||||
|
- diff=11 : 4
|
||||||
|
- diff=12 : 7
|
||||||
|
- diff=13 : 2
|
||||||
|
- diff=14 : 2
|
||||||
|
- diff=15 : 3
|
||||||
|
- diff=16 : 2
|
||||||
|
- diff=17 : 4
|
||||||
|
- diff=18 : 2
|
||||||
|
- diff=19 : 1
|
||||||
|
- diff=20 : 1
|
||||||
|
- diff=21 : 2
|
||||||
|
- diff=22 : 2
|
||||||
|
- diff=24 : 1
|
||||||
|
- diff=25 : 1
|
||||||
|
- diff=26 : 2
|
||||||
|
- diff=28 : 1
|
||||||
|
- diff=30 : 2
|
||||||
|
- diff=31 : 2
|
||||||
|
- diff=38 : 1
|
||||||
|
- diff=40 : 1
|
||||||
|
- diff=42 : 1
|
||||||
|
- diff=44 : 1
|
||||||
|
|
||||||
|
### lb_any - lb_D
|
||||||
|
- diff=-44 : 1
|
||||||
|
- diff=-42 : 1
|
||||||
|
- diff=-40 : 1
|
||||||
|
- diff=-38 : 1
|
||||||
|
- diff=-31 : 2
|
||||||
|
- diff=-30 : 2
|
||||||
|
- diff=-28 : 1
|
||||||
|
- diff=-26 : 3
|
||||||
|
- diff=-25 : 1
|
||||||
|
- diff=-23 : 1
|
||||||
|
- diff=-22 : 2
|
||||||
|
- diff=-21 : 1
|
||||||
|
- diff=-20 : 1
|
||||||
|
- diff=-19 : 1
|
||||||
|
- diff=-18 : 2
|
||||||
|
- diff=-17 : 4
|
||||||
|
- diff=-16 : 2
|
||||||
|
- diff=-15 : 3
|
||||||
|
- diff=-14 : 2
|
||||||
|
- diff=-13 : 3
|
||||||
|
- diff=-12 : 7
|
||||||
|
- diff=-11 : 4
|
||||||
|
- diff=-10 : 5
|
||||||
|
- diff=-9 : 7
|
||||||
|
- diff=-8 : 9
|
||||||
|
- diff=-7 : 21
|
||||||
|
- diff=-6 : 10
|
||||||
|
- diff=-5 : 17
|
||||||
|
- diff=-4 : 15
|
||||||
|
- diff=-3 : 30
|
||||||
|
- diff=-2 : 20
|
||||||
|
- diff=-1 : 8
|
||||||
|
- diff=0 : 913
|
||||||
|
|
||||||
|
### lb_any - lb_F
|
||||||
|
- diff=-8 : 2
|
||||||
|
- diff=-7 : 2
|
||||||
|
- diff=-6 : 5
|
||||||
|
- diff=-5 : 3
|
||||||
|
- diff=-4 : 6
|
||||||
|
- diff=-3 : 19
|
||||||
|
- diff=-2 : 20
|
||||||
|
- diff=-1 : 42
|
||||||
|
- diff=0 : 1002
|
||||||
|
|
||||||
|
## Quantiles (borne inférieure)
|
||||||
|
|
||||||
|
| metric | p50 | p75 | p90 | p95 | p99 | max |
|
||||||
|
| --- | --- | --- | --- | --- | --- | --- |
|
||||||
|
| lb_any | 30 | 44 | 60 | 70 | 85 | 136 |
|
||||||
|
| lb_D | 33 | 46 | 63 | 71 | 87 | 136 |
|
||||||
|
| lb_F | 31 | 44 | 60 | 70 | 85 | 136 |
|
||||||
|
|
||||||
|
## Exemples (premières lignes)
|
||||||
|
|
||||||
|
| r | child0 | child1 | lb_any | lb_D | lb_F |
|
||||||
|
| --- | --- | --- | --- | --- | --- |
|
||||||
|
| 27 | 27 | 32795 | 60 | 60 | 60 |
|
||||||
|
| 31 | 31 | 32799 | 57 | 57 | 57 |
|
||||||
|
| 47 | 47 | 32815 | 56 | 56 | 56 |
|
||||||
|
| 63 | 63 | 32831 | 55 | 55 | 58 |
|
||||||
|
| 71 | 71 | 32839 | 52 | 52 | 55 |
|
||||||
|
| 91 | 91 | 32859 | 46 | 46 | 46 |
|
||||||
|
| 103 | 103 | 32871 | 43 | 43 | 43 |
|
||||||
|
| 111 | 111 | 32879 | 32 | 32 | 32 |
|
||||||
|
| 159 | 159 | 32927 | 24 | 24 | 24 |
|
||||||
|
| 167 | 167 | 32935 | 31 | 31 | 31 |
|
||||||
|
| 223 | 223 | 32991 | 33 | 33 | 33 |
|
||||||
|
| 239 | 239 | 33007 | 22 | 22 | 22 |
|
||||||
|
| 251 | 251 | 33019 | 80 | 80 | 80 |
|
||||||
|
| 283 | 283 | 33051 | 41 | 41 | 42 |
|
||||||
|
| 319 | 319 | 33087 | 24 | 24 | 24 |
|
||||||
|
| 327 | 327 | 33095 | 25 | 25 | 25 |
|
||||||
|
| 359 | 359 | 33127 | 20 | 23 | 21 |
|
||||||
|
| 447 | 447 | 33215 | 42 | 42 | 42 |
|
||||||
|
| 479 | 479 | 33247 | 22 | 22 | 22 |
|
||||||
|
| 495 | 495 | 33263 | 29 | 29 | 29 |
|
||||||
|
| 511 | 511 | 33279 | 38 | 38 | 38 |
|
||||||
|
| 559 | 559 | 33327 | 31 | 34 | 31 |
|
||||||
|
| 603 | 603 | 33371 | 26 | 38 | 26 |
|
||||||
|
| 639 | 639 | 33407 | 34 | 34 | 34 |
|
||||||
|
| 667 | 667 | 33435 | 30 | 30 | 30 |
|
||||||
|
| 671 | 671 | 33439 | 24 | 41 | 24 |
|
||||||
|
| 703 | 703 | 33471 | 84 | 84 | 84 |
|
||||||
|
| 743 | 743 | 33511 | 25 | 25 | 28 |
|
||||||
|
| 751 | 751 | 33519 | 47 | 47 | 47 |
|
||||||
|
| 763 | 763 | 33531 | 23 | 23 | 23 |
|
||||||
|
| 767 | 767 | 33535 | 21 | 21 | 21 |
|
||||||
|
| 795 | 795 | 33563 | 28 | 28 | 28 |
|
||||||
|
| 859 | 859 | 33627 | 24 | 24 | 24 |
|
||||||
|
| 871 | 871 | 33639 | 48 | 48 | 48 |
|
||||||
|
| 895 | 895 | 33663 | 25 | 25 | 25 |
|
||||||
|
| 927 | 927 | 33695 | 38 | 38 | 38 |
|
||||||
|
| 959 | 959 | 33727 | 24 | 24 | 24 |
|
||||||
|
| 991 | 991 | 33759 | 27 | 27 | 27 |
|
||||||
|
| 1007 | 1007 | 33775 | 22 | 22 | 22 |
|
||||||
|
| 1023 | 1023 | 33791 | 36 | 36 | 36 |
|
||||||
|
|
||||||
|
## Sorties
|
||||||
|
|
||||||
|
- JSON : `/home/ncantu/code/algo/docs/artefacts/collatz/refinement_K/palier2p15/bundle_mod2p15_to2p18_with_brother_dminor/open_roots_obstruction_profile_mod2p15_to2p18.json`
|
||||||
|
- Markdown : `/home/ncantu/code/algo/docs/artefacts/collatz/refinement_K/palier2p15/bundle_mod2p15_to2p18_with_brother_dminor/open_roots_obstruction_profile_mod2p15_to2p18.md`
|
||||||
|
|
||||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,156 @@
|
|||||||
|
**Auteur** : Équipe 4NK
|
||||||
|
|
||||||
|
# Certificat de raffinement multi-niveaux sur S_M — racine 2^15 vers 2^18
|
||||||
|
|
||||||
|
## Domaine
|
||||||
|
|
||||||
|
- racine : 2^15
|
||||||
|
- profondeur max : 2^18
|
||||||
|
- |S_15| (impairs) : 16384
|
||||||
|
|
||||||
|
## Entrées (feuilles terminales)
|
||||||
|
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/terminal_clauses_over_Sm/palier2p15/clauses_terminal_over_Sm_mod2p15.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/terminal_clauses_over_Sm/palier2p16/clauses_terminal_over_Sm_mod2p16.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/terminal_clauses_over_Sm/palier2p17/clauses_terminal_over_Sm_mod2p17.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/terminal_clauses_over_Sm/palier2p18/clauses_terminal_over_Sm_mod2p18.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p15/clauses_D_minor_over_Sm_mod2p15_k8_u13.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p15/clauses_D_minor_over_Sm_mod2p15_k9_u15.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p16/clauses_D_minor_over_Sm_mod2p16_k6_u10.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p16/clauses_D_minor_over_Sm_mod2p16_k7_u12.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p16/clauses_D_minor_over_Sm_mod2p16_k8_u13.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p16/clauses_D_minor_over_Sm_mod2p16_k9_u15.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p16/clauses_D_minor_over_Sm_mod2p16_k10_u16.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p17/clauses_D_minor_over_Sm_mod2p17_k6_u10.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p17/clauses_D_minor_over_Sm_mod2p17_k7_u12.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p17/clauses_D_minor_over_Sm_mod2p17_k8_u13.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p17/clauses_D_minor_over_Sm_mod2p17_k9_u15.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p17/clauses_D_minor_over_Sm_mod2p17_k10_u16.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p18/clauses_D_minor_over_Sm_mod2p18_k6_u10.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p18/clauses_D_minor_over_Sm_mod2p18_k7_u12.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p18/clauses_D_minor_over_Sm_mod2p18_k8_u13.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p18/clauses_D_minor_over_Sm_mod2p18_k9_u15.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p18/clauses_D_minor_over_Sm_mod2p18_k10_u16.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p18/clauses_D_minor_over_Sm_mod2p18_k11_u18.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/minorated_clauses_over_Sm_derived_from_brothers/palier2p15/clauses_D_minor_derived_from_brothers_over_Sm_mod2p15.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/minorated_clauses_over_Sm_derived_from_brothers/palier2p16/clauses_D_minor_derived_from_brothers_over_Sm_mod2p16.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/minorated_clauses_over_Sm_derived_from_brothers/palier2p17/clauses_D_minor_derived_from_brothers_over_Sm_mod2p17.json`
|
||||||
|
- `/home/ncantu/code/algo/docs/artefacts/collatz/minorated_clauses_over_Sm_derived_from_brothers/palier2p18/clauses_D_minor_derived_from_brothers_over_Sm_mod2p18.json`
|
||||||
|
|
||||||
|
## Fermeture (sur S_M)
|
||||||
|
|
||||||
|
- closed_roots : 15283
|
||||||
|
- open_roots : 1101
|
||||||
|
- closed_ratio : 0.93280029296875
|
||||||
|
|
||||||
|
## Timeline (première profondeur de fermeture)
|
||||||
|
|
||||||
|
| cible | newly_closed | closed | open | closed_ratio |
|
||||||
|
| --- | --- | --- | --- | --- |
|
||||||
|
| 15 | 15283 | 15283 | 1101 | 0.932800 |
|
||||||
|
| 16 | 0 | 15283 | 1101 | 0.932800 |
|
||||||
|
| 17 | 0 | 15283 | 1101 | 0.932800 |
|
||||||
|
| 18 | 0 | 15283 | 1101 | 0.932800 |
|
||||||
|
|
||||||
|
## Audit du résidu (comptes, q_m, parents à un enfant)
|
||||||
|
|
||||||
|
| m | open_count | q_m | parents_one_child |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| 15 | 1101 | 0.842870118074 | 346 |
|
||||||
|
| 16 | 1856 | 0.918372844828 | 303 |
|
||||||
|
| 17 | 3409 | 0.930184804928 | 476 |
|
||||||
|
| 18 | 6342 | | |
|
||||||
|
|
||||||
|
### Racines encore ouvertes (extrait)
|
||||||
|
|
||||||
|
- r=27
|
||||||
|
- r=31
|
||||||
|
- r=47
|
||||||
|
- r=63
|
||||||
|
- r=71
|
||||||
|
- r=91
|
||||||
|
- r=103
|
||||||
|
- r=111
|
||||||
|
- r=159
|
||||||
|
- r=167
|
||||||
|
- r=223
|
||||||
|
- r=239
|
||||||
|
- r=251
|
||||||
|
- r=283
|
||||||
|
- r=319
|
||||||
|
- r=327
|
||||||
|
- r=359
|
||||||
|
- r=447
|
||||||
|
- r=479
|
||||||
|
- r=495
|
||||||
|
- r=511
|
||||||
|
- r=559
|
||||||
|
- r=603
|
||||||
|
- r=639
|
||||||
|
- r=667
|
||||||
|
- r=671
|
||||||
|
- r=703
|
||||||
|
- r=743
|
||||||
|
- r=751
|
||||||
|
- r=763
|
||||||
|
- r=767
|
||||||
|
- r=795
|
||||||
|
- r=859
|
||||||
|
- r=871
|
||||||
|
- r=895
|
||||||
|
- r=927
|
||||||
|
- r=959
|
||||||
|
- r=991
|
||||||
|
- r=1007
|
||||||
|
- r=1023
|
||||||
|
- ... (1061 more)
|
||||||
|
|
||||||
|
### Racines fermées (extrait)
|
||||||
|
|
||||||
|
- r=1
|
||||||
|
- r=3
|
||||||
|
- r=5
|
||||||
|
- r=7
|
||||||
|
- r=9
|
||||||
|
- r=11
|
||||||
|
- r=13
|
||||||
|
- r=15
|
||||||
|
- r=17
|
||||||
|
- r=19
|
||||||
|
- r=21
|
||||||
|
- r=23
|
||||||
|
- r=25
|
||||||
|
- r=29
|
||||||
|
- r=33
|
||||||
|
- r=35
|
||||||
|
- r=37
|
||||||
|
- r=39
|
||||||
|
- r=41
|
||||||
|
- r=43
|
||||||
|
- r=45
|
||||||
|
- r=49
|
||||||
|
- r=51
|
||||||
|
- r=53
|
||||||
|
- r=55
|
||||||
|
- r=57
|
||||||
|
- r=59
|
||||||
|
- r=61
|
||||||
|
- r=65
|
||||||
|
- r=67
|
||||||
|
- r=69
|
||||||
|
- r=73
|
||||||
|
- r=75
|
||||||
|
- r=77
|
||||||
|
- r=79
|
||||||
|
- r=81
|
||||||
|
- r=83
|
||||||
|
- r=85
|
||||||
|
- r=87
|
||||||
|
- r=89
|
||||||
|
- ... (15243 more)
|
||||||
|
|
||||||
|
## Sorties
|
||||||
|
|
||||||
|
- JSON : `/home/ncantu/code/algo/docs/artefacts/collatz/refinement_K/palier2p15/bundle_mod2p15_to2p18_with_brother_dminor/refinement_certificate_Sm_multilevel_mod2p15_to2p18.json`
|
||||||
|
- Audit JSON : `/home/ncantu/code/algo/docs/artefacts/collatz/refinement_K/palier2p15/bundle_mod2p15_to2p18_with_brother_dminor/audit_refinement_certificate_Sm_multilevel_mod2p15_to2p18.json`
|
||||||
|
|
||||||
@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"domain": {
|
||||||
|
"palier": 15
|
||||||
|
},
|
||||||
|
"inputs": {
|
||||||
|
"tracked_roots_file": "/home/ncantu/code/algo/docs/artefacts/collatz/refinement_K/palier2p15/incremental_D_minor/tracked_roots_lb_any_top200_mod2p15_to2p18.txt"
|
||||||
|
},
|
||||||
|
"params": {
|
||||||
|
"k_chain_max": 80,
|
||||||
|
"k_leaf_max": 256,
|
||||||
|
"t_leaf_max": 256
|
||||||
|
},
|
||||||
|
"counts": {
|
||||||
|
"tracked_roots": 200,
|
||||||
|
"closed_roots": 0,
|
||||||
|
"failed_roots": 200
|
||||||
|
},
|
||||||
|
"clauses": [],
|
||||||
|
"sha256": {
|
||||||
|
"inputs": {
|
||||||
|
"/home/ncantu/code/algo/docs/artefacts/collatz/refinement_K/palier2p15/incremental_D_minor/tracked_roots_lb_any_top200_mod2p15_to2p18.txt": "d144fe38af97b217cebf444ebaa88fec25525ddab03d89404d62cb971e6bec29"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,217 @@
|
|||||||
|
**Auteur** : Équipe 4NK
|
||||||
|
|
||||||
|
# Feuilles “chaîne de Hensel” — racine 2^15
|
||||||
|
|
||||||
|
- tracked_roots_file : `/home/ncantu/code/algo/docs/artefacts/collatz/refinement_K/palier2p15/incremental_D_minor/tracked_roots_lb_any_top200_mod2p15_to2p18.txt`
|
||||||
|
- k_chain_max : 80
|
||||||
|
- k_leaf_max : 256
|
||||||
|
- t_leaf_max : 256
|
||||||
|
|
||||||
|
| root | k | u_min(k) | v2(L_k(root)) | closed | cert |
|
||||||
|
| --- | --- | --- | --- | --- | --- |
|
||||||
|
| 27 | 37 | 59 | 59 | no | |
|
||||||
|
| 31 | 35 | 56 | 56 | no | |
|
||||||
|
| 47 | 34 | 54 | 55 | no | |
|
||||||
|
| 63 | 34 | 54 | 54 | no | |
|
||||||
|
| 71 | 32 | 51 | 51 | no | |
|
||||||
|
| 251 | 17 | 27 | 29 | no | |
|
||||||
|
| 703 | 51 | 81 | 83 | no | |
|
||||||
|
| 1055 | 50 | 80 | 82 | no | |
|
||||||
|
| 1183 | 10 | 16 | 16 | no | |
|
||||||
|
| 1279 | 14 | 23 | 24 | no | |
|
||||||
|
| 1407 | 51 | 81 | 84 | no | |
|
||||||
|
| 1471 | 19 | 31 | 31 | no | |
|
||||||
|
| 1535 | 10 | 16 | 19 | no | |
|
||||||
|
| 1583 | 49 | 78 | 81 | no | |
|
||||||
|
| 1819 | 38 | 61 | 61 | no | |
|
||||||
|
| 2047 | 36 | 58 | 58 | no | |
|
||||||
|
| 2111 | 50 | 80 | 83 | no | |
|
||||||
|
| 2151 | 27 | 43 | 43 | no | |
|
||||||
|
| 2287 | 31 | 50 | 53 | no | |
|
||||||
|
| 2527 | 16 | 26 | 27 | no | |
|
||||||
|
| 2887 | 10 | 16 | 16 | no | |
|
||||||
|
| 3071 | 34 | 54 | 54 | no | |
|
||||||
|
| 3199 | 12 | 20 | 21 | no | |
|
||||||
|
| 3263 | 11 | 18 | 19 | no | |
|
||||||
|
| 3399 | 30 | 48 | 48 | no | |
|
||||||
|
| 4095 | 32 | 51 | 51 | no | |
|
||||||
|
| 4255 | 44 | 70 | 70 | no | |
|
||||||
|
| 4263 | 34 | 54 | 54 | no | |
|
||||||
|
| 4379 | 10 | 16 | 16 | no | |
|
||||||
|
| 4591 | 41 | 65 | 65 | no | |
|
||||||
|
| 4607 | 30 | 48 | 48 | no | |
|
||||||
|
| 4735 | 13 | 21 | 21 | no | |
|
||||||
|
| 5119 | 25 | 40 | 41 | no | |
|
||||||
|
| 5535 | 17 | 27 | 27 | no | |
|
||||||
|
| 5823 | 10 | 16 | 23 | no | |
|
||||||
|
| 6143 | 31 | 50 | 50 | no | |
|
||||||
|
| 6171 | 36 | 58 | 58 | no | |
|
||||||
|
| 6303 | 15 | 24 | 28 | no | |
|
||||||
|
| 6383 | 43 | 69 | 69 | no | |
|
||||||
|
| 6471 | 31 | 50 | 50 | no | |
|
||||||
|
| 6887 | 40 | 64 | 64 | no | |
|
||||||
|
| 6939 | 15 | 24 | 28 | no | |
|
||||||
|
| 7039 | 15 | 24 | 25 | no | |
|
||||||
|
| 7167 | 22 | 35 | 35 | no | |
|
||||||
|
| 7279 | 48 | 77 | 79 | no | |
|
||||||
|
| 7423 | 23 | 37 | 38 | no | |
|
||||||
|
| 7451 | 10 | 16 | 16 | no | |
|
||||||
|
| 7527 | 46 | 73 | 74 | no | |
|
||||||
|
| 7935 | 25 | 40 | 42 | no | |
|
||||||
|
| 7963 | 45 | 72 | 75 | no | |
|
||||||
|
| 8191 | 27 | 43 | 44 | no | |
|
||||||
|
| 8223 | 16 | 26 | 28 | no | |
|
||||||
|
| 8351 | 21 | 34 | 35 | no | |
|
||||||
|
| 8359 | 30 | 48 | 50 | no | |
|
||||||
|
| 8639 | 21 | 34 | 34 | no | |
|
||||||
|
| 8959 | 43 | 69 | 72 | no | |
|
||||||
|
| 9023 | 12 | 20 | 21 | no | |
|
||||||
|
| 9183 | 34 | 54 | 54 | no | |
|
||||||
|
| 9215 | 30 | 48 | 49 | no | |
|
||||||
|
| 9663 | 34 | 54 | 54 | no | |
|
||||||
|
| 9695 | 13 | 21 | 23 | no | |
|
||||||
|
| 9831 | 26 | 42 | 44 | no | |
|
||||||
|
| 9855 | 20 | 32 | 33 | no | |
|
||||||
|
| 10011 | 32 | 51 | 55 | no | |
|
||||||
|
| 10087 | 66 | 105 | 108 | no | |
|
||||||
|
| 10239 | 21 | 34 | 34 | no | |
|
||||||
|
| 10331 | 32 | 51 | 51 | no | |
|
||||||
|
| 10351 | 18 | 29 | 29 | no | |
|
||||||
|
| 10407 | 24 | 39 | 41 | no | |
|
||||||
|
| 10719 | 13 | 21 | 22 | no | |
|
||||||
|
| 10919 | 35 | 56 | 56 | no | |
|
||||||
|
| 11263 | 30 | 48 | 52 | no | |
|
||||||
|
| 11291 | 45 | 72 | 73 | no | |
|
||||||
|
| 11391 | 28 | 45 | 49 | no | |
|
||||||
|
| 11623 | 30 | 48 | 48 | no | |
|
||||||
|
| 11903 | 24 | 39 | 41 | no | |
|
||||||
|
| 11931 | 30 | 48 | 48 | no | |
|
||||||
|
| 12015 | 18 | 29 | 34 | no | |
|
||||||
|
| 12135 | 24 | 39 | 39 | no | |
|
||||||
|
| 12287 | 26 | 42 | 43 | no | |
|
||||||
|
| 12359 | 14 | 23 | 26 | no | |
|
||||||
|
| 12399 | 47 | 75 | 75 | no | |
|
||||||
|
| 12479 | 11 | 18 | 19 | no | |
|
||||||
|
| 12539 | 29 | 46 | 49 | no | |
|
||||||
|
| 12703 | 43 | 69 | 70 | no | |
|
||||||
|
| 12927 | 17 | 27 | 30 | no | |
|
||||||
|
| 13439 | 42 | 67 | 71 | no | |
|
||||||
|
| 13551 | 42 | 67 | 67 | no | |
|
||||||
|
| 13759 | 32 | 51 | 53 | no | |
|
||||||
|
| 13823 | 29 | 46 | 48 | no | |
|
||||||
|
| 14247 | 15 | 24 | 24 | no | |
|
||||||
|
| 14495 | 33 | 53 | 53 | no | |
|
||||||
|
| 14559 | 36 | 58 | 58 | no | |
|
||||||
|
| 15003 | 15 | 24 | 24 | no | |
|
||||||
|
| 15039 | 52 | 83 | 83 | no | |
|
||||||
|
| 15099 | 15 | 24 | 26 | no | |
|
||||||
|
| 15131 | 49 | 78 | 78 | no | |
|
||||||
|
| 15519 | 32 | 51 | 53 | no | |
|
||||||
|
| 16379 | 34 | 54 | 55 | no | |
|
||||||
|
| 16495 | 20 | 32 | 32 | no | |
|
||||||
|
| 16551 | 38 | 61 | 62 | no | |
|
||||||
|
| 16895 | 29 | 46 | 51 | no | |
|
||||||
|
| 17023 | 46 | 73 | 73 | no | |
|
||||||
|
| 17151 | 38 | 61 | 61 | no | |
|
||||||
|
| 17179 | 36 | 58 | 58 | no | |
|
||||||
|
| 17439 | 21 | 34 | 34 | no | |
|
||||||
|
| 17647 | 46 | 73 | 74 | no | |
|
||||||
|
| 17659 | 10 | 16 | 16 | no | |
|
||||||
|
| 17691 | 39 | 62 | 64 | no | |
|
||||||
|
| 18047 | 15 | 24 | 26 | no | |
|
||||||
|
| 18159 | 10 | 16 | 16 | no | |
|
||||||
|
| 18203 | 23 | 37 | 38 | no | |
|
||||||
|
| 18303 | 12 | 20 | 20 | no | |
|
||||||
|
| 18427 | 32 | 51 | 52 | no | |
|
||||||
|
| 18431 | 25 | 40 | 42 | no | |
|
||||||
|
| 18543 | 35 | 56 | 56 | no | |
|
||||||
|
| 18591 | 39 | 62 | 64 | no | |
|
||||||
|
| 18943 | 31 | 50 | 50 | no | |
|
||||||
|
| 19055 | 42 | 67 | 69 | no | |
|
||||||
|
| 19271 | 11 | 18 | 23 | no | |
|
||||||
|
| 19327 | 34 | 54 | 55 | no | |
|
||||||
|
| 19903 | 37 | 59 | 61 | no | |
|
||||||
|
| 20095 | 32 | 51 | 52 | no | |
|
||||||
|
| 20327 | 41 | 65 | 66 | no | |
|
||||||
|
| 20479 | 21 | 34 | 35 | no | |
|
||||||
|
| 20731 | 30 | 48 | 49 | no | |
|
||||||
|
| 20895 | 45 | 72 | 72 | no | |
|
||||||
|
| 20975 | 21 | 34 | 36 | no | |
|
||||||
|
| 21083 | 17 | 27 | 33 | no | |
|
||||||
|
| 21183 | 14 | 23 | 23 | no | |
|
||||||
|
| 21231 | 44 | 70 | 70 | no | |
|
||||||
|
| 21351 | 42 | 67 | 67 | no | |
|
||||||
|
| 21503 | 20 | 32 | 33 | no | |
|
||||||
|
| 21743 | 32 | 51 | 52 | no | |
|
||||||
|
| 21787 | 30 | 48 | 49 | no | |
|
||||||
|
| 22559 | 51 | 81 | 82 | no | |
|
||||||
|
| 23279 | 31 | 50 | 52 | no | |
|
||||||
|
| 23487 | 13 | 21 | 21 | no | |
|
||||||
|
| 23719 | 15 | 24 | 30 | no | |
|
||||||
|
| 24031 | 14 | 23 | 23 | no | |
|
||||||
|
| 24063 | 16 | 26 | 28 | no | |
|
||||||
|
| 24091 | 44 | 70 | 71 | no | |
|
||||||
|
| 24095 | 17 | 27 | 28 | no | |
|
||||||
|
| 24347 | 14 | 23 | 23 | no | |
|
||||||
|
| 24575 | 26 | 42 | 44 | no | |
|
||||||
|
| 24623 | 15 | 24 | 24 | no | |
|
||||||
|
| 24687 | 18 | 29 | 32 | no | |
|
||||||
|
| 24799 | 17 | 27 | 27 | no | |
|
||||||
|
| 24827 | 34 | 54 | 54 | no | |
|
||||||
|
| 25243 | 37 | 59 | 62 | no | |
|
||||||
|
| 25407 | 39 | 62 | 62 | no | |
|
||||||
|
| 25535 | 42 | 67 | 67 | no | |
|
||||||
|
| 25727 | 37 | 59 | 60 | no | |
|
||||||
|
| 25839 | 23 | 37 | 37 | no | |
|
||||||
|
| 26047 | 37 | 59 | 59 | no | |
|
||||||
|
| 26239 | 26 | 42 | 43 | no | |
|
||||||
|
| 26471 | 45 | 72 | 73 | no | |
|
||||||
|
| 26623 | 41 | 65 | 65 | no | |
|
||||||
|
| 27103 | 42 | 67 | 68 | no | |
|
||||||
|
| 27135 | 46 | 73 | 73 | no | |
|
||||||
|
| 27227 | 17 | 27 | 30 | no | |
|
||||||
|
| 27327 | 33 | 53 | 53 | no | |
|
||||||
|
| 27367 | 41 | 65 | 66 | no | |
|
||||||
|
| 27419 | 15 | 24 | 26 | no | |
|
||||||
|
| 27519 | 30 | 48 | 48 | no | |
|
||||||
|
| 27647 | 24 | 39 | 41 | no | |
|
||||||
|
| 27815 | 34 | 54 | 55 | no | |
|
||||||
|
| 28207 | 14 | 23 | 25 | no | |
|
||||||
|
| 28287 | 27 | 43 | 45 | no | |
|
||||||
|
| 28399 | 34 | 54 | 54 | no | |
|
||||||
|
| 28415 | 30 | 48 | 49 | no | |
|
||||||
|
| 28583 | 37 | 59 | 59 | no | |
|
||||||
|
| 28671 | 47 | 75 | 77 | no | |
|
||||||
|
| 28783 | 44 | 70 | 70 | no | |
|
||||||
|
| 28911 | 23 | 37 | 37 | no | |
|
||||||
|
| 28923 | 42 | 67 | 70 | no | |
|
||||||
|
| 28991 | 33 | 53 | 54 | no | |
|
||||||
|
| 29311 | 11 | 18 | 23 | no | |
|
||||||
|
| 29343 | 17 | 27 | 27 | no | |
|
||||||
|
| 29855 | 36 | 58 | 60 | no | |
|
||||||
|
| 29919 | 15 | 24 | 24 | no | |
|
||||||
|
| 29935 | 35 | 56 | 57 | no | |
|
||||||
|
| 30143 | 31 | 50 | 51 | no | |
|
||||||
|
| 30463 | 28 | 45 | 50 | no | |
|
||||||
|
| 30491 | 40 | 64 | 65 | no | |
|
||||||
|
| 30879 | 36 | 58 | 58 | no | |
|
||||||
|
| 30971 | 10 | 16 | 16 | no | |
|
||||||
|
| 31039 | 32 | 51 | 54 | no | |
|
||||||
|
| 31343 | 44 | 70 | 71 | no | |
|
||||||
|
| 31463 | 20 | 32 | 35 | no | |
|
||||||
|
| 31487 | 12 | 20 | 20 | no | |
|
||||||
|
| 31743 | 29 | 46 | 46 | no | |
|
||||||
|
| 31847 | 43 | 69 | 69 | no | |
|
||||||
|
| 31903 | 42 | 67 | 67 | no | |
|
||||||
|
| 31911 | 37 | 59 | 64 | no | |
|
||||||
|
| 31995 | 14 | 23 | 25 | no | |
|
||||||
|
| 32027 | 41 | 65 | 66 | no | |
|
||||||
|
| 32047 | 12 | 20 | 20 | no | |
|
||||||
|
| 32539 | 40 | 64 | 67 | no | |
|
||||||
|
| 32767 | 32 | 51 | 52 | no | |
|
||||||
|
|
||||||
|
## Sorties
|
||||||
|
|
||||||
|
- JSON : `/home/ncantu/code/algo/docs/artefacts/collatz/refinement_K/palier2p15/hensel_chain_leaves/clauses_hensel_chain_leaves_mod2p15.json`
|
||||||
|
- Markdown : `/home/ncantu/code/algo/docs/artefacts/collatz/refinement_K/palier2p15/hensel_chain_leaves/clauses_hensel_chain_leaves_mod2p15.md`
|
||||||
|
|
||||||
@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"domain": {
|
||||||
|
"palier": 15
|
||||||
|
},
|
||||||
|
"counts": {
|
||||||
|
"total": 0,
|
||||||
|
"ok": 0,
|
||||||
|
"errors": 0
|
||||||
|
},
|
||||||
|
"ok": true,
|
||||||
|
"errors_sample": []
|
||||||
|
}
|
||||||
@ -0,0 +1,9 @@
|
|||||||
|
**Auteur** : Équipe 4NK
|
||||||
|
|
||||||
|
# Vérification — feuilles “chaîne de Hensel” — 2^15
|
||||||
|
|
||||||
|
- total : 0
|
||||||
|
- ok : 0
|
||||||
|
- errors : 0
|
||||||
|
- ok_all : True
|
||||||
|
|
||||||
@ -0,0 +1,30 @@
|
|||||||
|
{
|
||||||
|
"domain": {
|
||||||
|
"palier": 15
|
||||||
|
},
|
||||||
|
"inputs": {
|
||||||
|
"tracked_roots_file": "/home/ncantu/code/algo/docs/artefacts/collatz/refinement_K/palier2p15/incremental_D_minor/tracked_roots_lb_any_top200_mod2p15_to2p18.txt",
|
||||||
|
"obstruction_json": "/home/ncantu/code/algo/docs/artefacts/collatz/refinement_K/palier2p15/open_roots_obstruction_profile_mod2p15_to2p18.json",
|
||||||
|
"dminor_json_paths": [
|
||||||
|
"/home/ncantu/code/algo/docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p15/clauses_D_minor_over_Sm_mod2p15_k8_u13.json"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"params": {
|
||||||
|
"target_max_palier_cap": 160,
|
||||||
|
"k_max": 256,
|
||||||
|
"t_max": 256
|
||||||
|
},
|
||||||
|
"counts": {
|
||||||
|
"tracked_roots": 200,
|
||||||
|
"closed_roots": 0,
|
||||||
|
"failed_roots": 200
|
||||||
|
},
|
||||||
|
"clauses": [],
|
||||||
|
"sha256": {
|
||||||
|
"inputs": {
|
||||||
|
"/home/ncantu/code/algo/docs/artefacts/collatz/refinement_K/palier2p15/incremental_D_minor/tracked_roots_lb_any_top200_mod2p15_to2p18.txt": "d144fe38af97b217cebf444ebaa88fec25525ddab03d89404d62cb971e6bec29",
|
||||||
|
"/home/ncantu/code/algo/docs/artefacts/collatz/refinement_K/palier2p15/open_roots_obstruction_profile_mod2p15_to2p18.json": "c444569a60ee559280b989235e1f6bc2dcf029e5c8ba95c52c264cb5d5c7ec63",
|
||||||
|
"/home/ncantu/code/algo/docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p15/clauses_D_minor_over_Sm_mod2p15_k8_u13.json": "8b437c0a8215f942e0aaf47c387e7e52842ff87886fb7c6a04e9dd7776f738f5"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,217 @@
|
|||||||
|
**Auteur** : Équipe 4NK
|
||||||
|
|
||||||
|
# Feuilles ciblées (raffinement profond local) — racine 2^15
|
||||||
|
|
||||||
|
- tracked_roots_file : `/home/ncantu/code/algo/docs/artefacts/collatz/refinement_K/palier2p15/incremental_D_minor/tracked_roots_lb_any_top200_mod2p15_to2p18.txt`
|
||||||
|
- target_max_palier_cap : 160
|
||||||
|
- k_max : 256
|
||||||
|
- t_max : 256
|
||||||
|
|
||||||
|
| root | lb_any (from obstruction) | target_max | closed | cert |
|
||||||
|
| --- | --- | --- | --- | --- |
|
||||||
|
| 27 | 60 | 160 | no | |
|
||||||
|
| 31 | 57 | 160 | no | |
|
||||||
|
| 47 | 56 | 160 | no | |
|
||||||
|
| 63 | 55 | 160 | no | |
|
||||||
|
| 71 | 52 | 160 | no | |
|
||||||
|
| 251 | 80 | 160 | no | |
|
||||||
|
| 703 | 84 | 160 | no | |
|
||||||
|
| 1055 | 83 | 160 | no | |
|
||||||
|
| 1183 | 55 | 160 | no | |
|
||||||
|
| 1279 | 70 | 160 | no | |
|
||||||
|
| 1407 | 85 | 160 | no | |
|
||||||
|
| 1471 | 80 | 160 | no | |
|
||||||
|
| 1535 | 56 | 160 | no | |
|
||||||
|
| 1583 | 82 | 160 | no | |
|
||||||
|
| 1819 | 62 | 160 | no | |
|
||||||
|
| 2047 | 59 | 160 | no | |
|
||||||
|
| 2111 | 84 | 160 | no | |
|
||||||
|
| 2151 | 52 | 160 | no | |
|
||||||
|
| 2287 | 54 | 160 | no | |
|
||||||
|
| 2527 | 66 | 160 | no | |
|
||||||
|
| 2887 | 136 | 160 | no | |
|
||||||
|
| 3071 | 50 | 160 | no | |
|
||||||
|
| 3199 | 66 | 160 | no | |
|
||||||
|
| 3263 | 56 | 160 | no | |
|
||||||
|
| 3399 | 49 | 160 | no | |
|
||||||
|
| 4095 | 52 | 160 | no | |
|
||||||
|
| 4255 | 71 | 160 | no | |
|
||||||
|
| 4263 | 55 | 160 | no | |
|
||||||
|
| 4379 | 77 | 160 | no | |
|
||||||
|
| 4591 | 66 | 160 | no | |
|
||||||
|
| 4607 | 49 | 160 | no | |
|
||||||
|
| 4735 | 128 | 160 | no | |
|
||||||
|
| 5119 | 52 | 160 | no | |
|
||||||
|
| 5535 | 67 | 160 | no | |
|
||||||
|
| 5823 | 53 | 160 | no | |
|
||||||
|
| 6143 | 51 | 160 | no | |
|
||||||
|
| 6171 | 56 | 160 | no | |
|
||||||
|
| 6303 | 59 | 160 | no | |
|
||||||
|
| 6383 | 70 | 160 | no | |
|
||||||
|
| 6471 | 51 | 160 | no | |
|
||||||
|
| 6887 | 58 | 160 | no | |
|
||||||
|
| 6939 | 63 | 160 | no | |
|
||||||
|
| 7039 | 63 | 160 | no | |
|
||||||
|
| 7167 | 65 | 160 | no | |
|
||||||
|
| 7279 | 58 | 160 | no | |
|
||||||
|
| 7423 | 54 | 160 | no | |
|
||||||
|
| 7451 | 60 | 160 | no | |
|
||||||
|
| 7527 | 75 | 160 | no | |
|
||||||
|
| 7935 | 71 | 160 | no | |
|
||||||
|
| 7963 | 76 | 160 | no | |
|
||||||
|
| 8191 | 52 | 160 | no | |
|
||||||
|
| 8223 | 53 | 160 | no | |
|
||||||
|
| 8351 | 66 | 160 | no | |
|
||||||
|
| 8359 | 51 | 160 | no | |
|
||||||
|
| 8639 | 56 | 160 | no | |
|
||||||
|
| 8959 | 73 | 160 | no | |
|
||||||
|
| 9023 | 74 | 160 | no | |
|
||||||
|
| 9183 | 55 | 160 | no | |
|
||||||
|
| 9215 | 50 | 160 | no | |
|
||||||
|
| 9663 | 55 | 160 | no | |
|
||||||
|
| 9695 | 72 | 160 | no | |
|
||||||
|
| 9831 | 52 | 160 | no | |
|
||||||
|
| 9855 | 49 | 160 | no | |
|
||||||
|
| 10011 | 56 | 160 | no | |
|
||||||
|
| 10087 | 102 | 160 | no | |
|
||||||
|
| 10239 | 71 | 160 | no | |
|
||||||
|
| 10331 | 52 | 160 | no | |
|
||||||
|
| 10351 | 51 | 160 | no | |
|
||||||
|
| 10407 | 70 | 160 | no | |
|
||||||
|
| 10719 | 49 | 160 | no | |
|
||||||
|
| 10919 | 57 | 160 | no | |
|
||||||
|
| 11263 | 53 | 160 | no | |
|
||||||
|
| 11291 | 74 | 160 | no | |
|
||||||
|
| 11391 | 50 | 160 | no | |
|
||||||
|
| 11623 | 49 | 160 | no | |
|
||||||
|
| 11903 | 60 | 160 | no | |
|
||||||
|
| 11931 | 49 | 160 | no | |
|
||||||
|
| 12015 | 60 | 160 | no | |
|
||||||
|
| 12135 | 57 | 160 | no | |
|
||||||
|
| 12287 | 114 | 160 | no | |
|
||||||
|
| 12359 | 130 | 160 | no | |
|
||||||
|
| 12399 | 76 | 160 | no | |
|
||||||
|
| 12479 | 57 | 160 | no | |
|
||||||
|
| 12539 | 79 | 160 | no | |
|
||||||
|
| 12703 | 71 | 160 | no | |
|
||||||
|
| 12927 | 50 | 160 | no | |
|
||||||
|
| 13439 | 72 | 160 | no | |
|
||||||
|
| 13551 | 68 | 160 | no | |
|
||||||
|
| 13759 | 54 | 160 | no | |
|
||||||
|
| 13823 | 49 | 160 | no | |
|
||||||
|
| 14247 | 71 | 160 | no | |
|
||||||
|
| 14495 | 54 | 160 | no | |
|
||||||
|
| 14559 | 59 | 160 | no | |
|
||||||
|
| 15003 | 69 | 160 | no | |
|
||||||
|
| 15039 | 84 | 160 | no | |
|
||||||
|
| 15099 | 64 | 160 | no | |
|
||||||
|
| 15131 | 72 | 160 | no | |
|
||||||
|
| 15519 | 54 | 160 | no | |
|
||||||
|
| 16379 | 56 | 160 | no | |
|
||||||
|
| 16495 | 51 | 160 | no | |
|
||||||
|
| 16551 | 63 | 160 | no | |
|
||||||
|
| 16895 | 52 | 160 | no | |
|
||||||
|
| 17023 | 69 | 160 | no | |
|
||||||
|
| 17151 | 62 | 160 | no | |
|
||||||
|
| 17179 | 59 | 160 | no | |
|
||||||
|
| 17439 | 60 | 160 | no | |
|
||||||
|
| 17647 | 75 | 160 | no | |
|
||||||
|
| 17659 | 72 | 160 | no | |
|
||||||
|
| 17691 | 65 | 160 | no | |
|
||||||
|
| 18047 | 85 | 160 | no | |
|
||||||
|
| 18159 | 54 | 160 | no | |
|
||||||
|
| 18203 | 76 | 160 | no | |
|
||||||
|
| 18303 | 69 | 160 | no | |
|
||||||
|
| 18427 | 53 | 160 | no | |
|
||||||
|
| 18431 | 58 | 160 | no | |
|
||||||
|
| 18543 | 57 | 160 | no | |
|
||||||
|
| 18591 | 79 | 160 | no | |
|
||||||
|
| 18943 | 51 | 160 | no | |
|
||||||
|
| 19055 | 61 | 160 | no | |
|
||||||
|
| 19271 | 49 | 160 | no | |
|
||||||
|
| 19327 | 61 | 160 | no | |
|
||||||
|
| 19903 | 62 | 160 | no | |
|
||||||
|
| 20095 | 54 | 160 | no | |
|
||||||
|
| 20327 | 67 | 160 | no | |
|
||||||
|
| 20479 | 67 | 160 | no | |
|
||||||
|
| 20731 | 56 | 160 | no | |
|
||||||
|
| 20895 | 73 | 160 | no | |
|
||||||
|
| 20975 | 66 | 160 | no | |
|
||||||
|
| 21083 | 61 | 160 | no | |
|
||||||
|
| 21183 | 65 | 160 | no | |
|
||||||
|
| 21231 | 71 | 160 | no | |
|
||||||
|
| 21351 | 68 | 160 | no | |
|
||||||
|
| 21503 | 73 | 160 | no | |
|
||||||
|
| 21743 | 73 | 160 | no | |
|
||||||
|
| 21787 | 50 | 160 | no | |
|
||||||
|
| 22559 | 83 | 160 | no | |
|
||||||
|
| 23279 | 53 | 160 | no | |
|
||||||
|
| 23487 | 127 | 160 | no | |
|
||||||
|
| 23719 | 59 | 160 | no | |
|
||||||
|
| 24031 | 54 | 160 | no | |
|
||||||
|
| 24063 | 51 | 160 | no | |
|
||||||
|
| 24091 | 72 | 160 | no | |
|
||||||
|
| 24095 | 53 | 160 | no | |
|
||||||
|
| 24347 | 121 | 160 | no | |
|
||||||
|
| 24575 | 73 | 160 | no | |
|
||||||
|
| 24623 | 55 | 160 | no | |
|
||||||
|
| 24687 | 66 | 160 | no | |
|
||||||
|
| 24799 | 72 | 160 | no | |
|
||||||
|
| 24827 | 55 | 160 | no | |
|
||||||
|
| 25243 | 56 | 160 | no | |
|
||||||
|
| 25407 | 63 | 160 | no | |
|
||||||
|
| 25535 | 68 | 160 | no | |
|
||||||
|
| 25727 | 61 | 160 | no | |
|
||||||
|
| 25839 | 58 | 160 | no | |
|
||||||
|
| 26047 | 60 | 160 | no | |
|
||||||
|
| 26239 | 73 | 160 | no | |
|
||||||
|
| 26471 | 64 | 160 | no | |
|
||||||
|
| 26623 | 66 | 160 | no | |
|
||||||
|
| 27103 | 69 | 160 | no | |
|
||||||
|
| 27135 | 72 | 160 | no | |
|
||||||
|
| 27227 | 61 | 160 | no | |
|
||||||
|
| 27327 | 54 | 160 | no | |
|
||||||
|
| 27367 | 64 | 160 | no | |
|
||||||
|
| 27419 | 53 | 160 | no | |
|
||||||
|
| 27519 | 49 | 160 | no | |
|
||||||
|
| 27647 | 73 | 160 | no | |
|
||||||
|
| 27815 | 58 | 160 | no | |
|
||||||
|
| 28207 | 128 | 160 | no | |
|
||||||
|
| 28287 | 70 | 160 | no | |
|
||||||
|
| 28399 | 53 | 160 | no | |
|
||||||
|
| 28415 | 50 | 160 | no | |
|
||||||
|
| 28583 | 60 | 160 | no | |
|
||||||
|
| 28671 | 78 | 160 | no | |
|
||||||
|
| 28783 | 71 | 160 | no | |
|
||||||
|
| 28911 | 56 | 160 | no | |
|
||||||
|
| 28923 | 71 | 160 | no | |
|
||||||
|
| 28991 | 53 | 160 | no | |
|
||||||
|
| 29311 | 90 | 160 | no | |
|
||||||
|
| 29343 | 55 | 160 | no | |
|
||||||
|
| 29855 | 61 | 160 | no | |
|
||||||
|
| 29919 | 67 | 160 | no | |
|
||||||
|
| 29935 | 58 | 160 | no | |
|
||||||
|
| 30143 | 52 | 160 | no | |
|
||||||
|
| 30463 | 51 | 160 | no | |
|
||||||
|
| 30491 | 66 | 160 | no | |
|
||||||
|
| 30879 | 59 | 160 | no | |
|
||||||
|
| 30971 | 52 | 160 | no | |
|
||||||
|
| 31039 | 55 | 160 | no | |
|
||||||
|
| 31343 | 72 | 160 | no | |
|
||||||
|
| 31463 | 63 | 160 | no | |
|
||||||
|
| 31487 | 118 | 160 | no | |
|
||||||
|
| 31743 | 70 | 160 | no | |
|
||||||
|
| 31847 | 70 | 160 | no | |
|
||||||
|
| 31903 | 68 | 160 | no | |
|
||||||
|
| 31911 | 65 | 160 | no | |
|
||||||
|
| 31995 | 69 | 160 | no | |
|
||||||
|
| 32027 | 64 | 160 | no | |
|
||||||
|
| 32047 | 51 | 160 | no | |
|
||||||
|
| 32539 | 68 | 160 | no | |
|
||||||
|
| 32767 | 49 | 160 | no | |
|
||||||
|
|
||||||
|
## Sorties
|
||||||
|
|
||||||
|
- JSON : `/home/ncantu/code/algo/docs/artefacts/collatz/refinement_K/palier2p15/targeted_leaves/clauses_targeted_refinement_leaves_mod2p15.json`
|
||||||
|
- Markdown : `/home/ncantu/code/algo/docs/artefacts/collatz/refinement_K/palier2p15/targeted_leaves/clauses_targeted_refinement_leaves_mod2p15.md`
|
||||||
|
|
||||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,99 @@
|
|||||||
|
**Auteur** : Équipe 4NK
|
||||||
|
|
||||||
|
# Diagnostic — échec targeted leaves — racine 2^15
|
||||||
|
|
||||||
|
- tracked_roots_file : `/home/ncantu/code/algo/docs/artefacts/collatz/refinement_K/palier2p15/incremental_D_minor/tracked_roots_lb_any_top200_mod2p15_to2p18.txt`
|
||||||
|
- k_max : 256
|
||||||
|
- t_max : 256
|
||||||
|
- search_max_required_m : 256
|
||||||
|
|
||||||
|
Table (par racine) :
|
||||||
|
|
||||||
|
| root | child_low | child_high | immediate_low@16 | immediate_high@16 | lb_root | lb_low | lb_high |
|
||||||
|
| --- | --- | --- | --- | --- | --- | --- | --- |
|
||||||
|
| 27 | 27 | 32795 | no | no | 60 | 60 | 26 |
|
||||||
|
| 31 | 31 | 32799 | no | no | 57 | 57 | 25 |
|
||||||
|
| 47 | 47 | 32815 | no | no | 56 | 56 | 42 |
|
||||||
|
| 63 | 63 | 32831 | no | no | 55 | 55 | 25 |
|
||||||
|
| 71 | 71 | 32839 | no | no | 52 | 52 | 22 |
|
||||||
|
| 251 | 251 | 33019 | no | no | 80 | 30 | 80 |
|
||||||
|
| 703 | 703 | 33471 | no | no | 84 | 84 | 61 |
|
||||||
|
| 1055 | 1055 | 33823 | no | no | 83 | 83 | 28 |
|
||||||
|
| 1183 | 1183 | 33951 | no | no | 55 | 17 | 55 |
|
||||||
|
| 1279 | 1279 | 34047 | no | no | 70 | 25 | 70 |
|
||||||
|
| 1407 | 1407 | 34175 | no | no | 85 | 85 | 23 |
|
||||||
|
| 1471 | 1471 | 34239 | no | no | 80 | 32 | 80 |
|
||||||
|
| 1535 | 1535 | 34303 | no | no | 56 | 20 | 56 |
|
||||||
|
| 1583 | 1583 | 34351 | no | no | 82 | 82 | 38 |
|
||||||
|
| 1819 | 1819 | 34587 | no | no | 62 | 62 | 23 |
|
||||||
|
| 2047 | 2047 | 34815 | no | no | 59 | 59 | 20 |
|
||||||
|
| 2111 | 2111 | 34879 | no | no | 84 | 84 | 36 |
|
||||||
|
| 2151 | 2151 | 34919 | no | no | 52 | 42 | 52 |
|
||||||
|
| 2287 | 2287 | 35055 | no | no | 54 | 54 | 22 |
|
||||||
|
| 2527 | 2527 | 35295 | no | no | 66 | 28 | 66 |
|
||||||
|
| 2887 | 2887 | 35655 | no | no | 136 | 17 | 136 |
|
||||||
|
| 3071 | 3071 | 35839 | no | no | 50 | 50 | 20 |
|
||||||
|
| 3199 | 3199 | 35967 | no | no | 66 | 18 | 66 |
|
||||||
|
| 3263 | 3263 | 36031 | no | no | 56 | 20 | 56 |
|
||||||
|
| 3399 | 3399 | 36167 | no | no | 49 | 49 | 22 |
|
||||||
|
| 4095 | 4095 | 36863 | no | no | 52 | 52 | 39 |
|
||||||
|
| 4255 | 4255 | 37023 | no | no | 71 | 71 | 18 |
|
||||||
|
| 4263 | 4263 | 37031 | no | no | 55 | 55 | 32 |
|
||||||
|
| 4379 | 4379 | 37147 | no | no | 77 | 17 | 77 |
|
||||||
|
| 4591 | 4591 | 37359 | no | no | 66 | 66 | 21 |
|
||||||
|
| 4607 | 4607 | 37375 | no | no | 49 | 49 | 21 |
|
||||||
|
| 4735 | 4735 | 37503 | no | no | 128 | 18 | 128 |
|
||||||
|
| 5119 | 5119 | 37887 | no | no | 52 | 39 | 52 |
|
||||||
|
| 5535 | 5535 | 38303 | no | no | 67 | 28 | 67 |
|
||||||
|
| 5823 | 5823 | 38591 | no | no | 53 | 24 | 53 |
|
||||||
|
| 6143 | 6143 | 38911 | no | no | 51 | 51 | 20 |
|
||||||
|
| 6171 | 6171 | 38939 | no | no | 56 | 56 | 25 |
|
||||||
|
| 6303 | 6303 | 39071 | no | no | 59 | 29 | 59 |
|
||||||
|
| 6383 | 6383 | 39151 | no | no | 70 | 70 | 22 |
|
||||||
|
| 6471 | 6471 | 39239 | no | no | 51 | 51 | 33 |
|
||||||
|
| 6887 | 6887 | 39655 | no | no | 58 | 58 | 25 |
|
||||||
|
| 6939 | 6939 | 39707 | no | no | 63 | 29 | 63 |
|
||||||
|
| 7039 | 7039 | 39807 | no | no | 63 | 18 | 63 |
|
||||||
|
| 7167 | 7167 | 39935 | no | no | 65 | 34 | 65 |
|
||||||
|
| 7279 | 7279 | 40047 | no | no | 58 | 58 | 20 |
|
||||||
|
| 7423 | 7423 | 40191 | no | no | 54 | 39 | 54 |
|
||||||
|
| 7451 | 7451 | 40219 | no | no | 60 | 17 | 60 |
|
||||||
|
| 7527 | 7527 | 40295 | no | no | 75 | 75 | 39 |
|
||||||
|
| 7935 | 7935 | 40703 | no | no | 71 | 43 | 71 |
|
||||||
|
| 7963 | 7963 | 40731 | no | no | 76 | 76 | 25 |
|
||||||
|
| 8191 | 8191 | 40959 | no | no | 52 | 45 | 52 |
|
||||||
|
| 8223 | 8223 | 40991 | no | no | 53 | 29 | 53 |
|
||||||
|
| 8351 | 8351 | 41119 | no | no | 66 | 36 | 66 |
|
||||||
|
| 8359 | 8359 | 41127 | no | no | 51 | 51 | 23 |
|
||||||
|
| 8639 | 8639 | 41407 | no | no | 56 | 35 | 56 |
|
||||||
|
| 8959 | 8959 | 41727 | no | no | 73 | 73 | 23 |
|
||||||
|
| 9023 | 9023 | 41791 | no | no | 74 | 18 | 74 |
|
||||||
|
| 9183 | 9183 | 41951 | no | no | 55 | 55 | 38 |
|
||||||
|
| 9215 | 9215 | 41983 | no | no | 50 | 50 | 20 |
|
||||||
|
| 9663 | 9663 | 42431 | no | no | 55 | 55 | 45 |
|
||||||
|
| 9695 | 9695 | 42463 | no | no | 72 | 24 | 72 |
|
||||||
|
| 9831 | 9831 | 42599 | no | no | 52 | 18 | 52 |
|
||||||
|
| 9855 | 9855 | 42623 | no | no | 49 | 29 | 49 |
|
||||||
|
| 10011 | 10011 | 42779 | no | no | 56 | 56 | 33 |
|
||||||
|
| 10087 | 10087 | 42855 | no | no | 102 | 102 | 22 |
|
||||||
|
| 10239 | 10239 | 43007 | no | no | 71 | 35 | 71 |
|
||||||
|
| 10331 | 10331 | 43099 | no | no | 52 | 52 | 24 |
|
||||||
|
| 10351 | 10351 | 43119 | no | no | 51 | 30 | 51 |
|
||||||
|
| 10407 | 10407 | 43175 | no | no | 70 | 29 | 70 |
|
||||||
|
| 10719 | 10719 | 43487 | no | no | 49 | 23 | 49 |
|
||||||
|
| 10919 | 10919 | 43687 | no | no | 57 | 57 | 20 |
|
||||||
|
| 11263 | 11263 | 44031 | no | no | 53 | 53 | 25 |
|
||||||
|
| 11291 | 11291 | 44059 | no | no | 74 | 74 | 18 |
|
||||||
|
| 11391 | 11391 | 44159 | no | no | 50 | 50 | 38 |
|
||||||
|
| 11623 | 11623 | 44391 | no | no | 49 | 49 | 21 |
|
||||||
|
| 11903 | 11903 | 44671 | no | no | 60 | 42 | 60 |
|
||||||
|
| 11931 | 11931 | 44699 | no | no | 49 | 49 | 19 |
|
||||||
|
| 12015 | 12015 | 44783 | no | no | 60 | 23 | 60 |
|
||||||
|
| 12135 | 12135 | 44903 | no | no | 57 | 40 | 57 |
|
||||||
|
| 12287 | 12287 | 45055 | no | no | 114 | 44 | 114 |
|
||||||
|
|
||||||
|
## Sorties
|
||||||
|
|
||||||
|
- JSON : `/home/ncantu/code/algo/docs/artefacts/collatz/refinement_K/palier2p15/targeted_leaves/diagnostic_targeted_leaves_failure_mod2p15.json`
|
||||||
|
- Markdown : `/home/ncantu/code/algo/docs/artefacts/collatz/refinement_K/palier2p15/targeted_leaves/diagnostic_targeted_leaves_failure_mod2p15.md`
|
||||||
|
|
||||||
@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
"domain": {
|
||||||
|
"palier": 15
|
||||||
|
},
|
||||||
|
"counts": {
|
||||||
|
"total": 0,
|
||||||
|
"ok": 0,
|
||||||
|
"errors": 0
|
||||||
|
},
|
||||||
|
"stats": {
|
||||||
|
"total_nodes": 0,
|
||||||
|
"total_leaves": 0,
|
||||||
|
"max_m_seen": 15
|
||||||
|
},
|
||||||
|
"ok": true,
|
||||||
|
"errors_sample": []
|
||||||
|
}
|
||||||
@ -0,0 +1,12 @@
|
|||||||
|
**Auteur** : Équipe 4NK
|
||||||
|
|
||||||
|
# Vérification — feuilles ciblées (raffinement profond local) — 2^15
|
||||||
|
|
||||||
|
- total : 0
|
||||||
|
- ok : 0
|
||||||
|
- errors : 0
|
||||||
|
- ok_all : True
|
||||||
|
- total_nodes : 0
|
||||||
|
- total_leaves : 0
|
||||||
|
- max_m_seen : 15
|
||||||
|
|
||||||
116
docs/features/collatz_grammar_extensions_implementation_plan.md
Normal file
116
docs/features/collatz_grammar_extensions_implementation_plan.md
Normal file
@ -0,0 +1,116 @@
|
|||||||
|
**Auteur** : Équipe 4NK
|
||||||
|
|
||||||
|
# Plan d'implémentation — Extensions de grammaire (cas no/no)
|
||||||
|
|
||||||
|
## Alignement avec la thèse (livre_jeune_adulte.md)
|
||||||
|
|
||||||
|
Le plan respecte les principes du manuscrit :
|
||||||
|
|
||||||
|
- **Définir avant usage** : chaque notion (observable, projection, raffinement) est introduite avec ses hypothèses explicites.
|
||||||
|
- **Indexer les conclusions** : tout résultat est indexé par les choix (projection \(\Pi\), palier \(M\), grammaire \(\mathcal{K}\), paramètres \(k_{\max}\), \(M_{\max}\)).
|
||||||
|
- **Dette d'observabilité** : la thèse (Ch. 2, ligne 495) pose que « toute théorie qui prétend exclure la répétition dans un système itératif sur un espace d'états fini ne peut le faire sans introduire une hypothèse supplémentaire (… ou raffinement infini de l'observabilité). Le modèle impose une dette d'hypothèse. » Les extensions de grammaire visent à réduire cette dette par raffinement contrôlé (projection étendue, paliers plus profonds, règles de compression).
|
||||||
|
- **Stabilité sous raffinement/coarsening** (Ch. 16, Fermeture) : toute extension doit être testée sous variation de granularité (protocoles R1, R2, R3 de conjoncture_collatz.md).
|
||||||
|
- **Neutralité sémantique** : pas d'auto-évaluation ; formulations factuelles (« On définit… », « On montre… »).
|
||||||
|
|
||||||
|
## Objectif
|
||||||
|
|
||||||
|
Réduire `tracked.max` et `tracked.p99` sur la liste fixe `tracked_roots_lb_any_top200_mod2p15_to2p18.txt` en introduisant des règles de grammaire capables de fermer les racines où les deux enfants à \(m=16\) n'ont pas de clause immédiatement décidable (cas « no/no »).
|
||||||
|
|
||||||
|
## Phases du plan
|
||||||
|
|
||||||
|
### Phase 1 : Extension mécanique (Piste 2) — priorité immédiate
|
||||||
|
|
||||||
|
**Hypothèses.**
|
||||||
|
- Les racines extrêmes ont \(lb\in[19,136]\). Une partie peut être fermée par des clauses \(D_{\underline{}}\) à des paliers \(m\in\{19,\ldots,M_{\max}\}\) avec \(k\) plus grand.
|
||||||
|
- La génération et la vérification sont déjà en place ; seuls les paramètres changent.
|
||||||
|
|
||||||
|
**Étapes.**
|
||||||
|
|
||||||
|
1. Générer des clauses \(D_{\underline{}}\) pour \(m\in\{19,20,21\}\) et \(k\in\{12,\ldots,16\}\) (ou jusqu'à \(u_{\min}(k)\le m\)).
|
||||||
|
2. Générer des clauses terminales \(D/F\) pour \(m\in\{19,20,21\}\) via `collatz_generate_terminal_clauses_over_Sm.py` (si \(k_{\max}/t_{\max}\) suffisants).
|
||||||
|
3. Étendre le bundle de fermeture : `collatz_build_refinement_bundle_over_Sm_multilevel.py` avec `--max-palier 21` et les nouveaux leaf JSON.
|
||||||
|
4. Relancer `collatz_analyze_open_roots_refinement.py` et comparer `tracked.max`, `tracked.p99` sur la liste fixe.
|
||||||
|
5. Documenter dans `docs/artefacts/collatz/refinement_K/palier2p15/` les artefacts produits et les métriques.
|
||||||
|
|
||||||
|
**Indexation.** Résultats indexés par \(M_{\max}=21\), \(k_{\max}\) des clauses terminales, familles \((k,\underline A)\) des \(D_{\underline{}}\).
|
||||||
|
|
||||||
|
**Critère de succès.** \(\Delta\)(tracked.max) ou \(\Delta\)(tracked.p99) strictement négatif.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Phase 2 : Raffinement multi-modulus (Piste 1) — recherche
|
||||||
|
|
||||||
|
**Hypothèses.**
|
||||||
|
- La non-décidabilité de F à \(m=16\) peut venir de \(y\bmod 3\) non constant sur la classe. Une projection \(\Pi_{(M,s)}: n\mapsto (n\bmod 2^M, n\bmod 3^s)\) pourrait stabiliser le choix de fusion.
|
||||||
|
|
||||||
|
**Étapes.**
|
||||||
|
|
||||||
|
1. Analyser, sur un échantillon de racines « no/no », la distribution de \(y=U^{(t)}(n)\bmod 3\) pour \(n\equiv r\pmod{2^{16}}\) et \(t\) fixé (ex. \(t\le 32\)).
|
||||||
|
2. Si une partition par \(n\bmod 3^s\) rend \(y\bmod 3\) constant sur des sous-classes, concevoir un arbre de raffinement mixte (split 2-adique puis 3-adique, ou l'inverse).
|
||||||
|
3. Adapter `collatz_build_refinement_certificate_over_Sm_multilevel.py` pour accepter des feuilles indexées par \((m,r,b)\) avec \(b\in\{0,\ldots,3^s-1\}\).
|
||||||
|
4. Produire un artefact déterministe et un vérificateur.
|
||||||
|
|
||||||
|
**Indexation.** Résultats indexés par \(s\), l'ordre des splits, et la forme des feuilles.
|
||||||
|
|
||||||
|
**Critère de succès.** Au moins une racine « no/no » fermée par la nouvelle grammaire.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Phase 3 : Chaîne Hensel avec frères fermables (Piste 3) — raffinement
|
||||||
|
|
||||||
|
**Hypothèses.**
|
||||||
|
- La Piste 3 a échoué car les frères à \(m=16\) ne sont pas fermables. Si on augmente \(M_{\max}\) (Phase 1), certains frères à \(m\ge 19\) pourraient devenir fermables.
|
||||||
|
- Une stratégie hybride : suivre la chaîne Hensel à partir de \(m=19\) (au lieu de 16) pour les racines dont les enfants à \(m=19\) ont un frère fermable.
|
||||||
|
|
||||||
|
**Étapes.**
|
||||||
|
|
||||||
|
1. Après Phase 1, identifier les racines encore ouvertes dont un enfant à \(m=19\) a un frère fermé par \(D/F/D_{\underline{}}\).
|
||||||
|
2. Pour ces racines, implémenter une variante de `collatz_build_hensel_chain_leaves.py` qui démarre la chaîne à \(m=19\) (ou le premier niveau où le frère est fermable).
|
||||||
|
3. Intégrer les certificats « chaîne Hensel décalée » dans le pipeline de fermeture.
|
||||||
|
4. Mesurer l'impact sur `tracked.max/p99`.
|
||||||
|
|
||||||
|
**Indexation.** Résultats indexés par le niveau de démarrage de la chaîne et la disponibilité des clauses pour les frères.
|
||||||
|
|
||||||
|
**Critère de succès.** Au moins une racine fermée par certificat chaîne Hensel.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Phase 4 : Clause \(D\) partielle (Piste 4) — recherche formelle
|
||||||
|
|
||||||
|
**Hypothèses.**
|
||||||
|
- Une condition \(C(n)\) plus faible que la stabilité complète du préfixe pourrait suffire pour minorer \(U^{(k)}(n)\) et obtenir une descente.
|
||||||
|
|
||||||
|
**Étapes.**
|
||||||
|
|
||||||
|
1. Étudier la littérature et les formes de congruences sur \(n\) qui contraignent \(v_2(L_k(n))\) sans imposer \(A_{k-1}+1\le m\).
|
||||||
|
2. Proposer une forme explicite de \(C(n)\) (congruence modulo \(2^m\cdot 3^s\) ou combinaison) et un lemme de validité.
|
||||||
|
3. Si une forme est établie, implémenter un générateur et un vérificateur.
|
||||||
|
4. Intégrer dans le pipeline et mesurer.
|
||||||
|
|
||||||
|
**Indexation.** Résultats indexés par la forme de \(C(n)\) et le protocole de décidabilité.
|
||||||
|
|
||||||
|
**Critère de succès.** Lemme formel établi et au moins une racine fermée.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Ordre d'exécution recommandé
|
||||||
|
|
||||||
|
1. **Phase 1** (extension mécanique) : effort minimal, réutilisation du code existant ; résultat mesurable rapidement.
|
||||||
|
2. **Phase 2** (multi-modulus) : nécessite une analyse préalable des distributions \(y\bmod 3\) ; peut être menée en parallèle de la Phase 1.
|
||||||
|
3. **Phase 3** (chaîne Hensel décalée) : dépend des résultats de la Phase 1 (identification des frères fermables à \(m\ge 19\)).
|
||||||
|
4. **Phase 4** (clause partielle) : recherche formelle ; peut être reportée si les Phases 1–3 suffisent.
|
||||||
|
|
||||||
|
## Artefacts et traçabilité
|
||||||
|
|
||||||
|
Chaque phase produit :
|
||||||
|
|
||||||
|
- Scripts (ou modifications) versionnés.
|
||||||
|
- Artefacts JSON/MD sous `docs/artefacts/collatz/refinement_K/` ou `docs/artefacts/collatz/terminal_clauses_over_Sm/`.
|
||||||
|
- Mise à jour de `docs/features/` et de `applications/collatz/conjoncture_collatz.md` pour les nouvelles règles et indexations.
|
||||||
|
- Rapport de métriques (tracked.max, tracked.p99, open_roots, q_m) avant/après.
|
||||||
|
|
||||||
|
## Références
|
||||||
|
|
||||||
|
- `these/livre_jeune_adulte.md` : Ch. 2 (dette d'hypothèse, raffinement d'observabilité), Ch. 16 (stabilité sous raffinement, indexation)
|
||||||
|
- `applications/collatz/conjoncture_collatz.md` : Protocoles R1, R2, R3 ; Section « Extensions de grammaire pour les cas no/no »
|
||||||
|
- `docs/features/collatz_targeted_leaves_and_diagnostics.md` : diagnostic root cause, guidage pour grammaire plus puissante
|
||||||
@ -24,6 +24,10 @@ Cette grammaire vise en particulier les branches dominantes du résidu non couve
|
|||||||
- `applications/collatz/collatz_k_scripts/collatz_verify_minorated_descent_clauses_over_Sm.py`
|
- `applications/collatz/collatz_k_scripts/collatz_verify_minorated_descent_clauses_over_Sm.py`
|
||||||
- Vérifie déterministiquement les clauses produites (stabilité du préfixe, cohérence de \(C_k\), congruence \(\bmod 2^{\underline A}\), seuil \(N_0\)).
|
- Vérifie déterministiquement les clauses produites (stabilité du préfixe, cohérence de \(C_k\), congruence \(\bmod 2^{\underline A}\), seuil \(N_0\)).
|
||||||
|
|
||||||
|
- `applications/collatz/collatz_k_scripts/collatz_derive_brother_minorated_clauses_from_terminal_over_Sm.py`
|
||||||
|
- Dérive des clauses `D_minor` pour des frères à partir de clauses `D_exact` sur \(S_m\) (complétion par frères, via le même numérateur affine).
|
||||||
|
- Sort un JSON de feuilles additionnel, consommable par la fermeture multi-niveaux.
|
||||||
|
|
||||||
### Artefacts
|
### Artefacts
|
||||||
|
|
||||||
Par défaut, sortie sous:
|
Par défaut, sortie sous:
|
||||||
@ -32,6 +36,10 @@ Par défaut, sortie sous:
|
|||||||
- `docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p<M>/clauses_D_minor_over_Sm_mod2p<M>.md`
|
- `docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p<M>/clauses_D_minor_over_Sm_mod2p<M>.md`
|
||||||
- `docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p<M>/verification_D_minor_over_Sm_mod2p<M>.{json,md}`
|
- `docs/artefacts/collatz/minorated_clauses_over_Sm/palier2p<M>/verification_D_minor_over_Sm_mod2p<M>.{json,md}`
|
||||||
|
|
||||||
|
Clauses dérivées “par frères” :
|
||||||
|
|
||||||
|
- `docs/artefacts/collatz/minorated_clauses_over_Sm_derived_from_brothers/palier2p<M>/clauses_D_minor_derived_from_brothers_over_Sm_mod2p<M>.json`
|
||||||
|
|
||||||
## Modalités d’analyse
|
## Modalités d’analyse
|
||||||
|
|
||||||
### Génération (exemple M=15, k=8, underlineA=13)
|
### Génération (exemple M=15, k=8, underlineA=13)
|
||||||
|
|||||||
@ -41,6 +41,9 @@ This feature builds and audits such refinement paths on the instrumented finite
|
|||||||
- generates terminal clauses directly decidable at \(2^m\) (criterion \(A+1\le m\)) on the full \(S_m\).
|
- generates terminal clauses directly decidable at \(2^m\) (criterion \(A+1\le m\)) on the full \(S_m\).
|
||||||
- `applications/collatz/collatz_k_scripts/collatz_build_refinement_certificate_over_Sm_multilevel.py`
|
- `applications/collatz/collatz_k_scripts/collatz_build_refinement_certificate_over_Sm_multilevel.py`
|
||||||
- closes roots in \(S_M\) by refinement up to \(2^{M_{max}}\) using leaf sets provided at multiple levels.
|
- closes roots in \(S_M\) by refinement up to \(2^{M_{max}}\) using leaf sets provided at multiple levels.
|
||||||
|
- `applications/collatz/collatz_k_scripts/collatz_build_refinement_bundle_over_Sm_multilevel.py`
|
||||||
|
- wrapper pipeline: multilevel closure + open-roots obstruction profile + optional targeted diagnostic (tracked roots file).
|
||||||
|
- can optionally include brother-derived `D_minor` leaves (`--include-brother-derived-dminor`) and verify them (`--verify-brother-derived-dminor`).
|
||||||
|
|
||||||
### Artefacts
|
### Artefacts
|
||||||
|
|
||||||
|
|||||||
69
docs/features/collatz_targeted_leaves_and_diagnostics.md
Normal file
69
docs/features/collatz_targeted_leaves_and_diagnostics.md
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
**Auteur** : Équipe 4NK
|
||||||
|
|
||||||
|
# Targeted leaves (attempt) and diagnostics
|
||||||
|
|
||||||
|
## Objectif
|
||||||
|
|
||||||
|
Réduire `tracked.max/p99` sur une liste fixe de racines ouvertes (top‑N par `lb_any`) au palier `2^15`,
|
||||||
|
en introduisant une grammaire de feuilles capable de **payer localement une dette d’observabilité**,
|
||||||
|
sans déclencher une explosion combinatoire du raffinement binaire.
|
||||||
|
|
||||||
|
## Tentative implémentée
|
||||||
|
|
||||||
|
- `applications/collatz/collatz_k_scripts/collatz_build_targeted_refinement_leaves.py`
|
||||||
|
- `applications/collatz/collatz_k_scripts/collatz_verify_targeted_refinement_leaves.py`
|
||||||
|
|
||||||
|
Principe : fermer chaque racine suivie `r0` via un certificat de raffinement profond (cap par défaut 160)
|
||||||
|
en n’autorisant comme feuilles terminales que `D_exact`, `F`, et `D_minor`.
|
||||||
|
|
||||||
|
### Résultat
|
||||||
|
|
||||||
|
Sur la liste fixe `tracked_roots_lb_any_top200_mod2p15_to2p18.txt`, aucun certificat n’a été construit (`closed_roots=0`).
|
||||||
|
|
||||||
|
Artefacts :
|
||||||
|
- `docs/artefacts/collatz/refinement_K/palier2p15/targeted_leaves/clauses_targeted_refinement_leaves_mod2p15.json`
|
||||||
|
- `docs/artefacts/collatz/refinement_K/palier2p15/targeted_leaves/verification_targeted_refinement_leaves_mod2p15.json`
|
||||||
|
|
||||||
|
## Diagnostic déterministe (root cause)
|
||||||
|
|
||||||
|
### Fait structurel mesuré (au premier raffinement 2^15→2^16)
|
||||||
|
|
||||||
|
Sur les racines suivies, **les deux enfants** (low/high) au niveau `m=16` n’ont *pas* de clause terminale immédiatement décidable (`A+1 <= 16`) dans la grammaire `D_exact/F` (avec `k_max=t_max=256`).
|
||||||
|
|
||||||
|
Ce fait est mesuré et versionné dans :
|
||||||
|
- `applications/collatz/collatz_k_scripts/collatz_diagnose_targeted_leaves_failure.py`
|
||||||
|
- `docs/artefacts/collatz/refinement_K/palier2p15/targeted_leaves/diagnostic_targeted_leaves_failure_mod2p15.md`
|
||||||
|
|
||||||
|
Extrait (colonnes `immediate_low@16`, `immediate_high@16`) :
|
||||||
|
- `root=27` : `no/no`, et `lb_root=60`
|
||||||
|
- `root=703` : `no/no`, et `lb_root=84`
|
||||||
|
- `root=2887` : `no/no`, et `lb_root=136`
|
||||||
|
|
||||||
|
### Interprétation mathématique
|
||||||
|
|
||||||
|
Dans la grammaire de fermeture par raffinement binaire, une racine `r0` est fermée si et seulement si **les deux enfants** à chaque split sont fermables (directement ou récursivement).
|
||||||
|
|
||||||
|
Quand `immediate_low@16=no` et `immediate_high@16=no`, fermer `r0` impose mécaniquement de **raffiner plus profond** au moins jusqu’à une profondeur où une clause terminale devient décidable. Le diagnostic donne des bornes inférieures `lb_root` typiquement dans `[50, 136]` sur les racines extrêmes.
|
||||||
|
|
||||||
|
Le point bloquant n’est pas “le cap 160” en tant que tel : c’est le fait que, sans règle de compression,
|
||||||
|
la fermeture par scission binaire doit couvrir un arbre de taille \(2^{(lb\_root-16)}\) nœuds au minimum dans le cas défavorable.
|
||||||
|
Pour `lb_root=136`, cela correspond à une explosion combinatoire hors de portée d’un certificat fini exploitable.
|
||||||
|
|
||||||
|
### Conclusion (root cause)
|
||||||
|
|
||||||
|
L’échec des certificats “targeted leaves” vient de la combinaison :
|
||||||
|
- **absence de feuilles terminales décidables** au premier niveau de raffinement (m=16) sur les racines extrêmes ;
|
||||||
|
- **bornes inférieures `lb_root` très élevées**, qui rendent le raffinement binaire naïf exponentiel ;
|
||||||
|
- grammaire de feuilles **trop faible** (D/F/D_minor) pour “absorber” la dette sans fermer récursivement les deux enfants.
|
||||||
|
|
||||||
|
## Formalisation et plan d'implémentation
|
||||||
|
|
||||||
|
Les quatre pistes d'extension sont formalisées dans `applications/collatz/conjoncture_collatz.md` (section « Extensions de grammaire pour les cas no/no »). Le plan d'implémentation aligné sur `these/livre_jeune_adulte.md` est dans `docs/features/collatz_grammar_extensions_implementation_plan.md`.
|
||||||
|
|
||||||
|
## Guidage pour une grammaire plus puissante
|
||||||
|
|
||||||
|
Une grammaire réduisant effectivement `tracked.max/p99` doit introduire une règle/feuille capable de :
|
||||||
|
- fermer un sous-arbre en **taille linéaire** en la profondeur (compression),
|
||||||
|
- typiquement en exploitant des structures de type **chaîne henselienne** (un seul embranchement “dur”, le frère se ferme par une clause uniforme),
|
||||||
|
- ou une règle de “réparation/recombinaison” explicitant comment une branche survivante peut être traitée sans imposer la fermeture complète des deux enfants au même niveau de description.
|
||||||
|
|
||||||
Loading…
x
Reference in New Issue
Block a user