Theorem: SimpleGraph.IsTuranMaximal.card_parts_le
File: Mathlib/Combinatorics/SimpleGraph/Turan.lean

tactic: by_contra! l
state_before: V : Type u_1
inst✝² : Fintype V
inst✝¹ : DecidableEq V
G : SimpleGraph V
inst✝ : DecidableRel G.Adj
n r : ℕ
s t u : V
h : G.IsTuranMaximal r
⊢ h.finpartition.parts.card ≤ r
state_after: V : Type u_1
inst✝² : Fintype V
inst✝¹ : DecidableEq V
G : SimpleGraph V
inst✝ : DecidableRel G.Adj
n r : ℕ
s t u : V
h : G.IsTuranMaximal r
l : r < h.finpartition.parts.card
⊢ False

tactic: obtain ⟨z, -, hz⟩ := h.finpartition.exists_subset_part_bijOn
state_before: V : Type u_1
inst✝² : Fintype V
inst✝¹ : DecidableEq V
G : SimpleGraph V
inst✝ : DecidableRel G.Adj
n r : ℕ
s t u : V
h : G.IsTuranMaximal r
l : r < h.finpartition.parts.card
⊢ False
state_after: case intro.intro
V : Type u_1
inst✝² : Fintype V
inst✝¹ : DecidableEq V
G : SimpleGraph V
inst✝ : DecidableRel G.Adj
n r : ℕ
s t u : V
h : G.IsTuranMaximal r
l : r < h.finpartition.parts.card
z : Finset V
hz : Set.BijOn h.finpartition.part ↑z ↑h.finpartition.parts
⊢ False

tactic: have ncf : ¬G.CliqueFree z.card := by
  refine IsNClique.not_cliqueFree ⟨fun v hv w hw hn ↦ ?_, rfl⟩
  contrapose! hn
  exact hz.injOn hv hw (by rwa [← h.not_adj_iff_part_eq])
state_before: case intro.intro
V : Type u_1
inst✝² : Fintype V
inst✝¹ : DecidableEq V
G : SimpleGraph V
inst✝ : DecidableRel G.Adj
n r : ℕ
s t u : V
h : G.IsTuranMaximal r
l : r < h.finpartition.parts.card
z : Finset V
hz : Set.BijOn h.finpartition.part ↑z ↑h.finpartition.parts
⊢ False
state_after: case intro.intro
V : Type u_1
inst✝² : Fintype V
inst✝¹ : DecidableEq V
G : SimpleGraph V
inst✝ : DecidableRel G.Adj
n r : ℕ
s t u : V
h : G.IsTuranMaximal r
l : r < h.finpartition.parts.card
z : Finset V
hz : Set.BijOn h.finpartition.part ↑z ↑h.finpartition.parts
ncf : ¬G.CliqueFree z.card
⊢ False

tactic: rw [Finset.card_eq_of_equiv hz.equiv] at ncf
state_before: case intro.intro
V : Type u_1
inst✝² : Fintype V
inst✝¹ : DecidableEq V
G : SimpleGraph V
inst✝ : DecidableRel G.Adj
n r : ℕ
s t u : V
h : G.IsTuranMaximal r
l : r < h.finpartition.parts.card
z : Finset V
hz : Set.BijOn h.finpartition.part ↑z ↑h.finpartition.parts
ncf : ¬G.CliqueFree z.card
⊢ False
state_after: case intro.intro
V : Type u_1
inst✝² : Fintype V
inst✝¹ : DecidableEq V
G : SimpleGraph V
inst✝ : DecidableRel G.Adj
n r : ℕ
s t u : V
h : G.IsTuranMaximal r
l : r < h.finpartition.parts.card
z : Finset V
hz : Set.BijOn h.finpartition.part ↑z ↑h.finpartition.parts
ncf : ¬G.CliqueFree h.finpartition.parts.card
⊢ False

tactic: exact absurd (h.1.mono (Nat.succ_le_of_lt l)) ncf
state_before: case intro.intro
V : Type u_1
inst✝² : Fintype V
inst✝¹ : DecidableEq V
G : SimpleGraph V
inst✝ : DecidableRel G.Adj
n r : ℕ
s t u : V
h : G.IsTuranMaximal r
l : r < h.finpartition.parts.card
z : Finset V
hz : Set.BijOn h.finpartition.part ↑z ↑h.finpartition.parts
ncf : ¬G.CliqueFree h.finpartition.parts.card
⊢ False
state_after: no goals

tactic: refine IsNClique.not_cliqueFree ⟨fun v hv w hw hn ↦ ?_, rfl⟩
state_before: V : Type u_1
inst✝² : Fintype V
inst✝¹ : DecidableEq V
G : SimpleGraph V
inst✝ : DecidableRel G.Adj
n r : ℕ
s t u : V
h : G.IsTuranMaximal r
l : r < h.finpartition.parts.card
z : Finset V
hz : Set.BijOn h.finpartition.part ↑z ↑h.finpartition.parts
⊢ ¬G.CliqueFree z.card
state_after: V : Type u_1
inst✝² : Fintype V
inst✝¹ : DecidableEq V
G : SimpleGraph V
inst✝ : DecidableRel G.Adj
n r : ℕ
s t u : V
h : G.IsTuranMaximal r
l : r < h.finpartition.parts.card
z : Finset V
hz : Set.BijOn h.finpartition.part ↑z ↑h.finpartition.parts
v : V
hv : v ∈ ↑z
w : V
hw : w ∈ ↑z
hn : v ≠ w
⊢ G.Adj v w

tactic: contrapose! hn
state_before: V : Type u_1
inst✝² : Fintype V
inst✝¹ : DecidableEq V
G : SimpleGraph V
inst✝ : DecidableRel G.Adj
n r : ℕ
s t u : V
h : G.IsTuranMaximal r
l : r < h.finpartition.parts.card
z : Finset V
hz : Set.BijOn h.finpartition.part ↑z ↑h.finpartition.parts
v : V
hv : v ∈ ↑z
w : V
hw : w ∈ ↑z
hn : v ≠ w
⊢ G.Adj v w
state_after: V : Type u_1
inst✝² : Fintype V
inst✝¹ : DecidableEq V
G : SimpleGraph V
inst✝ : DecidableRel G.Adj
n r : ℕ
s t u : V
h : G.IsTuranMaximal r
l : r < h.finpartition.parts.card
z : Finset V
hz : Set.BijOn h.finpartition.part ↑z ↑h.finpartition.parts
v : V
hv : v ∈ ↑z
w : V
hw : w ∈ ↑z
hn : ¬G.Adj v w
⊢ v = w

tactic: exact hz.injOn hv hw (by rwa [← h.not_adj_iff_part_eq])
state_before: V : Type u_1
inst✝² : Fintype V
inst✝¹ : DecidableEq V
G : SimpleGraph V
inst✝ : DecidableRel G.Adj
n r : ℕ
s t u : V
h : G.IsTuranMaximal r
l : r < h.finpartition.parts.card
z : Finset V
hz : Set.BijOn h.finpartition.part ↑z ↑h.finpartition.parts
v : V
hv : v ∈ ↑z
w : V
hw : w ∈ ↑z
hn : ¬G.Adj v w
⊢ v = w
state_after: no goals

tactic: rwa [← h.not_adj_iff_part_eq]
state_before: V : Type u_1
inst✝² : Fintype V
inst✝¹ : DecidableEq V
G : SimpleGraph V
inst✝ : DecidableRel G.Adj
n r : ℕ
s t u : V
h : G.IsTuranMaximal r
l : r < h.finpartition.parts.card
z : Finset V
hz : Set.BijOn h.finpartition.part ↑z ↑h.finpartition.parts
v : V
hv : v ∈ ↑z
w : V
hw : w ∈ ↑z
hn : ¬G.Adj v w
⊢ h.finpartition.part v = h.finpartition.part w
state_after: no goals