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

tactic: rw [IsBlock.def_one]
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
φ : H → G
j : Y →ₑ[φ] X
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
φ : H → G
j : Y →ₑ[φ] X
B : Set X
hB : IsBlock G B
⊢ ∀ (g : H), g • ⇑j ⁻¹' B = ⇑j ⁻¹' B ∨ Disjoint (g • ⇑j ⁻¹' B) (⇑j ⁻¹' B)

tactic: intro g
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
φ : H → G
j : Y →ₑ[φ] X
B : Set X
hB : IsBlock G B
⊢ ∀ (g : H), g • ⇑j ⁻¹' B = ⇑j ⁻¹' B ∨ Disjoint (g • ⇑j ⁻¹' B) (⇑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
φ : H → G
j : Y →ₑ[φ] X
B : Set X
hB : IsBlock G B
g : H
⊢ g • ⇑j ⁻¹' B = ⇑j ⁻¹' B ∨ Disjoint (g • ⇑j ⁻¹' B) (⇑j ⁻¹' B)

tactic: rw [← Group.preimage_smul_setₛₗ Y X φ j]
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
φ : H → G
j : Y →ₑ[φ] X
B : Set X
hB : IsBlock G B
g : H
⊢ g • ⇑j ⁻¹' B = ⇑j ⁻¹' B ∨ Disjoint (g • ⇑j ⁻¹' B) (⇑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
φ : H → G
j : Y →ₑ[φ] X
B : Set X
hB : IsBlock G B
g : H
⊢ ⇑j ⁻¹' (φ g • B) = ⇑j ⁻¹' B ∨ Disjoint (⇑j ⁻¹' (φ g • B)) (⇑j ⁻¹' B)

tactic: apply (hB.smul_eq_or_disjoint (φ g)).imp
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
φ : H → G
j : Y →ₑ[φ] X
B : Set X
hB : IsBlock G B
g : H
⊢ ⇑j ⁻¹' (φ g • B) = ⇑j ⁻¹' B ∨ Disjoint (⇑j ⁻¹' (φ g • B)) (⇑j ⁻¹' B)
state_after: case f
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
φ : H → G
j : Y →ₑ[φ] X
B : Set X
hB : IsBlock G B
g : H
⊢ φ g • B = B → ⇑j ⁻¹' (φ g • B) = ⇑j ⁻¹' B

case g
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
φ : H → G
j : Y →ₑ[φ] X
B : Set X
hB : IsBlock G B
g : H
⊢ Disjoint (φ g • B) B → Disjoint (⇑j ⁻¹' (φ g • B)) (⇑j ⁻¹' B)

tactic: intro heq
state_before: case f
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
φ : H → G
j : Y →ₑ[φ] X
B : Set X
hB : IsBlock G B
g : H
⊢ φ g • B = B → ⇑j ⁻¹' (φ g • B) = ⇑j ⁻¹' B
state_after: case f
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
φ : H → G
j : Y →ₑ[φ] X
B : Set X
hB : IsBlock G B
g : H
heq : φ g • B = B
⊢ ⇑j ⁻¹' (φ g • B) = ⇑j ⁻¹' B

tactic: rw [heq]
state_before: case f
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
φ : H → G
j : Y →ₑ[φ] X
B : Set X
hB : IsBlock G B
g : H
heq : φ g • B = B
⊢ ⇑j ⁻¹' (φ g • B) = ⇑j ⁻¹' B
state_after: no goals

tactic: exact Disjoint.preimage _
state_before: case g
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
φ : H → G
j : Y →ₑ[φ] X
B : Set X
hB : IsBlock G B
g : H
⊢ Disjoint (φ g • B) B → Disjoint (⇑j ⁻¹' (φ g • B)) (⇑j ⁻¹' B)
state_after: no goals