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

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
⊢ 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: 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
⊢ ∀ (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: obtain ⟨g, rfl⟩ := 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: 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
⊢ φ 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: cases' IsBlock.def.mp hB g g' with 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
⊢ ⇑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: left
state_before: 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))
state_after: case intro.intro.inl.h
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)

tactic: rw [h]
state_before: case intro.intro.inl.h
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)
state_after: no goals

tactic: right
state_before: 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))
state_after: case intro.intro.inr.h
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)
⊢ Disjoint (⇑j '' (g • B)) (⇑j '' (g' • B))

tactic: exact Set.disjoint_image_of_injective hj h
state_before: case intro.intro.inr.h
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)
⊢ Disjoint (⇑j '' (g • B)) (⇑j '' (g' • B))
state_after: no goals