-
Notifications
You must be signed in to change notification settings - Fork 256
Add Erdős Problem 595 (K₄-free graph not union of triangle-free, $250 prize) #3775
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
henrykmichalewski
wants to merge
2
commits into
google-deepmind:main
Choose a base branch
from
henrykmichalewski:add-problem-595
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,288 @@ | ||
| /- | ||
| Copyright 2026 The Formal Conjectures Authors. | ||
|
|
||
| Licensed under the Apache License, Version 2.0 (the "License"); | ||
| you may not use this file except in compliance with the License. | ||
| You may obtain a copy of the License at | ||
|
|
||
| https://www.apache.org/licenses/LICENSE-2.0 | ||
|
|
||
| Unless required by applicable law or agreed to in writing, software | ||
| distributed under the License is distributed on an "AS IS" BASIS, | ||
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
| See the License for the specific language governing permissions and | ||
| limitations under the License. | ||
| -/ | ||
|
|
||
| import FormalConjectures.Util.ProblemImports | ||
|
|
||
| /-! | ||
| # Erdős Problem 595 | ||
|
|
||
| *Reference:* [erdosproblems.com/595](https://www.erdosproblems.com/595) | ||
|
|
||
| *References for known results:* | ||
| - [Er87] Erdős, Paul, Problems and results on set systems and hypergraphs. Extremal problems | ||
| for finite sets (Visegrád, 1991), Bolyai Soc. Math. Stud. (1994), 217-227. | ||
| - [Fo70] Folkman, Jon, Graphs with monochromatic complete subgraphs in every edge coloring. | ||
| SIAM J. Appl. Math. (1970), 19:340-345. | ||
| - [NeRo75] Nešetřil, Jaroslav and Rödl, Vojtěch, Type theory of partition problems of graphs. | ||
| Recent advances in graph theory (Proc. Second Czechoslovak Sympos., Prague, 1974), | ||
| Academia, Prague (1975), 405-412. | ||
|
|
||
| ## Overview | ||
|
|
||
| **Problem (Erdős–Hajnal, $250)**: Is there an infinite graph $G$ which contains no $K_4$ | ||
| and is not the union of countably many triangle-free graphs? | ||
|
|
||
| The "union of countably many triangle-free graphs" condition means that the edge set of $G$ | ||
| can be covered by countably many subgraphs, each of which is triangle-free (i.e., $K_3$-free). | ||
|
|
||
| **Known (finite case):** Folkman [Fo70] and Nešetřil–Rödl [NeRo75] proved independently that | ||
| for every $n \geq 1$ there exists a graph $G$ (which may be taken finite) that contains no $K_4$ | ||
| and whose edges cannot be coloured with $n$ colours such that each colour class is triangle-free. | ||
| This means the *finite* version of the problem (with $n$ colours instead of countably many) has | ||
| a positive answer. | ||
|
|
||
| **Open question:** Whether the *infinite* version holds — i.e., whether a single graph can | ||
| simultaneously be $K_4$-free and not expressible as a countable union of triangle-free graphs. | ||
|
|
||
| See also [596] for the more general problem of which pairs $(G_1, G_2)$ exhibit this phenomenon. | ||
|
|
||
| ## Formalization note | ||
|
|
||
| In `SimpleGraph V`, the complete lattice structure allows forming countable suprema | ||
| `⨆ i : ℕ, H i`. The key lemma `SimpleGraph.iSup_adj` states: | ||
| `(⨆ i, H i).Adj a b ↔ ∃ i, (H i).Adj a b`. | ||
| We use this to define `IsCountableUnionOfTriangleFree G` as the existence of a family | ||
| `H : ℕ → SimpleGraph V` of triangle-free graphs with `G = ⨆ i, H i`. | ||
| -/ | ||
|
|
||
| open SimpleGraph Set | ||
|
|
||
| namespace Erdos595 | ||
|
|
||
| def IsCountableUnionOfTriangleFree {V : Type*} (G : SimpleGraph V) : Prop := | ||
| ∃ H : ℕ → SimpleGraph V, (∀ i, (H i).CliqueFree 3) ∧ G = ⨆ i, H i | ||
|
|
||
| /- | ||
| ## Main open problem | ||
| -/ | ||
|
|
||
| /-- | ||
| **Erdős Problem 595 ($250)**: Is there an infinite graph $G$ which contains no $K_4$ and is | ||
| not the union of countably many triangle-free graphs? | ||
|
|
||
| A problem of Erdős and Hajnal [Er87]. | ||
|
|
||
| **Formalization:** We ask for the existence of an infinite type `V` (witnessed by `[Infinite V]`) | ||
| and a `SimpleGraph V` that is $K_4$-free (`G.CliqueFree 4`) but not a countable union of | ||
| triangle-free graphs. | ||
|
|
||
| **Prize:** \$250 (see erdosproblems.com/595). | ||
|
|
||
| **Status:** OPEN. | ||
|
|
||
| **Known (Folkman [Fo70], Nešetřil–Rödl [NeRo75]):** For every finite `n ≥ 1`, there exists a | ||
| graph (even a finite one) that is $K_4$-free but not a union of `n` triangle-free graphs. This | ||
| is the variant `erdos_595.variants.folkman_finite`. However, whether `n` can be replaced by | ||
| `ℵ₀` (countably infinite) is the content of this open problem. | ||
| -/ | ||
| @[category research open, AMS 5] | ||
| theorem erdos_595 : answer(sorry) ↔ | ||
| ∃ (V : Type*) (_ : Infinite V) (G : SimpleGraph V), | ||
| G.CliqueFree 4 ∧ ¬IsCountableUnionOfTriangleFree G := by | ||
| sorry | ||
|
|
||
| /- | ||
| ## Variants and partial results | ||
| -/ | ||
|
|
||
| /-- | ||
| **Folkman–Nešetřil–Rödl (finite version) [Fo70, NeRo75]**: For every `n ≥ 1`, there exists a | ||
| graph `G` (on a finite vertex set) that contains no $K_4$ and whose edges cannot be covered by | ||
| `n` triangle-free graphs. | ||
|
|
||
| More precisely: for every `n : ℕ` with `1 ≤ n`, there exist a finite type `V` and a graph | ||
| `G : SimpleGraph V` with: | ||
| 1. `G.CliqueFree 4` (no $K_4$), and | ||
| 2. For every family `H : Fin n → SimpleGraph V` of triangle-free graphs, `G ≠ ⨆ i, H i`. | ||
|
|
||
| This is the finite analogue of Problem 595. The proofs of Folkman [Fo70] and Nešetřil–Rödl | ||
| [NeRo75] give different explicit constructions. | ||
| -/ | ||
| @[category research solved, AMS 5] | ||
| theorem erdos_595.variants.folkman_finite : answer(True) ↔ | ||
| ∀ n : ℕ, 1 ≤ n → | ||
| ∃ (V : Type*) (_ : Fintype V) (G : SimpleGraph V), | ||
| G.CliqueFree 4 ∧ | ||
| ∀ (H : Fin n → SimpleGraph V), (∀ i, (H i).CliqueFree 3) → G ≠ ⨆ i, H i := by | ||
| simp only [true_iff] | ||
| -- Folkman [Fo70] and Nešetřil–Rödl [NeRo75]: explicit construction exists. | ||
| sorry | ||
|
|
||
| /-- | ||
| **Monotonicity**: If `G` is a countable union of triangle-free graphs and `H ≤ G` (i.e., `H` is | ||
| a subgraph of `G`), then `H` is also a countable union of triangle-free graphs. | ||
|
|
||
| **Proof**: If `G = ⨆ i, G_i` with each `G_i` triangle-free, then `H = ⨆ i, H ⊓ G_i`. | ||
| Each `H ⊓ G_i` is triangle-free because it is a subgraph of `G_i`. | ||
| -/ | ||
| @[category undergraduate, AMS 5] | ||
| theorem erdos_595.variants.subgraph_of_countable_union | ||
| {V : Type*} {G H : SimpleGraph V} | ||
| (hH : H ≤ G) (hG : IsCountableUnionOfTriangleFree G) : | ||
| IsCountableUnionOfTriangleFree H := by | ||
| obtain ⟨f, hf_free, hf_eq⟩ := hG | ||
| refine ⟨fun i => H ⊓ f i, fun i => (hf_free i).anti inf_le_right, ?_⟩ | ||
| ext a b | ||
| simp only [iSup_adj, inf_adj] | ||
| constructor | ||
| · intro hab | ||
| have habG : G.Adj a b := hH hab | ||
| rw [hf_eq, iSup_adj] at habG | ||
| obtain ⟨i, hi⟩ := habG | ||
| exact ⟨i, hab, hi⟩ | ||
| · rintro ⟨i, hHab, _⟩ | ||
| exact hHab | ||
|
|
||
| /-- | ||
| **Triangle-free graphs are trivially countable unions of triangle-free graphs**: if `G` is | ||
| already triangle-free, then `G = ⨆ i : ℕ, G_i` where `G_0 = G` and `G_i = ⊥` for `i ≥ 1`. | ||
| -/ | ||
| @[category undergraduate, AMS 5] | ||
| theorem erdos_595.variants.triangle_free_is_union | ||
| {V : Type*} (G : SimpleGraph V) (hG : G.CliqueFree 3) : | ||
| IsCountableUnionOfTriangleFree G := by | ||
| refine ⟨fun i => if i = 0 then G else ⊥, fun i => ?_, ?_⟩ | ||
| · by_cases h : i = 0 | ||
| · simp [h, hG] | ||
| · simp [h, cliqueFree_bot (by norm_num : 2 ≤ 3)] | ||
| · ext a b | ||
| simp only [iSup_adj] | ||
| constructor | ||
| · intro hab | ||
| exact ⟨0, by simp [hab]⟩ | ||
| · rintro ⟨i, hi⟩ | ||
| by_cases h : i = 0 | ||
| · simp [h] at hi; exact hi | ||
| · simp [h] at hi | ||
|
|
||
| /-- | ||
| **The complete graph `⊤` on `ℕ` is a countable union of triangle-free graphs**: we decompose | ||
| it into the family of star graphs `{H_m}_{m : ℕ}`, where `H_m` is the graph with edges `{m, n}` | ||
| for all `n ≠ m`. Each star is triangle-free (any two non-center vertices share no edge within | ||
| the star), and their union covers all edges of `⊤`. | ||
|
|
||
| **Proof sketch (star triangle-free):** If `{a, b, c}` were a triangle in `H_m`, then each of | ||
| the three edges `{a, b}`, `{a, c}`, `{b, c}` would pass through `m`. In particular, from | ||
| `{a, b}` we get `a = m` or `b = m`; from `{b, c}` we get `b = m` or `c = m`. Case analysis | ||
| shows that two vertices must equal `m`, contradicting the triangle having three distinct vertices. | ||
| -/ | ||
| @[category undergraduate, AMS 5] | ||
| theorem erdos_595.variants.complete_nat_is_union : | ||
| IsCountableUnionOfTriangleFree (⊤ : SimpleGraph ℕ) := by | ||
| -- Star at m: edges are all {a, b} where a = m or b = m (and a ≠ b, by SimpleGraph.fromRel). | ||
| refine ⟨fun m => SimpleGraph.fromRel (fun (a b : ℕ) => a = m ∨ b = m), | ||
| fun m => ?_, ?_⟩ | ||
| · -- Each star H_m is triangle-free. | ||
| rw [CliqueFree] | ||
| intro s hs | ||
| simp only [isNClique_iff] at hs | ||
| obtain ⟨hs_clique, hs_card⟩ := hs | ||
| rw [isClique_iff] at hs_clique | ||
| obtain ⟨a, b, c, hab, hac, hbc, hs_eq⟩ := Finset.card_eq_three.mp hs_card | ||
| -- Extract membership in s. | ||
| have ha : a ∈ s := hs_eq ▸ Finset.mem_insert_self a _ | ||
| have hb : b ∈ s := hs_eq ▸ Finset.mem_insert.mpr | ||
| (Or.inr (Finset.mem_insert_self b _)) | ||
| have hc : c ∈ s := hs_eq ▸ Finset.mem_insert.mpr | ||
| (Or.inr (Finset.mem_insert.mpr (Or.inr (Finset.mem_singleton_self c)))) | ||
| -- Each pair is adjacent in H_m. | ||
| have hab_adj := hs_clique ha hb hab | ||
| have hac_adj := hs_clique ha hc hac | ||
| have hbc_adj := hs_clique hb hc hbc | ||
| -- fromRel_adj: (fromRel r).Adj x y ↔ x ≠ y ∧ (r x y ∨ r y x) | ||
| -- For r x y = (x = m ∨ y = m): r x y ∨ r y x simplifies to x = m ∨ y = m. | ||
| simp only [fromRel_adj] at hab_adj hac_adj hbc_adj | ||
| -- Extract "a = m or b = m", "a = m or c = m", "b = m or c = m". | ||
| have ham_or_bm : a = m ∨ b = m := hab_adj.2.elim id Or.symm | ||
| have ham_or_cm : a = m ∨ c = m := hac_adj.2.elim id Or.symm | ||
| have hbm_or_cm : b = m ∨ c = m := hbc_adj.2.elim id Or.symm | ||
| -- Case analysis: whichever vertex equals m forces another to equal m as well, | ||
| -- contradicting distinctness. | ||
| rcases ham_or_bm with rfl | rfl | ||
| · -- a = m | ||
| rcases hbm_or_cm with rfl | rfl | ||
| · exact absurd rfl hab -- b = a = m | ||
| · exact absurd rfl hac -- c = a = m | ||
| · -- b = m | ||
| rcases ham_or_cm with rfl | rfl | ||
| · exact hab.symm rfl -- a = b = m, so a = m and b = m, contradiction | ||
| · exact hbc rfl -- c = b = m, so b = c, contradiction | ||
| · -- The union ⨆ m, H_m equals ⊤. | ||
| ext a b | ||
| simp only [iSup_adj, fromRel_adj, top_adj] | ||
| -- Goal: a ≠ b ↔ ∃ m, a ≠ b ∧ ((a = m ∨ b = m) ∨ (b = m ∨ a = m)) | ||
| exact ⟨fun hab => ⟨a, hab, Or.inl (Or.inl rfl)⟩, | ||
| fun ⟨_, hne, _⟩ => hne⟩ | ||
|
|
||
| /-- | ||
| **The complete graph `⊤` on `Fin 4` is not $K_4$-free**: `⊤` on `Fin 4` equals the complete | ||
| graph $K_4$, so it contains $K_4$ as a subgraph and is not $K_4$-free. | ||
|
|
||
| This sanity check confirms the $K_4$-free hypothesis of Problem 595 is non-trivial. | ||
| -/ | ||
| @[category undergraduate, AMS 5] | ||
| theorem erdos_595.variants.K4_not_cliqueFree : | ||
| ¬ (⊤ : SimpleGraph (Fin 4)).CliqueFree 4 := by | ||
| rw [not_cliqueFree_iff] | ||
| exact ⟨(Iso.completeGraph (Fintype.equivFin (Fin 4))).symm.toEmbedding⟩ | ||
|
|
||
| /-- | ||
| **Reformulation via edge colourings**: A graph `G` is a countable union of triangle-free graphs | ||
| if and only if there is a colouring of the edges of `G` by `ℕ` such that no monochromatic | ||
| triangle exists. | ||
|
|
||
| More precisely: `IsCountableUnionOfTriangleFree G` is equivalent to the existence of a map | ||
| `c : G.edgeSet → ℕ` such that for each `n : ℕ`, the subgraph of edges coloured `n` is triangle-free. | ||
| -/ | ||
| @[category test, AMS 5] | ||
| theorem erdos_595.variants.reformulation_edge_colouring {V : Type*} (G : SimpleGraph V) : | ||
| IsCountableUnionOfTriangleFree G ↔ | ||
| ∃ c : G.edgeSet → ℕ, | ||
| ∀ n : ℕ, | ||
| (SimpleGraph.fromEdgeSet {e | ∃ h : e ∈ G.edgeSet, c ⟨e, h⟩ = n}).CliqueFree 3 := by | ||
| -- Note: `c : G.edgeSet → ℕ` is exactly `EdgeLabeling G ℕ`, and the `fromEdgeSet` expression | ||
| -- is exactly `EdgeLabeling.labelGraph c n`. We use `EdgeLabeling.iSup_labelGraph` for (←). | ||
| constructor | ||
| · -- (→): Given H : ℕ → SimpleGraph V with G = ⨆ H i and each H i triangle-free, | ||
| -- construct c : G.edgeSet → ℕ by choosing some i containing each edge classically. | ||
| rintro ⟨H, hH_free, hH_eq⟩ | ||
| -- For each edge e = s(a,b) of G, use iSup_adj to find some H i containing it. | ||
| -- We use Sym2.ind to destructure e into s(a,b) form and then apply mem_edgeSet + iSup_adj. | ||
| have hcov : ∀ e : G.edgeSet, ∃ i, (e : Sym2 V) ∈ (H i).edgeSet := | ||
| fun ⟨e, he⟩ => Sym2.ind (fun a b he => by | ||
| rw [hH_eq, mem_edgeSet, iSup_adj] at he | ||
| exact he.imp fun i hi => hi) e he | ||
| -- Define c by classical choice of the covering index. | ||
| refine ⟨fun e => (hcov e).choose, fun n => ?_⟩ | ||
| -- Show the subgraph of edges coloured n is a subgraph of H n, hence triangle-free. | ||
| apply (hH_free n).anti | ||
| intro x y hxy | ||
| rw [fromEdgeSet_adj] at hxy | ||
| obtain ⟨⟨h_mem, h_eq⟩, _⟩ := hxy | ||
| -- h_eq : (hcov ⟨s(x,y), h_mem⟩).choose = n | ||
| -- choose_spec gives s(x,y) ∈ (H (choose)).edgeSet; after rewriting with h_eq, in H n. | ||
| have hspec := (hcov ⟨s(x, y), h_mem⟩).choose_spec | ||
| simp only [h_eq] at hspec | ||
| exact hspec | ||
| · -- (←): Given c : G.edgeSet → ℕ, define H n = fromEdgeSet {e | ∃ h, c ⟨e,h⟩ = n}. | ||
| -- This is EdgeLabeling.labelGraph c n, so ⨆ n, H n = G by iSup_labelGraph. | ||
| rintro ⟨c, hc⟩ | ||
| refine ⟨fun n => SimpleGraph.fromEdgeSet {e | ∃ h : e ∈ G.edgeSet, c ⟨e, h⟩ = n}, | ||
| hc, ?_⟩ | ||
| -- G = ⨆ n, (labelGraph c n) follows from EdgeLabeling.iSup_labelGraph. | ||
| exact (EdgeLabeling.iSup_labelGraph (G := G) c).symm | ||
|
|
||
| end Erdos595 | ||
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.