-- Mathlib/Topology/Algebra/Group/Basic.lean
theorem Subgroup.properlyDiscontinuousSMul_opposite_of_tendsto_cofinite (S : Subgroup G)
    (hS : Tendsto S.subtype cofinite (cocompact G)) : ProperlyDiscontinuousSMul S.op G :=
  { finite_disjoint_inter_image

Proof state:
case h.e'_2.h
G : Type w
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : IsTopologicalGroup G
S : Subgroup G
hS : Tendsto (⇑S.subtype) cofinite (cocompact G)
K L : Set G
hK : IsCompact K
hL : IsCompact L
this : Continuous fun p => (p.1⁻¹, p.2)
H : (Subtype.val ⁻¹' ((fun a => a.1⁻¹ * a.2) '' K ×ˢ L)).Finite
x : ↥S
⊢ S.equivOp x • K ∩ L ≠ ∅ ↔ ∃ a b, (a, b) ∈ K ×ˢ L ∧ a⁻¹ * b = ↑x

Tactic:
exact Set.op_smul_inter_ne_empty_iff

Result:
no goals

Proof state:
G : Type w
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : IsTopologicalGroup G
S : Subgroup G
hS : Tendsto (⇑S.subtype) cofinite (cocompact G)
K L : Set G
hK : IsCompact K
hL : IsCompact L
this : Continuous fun p => (p.1⁻¹, p.2)
H : (⇑S.subtype ⁻¹' (((fun p => p.1 * p.2) ∘ fun p => (p.1⁻¹, p.2)) '' K ×ˢ L)ᶜ)ᶜ.Finite
⊢ {γ | (fun x => γ • x) '' K ∩ L ≠ ∅}.Finite

Tactic:
simp only [preimage_compl, compl_compl, coe_subtype, comp_apply] at H

Result:
G : Type w
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : IsTopologicalGroup G
S : Subgroup G
hS : Tendsto (⇑S.subtype) cofinite (cocompact G)
K L : Set G
hK : IsCompact K
hL : IsCompact L
this : Continuous fun p => (p.1⁻¹, p.2)
H : (Subtype.val ⁻¹' ((fun a => a.1⁻¹ * a.2) '' K ×ˢ L)).Finite
⊢ {γ | (fun x => γ • x) '' K ∩ L ≠ ∅}.Finite

Proof state:
case h.e'_2.h
G : Type w
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : IsTopologicalGroup G
S : Subgroup G
hS : Tendsto (⇑S.subtype) cofinite (cocompact G)
K L : Set G
hK : IsCompact K
hL : IsCompact L
this : Continuous fun p => (p.1⁻¹, p.2)
H : (Subtype.val ⁻¹' ((fun a => a.1⁻¹ * a.2) '' K ×ˢ L)).Finite
x : ↥S
⊢ x ∈ ⇑S.equivOp ⁻¹' {γ | (fun x => γ • x) '' K ∩ L ≠ ∅} ↔ x ∈ Subtype.val ⁻¹' ((fun a => a.1⁻¹ * a.2) '' K ×ˢ L)

Tactic:
simp only [image_smul, mem_setOf_eq, coe_subtype, mem_preimage, mem_image, Prod.exists]

Result:
case h.e'_2.h
G : Type w
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : IsTopologicalGroup G
S : Subgroup G
hS : Tendsto (⇑S.subtype) cofinite (cocompact G)
K L : Set G
hK : IsCompact K
hL : IsCompact L
this : Continuous fun p => (p.1⁻¹, p.2)
H : (Subtype.val ⁻¹' ((fun a => a.1⁻¹ * a.2) '' K ×ˢ L)).Finite
x : ↥S
⊢ S.equivOp x • K ∩ L ≠ ∅ ↔ ∃ a b, (a, b) ∈ K ×ˢ L ∧ a⁻¹ * b = ↑x

Proof state:
G : Type w
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : IsTopologicalGroup G
S : Subgroup G
hS : Tendsto (⇑S.subtype) cofinite (cocompact G)
⊢ ∀ {K L : Set G}, IsCompact K → IsCompact L → {γ | (fun x => γ • x) '' K ∩ L ≠ ∅}.Finite

Tactic:
intro K L hK hL

Result:
G : Type w
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : IsTopologicalGroup G
S : Subgroup G
hS : Tendsto (⇑S.subtype) cofinite (cocompact G)
K L : Set G
hK : IsCompact K
hL : IsCompact L
⊢ {γ | (fun x => γ • x) '' K ∩ L ≠ ∅}.Finite

Proof state:
case h.e'_2
G : Type w
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : IsTopologicalGroup G
S : Subgroup G
hS : Tendsto (⇑S.subtype) cofinite (cocompact G)
K L : Set G
hK : IsCompact K
hL : IsCompact L
this : Continuous fun p => (p.1⁻¹, p.2)
H : (Subtype.val ⁻¹' ((fun a => a.1⁻¹ * a.2) '' K ×ˢ L)).Finite
⊢ ⇑S.equivOp ⁻¹' {γ | (fun x => γ • x) '' K ∩ L ≠ ∅} = Subtype.val ⁻¹' ((fun a => a.1⁻¹ * a.2) '' K ×ˢ L)

Tactic:
ext x

Result:
case h.e'_2.h
G : Type w
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : IsTopologicalGroup G
S : Subgroup G
hS : Tendsto (⇑S.subtype) cofinite (cocompact G)
K L : Set G
hK : IsCompact K
hL : IsCompact L
this : Continuous fun p => (p.1⁻¹, p.2)
H : (Subtype.val ⁻¹' ((fun a => a.1⁻¹ * a.2) '' K ×ˢ L)).Finite
x : ↥S
⊢ x ∈ ⇑S.equivOp ⁻¹' {γ | (fun x => γ • x) '' K ∩ L ≠ ∅} ↔ x ∈ Subtype.val ⁻¹' ((fun a => a.1⁻¹ * a.2) '' K ×ˢ L)

Proof state:
G : Type w
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : IsTopologicalGroup G
S : Subgroup G
hS : Tendsto (⇑S.subtype) cofinite (cocompact G)
K L : Set G
hK : IsCompact K
hL : IsCompact L
⊢ {γ | (fun x => γ • x) '' K ∩ L ≠ ∅}.Finite

Tactic:
have : Continuous fun p : G × G => (p.1⁻¹, p.2) := continuous_inv.prodMap continuous_id

Result:
G : Type w
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : IsTopologicalGroup G
S : Subgroup G
hS : Tendsto (⇑S.subtype) cofinite (cocompact G)
K L : Set G
hK : IsCompact K
hL : IsCompact L
this : Continuous fun p => (p.1⁻¹, p.2)
⊢ {γ | (fun x => γ • x) '' K ∩ L ≠ ∅}.Finite

Proof state:
G : Type w
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : IsTopologicalGroup G
S : Subgroup G
hS : Tendsto (⇑S.subtype) cofinite (cocompact G)
K L : Set G
hK : IsCompact K
hL : IsCompact L
this : Continuous fun p => (p.1⁻¹, p.2)
H : (Subtype.val ⁻¹' ((fun a => a.1⁻¹ * a.2) '' K ×ˢ L)).Finite
⊢ {γ | (fun x => γ • x) '' K ∩ L ≠ ∅}.Finite

Tactic:
apply Finite.of_preimage _ (equivOp S).surjective

Result:
G : Type w
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : IsTopologicalGroup G
S : Subgroup G
hS : Tendsto (⇑S.subtype) cofinite (cocompact G)
K L : Set G
hK : IsCompact K
hL : IsCompact L
this : Continuous fun p => (p.1⁻¹, p.2)
H : (Subtype.val ⁻¹' ((fun a => a.1⁻¹ * a.2) '' K ×ˢ L)).Finite
⊢ (⇑S.equivOp ⁻¹' {γ | (fun x => γ • x) '' K ∩ L ≠ ∅}).Finite

Proof state:
G : Type w
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : IsTopologicalGroup G
S : Subgroup G
hS : Tendsto (⇑S.subtype) cofinite (cocompact G)
K L : Set G
hK : IsCompact K
hL : IsCompact L
this : Continuous fun p => (p.1⁻¹, p.2)
⊢ {γ | (fun x => γ • x) '' K ∩ L ≠ ∅}.Finite

Tactic:
have H : Set.Finite _ :=
  hS ((hK.prod hL).image (continuous_mul.comp this)).compl_mem_cocompact

Result:
G : Type w
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : IsTopologicalGroup G
S : Subgroup G
hS : Tendsto (⇑S.subtype) cofinite (cocompact G)
K L : Set G
hK : IsCompact K
hL : IsCompact L
this : Continuous fun p => (p.1⁻¹, p.2)
H : (⇑S.subtype ⁻¹' (((fun p => p.1 * p.2) ∘ fun p => (p.1⁻¹, p.2)) '' K ×ˢ L)ᶜ)ᶜ.Finite
⊢ {γ | (fun x => γ • x) '' K ∩ L ≠ ∅}.Finite

Proof state:
G : Type w
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : IsTopologicalGroup G
S : Subgroup G
hS : Tendsto (⇑S.subtype) cofinite (cocompact G)
K L : Set G
hK : IsCompact K
hL : IsCompact L
this : Continuous fun p => (p.1⁻¹, p.2)
H : (Subtype.val ⁻¹' ((fun a => a.1⁻¹ * a.2) '' K ×ˢ L)).Finite
⊢ (⇑S.equivOp ⁻¹' {γ | (fun x => γ • x) '' K ∩ L ≠ ∅}).Finite

Tactic:
convert H using 1

Result:
case h.e'_2
G : Type w
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : IsTopologicalGroup G
S : Subgroup G
hS : Tendsto (⇑S.subtype) cofinite (cocompact G)
K L : Set G
hK : IsCompact K
hL : IsCompact L
this : Continuous fun p => (p.1⁻¹, p.2)
H : (Subtype.val ⁻¹' ((fun a => a.1⁻¹ * a.2) '' K ×ˢ L)).Finite
⊢ ⇑S.equivOp ⁻¹' {γ | (fun x => γ • x) '' K ∩ L ≠ ∅} = Subtype.val ⁻¹' ((fun a => a.1⁻¹ * a.2) '' K ×ˢ L)