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

tactic: simp_rw [IsBlock.mk_notempty_one, ← Set.nonempty_iff_ne_empty]
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} {b : X}, b ∈ B → b ∈ g • 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).Nonempty → g • B = B) ↔ ∀ {g : G} {b : X}, b ∈ B → b ∈ g • 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), (g • B ∩ B).Nonempty → g • B = B) ↔ ∀ {g : G} {b : X}, b ∈ B → b ∈ g • 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), (g • B ∩ B).Nonempty → g • B = B) → ∀ {g : G} {b : X}, b ∈ B → b ∈ g • 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} {b : X}, b ∈ B → b ∈ g • B → g • B ⊆ B) → ∀ (g : G), (g • B ∩ B).Nonempty → g • B = B

tactic: intro hB g b hb hgb
state_before: case mp
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B : Set X
⊢ (∀ (g : G), (g • B ∩ B).Nonempty → g • B = B) → ∀ {g : G} {b : X}, b ∈ B → b ∈ g • 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
hB : ∀ (g : G), (g • B ∩ B).Nonempty → g • B = B
g : G
b : X
hb : b ∈ B
hgb : b ∈ g • B
⊢ g • B ⊆ B

tactic: exact (hB g ⟨b, hgb, hb⟩).le
state_before: case mp
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B : Set X
hB : ∀ (g : G), (g • B ∩ B).Nonempty → g • B = B
g : G
b : X
hb : b ∈ B
hgb : b ∈ g • B
⊢ g • B ⊆ B
state_after: no goals

tactic: intro hB g ⟨b, hb', hb⟩
state_before: case mpr
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B : Set X
⊢ (∀ {g : G} {b : X}, b ∈ B → b ∈ g • B → g • B ⊆ B) → ∀ (g : G), (g • B ∩ B).Nonempty → 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
hB : ∀ {g : G} {b : X}, b ∈ B → b ∈ g • B → g • B ⊆ B
g : G
b : X
hb' : b ∈ g • B
hb : b ∈ B
⊢ g • B = B

tactic: apply le_antisymm (hB hb hb')
state_before: case mpr
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B : Set X
hB : ∀ {g : G} {b : X}, b ∈ B → b ∈ g • B → g • B ⊆ B
g : G
b : X
hb' : b ∈ g • B
hb : b ∈ 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
hB : ∀ {g : G} {b : X}, b ∈ B → b ∈ g • B → g • B ⊆ B
g : G
b : X
hb' : b ∈ g • B
hb : b ∈ B
⊢ B ≤ g • B

tactic: suffices g⁻¹ • B ≤ B by
  rw [Set.le_iff_subset] at this ⊢
  rwa [← inv_inv g, ← Set.set_smul_subset_iff]
state_before: case mpr
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B : Set X
hB : ∀ {g : G} {b : X}, b ∈ B → b ∈ g • B → g • B ⊆ B
g : G
b : X
hb' : b ∈ g • B
hb : b ∈ B
⊢ B ≤ g • B
state_after: case mpr
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B : Set X
hB : ∀ {g : G} {b : X}, b ∈ B → b ∈ g • B → g • B ⊆ B
g : G
b : X
hb' : b ∈ g • B
hb : b ∈ B
⊢ g⁻¹ • B ≤ B

tactic: exact hB (Set.mem_smul_set_iff_inv_smul_mem.mp hb') (Set.smul_mem_smul_set_iff.mpr hb)
state_before: case mpr
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B : Set X
hB : ∀ {g : G} {b : X}, b ∈ B → b ∈ g • B → g • B ⊆ B
g : G
b : X
hb' : b ∈ g • B
hb : b ∈ B
⊢ g⁻¹ • B ≤ B
state_after: no goals

tactic: rw [Set.le_iff_subset] at this ⊢
state_before: G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B : Set X
hB : ∀ {g : G} {b : X}, b ∈ B → b ∈ g • B → g • B ⊆ B
g : G
b : X
hb' : b ∈ g • B
hb : b ∈ B
this : g⁻¹ • B ≤ B
⊢ B ≤ g • B
state_after: G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B : Set X
hB : ∀ {g : G} {b : X}, b ∈ B → b ∈ g • B → g • B ⊆ B
g : G
b : X
hb' : b ∈ g • B
hb : b ∈ B
this : g⁻¹ • B ⊆ B
⊢ B ⊆ g • B

tactic: rwa [← inv_inv g, ← Set.set_smul_subset_iff]
state_before: G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B : Set X
hB : ∀ {g : G} {b : X}, b ∈ B → b ∈ g • B → g • B ⊆ B
g : G
b : X
hb' : b ∈ g • B
hb : b ∈ B
this : g⁻¹ • B ⊆ B
⊢ B ⊆ g • B
state_after: no goals