@@ -297,6 +297,36 @@ theorem isTuranMaximal_iff_nonempty_iso_turanGraph (hr : 0 < r) :
297297 G.IsTuranMaximal r ↔ Nonempty (G ≃g turanGraph (card V) r) :=
298298 ⟨fun h ↦ h.nonempty_iso_turanGraph, fun h ↦ isTuranMaximal_of_iso h.some hr⟩
299299
300+ variable {α : Type *} [Fintype α] [Nontrivial α]
301+
302+ lemma isExtremal_top_free_iff_isTuranMaximal :
303+ G.IsExtremal (⊤ : SimpleGraph α).Free ↔ G.IsTuranMaximal (card α - 1 ) := by
304+ simp_rw [IsTuranMaximal, IsExtremal,
305+ Nat.sub_one_add_one Fintype.card_ne_zero, cliqueFree_iff_top_free]
306+
307+ lemma isExtremal_top_free_turanGraph :
308+ (turanGraph n (card α - 1 )).IsExtremal (⊤ : SimpleGraph α).Free := by
309+ rw [isExtremal_top_free_iff_isTuranMaximal]
310+ exact isTuranMaximal_turanGraph (Nat.sub_pos_iff_lt.mpr Fintype.one_lt_card)
311+
312+ /-- The extremal numbers of `⊤` are equal to the number of edges in `turanGraph`. -/
313+ theorem extremalNumber_top :
314+ extremalNumber n (⊤ : SimpleGraph α) = #(turanGraph n (card α - 1 )).edgeFinset := by
315+ conv =>
316+ enter [1 , 1 ]
317+ rw [← Fintype.card_fin n]
318+ exact (card_edgeFinset_of_isExtremal_free isExtremal_top_free_turanGraph).symm
319+
320+ /-- The `turanGraph` is, up to isomorphism, the unique extremal graph forbidding `⊤`.
321+
322+ This is **Turán's theorem** restated in terms of the extremal numbers of `⊤`.
323+ See `SimpleGraph.isTuranMaximal_iff_nonempty_iso_turanGraph`. -/
324+ theorem card_edgeFinset_eq_extremalNumber_top_iff_nonempty_iso_turanGraph :
325+ (⊤ : SimpleGraph α).Free G ∧ #G.edgeFinset = extremalNumber (card V) (⊤ : SimpleGraph α)
326+ ↔ Nonempty (G ≃g turanGraph (card V) (card α - 1 )) := by
327+ rw [← isTuranMaximal_iff_nonempty_iso_turanGraph (Nat.sub_pos_iff_lt.mpr one_lt_card),
328+ ← isExtremal_top_free_iff_isTuranMaximal, isExtremal_free_iff]
329+
300330/-! ### Number of edges in the Turán graph -/
301331
302332private lemma sum_ne_add_mod_eq_sub_one {c : ℕ} :
0 commit comments