Theorem: MulAction.IsBlock.image
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 : Type u_3
Y : Type u_4
inst✝¹ : Group H
inst✝ : MulAction H Y
φ : G →* H
j : X →ₑ[⇑φ] Y
hφ : Function.Surjective ⇑φ
hj : Function.Injective ⇑j
B : Set X
hB : IsBlock G B
⊢ IsBlock H (⇑j '' B)
state_after: G : Type u_1
inst✝³ : Group G
X : Type u_2
inst✝² : MulAction G X
H : Type u_3
Y : Type u_4
inst✝¹ : Group H
inst✝ : MulAction H Y
φ : G →* H
j : X →ₑ[⇑φ] Y
hφ : Function.Surjective ⇑φ
hj : Function.Injective ⇑j
B : Set X
hB : IsBlock G B
⊢ ∀ (g g' : H), g • ⇑j '' B = g' • ⇑j '' B ∨ Disjoint (g • ⇑j '' B) (g' • ⇑j '' B)
tactic: rw [IsBlock.def]
state_before: G : Type u_1
inst✝³ : Group G
X : Type u_2
inst✝² : MulAction G X
H : Type u_3
Y : Type u_4
inst✝¹ : Group H
inst✝ : MulAction H Y
φ : G →* H
j : X →ₑ[⇑φ] Y
hφ : Function.Surjective ⇑φ
hj : Function.Injective ⇑j
B : Set X
hB : IsBlock G B
⊢ ∀ (g g' : H), g • ⇑j '' B = g' • ⇑j '' B ∨ Disjoint (g • ⇑j '' B) (g' • ⇑j '' B)
state_after: G : Type u_1
inst✝³ : Group G
X : Type u_2
inst✝² : MulAction G X
H : Type u_3
Y : Type u_4
inst✝¹ : Group H
inst✝ : MulAction H Y
φ : G →* H
j : X →ₑ[⇑φ] Y
hφ : Function.Surjective ⇑φ
hj : Function.Injective ⇑j
B : Set X
hB : IsBlock G B
h h' : H
⊢ h • ⇑j '' B = h' • ⇑j '' B ∨ Disjoint (h • ⇑j '' B) (h' • ⇑j '' B)
tactic: intro h h'
state_before: G : Type u_1
inst✝³ : Group G
X : Type u_2
inst✝² : MulAction G X
H : Type u_3
Y : Type u_4
inst✝¹ : Group H
inst✝ : MulAction H Y
φ : G →* H
j : X →ₑ[⇑φ] Y
hφ : Function.Surjective ⇑φ
hj : Function.Injective ⇑j
B : Set X
hB : IsBlock G B
h h' : H
⊢ h • ⇑j '' B = h' • ⇑j '' B ∨ Disjoint (h • ⇑j '' B) (h' • ⇑j '' B)
state_after: case intro
G : Type u_1
inst✝³ : Group G
X : Type u_2
inst✝² : MulAction G X
H : Type u_3
Y : Type u_4
inst✝¹ : Group H
inst✝ : MulAction H Y
φ : G →* H
j : X →ₑ[⇑φ] Y
hφ : Function.Surjective ⇑φ
hj : Function.Injective ⇑j
B : Set X
hB : IsBlock G B
h' : H
g : G
⊢ φ g • ⇑j '' B = h' • ⇑j '' B ∨ Disjoint (φ g • ⇑j '' B) (h' • ⇑j '' B)
tactic: obtain ⟨g, rfl⟩ := hφ h
state_before: case intro
G : Type u_1
inst✝³ : Group G
X : Type u_2
inst✝² : MulAction G X
H : Type u_3
Y : Type u_4
inst✝¹ : Group H
inst✝ : MulAction H Y
φ : G →* H
j : X →ₑ[⇑φ] Y
hφ : Function.Surjective ⇑φ
hj : Function.Injective ⇑j
B : Set X
hB : IsBlock G B
h' : H
g : G
⊢ φ g • ⇑j '' B = h' • ⇑j '' B ∨ Disjoint (φ g • ⇑j '' B) (h' • ⇑j '' B)
state_after: case intro.intro
G : Type u_1
inst✝³ : Group G
X : Type u_2
inst✝² : MulAction G X
H : Type u_3
Y : Type u_4
inst✝¹ : Group H
inst✝ : MulAction H Y
φ : G →* H
j : X →ₑ[⇑φ] Y
hφ : Function.Surjective ⇑φ
hj : Function.Injective ⇑j
B : Set X
hB : IsBlock G B
g g' : G
⊢ φ g • ⇑j '' B = φ g' • ⇑j '' B ∨ Disjoint (φ g • ⇑j '' B) (φ g' • ⇑j '' B)
tactic: obtain ⟨g', rfl⟩ := hφ h'
state_before: case intro.intro
G : Type u_1
inst✝³ : Group G
X : Type u_2
inst✝² : MulAction G X
H : Type u_3
Y : Type u_4
inst✝¹ : Group H
inst✝ : MulAction H Y
φ : G →* H
j : X →ₑ[⇑φ] Y
hφ : Function.Surjective ⇑φ
hj : Function.Injective ⇑j
B : Set X
hB : IsBlock G B
g g' : G
⊢ φ g • ⇑j '' B = φ g' • ⇑j '' B ∨ Disjoint (φ g • ⇑j '' B) (φ g' • ⇑j '' B)
state_after: case intro.intro
G : Type u_1
inst✝³ : Group G
X : Type u_2
inst✝² : MulAction G X
H : Type u_3
Y : Type u_4
inst✝¹ : Group H
inst✝ : MulAction H Y
φ : G →* H
j : X →ₑ[⇑φ] Y
hφ : Function.Surjective ⇑φ
hj : Function.Injective ⇑j
B : Set X
hB : IsBlock G B
g g' : G
⊢ ⇑j '' (g • B) = ⇑j '' (g' • B) ∨ Disjoint (⇑j '' (g • B)) (⇑j '' (g' • B))
tactic: simp only [← image_smul_setₛₗ X Y φ j]
state_before: case intro.intro
G : Type u_1
inst✝³ : Group G
X : Type u_2
inst✝² : MulAction G X
H : Type u_3
Y : Type u_4
inst✝¹ : Group H
inst✝ : MulAction H Y
φ : G →* H
j : X →ₑ[⇑φ] Y
hφ : Function.Surjective ⇑φ
hj : Function.Injective ⇑j
B : Set X
hB : IsBlock G B
g g' : G
⊢ ⇑j '' (g • B) = ⇑j '' (g' • B) ∨ Disjoint (⇑j '' (g • B)) (⇑j '' (g' • B))
state_after: case intro.intro.inl
G : Type u_1
inst✝³ : Group G
X : Type u_2
inst✝² : MulAction G X
H : Type u_3
Y : Type u_4
inst✝¹ : Group H
inst✝ : MulAction H Y
φ : G →* H
j : X →ₑ[⇑φ] Y
hφ : Function.Surjective ⇑φ
hj : Function.Injective ⇑j
B : Set X
hB : IsBlock G B
g g' : G
h : g • B = g' • B
⊢ ⇑j '' (g • B) = ⇑j '' (g' • B) ∨ Disjoint (⇑j '' (g • B)) (⇑j '' (g' • B))

case intro.intro.inr
G : Type u_1
inst✝³ : Group G
X : Type u_2
inst✝² : MulAction G X
H : Type u_3
Y : Type u_4
inst✝¹ : Group H
inst✝ : MulAction H Y
φ : G →* H
j : X →ₑ[⇑φ] Y
hφ : Function.Surjective ⇑φ
hj : Function.Injective ⇑j
B : Set X
hB : IsBlock G B
g g' : G
h : Disjoint (g • B) (g' • B)
⊢ ⇑j '' (g • B) = ⇑j '' (g' • B) ∨ Disjoint (⇑j '' (g • B)) (⇑j '' (g' • B))
tactic: cases' IsBlock.def.mp hB g g' with h h