Theorem: MulAction.IsBlock.inter
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
B₁ B₂ : Set X
h₁ : IsBlock G B₁
h₂ : IsBlock G B₂
⊢ IsBlock G (B₁ ∩ B₂)
state_after: G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B₁ B₂ : Set X
h₁ : IsBlock G B₁
h₂ : IsBlock G B₂
⊢ ∀ (g : G), g • (B₁ ∩ B₂) = B₁ ∩ B₂ ∨ Disjoint (g • (B₁ ∩ B₂)) (B₁ ∩ B₂)

tactic: intro g
state_before: G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B₁ B₂ : Set X
h₁ : IsBlock G B₁
h₂ : IsBlock G B₂
⊢ ∀ (g : G), g • (B₁ ∩ B₂) = B₁ ∩ B₂ ∨ Disjoint (g • (B₁ ∩ B₂)) (B₁ ∩ B₂)
state_after: G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B₁ B₂ : Set X
h₁ : IsBlock G B₁
h₂ : IsBlock G B₂
g : G
⊢ g • (B₁ ∩ B₂) = B₁ ∩ B₂ ∨ Disjoint (g • (B₁ ∩ B₂)) (B₁ ∩ B₂)

tactic: rw [Set.smul_set_inter]
state_before: G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B₁ B₂ : Set X
h₁ : IsBlock G B₁
h₂ : IsBlock G B₂
g : G
⊢ g • (B₁ ∩ B₂) = B₁ ∩ B₂ ∨ Disjoint (g • (B₁ ∩ B₂)) (B₁ ∩ B₂)
state_after: G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B₁ B₂ : Set X
h₁ : IsBlock G B₁
h₂ : IsBlock G B₂
g : G
⊢ g • B₁ ∩ g • B₂ = B₁ ∩ B₂ ∨ Disjoint (g • B₁ ∩ g • B₂) (B₁ ∩ B₂)

tactic: cases' h₁.smul_eq_or_disjoint g with h₁ h₁
state_before: G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B₁ B₂ : Set X
h₁ : IsBlock G B₁
h₂ : IsBlock G B₂
g : G
⊢ g • B₁ ∩ g • B₂ = B₁ ∩ B₂ ∨ Disjoint (g • B₁ ∩ g • B₂) (B₁ ∩ B₂)
state_after: case inl
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B₁ B₂ : Set X
h₁✝ : IsBlock G B₁
h₂ : IsBlock G B₂
g : G
h₁ : g • B₁ = B₁
⊢ g • B₁ ∩ g • B₂ = B₁ ∩ B₂ ∨ Disjoint (g • B₁ ∩ g • B₂) (B₁ ∩ B₂)

case inr
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B₁ B₂ : Set X
h₁✝ : IsBlock G B₁
h₂ : IsBlock G B₂
g : G
h₁ : Disjoint (g • B₁) B₁
⊢ g • B₁ ∩ g • B₂ = B₁ ∩ B₂ ∨ Disjoint (g • B₁ ∩ g • B₂) (B₁ ∩ B₂)

tactic: cases' h₂.smul_eq_or_disjoint g with h₂ h₂
state_before: case inl
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B₁ B₂ : Set X
h₁✝ : IsBlock G B₁
h₂ : IsBlock G B₂
g : G
h₁ : g • B₁ = B₁
⊢ g • B₁ ∩ g • B₂ = B₁ ∩ B₂ ∨ Disjoint (g • B₁ ∩ g • B₂) (B₁ ∩ B₂)
state_after: case inl.inl
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B₁ B₂ : Set X
h₁✝ : IsBlock G B₁
h₂✝ : IsBlock G B₂
g : G
h₁ : g • B₁ = B₁
h₂ : g • B₂ = B₂
⊢ g • B₁ ∩ g • B₂ = B₁ ∩ B₂ ∨ Disjoint (g • B₁ ∩ g • B₂) (B₁ ∩ B₂)

case inl.inr
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B₁ B₂ : Set X
h₁✝ : IsBlock G B₁
h₂✝ : IsBlock G B₂
g : G
h₁ : g • B₁ = B₁
h₂ : Disjoint (g • B₂) B₂
⊢ g • B₁ ∩ g • B₂ = B₁ ∩ B₂ ∨ Disjoint (g • B₁ ∩ g • B₂) (B₁ ∩ B₂)

tactic: right
state_before: case inl.inr
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B₁ B₂ : Set X
h₁✝ : IsBlock G B₁
h₂✝ : IsBlock G B₂
g : G
h₁ : g • B₁ = B₁
h₂ : Disjoint (g • B₂) B₂
⊢ g • B₁ ∩ g • B₂ = B₁ ∩ B₂ ∨ Disjoint (g • B₁ ∩ g • B₂) (B₁ ∩ B₂)
state_after: case inl.inr.h
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B₁ B₂ : Set X
h₁✝ : IsBlock G B₁
h₂✝ : IsBlock G B₂
g : G
h₁ : g • B₁ = B₁
h₂ : Disjoint (g • B₂) B₂
⊢ Disjoint (g • B₁ ∩ g • B₂) (B₁ ∩ B₂)

tactic: apply Disjoint.inter_left'
state_before: case inl.inr.h
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B₁ B₂ : Set X
h₁✝ : IsBlock G B₁
h₂✝ : IsBlock G B₂
g : G
h₁ : g • B₁ = B₁
h₂ : Disjoint (g • B₂) B₂
⊢ Disjoint (g • B₁ ∩ g • B₂) (B₁ ∩ B₂)
state_after: case inl.inr.h.h
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B₁ B₂ : Set X
h₁✝ : IsBlock G B₁
h₂✝ : IsBlock G B₂
g : G
h₁ : g • B₁ = B₁
h₂ : Disjoint (g • B₂) B₂
⊢ Disjoint (g • B₂) (B₁ ∩ B₂)

tactic: apply Disjoint.inter_right'
state_before: case inl.inr.h.h
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B₁ B₂ : Set X
h₁✝ : IsBlock G B₁
h₂✝ : IsBlock G B₂
g : G
h₁ : g • B₁ = B₁
h₂ : Disjoint (g • B₂) B₂
⊢ Disjoint (g • B₂) (B₁ ∩ B₂)
state_after: case inl.inr.h.h.h
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B₁ B₂ : Set X
h₁✝ : IsBlock G B₁
h₂✝ : IsBlock G B₂
g : G
h₁ : g • B₁ = B₁
h₂ : Disjoint (g • B₂) B₂
⊢ Disjoint (g • B₂) B₂

tactic: exact h₂
state_before: case inl.inr.h.h.h
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B₁ B₂ : Set X
h₁✝ : IsBlock G B₁
h₂✝ : IsBlock G B₂
g : G
h₁ : g • B₁ = B₁
h₂ : Disjoint (g • B₂) B₂
⊢ Disjoint (g • B₂) B₂
state_after: no goals

tactic: left
state_before: case inl.inl
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B₁ B₂ : Set X
h₁✝ : IsBlock G B₁
h₂✝ : IsBlock G B₂
g : G
h₁ : g • B₁ = B₁
h₂ : g • B₂ = B₂
⊢ g • B₁ ∩ g • B₂ = B₁ ∩ B₂ ∨ Disjoint (g • B₁ ∩ g • B₂) (B₁ ∩ B₂)
state_after: case inl.inl.h
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B₁ B₂ : Set X
h₁✝ : IsBlock G B₁
h₂✝ : IsBlock G B₂
g : G
h₁ : g • B₁ = B₁
h₂ : g • B₂ = B₂
⊢ g • B₁ ∩ g • B₂ = B₁ ∩ B₂

tactic: rw [h₁, h₂]
state_before: case inl.inl.h
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B₁ B₂ : Set X
h₁✝ : IsBlock G B₁
h₂✝ : IsBlock G B₂
g : G
h₁ : g • B₁ = B₁
h₂ : g • B₂ = B₂
⊢ g • B₁ ∩ g • B₂ = B₁ ∩ B₂
state_after: no goals

tactic: right
state_before: case inr
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B₁ B₂ : Set X
h₁✝ : IsBlock G B₁
h₂ : IsBlock G B₂
g : G
h₁ : Disjoint (g • B₁) B₁
⊢ g • B₁ ∩ g • B₂ = B₁ ∩ B₂ ∨ Disjoint (g • B₁ ∩ g • B₂) (B₁ ∩ B₂)
state_after: case inr.h
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B₁ B₂ : Set X
h₁✝ : IsBlock G B₁
h₂ : IsBlock G B₂
g : G
h₁ : Disjoint (g • B₁) B₁
⊢ Disjoint (g • B₁ ∩ g • B₂) (B₁ ∩ B₂)

tactic: apply Disjoint.inter_left
state_before: case inr.h
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B₁ B₂ : Set X
h₁✝ : IsBlock G B₁
h₂ : IsBlock G B₂
g : G
h₁ : Disjoint (g • B₁) B₁
⊢ Disjoint (g • B₁ ∩ g • B₂) (B₁ ∩ B₂)
state_after: case inr.h.h
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B₁ B₂ : Set X
h₁✝ : IsBlock G B₁
h₂ : IsBlock G B₂
g : G
h₁ : Disjoint (g • B₁) B₁
⊢ Disjoint (g • B₁) (B₁ ∩ B₂)

tactic: apply Disjoint.inter_right
state_before: case inr.h.h
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B₁ B₂ : Set X
h₁✝ : IsBlock G B₁
h₂ : IsBlock G B₂
g : G
h₁ : Disjoint (g • B₁) B₁
⊢ Disjoint (g • B₁) (B₁ ∩ B₂)
state_after: case inr.h.h.h
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B₁ B₂ : Set X
h₁✝ : IsBlock G B₁
h₂ : IsBlock G B₂
g : G
h₁ : Disjoint (g • B₁) B₁
⊢ Disjoint (g • B₁) B₁

tactic: exact h₁
state_before: case inr.h.h.h
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B₁ B₂ : Set X
h₁✝ : IsBlock G B₁
h₂ : IsBlock G B₂
g : G
h₁ : Disjoint (g • B₁) B₁
⊢ Disjoint (g • B₁) B₁
state_after: no goals