INJECTIVITY of T (Brick 4). #
T is injective on critical portraits, for every degree d:
T_injOn : Set.InjOn (T (N := d*m)) {P | Portrait d m P}
uses the REAL Portraits.T (= P.sup eraseMin) and Portraits.Portrait.
Bottom-up build (paper Part I — Uniqueness):
PART A (AbstractLaminar) — the TIGHTNESS / equality layer on top of master
(root_saturated, edge_tight_of_saturated) and
COLUMN-SEPARATION (column_sep).
PART B (CriticalPortraits) — geometric TIGHTNESS / column-sep at the survivor family,
Lemma 2 (block-span laminarity), the BRIDGE edge core, the
blocks-as-host-sets recovery, and the injectivity assembly.
STATUS: FULLY SORRY-FREE. The keystone predIn_forced (paper Part I, stage 1: the inductive
forced-predecessor / Structural-Lemma dispatch — the documented all-d kernel) is now CLOSED for
all d via the spanning-edge kernel (spanning_edge), built from the directional column
separation (column_sep_with_gap / column_sep_geom_dir). Everything is axiom-clean
({propext, Classical.choice, Quot.sound}, NO sorryAx, NO native_decide), including:
• PART A TIGHTNESS (root_saturated, edge_tight_of_saturated) and COLUMN-SEPARATION
(column_sep, column_sep_with_gap) — degree-free, axiom-clean.
• PART B geometric TIGHTNESS / column-sep (edge_tight_geom, column_sep_geom,
column_sep_geom_dir), Lemma 2 (span_laminar), the BRIDGE edge core (bridge_edge).
• Stage 1 keystone: predIn_forced — PROVED (strong induction on .val + WLOG + the
spanning-edge crossing into no_alt).
• Stage 2 (component recovery): hostSet_forced from predIn_forced.
• The assembly T_inj / T_injOn.
PART A — TIGHTNESS in AbstractLaminar. #
Saturation propagates to roots. If the window (a,b] is saturated
(N = b-a), then every root's subtree is itself saturated.
Every edge is tight. If the window (a,b] is saturated, then every edge contained in
it has a saturated own-window (N(lo e, hi e) = hi e - lo e, i.e. g(e) = h(e) - 1).
A2 — COLUMN-SEPARATION. #
For a saturated window (a,b] whose top edge e0 exists (interval exactly (a,b]), every root
r has col r ≠ col e0. Proof by the seam scan: the gap splits roots into a left run (each
shares the bottom a up to the gap; bLeft/bSeam ⇒ col e0 < col r) and a right run (each
shares the top b down to the gap; bRight/bSeam ⇒ col r < col e0).
The root level-intervals of a saturated top-edged window miss exactly one level g*:
there is a unique g ∈ (a,b] covered by no root.
Every level in (a,b] except the gap g (with a < g ≤ b) is covered by some root.
Distinct roots covering adjacent levels seam: if r'' covers s and r covers a level just
above s (with lo r < s+1), and r'' ≠ r, then hi r'' = lo r. (Used in the seam scan.)
COLUMN-SEPARATION (abstract). For a saturated window (a,b] with a top edge e0, every
root has column ≠ col e0.
DIRECTIONAL COLUMN-SEPARATION (abstract). As column_sep, but exposes the gap g
together with the run-direction columns: left roots (top below the gap) have col e0 < col r,
right roots (bottom above the gap) have col r < col e0.
PART B — geometric layer in CriticalPortraits. #
B0. blocks = host sets: P = image (survivor ↦ hostSet). #
Each block of a portrait is the host set of any of its survivors. More precisely: if
x ∈ eraseMin S and S ∈ P then hostSet P x = S (the survivor's recovered home is its
block, by portrait disjointness).
B1. Geometric TIGHTNESS and COLUMN-SEPARATION for the survivor family. #
We instantiate the abstract TIGHTNESS at the real survivorFamily. The window (0, d-1]
is saturated (N = d-1) because every survivor's level lies in [0, d-1] — 0 ≤ loV and
hiV ≤ d-1, so all d-1 edges are contained, and the window width is d-1.
Geometric TIGHTNESS (g(e) = h(e) - 1). Every survivor edge e has a saturated own
window: N(loV e, hiV e) = hiV e - loV e.
Geometric COLUMN-SEPARATION. For a survivor edge e with a nondegenerate own window,
every maximal nested tile (root of (loV e, hiV e]) has column ≠ colV e.
Geometric DIRECTIONAL COLUMN-SEPARATION. Exposes the gap level and the run-direction columns at the survivor family.
B2. Block spans and Lemma 2 (span laminarity). #
spanLo S, spanHi S are the .val of the lowest/highest points of a block S. Lemma 2
says distinct blocks' spans are laminar (nested or disjoint), proved directly from Unlinked
- the alternation witness
linked_of_lt(structurally identical tolemmaA/cross_false).
The greatest-.val element of a nonempty set.
Equations
- CriticalPortraits.maxVal S h = ⋯.choose
Instances For
The .val-span of a block: [minVal, maxVal].
Equations
- CriticalPortraits.spanLo S h = (CriticalPortraits.minVal S h).val
Instances For
The greatest .val attained on a nonempty finset S.
Equations
- CriticalPortraits.spanHi S h = (CriticalPortraits.maxVal S h).val
Instances For
Lemma 2 (span laminarity). Distinct blocks of a portrait have laminar spans: nested or
disjoint (no proper .val-overlap spanLo A < spanLo B < spanHi A < spanHi B).
B3. The BRIDGE (edge core). #
The algebraic heart of the Structural Lemma: a same-column edge strictly nested inside u's edge
is NOT a maximal tile (its rootS is a strictly-enclosing edge of a DIFFERENT column). This is
exactly "the c*-block B strictly inside (w,u) is enclosed by an in-gap block of column ≠ c*",
phrased in the edge model. Proved from column_sep_geom + the rootS machinery.
BRIDGE (edge form). If a survivor b2 (same column as u) has its edge strictly nested
inside u's edge, then there is a survivor g of a DIFFERENT column whose edge encloses
b2's and is nested in u's: loV u ≤ loV g ≤ loV b2, hiV b2 ≤ hiV g ≤ hiV u,
colV g ≠ colV u, and g ≠ b2.
B-keystone (stage 1): the predecessor of each survivor is FORCED by U = T P. #
This is the genuinely deep all-d kernel — the inductive forced-predecessor dispatch that
consumes the now-proved bridge_edge / column_sep_geom / edge_tight_geom / span_laminar.
It is now PROVED (no sorry); the stage-2 component recovery hostSet_forced below
depends on it.
Helper lemmas for predIn_forced. #
A strict root g of x's window (so loV P x ≤ loV P g, hiV g ≤ hiV x,
colV g ≠ colV x) has g.val < x.val.
The spanning-edge kernel. In one portrait P, for a survivor x and a level ℓ
strictly inside x's own window (loV P x, hiV x), there is a survivor b of a different
column than x whose edge straddles the value colV x + ℓ * m:
(predIn P b _).val < colV x + ℓ*m < b.val < x.val.
This is the formalized Structural Lemma / Bridge content: the value v₀ = colV x + ℓ*m
(a same-fiber position strictly inside x's edge) is crossed by some maximal nested tile of a
different column. Proved from saturation (edge_tight_geom), column-separation
(column_sep_geom), and the gap/cover/seam machinery.
B-keystone (stage 2): host blocks are forced by U and the forced predecessors. #
Stage 2 is sorry-free. A block is recovered as the connected component of its survivors under
the immediate-predecessor (edgeStep) relation, together with its unique non-survivor minVal
(the "root"). Since T P and (by predIn_forced) the predIn map agree across P₁, P₂, the
edgeStep relation agrees, hence components and roots agree, hence host blocks agree.
The same-block immediate-predecessor step relation on survivors:
determined by T P + predIn.
Equations
- CriticalPortraits.edgeStep P u v = ∃ (hu : u ∈ CriticalPortraits.T P) (hv : v ∈ CriticalPortraits.T P), CriticalPortraits.predIn P u hu = v ∨ CriticalPortraits.predIn P v hv = u
Instances For
Two survivors in the same host reach the SAME bottom survivor; hence are mutually reachable.
With forced predecessors and equal survivor sets, the edgeStep relations agree.
Reachability transfers between portraits with forced predecessors.
B-keystone: the host sets are forced by the survivor set U = T P. #
This is exactly Part I (Uniqueness) of the paper: a critical portrait is reconstructible from its survivor set. All of the structural content (TIGHTNESS, Column-Separation, the Bridge / Structural Lemma, and the resulting "predecessor forced ⇒ block forced") lives here.
KEYSTONE (Part I uniqueness) — now PROVED (sorry-free).
If two portraits have the same survivor set, then each survivor's host block is the same in both.
This is exactly the paper's Part I ("T injective ↔ the portrait is reconstructible from U"),
the documented open all-d kernel (machine-verified d ≤ 8; never previously mechanized for all
d). Its proof has two stages, both genuinely deep:
(1) predIn forced. ∀ u ∈ U, predIn P₁ u = predIn P₂ u. By induction over .val order:
w = predIn P u is the GREEDY pick from U — the highest same-fiber v < u that is unused
and whose chord (v,u) crosses no already-committed (lower-.val) edge. Every higher
candidate v ∈ (w,u) is illegal: either v ∈ U (a non-top of its block; its child is left
of u, already committed) or, by the Structural Lemma / Bridge, v's block is not
maximal in (w,u), so it sits in the gap of an enclosing block whose edge (a,b) has
a < v < b < u, crossing the committed (a,b). The Structural Lemma ("no block maximal in
a parent-gap (w,u) has its top in fiber(u)") is fed by the now-PROVED substrate:
• TIGHTNESS : edge_tight_geom (g(e) = h(e) - 1).
• COLUMN-SEP : column_sep_geom (no maximal tile of e shares e's column).
• BRIDGE : bridge_edge (PROVED) — the c*-edge eB of a c*-block B strictly inside
(w,u) is non-maximal, so eB ≪ a maximal tile g with col g ≠ c*.
Remaining glue: span_laminar (Lemma 2, PROVED) + chord-enclosure
(sep_master) ⇒ block(g) strictly encloses span(B) ⇒ B not maximal.
(2) Block forced from predIn. Edges {(predIn u, u) : u ∈ U} are then equal across
P₁, P₂; the host block of x is the connected component of x in the predecessor graph
(hostSet P x = {minVal} ∪ {survivors with the same predIn-descent root}), so equal edges
⇒ equal components ⇒ equal host blocks.
PROVED and available: edge_tight_geom (TIGHTNESS), column_sep_geom (COLUMN-SEP),
span_laminar (Lemma 2), bridge_edge (BRIDGE edge core), plus all of Forward's edge model
(predIn_*, no_alt, lemmaA/B, survivorFamily).
This theorem is now SORRY-FREE: stage (2) (component recovery) is fully proved here from
predIn_forced (stage 1, the single remaining sorry). A block is recovered as the
edgeStep-component of its survivors together with its unique non-survivor minVal root; both
are forced because T P and the predIn map agree across P₁, P₂.