Lean sources / SurfaceBlowup / Measure / MemberBoxes.lean

Measure of member boxes

601 lines · 2 public declarations · raw file · declaration index

1/-2Copyright (c) 2026 Asvin G, Claude (Anthropic), GPT-6-Astra (OpenAI). All rights reserved.3Released under Apache 2.0 license as described in the file LICENSE.4Authors: Asvin G, Claude (Anthropic), GPT-6-Astra (OpenAI)5-/6import SurfaceBlowup.Assembly.NullBridges7 8/-!9# Measure of member boxes10 11Near the center of a cell of a concrete member, the strict transform identifies a box of the parent12coordinate space with a box of the product of child coordinate spaces, scaling Haar measure by13`q^(-tri(cellDegree))`. Summing over the coset decomposition of a cell, we show that the box14`{z ∈ cell : strict transform ∈ Π G_j}` is measurable and compute its measure in terms of the child15state measures.16 17## Main results18 19* `member_cell_box_measurable`: the set of ideals of a cell whose strict transforms lie in a20  measurable box `Π G_j` is measurable.21* `member_cell_box_measure`: its measure is `q^(-tri(cellDegree)) ∏ μ_j(G_j)`.22 23## Implementation notes24 25All results share the long list of hypotheses describing a cell and its children, which is26declared once as section variables; the local notation `cellStrict` abbreviates the strict-transform27map `J ↦ (strictTransformIdeal (alpha j) (e j) (cellDegree c) J)_j` of the cell, and further local28notations (`𝒪`, `ℛ`, `𝔫`, `ϖ`, `𝔡`, `𝒥`, `𝒱`, `𝐪`, `𝒞`) abbreviate the recurring parent data.29Both public results are obtained chart by chart from the private lemma `member_cell_chart_box`,30which sums the center computation `member_center_box_measure` over the coset decomposition of the31cell.32 33Provenance: member_center_translate_measure_data, member_center_box_measure,34member_cell_box_measurable, member_cell_box_measure.35-/36 37open MeasureTheory38open scoped BigOperators ENNReal39 40namespace SurfaceBlowup41 42/-! ### Auxiliary facts -/43 44/-- Scaling the coordinates by `π^k` maps measurable sets to measurable sets. -/45private theorem measurableSet_coordinateScale_image {O : Type} [CommRing O] {n : ℕ} (pi : O)46    [MeasurableSpace (Fin n → O)]47    (hgen : ‹MeasurableSpace (Fin n → O)› = adicCylinderSpace (Ideal.span {pi}) (Fin n → O))48    (hinj : Function.Injective (fun w : Fin n → O => pi • w)) (k : ℕ) (S : Set (Fin n → O))49    (hS : MeasurableSet S) :50    MeasurableSet (coordinateScale pi k '' S) := by51  induction k with52  | zero =>53    have h0 : (coordinateScale pi 0 : (Fin n → O) → (Fin n → O)) = id := by54      funext w; simp [coordinateScale]55    rwa [h0, Set.image_id]56  | succ k ih =>57    have : coordinateScale pi (k+1) '' S =58        (fun w : Fin n → O => pi • w) '' (coordinateScale pi k '' S) := by59      rw [Set.image_image]; congr 1; funext w; simp [coordinateScale, pow_succ', mul_smul]60    rw [this]; exact measurableSet_smul_image pi hgen hinj _ ih61 62/-- `q^n · q⁻¹^n = 1` for the (finite, nonzero) residue cardinality `q` of a member. -/63private theorem concreteMember_q_pow_mul_inv_pow (m : ConcreteMember) (n : ℕ) :64    (m.toMeasured.q : ℝ≥0∞) ^ n * (m.toMeasured.q : ℝ≥0∞)⁻¹ ^ n = 1 := by65  rw [← mul_pow, ENNReal.mul_inv_cancel (Nat.cast_ne_zero.mpr Nat.card_pos.ne')66    (ENNReal.natCast_ne_top _), one_pow]67 68/-- If `φ ⁻¹' C` is the union of the cosets `Cos z₀` (`z₀ ∈ F`), each a translate `z₀ + D`, and69  `φ (z₀ + w) = ψ z₀ w`, then `φ ⁻¹' (C ∩ Z)` is the union of the translates70  `z₀ + (ψ z₀ ⁻¹' Z ∩ D)`. -/71private theorem preimage_inter_eq_biUnion_translate {V I : Type} [Add V] (φ : V → I)72    (ψ : V → V → I) (C Z : Set I) (D : Set V) (F : Finset V) (Cos : V → Set V)73    (htr : ∀ z₀ w, φ (z₀ + w) = ψ z₀ w) (hcos : ∀ z₀, Cos z₀ = (fun w => z₀ + w) '' D)74    (hdec : φ ⁻¹' C = ⋃ z₀ ∈ F, Cos z₀) :75    φ ⁻¹' (C ∩ Z) = ⋃ z₀ ∈ F, (fun w => z₀ + w) '' (ψ z₀ ⁻¹' Z ∩ D) := by76  ext z77  rw [Set.mem_iUnion₂]78  constructor79  · rintro ⟨hzC, hzZ⟩80    have hz : z ∈ φ ⁻¹' C := hzC81    rw [hdec] at hz82    obtain ⟨z₀, hz₀, hzc⟩ := Set.mem_iUnion₂.mp hz83    rw [hcos] at hzc84    obtain ⟨w, hw, rfl⟩ := hzc85    exact ⟨z₀, hz₀, w, ⟨by rw [Set.mem_preimage, ← htr]; exact hzZ, hw⟩, rfl⟩86  · rintro ⟨z₀, hz₀, w, ⟨hwZ, hw⟩, rfl⟩87    have hzC : z₀ + w ∈ φ ⁻¹' C := by88      rw [hdec]; exact Set.mem_iUnion₂.mpr ⟨z₀, hz₀, by rw [hcos]; exact ⟨w, hw, rfl⟩⟩89    refine ⟨hzC, ?_⟩90    beta_reduce91    rw [htr]92    exact hwZ93 94/-- If finitely many sets `P p` (`p ∈ T`) partition `C` and `Φ` maps `C` bijectively onto `S`, then95  the measures of the pieces `Y ∩ Φ '' P p` add up to `ν (Y ∩ S)`. -/96private theorem sum_measure_inter_image_of_partition {α β ι : Type} [MeasurableSpace β]97    (ν : MeasureTheory.Measure β) {Φ : α → β} {C : Set α} {S : Set β} (hbij : Set.BijOn Φ C S)98    (T : Finset ι) (P : ι → Set α) (hsub : ∀ p ∈ T, P p ⊆ C) (hcov : C ⊆ ⋃ p ∈ T, P p)99    (hdisj : (T : Set ι).PairwiseDisjoint P) (Y : Set β)100    (hmeas : ∀ p ∈ T, MeasurableSet (Y ∩ Φ '' P p)) :101    ∑ p ∈ T, ν (Y ∩ Φ '' P p) = ν (Y ∩ S) := by102  rw [← MeasureTheory.measure_biUnion_finset _ hmeas]103  · congr 1104    ext y105    simp only [Set.mem_iUnion, Set.mem_inter_iff, exists_prop]106    constructor107    · rintro ⟨p, hp, hyY, J, hJ, rfl⟩108      exact ⟨hyY, hbij.mapsTo (hsub p hp hJ)⟩109    · rintro ⟨hyY, hyS⟩110      obtain ⟨J, hJ, rfl⟩ := hbij.surjOn hyS111      obtain ⟨p, hp, hJP⟩ := Set.mem_iUnion₂.mp (hcov hJ)112      exact ⟨p, hp, hyY, J, hJP, rfl⟩113  · intro p hp p' hp' hne114    refine Disjoint.mono Set.inter_subset_right Set.inter_subset_right ?_115    rw [Set.disjoint_left]116    rintro y ⟨J, hJ, rfl⟩ ⟨J', hJ', hJJ⟩117    obtain rfl := hbij.injOn (hsub _ hp' hJ') (hsub _ hp hJ) hJJ118    exact Set.disjoint_left.mp (hdisj hp hp' hne) hJ hJ'119 120/-- The `i`-th chart `z ↦ (f_i + π Σ zₖ b_{i,k})` of the atlas of a concrete member. -/121private noncomputable def memberChart (m : ConcreteMember) (i : m.atlas.ι) :122    (Fin m.toMeasured.s.degree → m.toMeasured.O) → Ideal m.toMeasured.R :=123  coordinateIdeal m.S.pi (m.atlas.chart i).f (m.atlas.chart i).b124 125/-- Every ideal of a cell of a concrete member lies in the range of one of the atlas charts. -/126private theorem member_cell_mem_chart_range (m : ConcreteMember) (c : m.toMeasured.cellIndex)127    (J : Ideal m.toMeasured.R) (hJ : J ∈ m.toMeasured.cell c) :128    ∃ i, J ∈ Set.range (memberChart m i) := by129  have hJs : J ∈ surfaceStateSet m.O m.R m.S m.s := hJ.1130  rw [m.atlas.cover] at hJs131  obtain ⟨i, hi⟩ := Set.mem_iUnion.mp hJs132  exact ⟨i, (concrete_member_charts m i).2.1 ▸ hi⟩133 134/-! ### Boxes in a cell -/135 136section CellBoxes137 138variable (m : ConcreteMember) (c : m.toMeasured.cellIndex)139    (mc : m.toMeasured.childIdx c → ConcreteMember)140 141/- Local abbreviations for the parent data: coefficient ring `𝒪`, ring `ℛ`, state degree `𝔫`,142uniformizer `ϖ`, cell degree `𝔡`, child index type `𝒥`, coordinate space `𝒱 = 𝒪^𝔫`, residue143cardinality `𝐪` (as an extended real), and the product `𝒞 = Π R_j` of the child rings. -/144local notation "𝒪" => m.toMeasured.O145local notation "ℛ" => m.toMeasured.R146local notation "𝔫" => m.toMeasured.s.degree147local notation "ϖ" => m.toMeasured.S.pi148local notation "𝔡" => m.toMeasured.cellDegree c149local notation "𝒥" => m.toMeasured.childIdx c150local notation "𝒱" => Fin 𝔫 → 𝒪151local notation "𝐪" => (m.toMeasured.q : ℝ≥0∞)152set_option quotPrecheck false153local notation "𝒞" => ∀ j, (mc j).toMeasured.R154set_option quotPrecheck true155 156/-- For a scaled normalization whose linear part has a scaled inverse `Q`, the child coordinate map157  `childCoordinateMap π a b E H` on `O^deg` has measurable range and measurable preimages. -/158private theorem member_childCoordinateMap_measurable {R : Type} [CommRing R] [Algebra 𝒪 R] (a : ℕ)159    (b : Fin 𝔫 → R) (E : R ≃ₗ[𝒪] (𝒱 × R)) [IsAdicComplete (Ideal.span {ϖ}) (𝒱 × R)]160    (H : 𝒱 →ₗ[𝒪] R) (k : ℕ) (hk : k < a) (Q : 𝒱 →ₗ[𝒪] 𝒱)161    (hQ : ∀ w, normalizationLinearPart E H (Q w) = (ϖ ^ k) • w) :162    MeasurableSet (Set.range (childCoordinateMap ϖ a b E H)) ∧163      ∀ T, MeasurableSet T → MeasurableSet (childCoordinateMap ϖ a b E H ⁻¹' T) := by164  have hpiIrr : Irreducible ϖ := m.toMeasured.S.pi_irreducible165  have hOc : IsAdicComplete (Ideal.span {ϖ}) 𝒪 := dvr_isAdicComplete_span_uniformizer _ _ hpiIrr166  have hOn : IsAdicComplete (Ideal.span {ϖ}) 𝒱 := finite_free_adic_complete _ _ _167  obtain ⟨hgen, -, -, -, hcontall⟩ :=168    coefficient_space_strict_instances 𝒪 m.toMeasured.htop ϖ hpiIrr 𝔫169  have hinj : Function.Injective (fun w : 𝒱 => ϖ • w) := smul_right_injective _ hpiIrr.ne_zero170  obtain ⟨-, hrange, hpre⟩ := child_coordinate_map_scaled _ _ _ _ a b E H (by omega) hinj171  refine ⟨?_, fun T hT ↦ ?_⟩172  · rw [← Set.preimage_image_eq (Set.range _) hinj, ← hrange,173      strict_normalizer_lattice_image _ _ _ _ a b E _ _ hk Q hQ]174    exact (continuous_const_smul _).measurable175      (isCompact_range (hcontall a _)).isClosed.measurableSet176  · rw [← hpre]177    exact scaled_strict_map_measurable _ _ _ _ a b E _ _ hk Q hQ hgen (hcontall a _)178      (measurableSet_smul_image _ hgen hinj T hT)179 180variable [∀ j, Algebra m.toMeasured.O (mc j).toMeasured.O]181    [∀ j, Algebra m.toMeasured.O (mc j).toMeasured.R]182    [∀ j, IsScalarTower m.toMeasured.O (mc j).toMeasured.O (mc j).toMeasured.R]183    (pc : ∀ j, (mc j).toMeasured.O ≃ₗ[m.toMeasured.O]184      (Fin (m.toMeasured.childDelta c j) → m.toMeasured.O))185    (hpc : ∀ j, Measurable (pc j)) (hpc' : ∀ j, Measurable (pc j).symm)186    (hcard : ∀ j, (mc j).toMeasured.q = m.toMeasured.q ^ m.toMeasured.childDelta c j)187    (hpiO : ∀ j, algebraMap m.toMeasured.O (mc j).toMeasured.O m.toMeasured.S.pi =188      (mc j).toMeasured.S.pi)189    (hdeg : ∑ j, m.toMeasured.childDelta c j * (mc j).toMeasured.s.degree = m.toMeasured.s.degree)190    (alpha : ∀ j, m.toMeasured.R →ₐ[m.toMeasured.O] (mc j).toMeasured.R)191    (e : ∀ j, (mc j).toMeasured.R) (he : ∀ j, e j = (mc j).toMeasured.S.t)192    (hvert : ∀ j, ∃ (s : ℕ) (cj : (mc j).toMeasured.R),193      algebraMap m.toMeasured.O (mc j).toMeasured.R m.toMeasured.S.pi ^ s =194      e j ^ m.toMeasured.cellDegree c * cj)195    (hbij : Set.BijOn196      (fun (J : Ideal m.toMeasured.R) (j : m.toMeasured.childIdx c) => strictTransformIdeal197      (alpha j) (e j) (m.toMeasured.cellDegree c) J) (m.toMeasured.cell c)198      (Set.pi Set.univ fun j => (mc j).toMeasured.stateSet))199    (hstrict : ∀ f : m.toMeasured.R, Ideal.span {f} ∈ m.toMeasured.cell c →200      ∃ g : (∀ j, (mc j).toMeasured.R), ∀ j, alpha j f = e j ^ m.toMeasured.cellDegree c * g j)201    (hindex : ∀ f : m.toMeasured.R, Ideal.span {f} ∈ m.toMeasured.cell c →202      ∀ g : (∀ j, (mc j).toMeasured.R), (∀ j, alpha j f = e j ^ m.toMeasured.cellDegree c * g j) →203      ∀ iota : (m.toMeasured.R ⧸ Ideal.span {f}) →ₗ[m.toMeasured.O]204      ((∀ j, (mc j).toMeasured.R) ⧸ Ideal.span {g}),205      (∀ h : m.toMeasured.R, iota (Ideal.Quotient.mk (Ideal.span {f}) h) =206      Ideal.Quotient.mk (Ideal.span {g}) (fun j => alpha j h)) → Function.Injective iota ∧207      Module.length m.toMeasured.O208      (((∀ j, (mc j).toMeasured.R) ⧸ Ideal.span {g}) ⧸ LinearMap.range iota) =209      (chooseTwo (m.toMeasured.cellDegree c) : ℕ∞))210    (hsum : ∑ j, m.toMeasured.childDelta c j * (mc j).toMeasured.s.firstContact =211      m.toMeasured.cellDegree c)212 213/-- The strict-transform map of the cell `c`, sending an ideal to its tuple of child strict214  transforms. -/215local notation "cellStrict" => fun (J : Ideal ℛ) (j : 𝒥) => strictTransformIdeal (alpha j) (e j) 𝔡 J216 217/-- The box of parent coordinates divisible by `π^k`, the domain of the recentred chart. -/218local notation "centerBox" k => Set.range (coordinateScale ϖ k)219 220include he hpiO in221/-- The parameter `π` lies in the Jacobson radical of `Π R_j`, and the tuple `e = (t_j)_j` of child222  parameters is a nonzerodivisor of `Π R_j`. -/223private theorem member_children_jacobson_regular :224    algebraMap 𝒪 𝒞 ϖ ∈ Ideal.jacobson (⊥ : Ideal 𝒞) ∧ Function.Injective (fun z : 𝒞 => e * z) := by225  refine pi_algebraMap_mem_jacobson_bot 𝒪 _ _ _ (fun j => ?_) e226    fun j => concrete_member_mul_t_injective (he j)227  rw [IsScalarTower.algebraMap_apply 𝒪 (mc j).toMeasured.O, hpiO j]228  exact (surface_vertical_parameter _ _ (mc j).toMeasured.S).2229 230include hpiO in231/-- The product `Π R_j` of the child surfaces is `π`-adically complete. -/232private theorem member_children_isAdicComplete : IsAdicComplete (Ideal.span {ϖ}) 𝒞 := by233  have hRj : ∀ j, IsAdicComplete (Ideal.span {ϖ}) (mc j).toMeasured.R := fun j => by234    rw [← IsAdicComplete.map_algebraMap_iff (S := (mc j).toMeasured.O), Ideal.map_span,235      Set.image_singleton, hpiO j]236    change IsAdicComplete (Ideal.span {(mc j).S.pi})237      (ConcreteSurface (mc j).O (mc j).pi (mc j).u (mc j).a (mc j).b)238    rw [(mc j).hS_pi]239    exact concrete_surface_isAdicComplete_span_pi_base _ _ (mc j).hpi _ _ _ (mc j).ha240  exact isAdicComplete_pi _ _ _ _241 242omit [∀ j, Algebra 𝒪 (mc j).toMeasured.R]243  [∀ j, IsScalarTower 𝒪 (mc j).toMeasured.O (mc j).toMeasured.R] in244/-- Given division charts `E' j` at state generators `g j` of the children and a measurable245  coordinate splitting `ρ`, the child chart map `w ↦ (coordinateIdeal (g j) (ρ w)_j)_j` is246  measurable. -/247private theorem child_chart_map_measurable (g : 𝒞)248    (hgj : ∀ j, Ideal.span {g j} ∈ (mc j).toMeasured.stateSet)249    (bc' : ∀ j, Fin (mc j).toMeasured.s.degree → (mc j).toMeasured.R)250    (E' : ∀ j, (mc j).toMeasured.R ≃ₗ[(mc j).toMeasured.O]251      ((Fin (mc j).toMeasured.s.degree → (mc j).toMeasured.O) × (mc j).toMeasured.R))252    (hE' : ∀ j w, (E' j).symm w = divisionMap (g j) (bc' j) w)253    (ρ : 𝒱 ≃ₗ[𝒪] (∀ j, Fin (mc j).toMeasured.s.degree → (mc j).toMeasured.O))254    (hρ : Measurable ρ) :255    Measurable fun (w : 𝒱) (j : 𝒥) =>256      coordinateIdeal (mc j).toMeasured.S.pi (g j) (bc' j) (ρ w j) := by257  rw [measurable_pi_iff]; intro j258  have := concrete_member_division_module_isAdicComplete (mc j)259  obtain ⟨hp0, hpm⟩ :=260    surface_vertical_parameter (mc j).toMeasured.O (mc j).toMeasured.R (mc j).toMeasured.S261  exact (coordinate_ideal_measurable_chart_sigma _ (mc j).toMeasured.htop _ _262    (mc j).toMeasured.S.pi_irreducible hp0 hpm _ (g j) (bc' j)263    ⟨⟨E' j, hE' j⟩, (concrete_member_state_generator_regular (mc j) (g j) (hgj j)).2.2⟩).comp264    ((measurable_pi_apply j).comp hρ)265 266include hcard hpiO he hbij hindex hsum267 268/-- At the center of a cell, the box of parent coordinates whose strict transforms lie in `Π G_j`269  has Haar measure `q^(-tri(cellDegree))` times the measure of the corresponding set of child270  coordinates. -/271private theorem member_center_translate_measure_data272    (s : ℕ) (hs : tri 𝔡 ≤ s) (cc : 𝒞) (hcc : (algebraMap 𝒪 𝒞 ϖ) ^ s = e ^ 𝔡 * cc)273    (f : ℛ) (b : Fin 𝔫 → ℛ) (E₀ : ℛ ≃ₗ[𝒪] (𝒱 × ℛ)) (hE₀ : ∀ w, E₀.symm w = divisionMap f b w)274    (hf : Ideal.span {f} ∈ m.toMeasured.cell c)275    (g : 𝒞) (hg : ∀ j, alpha j f = e j ^ 𝔡 * g j)276    (hgj : ∀ j, Ideal.span {g j} ∈ (mc j).toMeasured.stateSet)277    (bc' : ∀ j, Fin (mc j).toMeasured.s.degree → (mc j).toMeasured.R)278    (E' : ∀ j, (mc j).toMeasured.R ≃ₗ[(mc j).toMeasured.O]279      ((Fin (mc j).toMeasured.s.degree → (mc j).toMeasured.O) × (mc j).toMeasured.R))280    (hE' : ∀ j w, (E' j).symm w = divisionMap (g j) (bc' j) w)281    (ρ : 𝒱 ≃ₗ[𝒪] (∀ j, Fin (mc j).toMeasured.s.degree → (mc j).toMeasured.O))282    (hρ : Measurable ρ) (bc : Fin 𝔫 → 𝒞)283    (hcompat : ∀ (w : 𝒱) (j : 𝒥), coordinateLift bc w j = coordinateLift (bc' j) (ρ w j))284    (a : ℕ) (ha : a = s * 𝔫 - tri 𝔡 + 1) :285    letI : Module 𝒪 𝒞 := Algebra.toModule286    ∀ (E : 𝒞 ≃ₗ[𝒪] (𝒱 × 𝒞)), (∀ w, E.symm w = divisionMap g bc w) →287      ∀ (G : ∀ j, Set (Ideal (mc j).toMeasured.R)), (∀ j, MeasurableSet (G j)) →288      MeasurableSet (Set.range (childCoordinateMap ϖ a bc E289        (pulledVariation (AlgHom.pi alpha) cc b))) ∧290      MeasurableSet (coordinateIdeal ϖ f b ⁻¹' (cellStrict ⁻¹' Set.pi Set.univ G) ∩291        centerBox (s + a - 1)) ∧292      cellStrict '' (coordinateIdeal ϖ f b '' centerBox (s + a - 1)) =293        (fun (w : 𝒱) (j : 𝒥) => coordinateIdeal (mc j).toMeasured.S.pi (g j) (bc' j) (ρ w j)) ''294          Set.range (childCoordinateMap ϖ a bc E (pulledVariation (AlgHom.pi alpha) cc b)) ∧295      coefficientMeasure 𝒪 𝔫296        (coordinateIdeal ϖ f b ⁻¹' (cellStrict ⁻¹' Set.pi Set.univ G) ∩ centerBox (s + a - 1)) =297        𝐪⁻¹ ^ tri 𝔡 * coefficientMeasure 𝒪 𝔫298          ((fun (w : 𝒱) (j : 𝒥) => coordinateIdeal (mc j).toMeasured.S.pi (g j) (bc' j) (ρ w j))299            ⁻¹' Set.pi Set.univ G ∩300            Set.range (childCoordinateMap ϖ a bc E (pulledVariation (AlgHom.pi alpha) cc b))) := by301  -- the strict transform intertwines the parent chart on the center box with the child charts302  -- along the child coordinate map; transport measurability and measure along this square303  intro E hE G hG304  set Φ := fun (J : Ideal ℛ) (j : 𝒥) => strictTransformIdeal (alpha j) (e j) 𝔡 J305  set Ψ := fun (w : 𝒱) (j : 𝒥) => coordinateIdeal (mc j).toMeasured.S.pi (g j) (bc' j) (ρ w j)306  set ch := childCoordinateMap ϖ a bc E (pulledVariation (AlgHom.pi alpha) cc b)307  set sc := coordinateScale (n := 𝔫) ϖ (s + a - 1)308  have hpiIrr : Irreducible ϖ := m.toMeasured.S.pi_irreducible309  have hf' : AlgHom.pi alpha f = e ^ 𝔡 * g := by310    funext j; simp [AlgHom.pi_apply, hg j]311  obtain ⟨hjac, heC⟩ := member_children_jacobson_regular m c mc hpiO e he312  -- completeness of the coordinate modules313  have hOc : IsAdicComplete (Ideal.span {ϖ}) 𝒪 := dvr_isAdicComplete_span_uniformizer _ _ hpiIrr314  have hOn : IsAdicComplete (Ideal.span {ϖ}) 𝒱 := finite_free_adic_complete _ _ _315  have hC := member_children_isAdicComplete m c mc hpiO316  have hprod : IsAdicComplete (Ideal.span {ϖ}) (𝒱 × 𝒞) := isAdicComplete_prod _ _ _ _317  -- product chart and linear part318  obtain ⟨hproj, -, hinjP⟩ := product_chart_projection 𝒪 𝒥 (fun j => (mc j).toMeasured.O)319    (fun j => (mc j).toMeasured.R) (fun j => (mc j).toMeasured.s.degree) _ ρ bc' bc hcompat g _ _320    hpiO321  have hΨ : Function.Injective (coordinateIdeal ϖ g bc) := hinjP fun j =>322    (concrete_member_division_chart_measure (mc j) (g j) (hgj j) (bc' j) (E' j) (hE' j)).1323  obtain ⟨Q, hQ, hD, hkl⟩ := member_center_linear_part m c mc hcard alpha e he hbij hindex hsum324    s hs cc hcc f b E₀ hE₀ hf g hg bc E hE325  have htri : tri 𝔡 ≤ s * 𝔫 :=326    le_trans hs (Nat.le_mul_of_pos_right s (concrete_member_one_le_degree m))327  obtain ⟨hgen, hHaar, hProb, hfinite, hcontall⟩ :=328    coefficient_space_strict_instances 𝒪 m.toMeasured.htop ϖ hpiIrr 𝔫329  have hk : s * 𝔫 - tri 𝔡 < a := by omega330  have hΨm : Measurable Ψ := child_chart_map_measurable m c mc g hgj bc' E' hE' ρ hρ331  set T := Ψ ⁻¹' Set.pi Set.univ G332  have hT : MeasurableSet T := hΨm (MeasurableSet.univ_pi hG)333  -- the strict transform commutes with the coordinate charts334  have hcomm : ∀ z, strictTransformIdeal (AlgHom.pi alpha) e 𝔡 (coordinateIdeal ϖ f b (sc z)) =335      coordinateIdeal ϖ g bc (ch z) :=336    strict_chart_coordinates_commute _ _ _ _ _ s a _ _ f g e cc b hf' hcc heC (by omega) hjac bc E337      hE338  have hcommC : ∀ z, Φ (coordinateIdeal ϖ f b (sc z)) = Ψ (ch z) := fun z => by339    funext j; simp only [Φ, Ψ]340    rw [← (pi_strict_transform_map_eval _ _ _ _ alpha e g _ _).2.2.2 j, hcomm z, hproj]341  have hL : coordinateIdeal ϖ f b ⁻¹' (Φ ⁻¹' Set.pi Set.univ G) ∩ Set.range sc =342      sc '' (ch ⁻¹' T) := by343    ext x; constructor344    · rintro ⟨hx, z, rfl⟩; exact ⟨z, (hcommC z ▸ hx : Ψ (ch z) ∈ Set.pi Set.univ G), rfl⟩345    · rintro ⟨z, hz, rfl⟩; exact ⟨(hcommC z ▸ hz : Φ _ ∈ Set.pi Set.univ G), z, rfl⟩346  obtain ⟨hrangeM, hpreM⟩ := member_childCoordinateMap_measurable m a bc E347    (pulledVariation (AlgHom.pi alpha) cc b) _ hk Q hQ348  have himgS : strictTransformIdeal (AlgHom.pi alpha) e 𝔡 '' (coordinateIdeal ϖ f b '' Set.range sc)349      = coordinateIdeal ϖ g bc '' Set.range ch := by350    rw [Set.image_image, ← Set.range_comp, ← Set.range_comp]351    exact congrArg Set.range (funext hcomm)352  refine ⟨hrangeM, ?_, ?_, ?_⟩353  · rw [hL]354    exact measurableSet_coordinateScale_image _ hgen (smul_right_injective _ hpiIrr.ne_zero) _ _355      (hpreM T hT)356  · rw [Set.image_image, ← Set.range_comp, ← Set.range_comp]357    exact congrArg Set.range (funext hcommC)358  · rw [hL, ← strict_chart_preimage_set_identity _ _ _ _ _ s a _ _ f g e cc b hf' hcc heC359      (by omega) hjac bc E hE hΨ T, strict_transform_translate_measure _ _ _ _ _ s a _ _ f g e cc b360      hf' hcc heC (by omega) hjac bc E hE hΨ _ hk Q hQ hD hpiIrr hkl hgen _ hfinite (hcontall a _)361      (fun k S _ => coordinate_scale_measure _ m.toMeasured.htop _ hpiIrr _ k S) htri rfl T hT,362      himgS, ← Set.image_inter hΨ, Set.preimage_image_eq _ hΨ]363 364include pc hpc hpc' hdeg hstrict in365/-- The coefficient measure of the center box of parent coordinates whose strict transforms lie in366  `Π G_j` is `q^(-tri(cellDegree)) q^(deg)` times the product child measure of the part of `Π G_j`367  reached from the center box. -/368private theorem member_center_box_measure369    (s : ℕ) (hs : tri 𝔡 ≤ s) (cc : 𝒞) (hcc : (algebraMap 𝒪 𝒞 ϖ) ^ s = e ^ 𝔡 * cc)370    (f : ℛ) (b : Fin 𝔫 → ℛ) (E₀ : ℛ ≃ₗ[𝒪] (𝒱 × ℛ)) (hE₀ : ∀ w, E₀.symm w = divisionMap f b w)371    (hf : Ideal.span {f} ∈ m.toMeasured.cell c) (a : ℕ) (ha : a = s * 𝔫 - tri 𝔡 + 1)372    (G : ∀ j, Set (Ideal (mc j).toMeasured.R)) (hG : ∀ j, MeasurableSet (G j)) :373    MeasurableSet (coordinateIdeal ϖ f b ⁻¹' (cellStrict ⁻¹' Set.pi Set.univ G) ∩374      centerBox (s + a - 1)) ∧375    MeasurableSet (cellStrict '' (coordinateIdeal ϖ f b '' centerBox (s + a - 1))) ∧376    coefficientMeasure 𝒪 𝔫377      (coordinateIdeal ϖ f b ⁻¹' (cellStrict ⁻¹' Set.pi Set.univ G) ∩ centerBox (s + a - 1)) =378      𝐪⁻¹ ^ tri 𝔡 * 𝐪 ^ 𝔫 * Measure.pi (fun j => (mc j).toMeasured.μ)379        (Set.pi Set.univ G ∩ cellStrict '' (coordinateIdeal ϖ f b '' centerBox (s + a - 1))) := by380  obtain ⟨g, hg⟩ := hstrict f hf381  have hgj : ∀ j, Ideal.span {g j} ∈ (mc j).toMeasured.stateSet := fun j => by382    simpa [strict_transform_ideal_of_generator _ _ _ (alpha j) (e j) (g j) _ f (hg j)383      (concrete_member_mul_t_injective (he j))] using hbij.mapsTo hf j (Set.mem_univ _)384  choose bc' E' hE' using fun j => concrete_member_state_generator_division (mc j) (g j) (hgj j)385  obtain ⟨ρ, bc, hρ, hρ', hcompat⟩ := product_coordinates_exist 𝒪 𝒥 (fun j => (mc j).toMeasured.O)386    (fun j => (mc j).toMeasured.R) (m.toMeasured.childDelta c) (fun j => (mc j).toMeasured.s.degree)387    pc hpc hpc' 𝔫 hdeg bc'388  obtain ⟨E, hE⟩ := product_division_equiv 𝒪 𝒥 (fun j => (mc j).toMeasured.O)389    (fun j => (mc j).toMeasured.R) (fun j => (mc j).toMeasured.s.degree) 𝔫 ρ bc' bc hcompat g E' hE'390  obtain ⟨h1, h2, h3, h4⟩ := member_center_translate_measure_data m c mc hcard hpiO alpha e he391    hbij hindex hsum s hs cc hcc f b E₀ hE₀ hf g hg hgj bc' E' hE' ρ hρ bc hcompat a ha E hE G hG392  obtain ⟨hemb, hpush⟩ := member_product_chart_pushforward 𝒥 mc g hgj bc' E' hE'393  set T := Set.range (childCoordinateMap ϖ a bc E (pulledVariation (AlgHom.pi alpha) cc b))394  set Ψ := fun (w : ∀ j, Fin (mc j).toMeasured.s.degree → (mc j).toMeasured.O) (j : 𝒥) =>395    coordinateIdeal (mc j).toMeasured.S.pi (g j) (bc' j) (w j)396  have hρT : MeasurableSet (ρ '' T) := by397    rw [LinearEquiv.image_eq_preimage_symm]; exact hρ' h1398  have himg : (fun (w : 𝒱) (j : 𝒥) => coordinateIdeal (mc j).toMeasured.S.pi (g j) (bc' j)399      (ρ w j)) '' T = Ψ '' (ρ '' T) := by400    rw [Set.image_image]401  refine ⟨h2, ?_, ?_⟩402  · rw [h3, himg]; exact hemb.measurableSet_image' hρT403  · rw [h4, h3, himg]404    set Y := ρ '' T ∩ Ψ ⁻¹' Set.pi Set.univ G405    have hYm : MeasurableSet Y := hρT.inter (hemb.measurable (MeasurableSet.univ_pi hG))406    have hpre : (fun (w : 𝒱) (j : 𝒥) => coordinateIdeal (mc j).toMeasured.S.pi (g j) (bc' j)407        (ρ w j)) ⁻¹' Set.pi Set.univ G ∩ T = ρ ⁻¹' Y := by408      rw [Set.preimage_inter, Set.preimage_image_eq _ ρ.injective, Set.inter_comm]; rfl409    have hC : (∏ j, ((mc j).toMeasured.q : ℝ≥0∞)⁻¹ ^ (mc j).toMeasured.s.degree) = 𝐪⁻¹ ^ 𝔫 := by410      simp_rw [hcard, Nat.cast_pow, ENNReal.inv_pow, ← pow_mul]411      rw [Finset.prod_pow_eq_pow_sum, hdeg]412    rw [hpre, ← Measure.map_apply hρ hYm,413      member_coefficient_measure_map_product_coordinates m c mc ρ hρ,414      ← Set.inter_comm, ← Set.image_inter_preimage, hpush Y hYm, hC, mul_assoc,415      ← mul_assoc (𝐪 ^ _), concreteMember_q_pow_mul_inv_pow, one_mul]416 417open scoped Classical in418include pc hpc hpc' hdeg hstrict in419/-- In the chart `i` of a cell, given coset representatives `reps` of level `s + a - 1`, the chart420  preimage of the box `{J ∈ cell : cellStrict J ∈ Π G_j}` is measurable, and its measure is421  `q^(-tri(cellDegree)) q^deg` times the sum, over the representatives landing in the cell, of the422  child measures of the images of the corresponding cosets. -/423private theorem member_cell_chart_box (s : ℕ) (hs : tri 𝔡 ≤ s) (cc : 𝒞)424    (hcc : (algebraMap 𝒪 𝒞 ϖ) ^ s = e ^ 𝔡 * cc) (a : ℕ) (ha : a = s * 𝔫 - tri 𝔡 + 1)425    (reps : Finset 𝒱) (hrdisj : (reps : Set 𝒱).PairwiseDisjoint (coordinateCoset ϖ (s + a - 1)))426    (i : m.atlas.ι)427    (hdec : memberChart m i ⁻¹' m.toMeasured.cell c =428      ⋃ z₀ ∈ reps.filter (fun z₀ => memberChart m i z₀ ∈ m.toMeasured.cell c),429        coordinateCoset ϖ (s + a - 1) z₀)430    (G : ∀ j, Set (Ideal (mc j).toMeasured.R)) (hG : ∀ j, MeasurableSet (G j)) :431    MeasurableSet (memberChart m i ⁻¹' (m.toMeasured.cell c ∩ cellStrict ⁻¹' Set.pi Set.univ G)) ∧432    coefficientMeasure 𝒪 𝔫433        (memberChart m i ⁻¹' (m.toMeasured.cell c ∩ cellStrict ⁻¹' Set.pi Set.univ G)) =434      𝐪⁻¹ ^ tri 𝔡 * 𝐪 ^ 𝔫 *435        ∑ z₀ ∈ reps.filter (fun z₀ => memberChart m i z₀ ∈ m.toMeasured.cell c),436        Measure.pi (fun j => (mc j).toMeasured.μ) (Set.pi Set.univ G ∩437          cellStrict '' (memberChart m i '' coordinateCoset ϖ (s + a - 1) z₀)) ∧438    ∀ z₀ ∈ reps.filter (fun z₀ => memberChart m i z₀ ∈ m.toMeasured.cell c),439      MeasurableSet (cellStrict '' (memberChart m i '' coordinateCoset ϖ (s + a - 1) z₀)) := by440  set Φ := fun (J : Ideal ℛ) (j : 𝒥) => strictTransformIdeal (alpha j) (e j) 𝔡 J441  have := concrete_member_division_module_isAdicComplete m442  -- `Φi` is the chart, `F` the representatives of the cell in it, and `Φp z₀` the chart recentred443  -- at `z₀`; the chart preimage of the box is the union of the translated center boxes `A z₀`444  let fi : ℛ := (m.atlas.chart i).f445  let bi : Fin 𝔫 → ℛ := (m.atlas.chart i).b446  set Φi := memberChart m i447  set F := reps.filter (fun z₀ => Φi z₀ ∈ m.toMeasured.cell c)448  let Φp (z₀ : 𝒱) : 𝒱 → Ideal ℛ := coordinateIdeal ϖ (fi + ϖ • coordinateLift bi z₀) bi449  have Tr := fun z₀ => member_chart_translate m fi bi (s + a - 1) z₀450  set Y := Set.pi Set.univ G451  set Rg := Set.range (coordinateScale (n := 𝔫) ϖ (s + a - 1))452  let A (z₀ : 𝒱) : Set 𝒱 := (fun z => z₀ + z) '' (Φp z₀ ⁻¹' (Φ ⁻¹' Y) ∩ Rg)453  -- the center box measure applies at every representative454  have hC : ∀ z₀ ∈ F, MeasurableSet (Φp z₀ ⁻¹' (Φ ⁻¹' Y) ∩ Rg) ∧455      MeasurableSet (Φ '' (Φp z₀ '' Rg)) ∧456      coefficientMeasure 𝒪 𝔫 (Φp z₀ ⁻¹' (Φ ⁻¹' Y) ∩ Rg) =457        𝐪⁻¹ ^ tri 𝔡 * 𝐪 ^ 𝔫 *458          Measure.pi (fun j => (mc j).toMeasured.μ) (Y ∩ Φ '' (Φp z₀ '' Rg)) := by459    intro z₀ hz₀460    have hf : Ideal.span {fi + ϖ • coordinateLift bi z₀} ∈ m.toMeasured.cell c := by461      have h0 := (Tr z₀).1 0462      rw [add_zero] at h0463      have : coordinateIdeal ϖ fi bi z₀ = Ideal.span {fi + ϖ • coordinateLift bi z₀} := by464        rw [h0]465        simp [coordinateIdeal, normalizedIdeal, normalizedGenerator, coordinateLift]466      rw [← this]; exact (Finset.mem_filter.mp hz₀).2467    obtain ⟨E₀, hE₀⟩ := @division_data_vertical_perturbation 𝒪 ℛ _ _ _ 𝔫 ϖ fi bi468      (m.atlas.chart i).E (m.atlas.chart i).division this (coordinateLift bi z₀)469    exact member_center_box_measure m c mc pc hpc hpc' hcard hpiO hdeg alpha e he hbij470      hstrict hindex hsum s hs cc hcc _ bi E₀ hE₀ hf a ha G hG471  have hPeq (z₀) : Φp z₀ '' Rg = Φi '' coordinateCoset ϖ (s + a - 1) z₀ := by472    rw [(Tr z₀).2.1, Set.image_image]473    exact congrArg (· '' Rg) (funext fun w => ((Tr z₀).1 w).symm)474  have hXi : Φi ⁻¹' (m.toMeasured.cell c ∩ Φ ⁻¹' Y) = ⋃ z₀ ∈ F, A z₀ :=475    preimage_inter_eq_biUnion_translate Φi Φp _ _ Rg F _ (fun z₀ => (Tr z₀).1)476      (fun z₀ => (Tr z₀).2.1) hdec477  have hAdisj : (F : Set _).PairwiseDisjoint A := by478    intro z₀ hz z₀' hz' hne479    have hsub : ∀ z₁, A z₁ ⊆ coordinateCoset ϖ (s + a - 1) z₁ := fun z₁ => by480      rw [(Tr z₁).2.1]; exact Set.image_mono Set.inter_subset_right481    exact (hrdisj (Finset.mem_filter.mp hz).1 (Finset.mem_filter.mp hz').1 hne).mono (hsub z₀)482      (hsub z₀')483  have hAmeas : ∀ z₀ ∈ F, MeasurableSet (A z₀) := fun z₀ hz => ((Tr z₀).2.2 _).2 (hC z₀ hz).1484  refine ⟨?_, ?_, fun z₀ hz => hPeq z₀ ▸ (hC z₀ hz).2.1⟩485  · rw [hXi]; exact Finset.measurableSet_biUnion _ hAmeas486  · rw [hXi, measure_biUnion_finset hAdisj hAmeas, Finset.mul_sum]487    refine Finset.sum_congr rfl fun z₀ hz => ?_488    rw [← hPeq]489    exact ((Tr z₀).2.2 _).1.trans (hC z₀ hz).2.2490 491include pc hpc hpc' hdeg hvert hstrict in492/-- The set of ideals in a cell whose strict transforms lie in a measurable box `Π G_j` is493  measurable. -/494theorem member_cell_box_measurable :Theorem 5.1495    (letI : ∀ j, MeasurableSpace (Ideal (mc j).toMeasured.R) :=496      fun j => (mc j).toMeasured.measurableSpaceIdeal;497      letI : MeasurableSpace (Ideal ℛ) := m.toMeasured.measurableSpaceIdeal;498      ∀ (G : ∀ j, Set (Ideal (mc j).toMeasured.R)), (∀ j, MeasurableSet (G j)) →499      MeasurableSet (m.toMeasured.cell c ∩ (fun (J : Ideal ℛ) (j : 𝒥) =>500        strictTransformIdeal (alpha j) (e j) 𝔡 J) ⁻¹' Set.pi Set.univ G)) := by501  intro G hG502  classical503  obtain ⟨s, cc, hs, hcc⟩ := common_vertical_exponent 𝒪 𝒥 (fun j => (mc j).toMeasured.R) ϖ e 𝔡504    hvert (tri 𝔡)505  set a := s * 𝔫 - tri 𝔡 + 1 with ha506  have htri := tri_chooseTwo 𝔡507  obtain ⟨reps, -, -, hrdisj, hdec⟩ :=508    member_cell_chart_coset_decomposition m c (s + a - 1) (by omega)509  set X := m.toMeasured.cell c ∩ cellStrict ⁻¹' Set.pi Set.univ G510  -- `X` is the union of the images of its chart preimages, which are measurable511  have hX : X = ⋃ i, memberChart m i '' (memberChart m i ⁻¹' X) := by512    ext J513    simp only [Set.mem_iUnion, Set.image_preimage_eq_inter_range, Set.mem_inter_iff]514    constructor515    · intro h; obtain ⟨i, hi⟩ := member_cell_mem_chart_range m c J h.1; exact ⟨i, h, hi⟩516    · rintro ⟨-, h, -⟩; exact h517  rw [hX]518  exact MeasurableSet.iUnion fun i => chart_image_measurable_chart_sigma _ _ _ _ _ _519    (m.atlas.chart i).isDivisionChart _520    (member_cell_chart_box m c mc pc hpc hpc' hcard hpiO hdeg alpha e he hbij hstrict hindex hsum521      s hs cc hcc a ha reps hrdisj i (hdec i) G hG).1522 523include pc hpc hpc' hdeg hvert hstrict in524/-- The measure of the set of ideals in a cell whose strict transforms lie in a box `Π G_j` is525  `q^(-tri(cellDegree))` times the product of the child state measures of the `G_j`. -/526theorem member_cell_box_measure :(1.7)Theorem 5.1Proposition 6.1527    (letI : ∀ j, MeasurableSpace (Ideal (mc j).toMeasured.R) :=528      fun j => (mc j).toMeasured.measurableSpaceIdeal;529      letI : MeasurableSpace (Ideal ℛ) := m.toMeasured.measurableSpaceIdeal;530      ∀ (G : ∀ j, Set (Ideal (mc j).toMeasured.R)), (∀ j, MeasurableSet (G j)) →531      m.toMeasured.μ (m.toMeasured.cell c ∩ (fun (J : Ideal ℛ) (j : 𝒥) =>532        strictTransformIdeal (alpha j) (e j) 𝔡 J) ⁻¹' Set.pi Set.univ G) =533      𝐪⁻¹ ^ tri 𝔡 * ∏ j, (mc j).toMeasured.μ (G j)) := by534  -- sum the chart computations of `member_cell_chart_box` over the charts; the images of the535  -- cosets in the cell partition the cell, hence their strict transforms partition `Π stateSet_j`536  intro G hG537  classical538  obtain ⟨s, cc, hs, hcc⟩ := common_vertical_exponent 𝒪 𝒥 (fun j => (mc j).toMeasured.R) ϖ e _539    hvert (tri 𝔡)540  set a := s * 𝔫 - tri 𝔡 + 1 with ha541  have htri := tri_chooseTwo 𝔡542  obtain ⟨reps, -, -, hrdisj, hdec⟩ :=543    member_cell_chart_coset_decomposition m c (s + a - 1) (by omega)544  have hbox := fun i => member_cell_chart_box m c mc pc hpc hpc' hcard hpiO hdeg alpha e he hbij545    hstrict hindex hsum s hs cc hcc a ha reps hrdisj i (hdec i) G hG546  -- `F i` are the representatives of the cell in chart `i`, `P ⟨i, z₀⟩` the image of a coset547  let F (i : m.atlas.ι) := reps.filter (fun z₀ => memberChart m i z₀ ∈ m.toMeasured.cell c)548  let P (p : Σ _ : m.atlas.ι, 𝒱) := memberChart m p.1 '' coordinateCoset ϖ (s + a - 1) p.2549  have hdec' (i) : memberChart m i ⁻¹' m.toMeasured.cell c =550      ⋃ z₀ ∈ F i, coordinateCoset ϖ (s + a - 1) z₀ := hdec i551  have hPcell : ∀ p ∈ Finset.univ.sigma F, P p ⊆ m.toMeasured.cell c := by552    rintro ⟨i, z₀⟩ hp J ⟨z, hz, rfl⟩553    have : z ∈ memberChart m i ⁻¹' m.toMeasured.cell c := by554      rw [hdec']; exact Set.mem_biUnion (Finset.mem_sigma.mp hp).2 hz555    exact this556  have hPunion : m.toMeasured.cell c ⊆ ⋃ p ∈ Finset.univ.sigma F, P p := by557    intro J hJc558    obtain ⟨i, z, rfl⟩ := member_cell_mem_chart_range m c J hJc559    have hz : z ∈ memberChart m i ⁻¹' m.toMeasured.cell c := hJc560    rw [hdec'] at hz561    obtain ⟨z₀, hz₀, hzc⟩ := Set.mem_iUnion₂.mp hz562    exact Set.mem_iUnion₂.mpr ⟨⟨i, z₀⟩, Finset.mem_sigma.mpr ⟨Finset.mem_univ _, hz₀⟩, z, hzc, rfl⟩563  have hPdisj : ((Finset.univ.sigma F : Finset _) : Set _).PairwiseDisjoint P := by564    rintro ⟨i, z₀⟩ hp ⟨i', z₀'⟩ hp' hne565    have hz := (Finset.mem_sigma.mp hp).2566    have hz' := (Finset.mem_sigma.mp hp').2567    by_cases hii : i = i'568    · subst hii569      have hne' : z₀ ≠ z₀' := fun h => hne (h ▸ rfl)570      exact (Set.disjoint_image_iff (concrete_member_charts m i).1).mpr571        (hrdisj (Finset.mem_filter.mp hz).1 (Finset.mem_filter.mp hz').1 hne')572    · have h := m.atlas.disjoint hii573      simp only at h574      rw [← (concrete_member_charts m i).2.1, ← (concrete_member_charts m i').2.1] at h575      exact h.mono (Set.image_subset_range _ _) (Set.image_subset_range _ _)576  have : ∀ j, IsFiniteMeasure (mc j).toMeasured.μ := fun j =>577    (concrete_member_measure_finite_support (mc j)).1578  have hparts := sum_measure_inter_image_of_partition (Measure.pi fun j => (mc j).toMeasured.μ)579    hbij _ P hPcell hPunion hPdisj (Set.pi Set.univ G) fun p hp => (MeasurableSet.univ_pi hG).inter580      ((hbox p.1).2.2 p.2 (Finset.mem_sigma.mp hp).2)581  rw [Finset.sum_sigma, ← Set.pi_inter_distrib, Measure.pi_pi] at hparts582  -- the state measure is `q^(-deg)` times the sum of the chart measures583  rw [MeasuredSurface.μ, stateMeasure, Measure.smul_apply, Measure.finsetSum_apply, smul_eq_mul]584  have hmeas := member_cell_box_measurable m c mc pc hpc hpc' hcard hpiO hdeg alpha e he hvert hbij585    hstrict hindex hsum G hG586  calc _ = 𝐪⁻¹ ^ 𝔫 * ∑ i, 𝐪⁻¹ ^ tri 𝔡 * 𝐪 ^ 𝔫 *587        ∑ z₀ ∈ F i, Measure.pi (fun j => (mc j).toMeasured.μ)588          (Set.pi Set.univ G ∩ cellStrict '' P ⟨i, z₀⟩) := by589        congr 1590        refine Finset.sum_congr rfl fun i _ => ?_591        rw [chartMeasure]592        exact (Measure.map_apply (concrete_member_charts m i).2.2 hmeas).trans (hbox i).2.1593    _ = (𝐪 ^ 𝔫 * 𝐪⁻¹ ^ 𝔫) * (𝐪⁻¹ ^ tri 𝔡 * ∏ j, (mc j).toMeasured.μ (G j)) := by594        rw [← Finset.mul_sum, hparts, Finset.prod_congr rfl fun j _ =>595          ((concrete_member_measure_finite_support (mc j)).2 (G j)).symm]596        ring597    _ = _ := by rw [concreteMember_q_pow_mul_inv_pow, one_mul]598 599end CellBoxes600 601end SurfaceBlowup