Skip to content

Commit 9fc1ec5

Browse files
Impl turanDensityConst
1 parent 90f4b82 commit 9fc1ec5

1 file changed

Lines changed: 30 additions & 4 deletions

File tree

Mathlib/Combinatorics/SimpleGraph/Extremal/TuranDensity.lean

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,9 @@ This file defines the **Turán density** of a simple graph.
2828
* `SimpleGraph.isEquivalent_extremalNumber` is the proof that `extremalNumber n H` is
2929
asymptotically equivalent to `turanDensity H * n.choose 2` as `n` approaches `∞`.
3030
31-
* `SimpleGraph.isContained_of_card_edgeFinset` is the proof that `n`-vertex simple graphs having
32-
at least `(turanDensity H + o(1)) * n ^ 2` edges contain `H`, for sufficently large `n`.
31+
* `SimpleGraph.isContained_of_card_edgeFinset` is the proof that `card V`-vertex simple graphs
32+
having at least `(turanDensity H + o(1)) * (card V) ^ 2` edges contain `H`, for sufficently large
33+
`card V`.
3334
-/
3435

3536
@[expose] public section
@@ -39,7 +40,7 @@ open Asymptotics Filter Finset Fintype Topology
3940

4041
namespace SimpleGraph
4142

42-
variable {V W : Type*} {G : SimpleGraph V} {H : SimpleGraph W}
43+
variable {W : Type*}
4344

4445
lemma antitoneOn_extremalNumber_div_choose_two (H : SimpleGraph W) :
4546
AntitoneOn (fun n ↦ (extremalNumber n H / n.choose 2 : ℝ)) (Set.Ici 2) := by
@@ -104,7 +105,7 @@ theorem tendsto_turanDensity (H : SimpleGraph W) :
104105

105106
/-- `extremalNumber n H` is asymptotically equivalent to `turanDensity H * n.choose 2` as `n`
106107
approaches `∞`. -/
107-
theorem isEquivalent_extremalNumber (h : turanDensity H ≠ 0) :
108+
theorem isEquivalent_extremalNumber {H : SimpleGraph W} (h : turanDensity H ≠ 0) :
108109
(fun n ↦ (extremalNumber n H : ℝ)) ~[atTop] (fun n ↦ (turanDensity H * n.choose 2 : ℝ)) := by
109110
have hπ := tendsto_turanDensity H
110111
apply Tendsto.const_mul (1 / turanDensity H : ℝ) at hπ
@@ -138,4 +139,29 @@ theorem eventually_isContained_of_card_edgeFinset (H : SimpleGraph W) {ε : ℝ}
138139
exact hcard_edges.trans (mod_cast card_edgeFinset_le_extremalNumber h_free)
139140
· exact antitoneOn_extremalNumber_div_choose_two H hm (hm.trans hn) hn
140141

142+
open Classical in
143+
/-- The edge density of `H`-free simple graphs on `turanDensityConst H ε` vertices
144+
is at most `turanDensity H + ε`.
145+
146+
Contrapositively, `turanDensity H + ε` is the density at which `H` is always contained in simple
147+
graphs on `turanDensityConst H ε` vertices.
148+
149+
Note that this value is only defined for positive `ε` and `turanDensityConst H ε = 0` for non
150+
positive `ε`. -/
151+
noncomputable abbrev turanDensityConst (H : SimpleGraph W) (ε : ℝ) :=
152+
if h : ε > 0 then
153+
Nat.find <| eventually_atTop.mp <| eventually_isContained_of_card_edgeFinset H h
154+
else 0
155+
156+
open Classical in
157+
/-- Simple graphs on `card V` vertices having at least `(turanDensity H + o(1)) * (card V) ^ 2`
158+
edges contain `H`, for sufficiently large `card V`. -/
159+
theorem isContained_of_card_edgeFinset (H : SimpleGraph W) {ε : ℝ} (hε_pos : 0 < ε)
160+
{V : Type*} [Fintype V] (h_verts : card V ≥ turanDensityConst H ε)
161+
(G : SimpleGraph V) [DecidableRel G.Adj] :
162+
#G.edgeFinset ≥ (turanDensity H + ε) * (card V).choose 2 → H ⊑ G := by
163+
rw [Iso.card_edgeFinset_eq (G.overFinIso rfl), isContained_congr Iso.refl (G.overFinIso rfl)]
164+
apply Nat.find_spec <| eventually_atTop.mp <| eventually_isContained_of_card_edgeFinset H hε_pos
165+
simpa only [turanDensityConst, hε_pos, ↓reduceDIte] using h_verts
166+
141167
end SimpleGraph

0 commit comments

Comments
 (0)