Skip to content

Commit 3ae4a54

Browse files
committed
chore: use Set.Nonempty in ProperlyDiscontinuous (#32693)
addresses a TODO
1 parent dde6db9 commit 3ae4a54

File tree

3 files changed

+10
-14
lines changed

3 files changed

+10
-14
lines changed

Mathlib/Topology/Algebra/ConstMulAction.lean

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -442,7 +442,6 @@ nonrec theorem smul_mem_nhds_smul_iff (hc : IsUnit c) {s : Set α} {a : α} :
442442

443443
end IsUnit
444444

445-
-- TODO: use `Set.Nonempty`
446445
/-- Class `ProperlyDiscontinuousSMul Γ T` says that the scalar multiplication `(•) : Γ → T → T`
447446
is properly discontinuous, that is, for any pair of compact sets `K, L` in `T`, only finitely many
448447
`γ:Γ` move `K` to have nontrivial intersection with `L`.
@@ -451,7 +450,7 @@ class ProperlyDiscontinuousSMul (Γ : Type*) (T : Type*) [TopologicalSpace T] [S
451450
Prop where
452451
/-- Given two compact sets `K` and `L`, `γ • K ∩ L` is nonempty for finitely many `γ`. -/
453452
finite_disjoint_inter_image :
454-
∀ {K L : Set T}, IsCompact K → IsCompact L → Set.Finite { γ : Γ | (γ • ·) '' K ∩ L ≠ ∅ }
453+
∀ {K L : Set T}, IsCompact K → IsCompact L → Set.Finite { γ : Γ | ((γ • ·) '' K ∩ L).Nonempty }
455454

456455
/-- Class `ProperlyDiscontinuousVAdd Γ T` says that the additive action `(+ᵥ) : Γ → T → T`
457456
is properly discontinuous, that is, for any pair of compact sets `K, L` in `T`, only finitely many
@@ -461,20 +460,20 @@ class ProperlyDiscontinuousVAdd (Γ : Type*) (T : Type*) [TopologicalSpace T] [V
461460
Prop where
462461
/-- Given two compact sets `K` and `L`, `γ +ᵥ K ∩ L` is nonempty for finitely many `γ`. -/
463462
finite_disjoint_inter_image :
464-
∀ {K L : Set T}, IsCompact K → IsCompact L → Set.Finite { γ : Γ | (γ +ᵥ ·) '' K ∩ L ≠ ∅ }
463+
∀ {K L : Set T}, IsCompact K → IsCompact L → Set.Finite { γ : Γ | ((γ +ᵥ ·) '' K ∩ L).Nonempty }
465464

466465
attribute [to_additive] ProperlyDiscontinuousSMul
467466

467+
export ProperlyDiscontinuousSMul (finite_disjoint_inter_image)
468+
export ProperlyDiscontinuousVAdd (finite_disjoint_inter_image)
469+
468470
variable {Γ : Type*} [Group Γ] {T : Type*} [TopologicalSpace T] [MulAction Γ T]
469471

470472
/-- A finite group action is always properly discontinuous. -/
471473
@[to_additive /-- A finite group action is always properly discontinuous. -/]
472474
instance (priority := 100) Finite.to_properlyDiscontinuousSMul [Finite Γ] :
473475
ProperlyDiscontinuousSMul Γ T where finite_disjoint_inter_image _ _ := Set.toFinite _
474476

475-
export ProperlyDiscontinuousSMul (finite_disjoint_inter_image)
476-
export ProperlyDiscontinuousVAdd (finite_disjoint_inter_image)
477-
478477
/-- The quotient map by a group action is open, i.e. the quotient by a group action is an open
479478
quotient. -/
480479
@[to_additive /-- The quotient map by a group action is open, i.e. the quotient by a group
@@ -506,7 +505,7 @@ instance (priority := 100) t2Space_of_properlyDiscontinuousSMul_of_t2Space [T2Sp
506505
have hγx₀y₀ : ∀ γ : Γ, γ • x₀ ≠ y₀ := not_exists.mp (mt Quotient.sound hxy.symm :)
507506
obtain ⟨K₀, hK₀, K₀_in⟩ := exists_compact_mem_nhds x₀
508507
obtain ⟨L₀, hL₀, L₀_in⟩ := exists_compact_mem_nhds y₀
509-
let bad_Γ_set := { γ : Γ | (γ • ·) '' K₀ ∩ L₀ ≠ ∅ }
508+
let bad_Γ_set := { γ : Γ | ((γ • ·) '' K₀ ∩ L₀).Nonempty }
510509
have bad_Γ_finite : bad_Γ_set.Finite := finite_disjoint_inter_image (Γ := Γ) hK₀ hL₀
511510
choose u v hu hv u_v_disjoint using fun γ => t2_separation_nhds (hγx₀y₀ γ)
512511
let U₀₀ := ⋂ γ ∈ bad_Γ_set, (γ • ·) ⁻¹' u γ
@@ -523,7 +522,7 @@ instance (priority := 100) t2Space_of_properlyDiscontinuousSMul_of_t2Space [T2Sp
523522
by_cases H : γ ∈ bad_Γ_set
524523
· exact fun h => (u_v_disjoint γ).le_bot ⟨mem_iInter₂.mp x_in_U₀₀ γ H, mem_iInter₂.mp h.1 γ H⟩
525524
· rintro ⟨-, h'⟩
526-
simp only [bad_Γ_set, image_smul, Classical.not_not, mem_setOf_eq, Ne] at H
525+
simp only [bad_Γ_set, image_smul, not_nonempty_iff_eq_empty, mem_setOf_eq] at H
527526
exact eq_empty_iff_forall_notMem.mp H (γ • x) ⟨mem_image_of_mem _ x_in_K₀, h'⟩
528527

529528
/-- The quotient of a second countable space by a group action is second countable. -/

Mathlib/Topology/Algebra/Group/Basic.lean

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -995,7 +995,7 @@ theorem Subgroup.properlyDiscontinuousSMul_of_tendsto_cofinite (S : Subgroup G)
995995
convert H
996996
ext x
997997
simp only [image_smul, mem_setOf_eq, coe_subtype, mem_preimage, mem_image, Prod.exists]
998-
exact Set.smul_inter_ne_empty_iff' }
998+
exact Set.nonempty_iff_ne_empty.trans Set.smul_inter_ne_empty_iff' }
999999

10001000
/-- A subgroup `S` of a topological group `G` acts on `G` properly discontinuously on the right, if
10011001
it is discrete in the sense that `S ∩ K` is finite for all compact `K`. (See also
@@ -1022,7 +1022,7 @@ theorem Subgroup.properlyDiscontinuousSMul_opposite_of_tendsto_cofinite (S : Sub
10221022
convert H using 1
10231023
ext x
10241024
simp only [image_smul, mem_setOf_eq, mem_preimage, mem_image, Prod.exists]
1025-
exact Set.op_smul_inter_ne_empty_iff }
1025+
exact Set.nonempty_iff_ne_empty.trans Set.op_smul_inter_ne_empty_iff }
10261026

10271027
end
10281028

Mathlib/Topology/Algebra/ProperAction/ProperlyDiscontinuous.lean

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,7 @@ theorem properlyDiscontinuousSMul_iff_properSMul [T2Space X] [DiscreteTopology G
6161
have hK' : IsCompact K' := (hK.image continuous_fst).union (hK.image continuous_snd)
6262
let E := {g : G | Set.Nonempty ((g • ·) '' K' ∩ K')}
6363
-- The set `E` is finite because the action is properly discontinuous.
64-
have fin : Set.Finite E := by
65-
simp_rw [E, nonempty_iff_ne_empty]
66-
exact h.finite_disjoint_inter_image hK' hK'
64+
have fin : Set.Finite E := h.finite_disjoint_inter_image hK' hK'
6765
-- Therefore we can rewrite `f ⁻¹ (K' × K')` as a finite union of compact sets.
6866
have : (fun gx : G × X ↦ (gx.1 • gx.2, gx.2)) ⁻¹' (K' ×ˢ K') =
6967
⋃ g ∈ E, {g} ×ˢ ((g⁻¹ • ·) '' K' ∩ K') := by
@@ -88,7 +86,6 @@ theorem properlyDiscontinuousSMul_iff_properSMul [T2Space X] [DiscreteTopology G
8886
preimage_mono fun x hx ↦ ⟨Or.inl ⟨x, hx, rfl⟩, Or.inr ⟨x, hx, rfl⟩⟩
8987
· intro h; constructor
9088
intro K L hK hL
91-
simp_rw [← nonempty_iff_ne_empty]
9289
-- We want to show that a subset of `G` is finite, but as `G` has the discrete topology it
9390
-- is enough to show that this subset is compact.
9491
apply IsCompact.finite_of_discrete

0 commit comments

Comments
 (0)