Skip to content

Increment 2 (#107): the factor spaces are standard Borel - #152

Merged
cameronfreer merged 2 commits into
masterfrom
r4-factor-spaces
Jul 26, 2026
Merged

Increment 2 (#107): the factor spaces are standard Borel#152
cameronfreer merged 2 commits into
masterfrom
r4-factor-spaces

Conversation

@cameronfreer

Copy link
Copy Markdown
Owner

Second structural increment. #107 remains open.

CoherentBasis.FactorSpace A names the Boolean cube over BasisIndex A, with a StandardBorelSpace instance. That instance is available because the index is countable, and it is the concrete reason for indexing by BasisIndex A rather than coding every factor into ℕ → Bool: the varying index keeps the inclusions literal without giving up measurable structure. It is the hypothesis the conditional-kernel step of increment 3 needs.

Also:

  • measurable_factorMap' — ambient measurability, from the fixingAlgebra A version via fixingAlgebra_le;
  • measurable_factorProjection — the projections are coordinate restrictions;
  • a @[simp] lemma reading a factor coordinate as event membership.

Scope note

This increment is small, and deliberately so. Most of what "simultaneous factor maps with literal inclusion coherence and finitary relabeling equivariance" asks for had already landed:

Property Where Form
Literal sub-index inclusion for C ⊆ A basisIndexEmbedding (#149) subtype inclusion
Projection compatibility factorProjection_factorMap (#149) rfl
Cocycle factorProjection_comp (#149) rfl
Relabeling equivariance factorMap_basisIndexEquiv (#151) naturality square
Equivariance vs. inclusions basisIndexEmbedding_basisIndexEquiv, factorProjection_basisIndexEquiv (#151) rfl
Mod-null generation exists_comap_factorMap_ae_eq (#149) eventwise

What was genuinely missing was the measurable-structure packaging, which is what this adds. I have not invented a bundled restatement of facts that already exist individually — if you would prefer one anyway, as a single named entry point for increment 3 to consume, say so and I will add it.

Gates

Full build 3357 jobs green; zero sorries; audit 184 to 186, new declarations [propext, Classical.choice, Quot.sound]-clean; documentation drift checks pass.

Next

Increment 3: conditional kernels on these coherent factors, then the uniform01 randomization adapter from #140.

`CoherentBasis.FactorSpace A` names the Boolean cube over `BasisIndex A`, with a
`StandardBorelSpace` instance — available because the index is countable, and the
reason for indexing by `BasisIndex A` rather than coding every factor into `ℕ → Bool`:
the varying index keeps the inclusions literal without giving up measurable structure.
This is the hypothesis the conditional-kernel step of increment 3 will need.

Also `measurable_factorMap'` (ambient measurability, from the `fixingAlgebra A` version
by `fixingAlgebra_le`), `measurable_factorProjection` (the projections are coordinate
restrictions), and a `@[simp]` reading of a factor coordinate as event membership.

Scope note: increment 2 is small because most of what "simultaneous factor maps with
literal inclusion coherence and finitary relabeling equivariance" asks for already
landed — the inclusion coherence is `factorProjection_factorMap` and
`factorProjection_comp`, both `rfl` since #149, and the equivariance is
`factorMap_basisIndexEquiv` with its two definitional compatibilities from #151. What
remained was the measurable-structure packaging, which is what this commit adds. I have
not invented a bundled restatement of facts that already exist individually.

Audit 184 → 186. Full build 3357 jobs green; census, axiom audit, and documentation
drift checks pass.
…valences

`CoherentBasis.factorSpaceEquiv σ A : FactorSpace (A.image σ) ≃ᵐ FactorSpace A`, the
forward map being precomposition with `basisIndexEquiv σ A`. Both directions are
coordinate reindexings, hence measurable. This is the single entry point increment 3
needs: transporting a kernel across a relabeling requires the measurable equivalence,
not just the underlying index bijection.

`factorMap_comp_relabel` is restated through it — same content as the merged version,
but the anonymous `fun f => f ∘ basisIndexEquiv σ A` is replaced by the named
equivalence, so the commuting square reads as one. The name is unchanged, so the audit
entry still applies.

`FactorSpace` moved above the derived factors and now appears in the `factorMap` and
`factorProjection` signatures. Being an abbreviation this is proof-neutral, but it
makes the public API display the packaging rather than the raw `BasisIndex A → Bool`.

No `factorLaw` or projection-consistency statement here — those first become
mathematically necessary in increment 3, and belong there.

Audit 186 → 187. Full build 3357 jobs green; census, axiom audit, and documentation
drift checks pass.
@cameronfreer
cameronfreer merged commit a51e333 into master Jul 26, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant