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

tactic: rw [IsBlock.mk_notempty_one]
state_before: G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B : Set X
⊢ IsBlock G B ↔ ∀ (g : G), ∀ a ∈ B, g • a ∈ B → g • B = B
state_after: G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B : Set X
⊢ (∀ (g : G), g • B ∩ B ≠ ∅ → g • B = B) ↔ ∀ (g : G), ∀ a ∈ B, g • a ∈ B → g • B = B

tactic: simp only [← Set.nonempty_iff_ne_empty, Set.nonempty_def, Set.mem_inter_iff,
  exists_imp, and_imp, Set.mem_smul_set_iff_inv_smul_mem]
state_before: G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B : Set X
⊢ (∀ (g : G), g • B ∩ B ≠ ∅ → g • B = B) ↔ ∀ (g : G), ∀ a ∈ B, g • a ∈ B → g • B = B
state_after: G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B : Set X
⊢ (∀ (g : G) (x : X), g⁻¹ • x ∈ B → x ∈ B → g • B = B) ↔ ∀ (g : G), ∀ a ∈ B, g • a ∈ B → g • B = B

tactic: constructor
state_before: G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B : Set X
⊢ (∀ (g : G) (x : X), g⁻¹ • x ∈ B → x ∈ B → g • B = B) ↔ ∀ (g : G), ∀ a ∈ B, g • a ∈ B → g • B = B
state_after: case mp
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B : Set X
⊢ (∀ (g : G) (x : X), g⁻¹ • x ∈ B → x ∈ B → g • B = B) → ∀ (g : G), ∀ a ∈ B, g • a ∈ B → g • B = B

case mpr
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B : Set X
⊢ (∀ (g : G), ∀ a ∈ B, g • a ∈ B → g • B = B) → ∀ (g : G) (x : X), g⁻¹ • x ∈ B → x ∈ B → g • B = B

tactic: intro H g a ha hga
state_before: case mp
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B : Set X
⊢ (∀ (g : G) (x : X), g⁻¹ • x ∈ B → x ∈ B → g • B = B) → ∀ (g : G), ∀ a ∈ B, g • a ∈ B → g • B = B
state_after: case mp
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B : Set X
H : ∀ (g : G) (x : X), g⁻¹ • x ∈ B → x ∈ B → g • B = B
g : G
a : X
ha : a ∈ B
hga : g • a ∈ B
⊢ g • B = B

tactic: apply H g (g • a) _ hga
state_before: case mp
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B : Set X
H : ∀ (g : G) (x : X), g⁻¹ • x ∈ B → x ∈ B → g • B = B
g : G
a : X
ha : a ∈ B
hga : g • a ∈ B
⊢ g • B = B
state_after: G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B : Set X
H : ∀ (g : G) (x : X), g⁻¹ • x ∈ B → x ∈ B → g • B = B
g : G
a : X
ha : a ∈ B
hga : g • a ∈ B
⊢ g⁻¹ • g • a ∈ B

tactic: simpa only [inv_smul_smul] using ha
state_before: G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B : Set X
H : ∀ (g : G) (x : X), g⁻¹ • x ∈ B → x ∈ B → g • B = B
g : G
a : X
ha : a ∈ B
hga : g • a ∈ B
⊢ g⁻¹ • g • a ∈ B
state_after: no goals

tactic: intro H g a ha hga
state_before: case mpr
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B : Set X
⊢ (∀ (g : G), ∀ a ∈ B, g • a ∈ B → g • B = B) → ∀ (g : G) (x : X), g⁻¹ • x ∈ B → x ∈ B → g • B = B
state_after: case mpr
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B : Set X
H : ∀ (g : G), ∀ a ∈ B, g • a ∈ B → g • B = B
g : G
a : X
ha : g⁻¹ • a ∈ B
hga : a ∈ B
⊢ g • B = B

tactic: rw [← eq_inv_smul_iff, eq_comm]
state_before: case mpr
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B : Set X
H : ∀ (g : G), ∀ a ∈ B, g • a ∈ B → g • B = B
g : G
a : X
ha : g⁻¹ • a ∈ B
hga : a ∈ B
⊢ g • B = B
state_after: case mpr
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B : Set X
H : ∀ (g : G), ∀ a ∈ B, g • a ∈ B → g • B = B
g : G
a : X
ha : g⁻¹ • a ∈ B
hga : a ∈ B
⊢ g⁻¹ • B = B

tactic: exact H g⁻¹ a hga ha
state_before: case mpr
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B : Set X
H : ∀ (g : G), ∀ a ∈ B, g • a ∈ B → g • B = B
g : G
a : X
ha : g⁻¹ • a ∈ B
hga : a ∈ B
⊢ g⁻¹ • B = B
state_after: no goals