Skip to content

Extract the shared polling infrastructure (#107) - #155

Merged
cameronfreer merged 1 commit into
masterfrom
r4-polling-infra
Jul 27, 2026
Merged

Extract the shared polling infrastructure (#107)#155
cameronfreer merged 1 commit into
masterfrom
r4-polling-infra

Conversation

@cameronfreer

@cameronfreer cameronfreer commented Jul 27, 2026

Copy link
Copy Markdown
Owner

Prerequisite refactor before the rankwise relative-independence work. #107 remains open.

The tail engine and its two companions were private in RelFixingCondIndep. The rankwise argument is their second real consumer, so they move to a shared module rather than being duplicated.

New Graphon/RelPollingInfrastructure.lean exposes exactly three declarations:

  • condExp_ae_eq_condExp_of_comap_eq — the tail engine: a measure-preserving T that fixes f a.e. and pulls the conditioning algebra m₁ back to a sub-algebra m₂ ≤ m₁ forces μ[f|m₁] =ᵐ[μ] μ[f|m₂];
  • InfiniteRelExchangeableLaw.measurePreserving_relabel;
  • InfiniteRelExchangeableLaw.relabel_preimage_ae_eq_of_fixingAlgebra.

The squeeze and condExp_comp_of_measurePreserving stay private inside the new module — they are the proof of the tail engine, not part of its interface.

The two law-dependent declarations are renamed into the InfiniteRelExchangeableLaw namespace, so call sites read M.measurePreserving_relabel and M.relabel_preimage_ae_eq_of_fixingAlgebra.

RelFixingCondIndep imports the new module and its copies are deleted, preserving its single-public-headline claim while making the reused infrastructure explicit. A side benefit: the three extracted declarations are now audited in their own right, which they could not be while private.

No mathematical content changes. Full build 3360 jobs green; zero sorries; audit 200 to 203; documentation drift checks pass.


Correction. The commit message on c075d36 says "203 → 206". That is wrong: the audited-declaration count goes 200 → 203. My earlier figures came from grep -c "print axioms", which also matches prose lines in the file header. The authoritative counts are grep -c '^#print axioms ' scripts/axiom_audit.lean and len(AUDITED_DECLS), both of which give 200 on master and 203 on this head. Counts quoted in some earlier PR bodies in this series are inflated for the same reason; the enforced lists themselves have always been in sync, since the gate compares the printed set against the intended set directly rather than by count.

The tail engine and its two companions were `private` in `RelFixingCondIndep`. The
rankwise relative-independence argument is their second real consumer, so they move to
`Graphon/RelPollingInfrastructure.lean` rather than being duplicated.

Public, and the whole intended interface:

* `condExp_ae_eq_condExp_of_comap_eq` — the tail engine;
* `InfiniteRelExchangeableLaw.measurePreserving_relabel`;
* `InfiniteRelExchangeableLaw.relabel_preimage_ae_eq_of_fixingAlgebra`.

The `L²` squeeze and `condExp_comp_of_measurePreserving` stay private inside the new
module: they are the proof of the tail engine, not part of its interface.

The two law-dependent declarations are renamed into the `InfiniteRelExchangeableLaw`
namespace, so call sites read `M.measurePreserving_relabel` and
`M.relabel_preimage_ae_eq_of_fixingAlgebra`.

`RelFixingCondIndep` imports the new module and its copies are deleted; it keeps its
single public headline `condIndep_fixingAlgebra`. The three extracted declarations are
now audited in their own right, which they were not while private.

Audit 203 → 206. Full build 3360 jobs green; census, axiom audit, and documentation
drift checks pass.
@cameronfreer
cameronfreer merged commit c5c6e88 into master Jul 27, 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