Theorem: MulAction.IsBlock.of_orbit
File: Mathlib/GroupTheory/GroupAction/Blocks.lean

Proof steps:
state_before: G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
H : Subgroup G
a : X
hH : stabilizer G a ≤ H
⊢ IsBlock G (orbit (↥H) a)
state_after: G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
H : Subgroup G
a : X
hH : stabilizer G a ≤ H
⊢ ∀ (g : G), (∃ x ∈ g • orbit (↥H) a, x ∈ orbit (↥H) a) → g • orbit (↥H) a = orbit (↥H) a
tactic: simp_rw [IsBlock.def_one, or_iff_not_imp_right, Set.not_disjoint_iff]
state_before: G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
H : Subgroup G
a : X
hH : stabilizer G a ≤ H
⊢ ∀ (g : G), (∃ x ∈ g • orbit (↥H) a, x ∈ orbit (↥H) a) → g • orbit (↥H) a = orbit (↥H) a
state_after: case intro.intro.intro.intro.intro.intro
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
H : Subgroup G
a : X
hH : stabilizer G a ≤ H
g : G
h₁ h₂ : ↥H
h : (fun x => g • x) ((fun m => m • a) h₁) = (fun m => m • a) h₂
⊢ g • orbit (↥H) a = orbit (↥H) a
tactic: rintro g ⟨-, ⟨-, ⟨h₁, rfl⟩, h⟩, ⟨h₂, rfl⟩⟩
state_before: case intro.intro.intro.intro.intro.intro
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
H : Subgroup G
a : X
hH : stabilizer G a ≤ H
g : G
h₁ h₂ : ↥H
h : (fun x => g • x) ((fun m => m • a) h₁) = (fun m => m • a) h₂
⊢ g • orbit (↥H) a = orbit (↥H) a
state_after: case intro.intro.intro.intro.intro.intro
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
H : Subgroup G
a : X
hH : stabilizer G a ≤ H
g : G
h₁ h₂ : ↥H
h : (fun x => g • x) ((fun m => m • a) h₁) = (fun m => m • a) h₂
⊢ g ∈ H
tactic: suffices g ∈ H by
    rw [← Subgroup.coe_mk H g this, ← H.smul_def, smul_orbit (⟨g, this⟩ : H) a]
state_before: case intro.intro.intro.intro.intro.intro
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
H : Subgroup G
a : X
hH : stabilizer G a ≤ H
g : G
h₁ h₂ : ↥H
h : (fun x => g • x) ((fun m => m • a) h₁) = (fun m => m • a) h₂
⊢ g ∈ H
state_after: case intro.intro.intro.intro.intro.intro
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
H : Subgroup G
a : X
hH : stabilizer G a ≤ H
g : G
h₁ h₂ : ↥H
h : (fun x => g • x) ((fun m => m • a) h₁) = (fun m => m • a) h₂
⊢ ↑h₂⁻¹ * g * ↑h₁ ∈ H
tactic: rw [← mul_mem_cancel_left h₂⁻¹.2, ← mul_mem_cancel_right h₁.2]
state_before: case intro.intro.intro.intro.intro.intro
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
H : Subgroup G
a : X
hH : stabilizer G a ≤ H
g : G
h₁ h₂ : ↥H
h : (fun x => g • x) ((fun m => m • a) h₁) = (fun m => m • a) h₂
⊢ ↑h₂⁻¹ * g * ↑h₁ ∈ H
state_after: case intro.intro.intro.intro.intro.intro.a
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
H : Subgroup G
a : X
hH : stabilizer G a ≤ H
g : G
h₁ h₂ : ↥H
h : (fun x => g • x) ((fun m => m • a) h₁) = (fun m => m • a) h₂
⊢ ↑h₂⁻¹ * g * ↑h₁ ∈ stabilizer G a
tactic: apply hH
state_before: case intro.intro.intro.intro.intro.intro.a
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
H : Subgroup G
a : X
hH : stabilizer G a ≤ H
g : G
h₁ h₂ : ↥H
h : (fun x => g • x) ((fun m => m • a) h₁) = (fun m => m • a) h₂
⊢ ↑h₂⁻¹ * g * ↑h₁ ∈ stabilizer G a
state_after: case intro.intro.intro.intro.intro.intro.a
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
H : Subgroup G
a : X
hH : stabilizer G a ≤ H
g : G
h₁ h₂ : ↥H
h : (fun x => g • x) ((fun m => m • a) h₁) = (fun m => m • a) h₂
⊢ g • ↑h₁ • a = ↑h₂ • a
tactic: simp only [mem_stabilizer_iff, InvMemClass.coe_inv, mul_smul, inv_smul_eq_iff]
state_before: case intro.intro.intro.intro.intro.intro.a
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
H : Subgroup G
a : X
hH : stabilizer G a ≤ H
g : G
h₁ h₂ : ↥H
h : (fun x => g • x) ((fun m => m • a) h₁) = (fun m => m • a) h₂
⊢ g • ↑h₁ • a = ↑h₂ • a
state_after: no goals
tactic: exact h