Turán problems in the hypercube
DefinitionHypercube graph#✓fully proved
For a natural number \(n\), the \(n\)-dimensional hypercube \(Q_n\) is the simple graph whose vertices are the functions from \(\{0, \dots, n-1\}\) to the Booleans \(\{\mathrm{true}, \mathrm{false}\}\), with an edge between two vertices exactly when they differ in exactly one coordinate.
def hypercubeGraph (n : ℕ) : SimpleGraph (Fin n → Bool) :=
SimpleGraph.fromRel (fun x y => ∃! i, x i ≠ y i)
Used by 10
TheoremAdjacency in the hypercube#✓fully proved
For every natural number \(n\) and all vertices \(x, y\) of the \(n\)-dimensional hypercube \(Q_n\) (functions from \(\{0, \dots, n-1\}\) to the Booleans), \(x\) and \(y\) are adjacent in \(Q_n\) if and only if there is exactly one coordinate \(i\) with \(x_i \ne y_i\).
@[simp]
theorem hypercubeGraph_adj (n : ℕ) (x y : Fin n → Bool) :
(hypercubeGraph n).Adj x y ↔ ∃! i, x i ≠ y i
def hypercubeGraph (n : ℕ) : SimpleGraph (Fin n → Bool) :=
SimpleGraph.fromRel (fun x y => ∃! i, x i ≠ y i)
MathlibExt/Combinatorics/SimpleGraph/HypercubeExtremal.lean:37
Uses 1 · Used by 2
TheoremNo two vertices of the zero-dimensional hypercube are adjacent#✓fully proved
For all vertices \(x, y\) of the \(0\)-dimensional hypercube \(Q_0\), \(x\) and \(y\) are not adjacent in \(Q_0\).
Any two vertices agree on all (zero) coordinates.
theorem hypercubeGraph_zero_not_adj (x y : Fin 0 → Bool) :
¬ (hypercubeGraph 0).Adj x y
def hypercubeGraph (n : ℕ) : SimpleGraph (Fin n → Bool) :=
SimpleGraph.fromRel (fun x y => ∃! i, x i ≠ y i)
MathlibExt/Combinatorics/SimpleGraph/HypercubeExtremal.lean:37
Uses 2 · Used by 1
TheoremAn edge of the one-dimensional hypercube#✓fully proved
In the \(1\)-dimensional hypercube \(Q_1\), the constant vertex \(\mathrm{true}\) and the constant vertex \(\mathrm{false}\) are adjacent.
theorem hypercubeGraph_one_adj :
(hypercubeGraph 1).Adj (fun _ => true) (fun _ => false)
def hypercubeGraph (n : ℕ) : SimpleGraph (Fin n → Bool) :=
SimpleGraph.fromRel (fun x y => ∃! i, x i ≠ y i)
MathlibExt/Combinatorics/SimpleGraph/HypercubeExtremal.lean:37
Uses 2
TheoremThe zero-dimensional hypercube has no edges#✓fully proved
The edge set of the \(0\)-dimensional hypercube \(Q_0\) is empty.
theorem hypercubeGraph_zero_edgeSet : (hypercubeGraph 0).edgeSet = ∅
def hypercubeGraph (n : ℕ) : SimpleGraph (Fin n → Bool) :=
SimpleGraph.fromRel (fun x y => ∃! i, x i ≠ y i)
MathlibExt/Combinatorics/SimpleGraph/HypercubeExtremal.lean:37
Uses 2 · Used by 1
TheoremSubgraphs of the hypercube have at most as many edges#✓fully proved
For every natural number \(n\), every subgraph of the \(n\)-dimensional hypercube \(Q_n\) has at most as many edges as \(Q_n\).
theorem hypercubeGraph_subgraph_edgeSet_ncard_le (n : ℕ)
(S : Subgraph (hypercubeGraph n)) :
S.edgeSet.ncard ≤ (hypercubeGraph n).edgeSet.ncard
def hypercubeGraph (n : ℕ) : SimpleGraph (Fin n → Bool) :=
SimpleGraph.fromRel (fun x y => ∃! i, x i ≠ y i)
MathlibExt/Combinatorics/SimpleGraph/HypercubeExtremal.lean:37
Uses 1 · Used by 3
DefinitionHypercube Turán number#✓fully proved
For a natural number \(n\) and a simple graph \(H\), let \(Q_n\) be the \(n\)-dimensional hypercube. The hypercube Turán number \(\mathrm{ex}(Q_n, H)\) is the largest number of edges of a subgraph (not necessarily spanning) of \(Q_n\) that contains no copy of \(H\), that is, no subgraph isomorphic to \(H\); it is \(0\) when no such subgraph exists.
noncomputable def hypercubeTuranNumber (n : ℕ) {W : Type*} (H : SimpleGraph W) : ℕ := by
classical
exact Finset.sup
((Finset.range ((hypercubeGraph n).edgeSet.ncard + 1)).filter
(fun m => ∃ S : Subgraph (hypercubeGraph n), H.Free S.coe ∧ S.edgeSet.ncard = m))
id
Uses 1 · Used by 8
TheoremThe hypercube Turán number bounds every free subgraph#✓fully proved
For every natural number \(n\) and every simple graph \(H\), let \(Q_n\) be the \(n\)-dimensional hypercube and let \(\mathrm{ex}(Q_n, H)\) be the hypercube Turán number of \(H\) in \(Q_n\). If \(S\) is a subgraph of \(Q_n\) that contains no copy of \(H\), then \(S\) has at most \(\mathrm{ex}(Q_n, H)\) edges.
theorem le_hypercubeTuranNumber (n : ℕ) {W : Type*} {H : SimpleGraph W}
(S : Subgraph (hypercubeGraph n)) (hfree : H.Free S.coe) :
S.edgeSet.ncard ≤ hypercubeTuranNumber n H
def hypercubeGraph (n : ℕ) : SimpleGraph (Fin n → Bool) :=
SimpleGraph.fromRel (fun x y => ∃! i, x i ≠ y i)
MathlibExt/Combinatorics/SimpleGraph/HypercubeExtremal.lean:37
noncomputable def hypercubeTuranNumber (n : ℕ) {W : Type*} (H : SimpleGraph W) : ℕ := by
classical
exact Finset.sup
((Finset.range ((hypercubeGraph n).edgeSet.ncard + 1)).filter
(fun m => ∃ S : Subgraph (hypercubeGraph n), H.Free S.coe ∧ S.edgeSet.ncard = m))
id
MathlibExt/Combinatorics/SimpleGraph/HypercubeExtremal.lean:87
Uses 3
TheoremUpper bound for the hypercube Turán number#✓fully proved
For every natural number \(n\) and every simple graph \(H\), writing \(Q_n\) for the \(n\)-dimensional hypercube, the hypercube Turán number \(\mathrm{ex}(Q_n, H)\) is at most the number of edges of \(Q_n\).
theorem hypercubeTuranNumber_le_edgeSet_ncard (n : ℕ) {W : Type*} (H : SimpleGraph W) :
hypercubeTuranNumber n H ≤ (hypercubeGraph n).edgeSet.ncard
noncomputable def hypercubeTuranNumber (n : ℕ) {W : Type*} (H : SimpleGraph W) : ℕ := by
classical
exact Finset.sup
((Finset.range ((hypercubeGraph n).edgeSet.ncard + 1)).filter
(fun m => ∃ S : Subgraph (hypercubeGraph n), H.Free S.coe ∧ S.edgeSet.ncard = m))
id
MathlibExt/Combinatorics/SimpleGraph/HypercubeExtremal.lean:87
def hypercubeGraph (n : ℕ) : SimpleGraph (Fin n → Bool) :=
SimpleGraph.fromRel (fun x y => ∃! i, x i ≠ y i)
MathlibExt/Combinatorics/SimpleGraph/HypercubeExtremal.lean:37
Uses 3 · Used by 1
TheoremAttainment of the hypercube Turán number#✓fully proved
Let \(n\) be a natural number, \(H\) a simple graph, \(Q_n\) the \(n\)-dimensional hypercube, and \(\mathrm{ex}(Q_n, H)\) the hypercube Turán number. If \(Q_n\) has at least one subgraph (not necessarily spanning) that contains no copy of \(H\), then some subgraph \(S\) of \(Q_n\) contains no copy of \(H\) and has exactly \(\mathrm{ex}(Q_n, H)\) edges.
theorem exists_attains_hypercubeTuranNumber (n : ℕ) {W : Type*} {H : SimpleGraph W}
(hne : ∃ S : Subgraph (hypercubeGraph n), H.Free S.coe) :
∃ S : Subgraph (hypercubeGraph n),
H.Free S.coe ∧ S.edgeSet.ncard = hypercubeTuranNumber n H
def hypercubeGraph (n : ℕ) : SimpleGraph (Fin n → Bool) :=
SimpleGraph.fromRel (fun x y => ∃! i, x i ≠ y i)
MathlibExt/Combinatorics/SimpleGraph/HypercubeExtremal.lean:37
noncomputable def hypercubeTuranNumber (n : ℕ) {W : Type*} (H : SimpleGraph W) : ℕ := by
classical
exact Finset.sup
((Finset.range ((hypercubeGraph n).edgeSet.ncard + 1)).filter
(fun m => ∃ S : Subgraph (hypercubeGraph n), H.Free S.coe ∧ S.edgeSet.ncard = m))
id
MathlibExt/Combinatorics/SimpleGraph/HypercubeExtremal.lean:87
Uses 3
TheoremThe hypercube Turán number in dimension zero#✓fully proved
For every simple graph \(H\), writing \(Q_0\) for the \(0\)-dimensional hypercube, the hypercube Turán number \(\mathrm{ex}(Q_0, H)\) is \(0\).
theorem hypercubeTuranNumber_zero {W : Type*} (H : SimpleGraph W) :
hypercubeTuranNumber 0 H = 0
noncomputable def hypercubeTuranNumber (n : ℕ) {W : Type*} (H : SimpleGraph W) : ℕ := by
classical
exact Finset.sup
((Finset.range ((hypercubeGraph n).edgeSet.ncard + 1)).filter
(fun m => ∃ S : Subgraph (hypercubeGraph n), H.Free S.coe ∧ S.edgeSet.ncard = m))
id
MathlibExt/Combinatorics/SimpleGraph/HypercubeExtremal.lean:87
Uses 4
TheoremFour-cycle-free subgraphs of the hypercubes of dimensions one to six#●ready to prove
For a natural number \(n\), let \(Q_n\) be the \(n\)-dimensional hypercube, let \(C_4\) be the cycle on four vertices, and let \(\mathrm{ex}(Q_n, C_4)\) be the largest number of edges of a subgraph of \(Q_n\) that contains no copy of \(C_4\). Then for \(n = 1, 2, 3, 4, 5, 6\) the value of \(\mathrm{ex}(Q_n, C_4)\) is \(1\), \(3\), \(9\), \(24\), \(56\) and \(132\) respectively.
public theorem_wanted hypercubeTuranNumber_cycleGraph_four_one_to_six :
(List.range 6).map (fun i => hypercubeTuranNumber (i + 1) (cycleGraph 4)) =
[1, 3, 9, 24, 56, 132]
noncomputable def hypercubeTuranNumber (n : ℕ) {W : Type*} (H : SimpleGraph W) : ℕ := by
classical
exact Finset.sup
((Finset.range ((hypercubeGraph n).edgeSet.ncard + 1)).filter
(fun m => ∃ S : Subgraph (hypercubeGraph n), H.Free S.coe ∧ S.edgeSet.ncard = m))
id
MathlibExt/Combinatorics/SimpleGraph/HypercubeExtremal.lean:87
Sources
- OEIS A245762;
ex(Q₆, C₄) = 132is H. Harborth and H. Nienborg, Maximum number of edges in squarefree subgraphs of the n-cube, Bull. Inst. Combin. Appl. 12 (1994), 55–60; listed in leansolving/SqueezeBenchSqueezeBench/Problems/HypercubeC4/README.md.
Uses 1
TheoremLower bound for four-cycle-free subgraphs of the seven-dimensional hypercube#●ready to prove
Let \(Q_7\) be the \(7\)-dimensional hypercube and \(C_4\) the cycle on four vertices. The largest number \(\mathrm{ex}(Q_7, C_4)\) of edges of a subgraph of \(Q_7\) that contains no copy of \(C_4\) is at least \(304\).
The bound is witnessed by an explicit construction.
public theorem_wanted le_hypercubeTuranNumber_seven_cycleGraph_four :
304 ≤ hypercubeTuranNumber 7 (cycleGraph 4)
noncomputable def hypercubeTuranNumber (n : ℕ) {W : Type*} (H : SimpleGraph W) : ℕ := by
classical
exact Finset.sup
((Finset.range ((hypercubeGraph n).edgeSet.ncard + 1)).filter
(fun m => ∃ S : Subgraph (hypercubeGraph n), H.Free S.coe ∧ S.edgeSet.ncard = m))
id
MathlibExt/Combinatorics/SimpleGraph/HypercubeExtremal.lean:87
Sources
- M. Minamoto, C₄-free subgraphs of the hypercubes Q₆, Q₇, and Q₈, arXiv:2603.29127 (2026); listed in SqueezeBench
SqueezeBench/Problems/HypercubeC4/README.md.
Uses 1
TheoremUpper bound for four-cycle-free subgraphs of the seven-dimensional hypercube#●ready to prove
Let \(Q_7\) be the \(7\)-dimensional hypercube and \(C_4\) the cycle on four vertices. The largest number \(\mathrm{ex}(Q_7, C_4)\) of edges of a subgraph of \(Q_7\) that contains no copy of \(C_4\) is at most \(308\).
The bound comes from averaging over the fourteen facets of \(Q_7\): each is a copy of \(Q_6\) and each edge lies in six of them, so \(\mathrm{ex}(Q_7, C_4) \le 14 \cdot \mathrm{ex}(Q_6, C_4) / 6 = 14 \cdot 132 / 6 = 308\).
public theorem_wanted hypercubeTuranNumber_seven_cycleGraph_four_le :
hypercubeTuranNumber 7 (cycleGraph 4) ≤ 308
noncomputable def hypercubeTuranNumber (n : ℕ) {W : Type*} (H : SimpleGraph W) : ℕ := by
classical
exact Finset.sup
((Finset.range ((hypercubeGraph n).edgeSet.ncard + 1)).filter
(fun m => ∃ S : Subgraph (hypercubeGraph n), H.Free S.coe ∧ S.edgeSet.ncard = m))
id
MathlibExt/Combinatorics/SimpleGraph/HypercubeExtremal.lean:87
Sources
- the averaging bound applied to
ex(Q₆, C₄) = 132(Harborth and Nienborg 1994), as stated in SqueezeBenchSqueezeBench/Problems/HypercubeC4/README.md.
Uses 1
TheoremLower bound for four-cycle-free subgraphs of the eight-dimensional hypercube#●ready to prove
Let \(Q_8\) be the \(8\)-dimensional hypercube and \(C_4\) the cycle on four vertices. The largest number \(\mathrm{ex}(Q_8, C_4)\) of edges of a subgraph of \(Q_8\) that contains no copy of \(C_4\) is at least \(682\).
The bound is witnessed by an explicit construction.
public theorem_wanted le_hypercubeTuranNumber_eight_cycleGraph_four :
682 ≤ hypercubeTuranNumber 8 (cycleGraph 4)
noncomputable def hypercubeTuranNumber (n : ℕ) {W : Type*} (H : SimpleGraph W) : ℕ := by
classical
exact Finset.sup
((Finset.range ((hypercubeGraph n).edgeSet.ncard + 1)).filter
(fun m => ∃ S : Subgraph (hypercubeGraph n), H.Free S.coe ∧ S.edgeSet.ncard = m))
id
MathlibExt/Combinatorics/SimpleGraph/HypercubeExtremal.lean:87
Sources
- M. Minamoto, C₄-free subgraphs of the hypercubes Q₆, Q₇, and Q₈, arXiv:2603.29127v5 (2026), which improves the bound
680of its earlier versions; SqueezeBenchSqueezeBench/Problems/HypercubeC4/README.mdand OEIS A245762 still list680.
Uses 1
Loading dependency explorer…
The dependency explorer needs JavaScript and its graph data.