Theorem: exists_smul_not_mem_of_subset_orbit_closure
File: Mathlib/GroupTheory/Perm/ClosureSwap.lean

tactic: have key0 : ¬ closure S ≤ stabilizer G T := by
  have ⟨b, hb⟩ := nonempty
  obtain ⟨σ, rfl⟩ := subset hb
  contrapose! not_mem with h
  exact smul_mem_smul_set_iff.mp ((h σ.2).symm ▸ hb)
state_before: G : Type u_1
α : Type u_2
inst✝² : Group G
inst✝¹ : MulAction G α
inst✝ : DecidableEq α
S : Set G
T : Set α
a : α
hS : ∀ g ∈ S, g⁻¹ ∈ S
subset : T ⊆ orbit (↥(closure S)) a
not_mem : a ∉ T
nonempty : T.Nonempty
⊢ ∃ σ ∈ S, ∃ a ∈ T, σ • a ∉ T
state_after: G : Type u_1
α : Type u_2
inst✝² : Group G
inst✝¹ : MulAction G α
inst✝ : DecidableEq α
S : Set G
T : Set α
a : α
hS : ∀ g ∈ S, g⁻¹ ∈ S
subset : T ⊆ orbit (↥(closure S)) a
not_mem : a ∉ T
nonempty : T.Nonempty
key0 : ¬closure S ≤ stabilizer G T
⊢ ∃ σ ∈ S, ∃ a ∈ T, σ • a ∉ T

tactic: contrapose! key0
state_before: G : Type u_1
α : Type u_2
inst✝² : Group G
inst✝¹ : MulAction G α
inst✝ : DecidableEq α
S : Set G
T : Set α
a : α
hS : ∀ g ∈ S, g⁻¹ ∈ S
subset : T ⊆ orbit (↥(closure S)) a
not_mem : a ∉ T
nonempty : T.Nonempty
key0 : ¬closure S ≤ stabilizer G T
⊢ ∃ σ ∈ S, ∃ a ∈ T, σ • a ∉ T
state_after: G : Type u_1
α : Type u_2
inst✝² : Group G
inst✝¹ : MulAction G α
inst✝ : DecidableEq α
S : Set G
T : Set α
a : α
hS : ∀ g ∈ S, g⁻¹ ∈ S
subset : T ⊆ orbit (↥(closure S)) a
not_mem : a ∉ T
nonempty : T.Nonempty
key0 : ∀ σ ∈ S, ∀ a ∈ T, σ • a ∈ T
⊢ closure S ≤ stabilizer G T

tactic: refine (closure_le _).mpr fun σ hσ ↦ ?_
state_before: G : Type u_1
α : Type u_2
inst✝² : Group G
inst✝¹ : MulAction G α
inst✝ : DecidableEq α
S : Set G
T : Set α
a : α
hS : ∀ g ∈ S, g⁻¹ ∈ S
subset : T ⊆ orbit (↥(closure S)) a
not_mem : a ∉ T
nonempty : T.Nonempty
key0 : ∀ σ ∈ S, ∀ a ∈ T, σ • a ∈ T
⊢ closure S ≤ stabilizer G T
state_after: G : Type u_1
α : Type u_2
inst✝² : Group G
inst✝¹ : MulAction G α
inst✝ : DecidableEq α
S : Set G
T : Set α
a : α
hS : ∀ g ∈ S, g⁻¹ ∈ S
subset : T ⊆ orbit (↥(closure S)) a
not_mem : a ∉ T
nonempty : T.Nonempty
key0 : ∀ σ ∈ S, ∀ a ∈ T, σ • a ∈ T
σ : G
hσ : σ ∈ S
⊢ σ ∈ ↑(stabilizer G T)

tactic: simp_rw [SetLike.mem_coe, mem_stabilizer_iff, Set.ext_iff, mem_smul_set_iff_inv_smul_mem]
state_before: G : Type u_1
α : Type u_2
inst✝² : Group G
inst✝¹ : MulAction G α
inst✝ : DecidableEq α
S : Set G
T : Set α
a : α
hS : ∀ g ∈ S, g⁻¹ ∈ S
subset : T ⊆ orbit (↥(closure S)) a
not_mem : a ∉ T
nonempty : T.Nonempty
key0 : ∀ σ ∈ S, ∀ a ∈ T, σ • a ∈ T
σ : G
hσ : σ ∈ S
⊢ σ ∈ ↑(stabilizer G T)
state_after: G : Type u_1
α : Type u_2
inst✝² : Group G
inst✝¹ : MulAction G α
inst✝ : DecidableEq α
S : Set G
T : Set α
a : α
hS : ∀ g ∈ S, g⁻¹ ∈ S
subset : T ⊆ orbit (↥(closure S)) a
not_mem : a ∉ T
nonempty : T.Nonempty
key0 : ∀ σ ∈ S, ∀ a ∈ T, σ • a ∈ T
σ : G
hσ : σ ∈ S
⊢ ∀ (x : α), σ⁻¹ • x ∈ T ↔ x ∈ T

tactic: exact fun a ↦ ⟨fun h ↦ smul_inv_smul σ a ▸ key0 σ hσ (σ⁻¹ • a) h, key0 σ⁻¹ (hS σ hσ) a⟩
state_before: G : Type u_1
α : Type u_2
inst✝² : Group G
inst✝¹ : MulAction G α
inst✝ : DecidableEq α
S : Set G
T : Set α
a : α
hS : ∀ g ∈ S, g⁻¹ ∈ S
subset : T ⊆ orbit (↥(closure S)) a
not_mem : a ∉ T
nonempty : T.Nonempty
key0 : ∀ σ ∈ S, ∀ a ∈ T, σ • a ∈ T
σ : G
hσ : σ ∈ S
⊢ ∀ (x : α), σ⁻¹ • x ∈ T ↔ x ∈ T
state_after: no goals

tactic: have ⟨b, hb⟩ := nonempty
state_before: G : Type u_1
α : Type u_2
inst✝² : Group G
inst✝¹ : MulAction G α
inst✝ : DecidableEq α
S : Set G
T : Set α
a : α
hS : ∀ g ∈ S, g⁻¹ ∈ S
subset : T ⊆ orbit (↥(closure S)) a
not_mem : a ∉ T
nonempty : T.Nonempty
⊢ ¬closure S ≤ stabilizer G T
state_after: G : Type u_1
α : Type u_2
inst✝² : Group G
inst✝¹ : MulAction G α
inst✝ : DecidableEq α
S : Set G
T : Set α
a : α
hS : ∀ g ∈ S, g⁻¹ ∈ S
subset : T ⊆ orbit (↥(closure S)) a
not_mem : a ∉ T
nonempty : T.Nonempty
b : α
hb : b ∈ T
⊢ ¬closure S ≤ stabilizer G T

tactic: obtain ⟨σ, rfl⟩ := subset hb
state_before: G : Type u_1
α : Type u_2
inst✝² : Group G
inst✝¹ : MulAction G α
inst✝ : DecidableEq α
S : Set G
T : Set α
a : α
hS : ∀ g ∈ S, g⁻¹ ∈ S
subset : T ⊆ orbit (↥(closure S)) a
not_mem : a ∉ T
nonempty : T.Nonempty
b : α
hb : b ∈ T
⊢ ¬closure S ≤ stabilizer G T
state_after: case intro
G : Type u_1
α : Type u_2
inst✝² : Group G
inst✝¹ : MulAction G α
inst✝ : DecidableEq α
S : Set G
T : Set α
a : α
hS : ∀ g ∈ S, g⁻¹ ∈ S
subset : T ⊆ orbit (↥(closure S)) a
not_mem : a ∉ T
nonempty : T.Nonempty
σ : ↥(closure S)
hb : (fun m => m • a) σ ∈ T
⊢ ¬closure S ≤ stabilizer G T

tactic: contrapose! not_mem with h
state_before: case intro
G : Type u_1
α : Type u_2
inst✝² : Group G
inst✝¹ : MulAction G α
inst✝ : DecidableEq α
S : Set G
T : Set α
a : α
hS : ∀ g ∈ S, g⁻¹ ∈ S
subset : T ⊆ orbit (↥(closure S)) a
not_mem : a ∉ T
nonempty : T.Nonempty
σ : ↥(closure S)
hb : (fun m => m • a) σ ∈ T
⊢ ¬closure S ≤ stabilizer G T
state_after: case intro
G : Type u_1
α : Type u_2
inst✝² : Group G
inst✝¹ : MulAction G α
inst✝ : DecidableEq α
S : Set G
T : Set α
a : α
hS : ∀ g ∈ S, g⁻¹ ∈ S
subset : T ⊆ orbit (↥(closure S)) a
nonempty : T.Nonempty
σ : ↥(closure S)
hb : (fun m => m • a) σ ∈ T
h : closure S ≤ stabilizer G T
⊢ a ∈ T

tactic: exact smul_mem_smul_set_iff.mp ((h σ.2).symm ▸ hb)
state_before: case intro
G : Type u_1
α : Type u_2
inst✝² : Group G
inst✝¹ : MulAction G α
inst✝ : DecidableEq α
S : Set G
T : Set α
a : α
hS : ∀ g ∈ S, g⁻¹ ∈ S
subset : T ⊆ orbit (↥(closure S)) a
nonempty : T.Nonempty
σ : ↥(closure S)
hb : (fun m => m • a) σ ∈ T
h : closure S ≤ stabilizer G T
⊢ a ∈ T
state_after: no goals