Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit d5ca915

Browse files
committed
refactor(measure_theory/group/fundamental_domain): Use pairwise (#17928)
Replace `∀ g ≠ (1 : G), ae_disjoint μ (g • s) s` ("translates are disjoint to the original set") by the stronger and more symmetric `pairwise (ae_disjoint μ on λ g : G, g • s)` ("translates are disjoint"). In full generality, the latter condition is the one we mean, and indeed this change reduces typeclass assumptions for a few lemmas.
1 parent b3f2536 commit d5ca915

File tree

1 file changed

+49
-46
lines changed

1 file changed

+49
-46
lines changed

src/measure_theory/group/fundamental_domain.lean

Lines changed: 49 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ a.e. disjoint and cover the whole space. -/
3838
[has_vadd G α] [measurable_space α] (s : set α) (μ : measure α . volume_tac) : Prop :=
3939
(null_measurable_set : null_measurable_set s μ)
4040
(ae_covers : ∀ᵐ x ∂μ, ∃ g : G, g +ᵥ x ∈ s)
41-
(ae_disjoint : ∀ g ≠ (0 : G), ae_disjoint μ (g +ᵥ s) s)
41+
(ae_disjoint : pairwise $ ae_disjoint μ on λ g : G, g +ᵥ s)
4242

4343
/-- A measurable set `s` is a *fundamental domain* for an action of a group `G` on a measurable
4444
space `α` with respect to a measure `α` if the sets `g • s`, `g : G`, are pairwise a.e. disjoint and
@@ -48,12 +48,13 @@ structure is_fundamental_domain (G : Type*) {α : Type*} [has_one G] [has_smul G
4848
[measurable_space α] (s : set α) (μ : measure α . volume_tac) : Prop :=
4949
(null_measurable_set : null_measurable_set s μ)
5050
(ae_covers : ∀ᵐ x ∂μ, ∃ g : G, g • x ∈ s)
51-
(ae_disjoint : ∀ g ≠ (1 : G), ae_disjoint μ (g • s) s)
51+
(ae_disjoint : pairwise $ ae_disjoint μ on λ g : G, g • s)
5252

53-
namespace is_fundamental_domain
53+
variables {G H α β E : Type*}
5454

55-
variables {G H α β E : Type*} [group G] [group H] [mul_action G α] [measurable_space α]
56-
[mul_action H β] [measurable_space β] [normed_add_comm_group E] {s t : set α} {μ : measure α}
55+
namespace is_fundamental_domain
56+
variables [group G] [group H] [mul_action G α] [measurable_space α] [mul_action H β]
57+
[measurable_space β] [normed_add_comm_group E] {s t : set α} {μ : measure α}
5758

5859
/-- If for each `x : α`, exactly one of `g • x`, `g : G`, belongs to a measurable set `s`, then `s`
5960
is a fundamental domain for the action of `G` on `α`. -/
@@ -63,13 +64,23 @@ lemma mk' (h_meas : null_measurable_set s μ) (h_exists : ∀ x : α, ∃! g : G
6364
is_fundamental_domain G s μ :=
6465
{ null_measurable_set := h_meas,
6566
ae_covers := eventually_of_forall $ λ x, (h_exists x).exists,
66-
ae_disjoint := λ g hne, disjoint.ae_disjoint $ disjoint_left.2
67+
ae_disjoint := λ a b hab, disjoint.ae_disjoint $ disjoint_left.2 $ λ x hxa hxb,
6768
begin
68-
rintro _ ⟨x, hx, rfl⟩ hgx,
69-
rw ← one_smul G x at hx,
70-
exact hne ((h_exists x).unique hgx hx)
69+
rw mem_smul_set_iff_inv_smul_mem at hxa hxb,
70+
exact hab (inv_injective $ (h_exists x).unique hxa hxb),
7171
end }
7272

73+
/-- For `s` to be a fundamental domain, it's enough to check `ae_disjoint (g • s) s` for `g ≠ 1`. -/
74+
@[to_additive "For `s` to be a fundamental domain, it's enough to check `ae_disjoint (g +ᵥ s) s` for
75+
`g ≠ 0`."]
76+
lemma mk'' (h_meas : null_measurable_set s μ) (h_ae_covers : ∀ᵐ x ∂μ, ∃ g : G, g • x ∈ s)
77+
(h_ae_disjoint : ∀ g ≠ (1 : G), ae_disjoint μ (g • s) s)
78+
(h_qmp : ∀ (g : G), quasi_measure_preserving ((•) g : α → α) μ μ) :
79+
is_fundamental_domain G s μ :=
80+
{ null_measurable_set := h_meas,
81+
ae_covers := h_ae_covers,
82+
ae_disjoint := pairwise_ae_disjoint_of_ae_disjoint_forall_ne_one h_ae_disjoint h_qmp }
83+
7384
/-- If a measurable space has a finite measure `μ` and a countable group `G` acts
7485
quasi-measure-preservingly, then to show that a set `s` is a fundamental domain, it is sufficient
7586
to check that its translates `g • s` are (almost) disjoint and that the sum `∑' g, μ (g • s)` is
@@ -85,12 +96,12 @@ lemma mk_of_measure_univ_le [is_finite_measure μ] [countable G]
8596
(h_qmp : ∀ (g : G), quasi_measure_preserving ((•) g : α → α) μ μ)
8697
(h_measure_univ_le : μ (univ : set α) ≤ ∑' (g : G), μ (g • s)) :
8798
is_fundamental_domain G s μ :=
99+
have ae_disjoint : pairwise (ae_disjoint μ on (λ (g : G), g • s)) :=
100+
pairwise_ae_disjoint_of_ae_disjoint_forall_ne_one h_ae_disjoint h_qmp,
88101
{ null_measurable_set := h_meas,
89-
ae_disjoint := h_ae_disjoint,
102+
ae_disjoint := ae_disjoint,
90103
ae_covers :=
91104
begin
92-
replace ae_disjoint : pairwise (ae_disjoint μ on (λ (g : G), g • s)) :=
93-
pairwise_ae_disjoint_of_ae_disjoint_forall_ne_one h_ae_disjoint h_qmp,
94105
replace h_meas : ∀ (g : G), null_measurable_set (g • s) μ :=
95106
λ g, by { rw [← inv_inv g, ← preimage_smul], exact h_meas.preimage (h_qmp g⁻¹), },
96107
have h_meas' : null_measurable_set {a | ∃ (g : G), g • a ∈ s} μ,
@@ -107,42 +118,20 @@ eventually_eq_univ.2 $ h.ae_covers.mono $ λ x ⟨g, hg⟩, mem_Union.2 ⟨g⁻
107118

108119
@[to_additive] lemma mono (h : is_fundamental_domain G s μ) {ν : measure α} (hle : ν ≪ μ) :
109120
is_fundamental_domain G s ν :=
110-
⟨h.1.mono_ac hle, hle h.2, λ g hg, hle (h.3 g hg)⟩
111-
112-
variables [measurable_space G] [has_measurable_smul G α] [smul_invariant_measure G α μ]
113-
114-
@[to_additive] lemma null_measurable_set_smul (h : is_fundamental_domain G s μ) (g : G) :
115-
null_measurable_set (g • s) μ :=
116-
h.null_measurable_set.smul g
117-
118-
@[to_additive] lemma restrict_restrict (h : is_fundamental_domain G s μ) (g : G) (t : set α) :
119-
(μ.restrict t).restrict (g • s) = μ.restrict (g • s ∩ t) :=
120-
restrict_restrict₀ ((h.null_measurable_set_smul g).mono restrict_le_self)
121-
122-
@[to_additive] lemma pairwise_ae_disjoint (h : is_fundamental_domain G s μ) :
123-
pairwise (λ g₁ g₂ : G, ae_disjoint μ (g₁ • s) (g₂ • s)) :=
124-
pairwise_ae_disjoint_of_ae_disjoint_forall_ne_one h.ae_disjoint
125-
(λ g, measure_preserving.quasi_measure_preserving $ by simp)
126-
127-
@[to_additive] lemma pairwise_ae_disjoint_of_ac {ν} (h : is_fundamental_domain G s μ) (hν : ν ≪ μ) :
128-
pairwise (λ g₁ g₂ : G, ae_disjoint ν (g₁ • s) (g₂ • s)) :=
129-
h.pairwise_ae_disjoint.mono $ λ g₁ g₂ H, hν H
121+
⟨h.1.mono_ac hle, hle h.2, h.ae_disjoint.mono $ λ a b hab, hle hab⟩
130122

131123
@[to_additive] lemma preimage_of_equiv {ν : measure β} (h : is_fundamental_domain G s μ) {f : β → α}
132124
(hf : quasi_measure_preserving f ν μ) {e : G → H} (he : bijective e)
133125
(hef : ∀ g, semiconj f ((•) (e g)) ((•) g)) :
134126
is_fundamental_domain H (f ⁻¹' s) ν :=
135127
{ null_measurable_set := h.null_measurable_set.preimage hf,
136128
ae_covers := (hf.ae h.ae_covers).mono $ λ x ⟨g, hg⟩, ⟨e g, by rwa [mem_preimage, hef g x]⟩,
137-
ae_disjoint := λ g hg,
129+
ae_disjoint := λ a b hab,
138130
begin
139131
lift e to G ≃ H using he,
140-
have : (e.symm g⁻¹)⁻¹ ≠ (e.symm 1)⁻¹, by simp [hg],
141-
convert (h.pairwise_ae_disjoint this).preimage hf using 1,
142-
{ simp only [← preimage_smul_inv, preimage_preimage, ← hef _ _, e.apply_symm_apply,
143-
inv_inv] },
144-
{ ext1 x,
145-
simp only [mem_preimage, ← preimage_smul, ← hef _ _, e.apply_symm_apply, one_smul] }
132+
have : (e.symm a⁻¹)⁻¹ ≠ (e.symm b⁻¹)⁻¹, by simp [hab],
133+
convert (h.ae_disjoint this).preimage hf using 1,
134+
simp only [←preimage_smul_inv, preimage_preimage, ←hef _ _, e.apply_symm_apply, inv_inv],
146135
end }
147136

148137
@[to_additive] lemma image_of_equiv {ν : measure β} (h : is_fundamental_domain G s μ)
@@ -156,11 +145,9 @@ begin
156145
rw [← hef _ _, f.symm_apply_apply, f.symm_apply_apply, e.apply_symm_apply]
157146
end
158147

159-
@[to_additive] lemma smul (h : is_fundamental_domain G s μ) (g : G) :
160-
is_fundamental_domain G (g • s) μ :=
161-
h.image_of_equiv (mul_action.to_perm g) (measure_preserving_smul _ _).quasi_measure_preserving
162-
⟨λ g', g⁻¹ * g' * g, λ g', g * g' * g⁻¹, λ g', by simp [mul_assoc], λ g', by simp [mul_assoc]⟩ $
163-
λ g' x, by simp [smul_smul, mul_assoc]
148+
@[to_additive] lemma pairwise_ae_disjoint_of_ac {ν} (h : is_fundamental_domain G s μ) (hν : ν ≪ μ) :
149+
pairwise (λ g₁ g₂ : G, ae_disjoint ν (g₁ • s) (g₂ • s)) :=
150+
h.ae_disjoint.mono $ λ g₁ g₂ H, hν H
164151

165152
@[to_additive] lemma smul_of_comm {G' : Type*} [group G'] [mul_action G' α] [measurable_space G']
166153
[has_measurable_smul G' α] [smul_invariant_measure G' α μ] [smul_comm_class G' G α]
@@ -169,11 +156,27 @@ h.image_of_equiv (mul_action.to_perm g) (measure_preserving_smul _ _).quasi_meas
169156
h.image_of_equiv (mul_action.to_perm g) (measure_preserving_smul _ _).quasi_measure_preserving
170157
(equiv.refl _) $ smul_comm g
171158

159+
variables [measurable_space G] [has_measurable_smul G α] [smul_invariant_measure G α μ]
160+
161+
@[to_additive] lemma null_measurable_set_smul (h : is_fundamental_domain G s μ) (g : G) :
162+
null_measurable_set (g • s) μ :=
163+
h.null_measurable_set.smul g
164+
165+
@[to_additive] lemma restrict_restrict (h : is_fundamental_domain G s μ) (g : G) (t : set α) :
166+
(μ.restrict t).restrict (g • s) = μ.restrict (g • s ∩ t) :=
167+
restrict_restrict₀ ((h.null_measurable_set_smul g).mono restrict_le_self)
168+
169+
@[to_additive] lemma smul (h : is_fundamental_domain G s μ) (g : G) :
170+
is_fundamental_domain G (g • s) μ :=
171+
h.image_of_equiv (mul_action.to_perm g) (measure_preserving_smul _ _).quasi_measure_preserving
172+
⟨λ g', g⁻¹ * g' * g, λ g', g * g' * g⁻¹, λ g', by simp [mul_assoc], λ g', by simp [mul_assoc]⟩ $
173+
λ g' x, by simp [smul_smul, mul_assoc]
174+
172175
variables [countable G] {ν : measure α}
173176

174177
@[to_additive] lemma sum_restrict_of_ac (h : is_fundamental_domain G s μ) (hν : ν ≪ μ) :
175178
sum (λ g : G, ν.restrict (g • s)) = ν :=
176-
by rw [← restrict_Union_ae (h.pairwise_ae_disjoint.mono $ λ i j h, hν h)
179+
by rw [← restrict_Union_ae (h.ae_disjoint.mono $ λ i j h, hν h)
177180
(λ g, (h.null_measurable_set_smul g).mono_ac hν),
178181
restrict_congr_set (hν h.Union_smul_ae_eq), restrict_univ]
179182

@@ -338,7 +341,7 @@ begin
338341
by simp only [hf, hs.restrict_restrict]
339342
... = ∫ x in ⋃ g : G, g • s, f x ∂(μ.restrict t) :
340343
(integral_Union_ae (λ g, (hs.null_measurable_set_smul g).mono_ac hac)
341-
(hs.pairwise_ae_disjoint.mono $ λ i j h, hac h) hft.integrable.integrable_on).symm
344+
(hs.ae_disjoint.mono $ λ i j h, hac h) hft.integrable.integrable_on).symm
342345
... = ∫ x in t, f x ∂μ :
343346
by rw [restrict_congr_set (hac hs.Union_smul_ae_eq), restrict_univ] },
344347
{ rw [integral_undef hfs, integral_undef],

0 commit comments

Comments
 (0)