Theorem: SimpleGraph.CompleteBipartiteGraph.chromaticNumber
File: Mathlib/Combinatorics/SimpleGraph/Coloring.lean

Proof steps:
state_before: V✝ : Type u
G : SimpleGraph V✝
n : ℕ
α : Type u_1
β : Type u_2
C : G.Coloring α
V : Type u_3
W : Type u_4
inst✝¹ : Nonempty V
inst✝ : Nonempty W
⊢ (completeBipartiteGraph V W).chromaticNumber = 2
state_after: V✝ : Type u
G : SimpleGraph V✝
n : ℕ
α : Type u_1
β : Type u_2
C : G.Coloring α
V : Type u_3
W : Type u_4
inst✝¹ : Nonempty V
inst✝ : Nonempty W
⊢ ∀ (C : (completeBipartiteGraph V W).Coloring (Fin 2)), Surjective ⇑C
tactic: rw [← Nat.cast_two, chromaticNumber_eq_iff_forall_surjective
    (by simpa using (CompleteBipartiteGraph.bicoloring V W).colorable)]
state_before: V✝ : Type u
G : SimpleGraph V✝
n : ℕ
α : Type u_1
β : Type u_2
C : G.Coloring α
V : Type u_3
W : Type u_4
inst✝¹ : Nonempty V
inst✝ : Nonempty W
⊢ ∀ (C : (completeBipartiteGraph V W).Coloring (Fin 2)), Surjective ⇑C
state_after: V✝ : Type u
G : SimpleGraph V✝
n : ℕ
α : Type u_1
β : Type u_2
C✝ : G.Coloring α
V : Type u_3
W : Type u_4
inst✝¹ : Nonempty V
inst✝ : Nonempty W
C : (completeBipartiteGraph V W).Coloring (Fin 2)
b : Fin 2
⊢ ∃ a, C a = b
tactic: intro C b
state_before: V✝ : Type u
G : SimpleGraph V✝
n : ℕ
α : Type u_1
β : Type u_2
C✝ : G.Coloring α
V : Type u_3
W : Type u_4
inst✝¹ : Nonempty V
inst✝ : Nonempty W
C : (completeBipartiteGraph V W).Coloring (Fin 2)
b : Fin 2
⊢ ∃ a, C a = b
state_after: V✝ : Type u
G : SimpleGraph V✝
n : ℕ
α : Type u_1
β : Type u_2
C✝ : G.Coloring α
V : Type u_3
W : Type u_4
inst✝¹ : Nonempty V
inst✝ : Nonempty W
C : (completeBipartiteGraph V W).Coloring (Fin 2)
b : Fin 2
v : V
⊢ ∃ a, C a = b
tactic: have v := Classical.arbitrary V
state_before: V✝ : Type u
G : SimpleGraph V✝
n : ℕ
α : Type u_1
β : Type u_2
C✝ : G.Coloring α
V : Type u_3
W : Type u_4
inst✝¹ : Nonempty V
inst✝ : Nonempty W
C : (completeBipartiteGraph V W).Coloring (Fin 2)
b : Fin 2
v : V
⊢ ∃ a, C a = b
state_after: V✝ : Type u
G : SimpleGraph V✝
n : ℕ
α : Type u_1
β : Type u_2
C✝ : G.Coloring α
V : Type u_3
W : Type u_4
inst✝¹ : Nonempty V
inst✝ : Nonempty W
C : (completeBipartiteGraph V W).Coloring (Fin 2)
b : Fin 2
v : V
w : W
⊢ ∃ a, C a = b
tactic: have w := Classical.arbitrary W
state_before: V✝ : Type u
G : SimpleGraph V✝
n : ℕ
α : Type u_1
β : Type u_2
C✝ : G.Coloring α
V : Type u_3
W : Type u_4
inst✝¹ : Nonempty V
inst✝ : Nonempty W
C : (completeBipartiteGraph V W).Coloring (Fin 2)
b : Fin 2
v : V
w : W
⊢ ∃ a, C a = b
state_after: V✝ : Type u
G : SimpleGraph V✝
n : ℕ
α : Type u_1
β : Type u_2
C✝ : G.Coloring α
V : Type u_3
W : Type u_4
inst✝¹ : Nonempty V
inst✝ : Nonempty W
C : (completeBipartiteGraph V W).Coloring (Fin 2)
b : Fin 2
v : V
w : W
h : (completeBipartiteGraph V W).Adj (Sum.inl v) (Sum.inr w)
⊢ ∃ a, C a = b
tactic: have h : (completeBipartiteGraph V W).Adj (Sum.inl v) (Sum.inr w) := by simp
state_before: V✝ : Type u
G : SimpleGraph V✝
n : ℕ
α : Type u_1
β : Type u_2
C✝ : G.Coloring α
V : Type u_3
W : Type u_4
inst✝¹ : Nonempty V
inst✝ : Nonempty W
C : (completeBipartiteGraph V W).Coloring (Fin 2)
b : Fin 2
v : V
w : W
h : (completeBipartiteGraph V W).Adj (Sum.inl v) (Sum.inr w)
⊢ ∃ a, C a = b
state_after: case pos
V✝ : Type u
G : SimpleGraph V✝
n : ℕ
α : Type u_1
β : Type u_2
C✝ : G.Coloring α
V : Type u_3
W : Type u_4
inst✝¹ : Nonempty V
inst✝ : Nonempty W
C : (completeBipartiteGraph V W).Coloring (Fin 2)
b : Fin 2
v : V
w : W
h : (completeBipartiteGraph V W).Adj (Sum.inl v) (Sum.inr w)
he : C (Sum.inl v) = b
⊢ ∃ a, C a = b

case neg
V✝ : Type u
G : SimpleGraph V✝
n : ℕ
α : Type u_1
β : Type u_2
C✝ : G.Coloring α
V : Type u_3
W : Type u_4
inst✝¹ : Nonempty V
inst✝ : Nonempty W
C : (completeBipartiteGraph V W).Coloring (Fin 2)
b : Fin 2
v : V
w : W
h : (completeBipartiteGraph V W).Adj (Sum.inl v) (Sum.inr w)
he : ¬C (Sum.inl v) = b
⊢ ∃ a, C a = b
tactic: by_cases he : C (Sum.inl v) = b
state_before: case neg
V✝ : Type u
G : SimpleGraph V✝
n : ℕ
α : Type u_1
β : Type u_2
C✝ : G.Coloring α
V : Type u_3
W : Type u_4
inst✝¹ : Nonempty V
inst✝ : Nonempty W
C : (completeBipartiteGraph V W).Coloring (Fin 2)
b : Fin 2
v : V
w : W
h : (completeBipartiteGraph V W).Adj (Sum.inl v) (Sum.inr w)
he : ¬C (Sum.inl v) = b
⊢ ∃ a, C a = b
state_after: case pos
V✝ : Type u
G : SimpleGraph V✝
n : ℕ
α : Type u_1
β : Type u_2
C✝ : G.Coloring α
V : Type u_3
W : Type u_4
inst✝¹ : Nonempty V
inst✝ : Nonempty W
C : (completeBipartiteGraph V W).Coloring (Fin 2)
b : Fin 2
v : V
w : W
h : (completeBipartiteGraph V W).Adj (Sum.inl v) (Sum.inr w)
he : ¬C (Sum.inl v) = b
he' : C (Sum.inr w) = b
⊢ ∃ a, C a = b

case neg
V✝ : Type u
G : SimpleGraph V✝
n : ℕ
α : Type u_1
β : Type u_2
C✝ : G.Coloring α
V : Type u_3
W : Type u_4
inst✝¹ : Nonempty V
inst✝ : Nonempty W
C : (completeBipartiteGraph V W).Coloring (Fin 2)
b : Fin 2
v : V
w : W
h : (completeBipartiteGraph V W).Adj (Sum.inl v) (Sum.inr w)
he : ¬C (Sum.inl v) = b
he' : ¬C (Sum.inr w) = b
⊢ ∃ a, C a = b
tactic: by_cases he' : C (Sum.inr w) = b