feat: the pooled rank extension and cheap constructor — gate 1a stage 2 (#195) - #200
Merged
Conversation
…re (#195 stage 2) rankLatentRelabel_eq_latentRelabelOver and rankLatentReindex_eq_latentRestrictOver: the rank-indexed action and the self-injection reindexing ARE the carrier-parametric operations at Vinfinite S. Equalities, not rfl — the two constructions choose different Decidable instances under open scoped Classical. These are where RankRepresentation.invariant and #194's self-injection invariance meet the generic pooled API.
latentIndexEmbed_comp and latentRestrictOver_comp — needed by the cheap constructor, where restrictOriginal composed with the poolVertexEquiv transport is restriction along a self-injection of the original carrier.
PooledRankExtension: three fields exactly — joint law, exact restriction to C.P, full mixed invariance. No independence field. RankRepresentation.pooledExtension derives both laws from #194's map_prodMap_restrict_self through the bridges: restrictOriginal after the poolVertexEquiv transport is comap of a self-injection of the original carrier; and relabel rho after transport is transport after relabel by the conjugate permutation kappa = pv . rho . pv⁻¹, so mixed invariance is that same theorem applied to a permutation. Added the generic conjugation square and permutation-as-embedding lemma carrier-generically, per review, so instantiating never manipulates Finset.image under a derived DecidableEq. RankLatentIndex marked reducible — it is a compatibility alias, and rw needs to see through it. Audit 379 -> 384.
…ope note RelPooledLatents no longer imports RelRankInjectionInvariance, which contradicted its stated law-free role. The relabel bridge moves to RelRankLatents, the reindex bridge to RelRankInjectionInvariance, and the explicit import moves to RelPooledExtension. Declaration names and audit entries are unchanged. RelPooledExtension no longer says the mixed-window theorem exists 'elsewhere'. It now states timelessly that the structure deliberately carries no mixed-window field, and that the joint mixed-window marginal and current-rank recovery/screening are separate derived consequences of the three fields. Same correction in the Graphon.lean bullet.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stage 2 of the pooled-latent extension gate (#195; #107 remains open): the three-field structure and the cheap constructor. Stage-2 boundary respected exactly — mixed-window recovery is left as a named acceptance theorem rather than a field, and screening and route-specific claims stay out.
PooledRankExtensionThree fields, the full mixed action, and no independence field.
The cheap constructor
RankRepresentation.pooledExtension— both laws aremap_prodMap_restrict_self(#194) in disguise. WritingpvforpoolVertexEquivandovfororiginalVertex, the transport iscomap pvon structures and restriction alongpvon latents. Then:restrictOriginal ∘ transport = comap (pv ∘ ov), andpv ∘ ovis a self-injection of the original carrier — that ismap_restrictOriginal;relabel ρ ∘ transport = transport ∘ relabel κfor the conjugateκ = pv ∘ ρ ∘ pv⁻¹, a permutation of the original carrier — soinvariant, for every mixedρ, is the same theorem applied toκ, a permutation being in particular an injection.This is what "full mixed pooled invariance costs no additional mathematics once the self-injection theorem exists" comes to in code: the constructor is two applications of one theorem plus composition and conjugation bookkeeping.
Generic lemmas added, per review
Proved carrier-generically so that instantiating never manipulates
Finset.imageunder a derivedDecidableEq:latentRestrictOver_latentRelabelOver_conj— the conjugation square for a carrier equivalence, the latent mirror ofRelStructure.congrCarrier_relabel, making the two commuting squares visibly parallel;latentRestrictOver_toEmbedding— restriction along a permutation-as-embedding is that permutation's action;latentRestrictOver_comp/latentIndexEmbed_comp— functoriality of restriction.Plus the two bridges pinned in review:
rankLatentRelabel_eq_latentRelabelOverandrankLatentReindex_eq_latentRestrictOver. Both are genuine equalities rather thanrfl, since the rank-indexed and generic constructions choose differentDecidableinstances underopen scoped Classical.One elaboration change
RankLatentIndexis now marked@[reducible]. It is a compatibility alias forLatentIndexOver S (Vinfinite S), andrwmust see through it to matchRankLatentSpace S nagainstLatentSpaceOver S (Vinfinite S) nin the constructor's rewrites. The full build is clean with the attribute, with no other change.Bookkeeping
Graphon/RelPooledExtension.lean; import and doc bullet inGraphon.lean.scripts/axiom_audit.leanand the intended-set literal inscripts/check_census_and_axioms.py;pooledExtensionverified#print axioms-clean.lake buildclean (3401 jobs), census + axiom audit pass, zero sorries.Stage 3 — current-rank recovery and screening on mixed pooled supports, plus the joint mixed-window acceptance theorem — is the next unit, after which the gate stops for the route decision.