/-
Copyright 2025 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 FormalConjecturesUtilTitle: Degree sequences in triangle-free graphs Authors: P. Erdős, S. Fajtlowicz and W. Staton, Published in Discrete Mathematics 92 (1991) 85–88.
open BigOperatorsopen scoped Finsetnamespace DegreeSequencesTriangleFree
A sequence of natural numbers is compact on a set S if consecutive terms at distance
2 differ by 1 for all k ∈ S.
def IsCompactSequenceOn (d : ℕ → ℕ) (S : Set ℕ) : Prop :=
∀ k ∈ S, d (k + 2) = d k + 1end DegreeSequencesTriangleFreenamespace SimpleGraphvariable {α : Type*} [Fintype α] [DecidableEq α]
The number of vertices of G having degree d.
noncomputable def degreeFreq (G : SimpleGraph α) (d : ℕ) : ℕ :=
open scoped Classical in
#{v | G.degree v = d}end SimpleGraphnamespace DegreeSequencesTriangleFreevariable (d : ℕ → ℕ) (n k r : ℕ)
Lemma 1 (a)
If a sequence d is nondecreasing and no three terms are equal, then terms at distance 2 differ by at least 1.
d:ℕ → ℕk:ℕh_mono:Monotone dh_no_three:∀ (k : ℕ), d (k + 2) ≠ d kthis:d k ≤ d (k + 2)⊢ 1 ≤ d (k + 2) - d k
have := h_no_three k d:ℕ → ℕk:ℕh_mono:Monotone dh_no_three:∀ (k : ℕ), d (k + 2) ≠ d kthis✝:d k ≤ d (k + 2)this:d (k + 2) ≠ d k⊢ 1 ≤ d (k + 2) - d k
omega All goals completed! 🐙
Lemma 1 (b)
If a sequence d is nondecreasing and no three terms are equal, then terms at distance 2 * r differ by at least r.
@[category API, AMS 5]
lemma lemma1_b
(h_mono : Monotone d)
(h_no_three : ∀ i, d (i + 2) ≠ d i) :
r ≤ d (k + 2 * r) - d k := by d:ℕ → ℕk:ℕr:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d i⊢ r ≤ d (k + 2 * r) - d k
induction r with
| zero => zero d:ℕ → ℕk:ℕr:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d i⊢ 0 ≤ d (k + 2 * 0) - d k simp All goals completed! 🐙
| succ r ih => succ d:ℕ → ℕk:ℕr✝:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ir:ℕih:r ≤ d (k + 2 * r) - d k⊢ r + 1 ≤ d (k + 2 * (r + 1)) - d k
have hrw : k + 2 * (r + 1) = (k + 2 * r) + 2 := by d:ℕ → ℕk:ℕr:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d i⊢ r ≤ d (k + 2 * r) - d k succ d:ℕ → ℕk:ℕr✝:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ir:ℕih:r ≤ d (k + 2 * r) - d khrw:k + 2 * (r + 1) = k + 2 * r + 2⊢ r + 1 ≤ d (k + 2 * (r + 1)) - d k ring succ d:ℕ → ℕk:ℕr✝:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ir:ℕih:r ≤ d (k + 2 * r) - d khrw:k + 2 * (r + 1) = k + 2 * r + 2⊢ r + 1 ≤ d (k + 2 * (r + 1)) - d ksucc d:ℕ → ℕk:ℕr✝:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ir:ℕih:r ≤ d (k + 2 * r) - d khrw:k + 2 * (r + 1) = k + 2 * r + 2⊢ r + 1 ≤ d (k + 2 * (r + 1)) - d k
rw [hrw succ d:ℕ → ℕk:ℕr✝:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ir:ℕih:r ≤ d (k + 2 * r) - d khrw:k + 2 * (r + 1) = k + 2 * r + 2⊢ r + 1 ≤ d (k + 2 * r + 2) - d k succ d:ℕ → ℕk:ℕr✝:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ir:ℕih:r ≤ d (k + 2 * r) - d khrw:k + 2 * (r + 1) = k + 2 * r + 2⊢ r + 1 ≤ d (k + 2 * r + 2) - d k]succ d:ℕ → ℕk:ℕr✝:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ir:ℕih:r ≤ d (k + 2 * r) - d khrw:k + 2 * (r + 1) = k + 2 * r + 2⊢ r + 1 ≤ d (k + 2 * r + 2) - d k
have h1 := lemma1_a d (k + 2 * r) h_mono h_no_three succ d:ℕ → ℕk:ℕr✝:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ir:ℕih:r ≤ d (k + 2 * r) - d khrw:k + 2 * (r + 1) = k + 2 * r + 2h1:1 ≤ d (k + 2 * r + 2) - d (k + 2 * r)⊢ r + 1 ≤ d (k + 2 * r + 2) - d k
have h2 : d k ≤ d (k + 2 * r) := h_mono (by d:ℕ → ℕk:ℕr✝:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ir:ℕih:r ≤ d (k + 2 * r) - d khrw:k + 2 * (r + 1) = k + 2 * r + 2h1:1 ≤ d (k + 2 * r + 2) - d (k + 2 * r)⊢ k ≤ k + 2 * r succ d:ℕ → ℕk:ℕr✝:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ir:ℕih:r ≤ d (k + 2 * r) - d khrw:k + 2 * (r + 1) = k + 2 * r + 2h1:1 ≤ d (k + 2 * r + 2) - d (k + 2 * r)h2:d k ≤ d (k + 2 * r)⊢ r + 1 ≤ d (k + 2 * r + 2) - d k omega All goals completed! 🐙succ d:ℕ → ℕk:ℕr✝:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ir:ℕih:r ≤ d (k + 2 * r) - d khrw:k + 2 * (r + 1) = k + 2 * r + 2h1:1 ≤ d (k + 2 * r + 2) - d (k + 2 * r)h2:d k ≤ d (k + 2 * r)⊢ r + 1 ≤ d (k + 2 * r + 2) - d k)succ d:ℕ → ℕk:ℕr✝:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ir:ℕih:r ≤ d (k + 2 * r) - d khrw:k + 2 * (r + 1) = k + 2 * r + 2h1:1 ≤ d (k + 2 * r + 2) - d (k + 2 * r)h2:d k ≤ d (k + 2 * r)⊢ r + 1 ≤ d (k + 2 * r + 2) - d k
have h3 : d (k + 2 * r) ≤ d (k + 2 * r + 2) := h_mono (by d:ℕ → ℕk:ℕr✝:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ir:ℕih:r ≤ d (k + 2 * r) - d khrw:k + 2 * (r + 1) = k + 2 * r + 2h1:1 ≤ d (k + 2 * r + 2) - d (k + 2 * r)h2:d k ≤ d (k + 2 * r)⊢ k + 2 * r ≤ k + 2 * r + 2 succ d:ℕ → ℕk:ℕr✝:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ir:ℕih:r ≤ d (k + 2 * r) - d khrw:k + 2 * (r + 1) = k + 2 * r + 2h1:1 ≤ d (k + 2 * r + 2) - d (k + 2 * r)h2:d k ≤ d (k + 2 * r)h3:d (k + 2 * r) ≤ d (k + 2 * r + 2)⊢ r + 1 ≤ d (k + 2 * r + 2) - d k omega All goals completed! 🐙succ d:ℕ → ℕk:ℕr✝:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ir:ℕih:r ≤ d (k + 2 * r) - d khrw:k + 2 * (r + 1) = k + 2 * r + 2h1:1 ≤ d (k + 2 * r + 2) - d (k + 2 * r)h2:d k ≤ d (k + 2 * r)h3:d (k + 2 * r) ≤ d (k + 2 * r + 2)⊢ r + 1 ≤ d (k + 2 * r + 2) - d k)succ d:ℕ → ℕk:ℕr✝:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ir:ℕih:r ≤ d (k + 2 * r) - d khrw:k + 2 * (r + 1) = k + 2 * r + 2h1:1 ≤ d (k + 2 * r + 2) - d (k + 2 * r)h2:d k ≤ d (k + 2 * r)h3:d (k + 2 * r) ≤ d (k + 2 * r + 2)⊢ r + 1 ≤ d (k + 2 * r + 2) - d k
omega All goals completed! 🐙
Helper: additive form of Lemma 2(a)'s estimate, used by lemma2_a–lemma2_d.
The upper sum (after reindexing) exceeds the lower sum by at least 2 * n * n.
@[category API, AMS 5]
private lemma lemma2_helper_short
(h_mono : Monotone d)
(h_no_three : ∀ i, d (i + 2) ≠ d i) :
∑ i ∈ Finset.Icc 1 (2 * n), d i + 2 * n * n ≤
∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i := by d:ℕ → ℕn:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d i⊢ ∑ i ∈ Finset.Icc 1 (2 * n), d i + 2 * n * n ≤ ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i
-- Reindex `i ↦ i + 2 * n`.
have hreindex : ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i =
∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n) := by
rw [show Finset.Icc (2 * n + 1) (4 * n) =
(Finset.Icc 1 (2 * n)).image (· + 2 * n) by d:ℕ → ℕn:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d i⊢ ∑ i ∈ Finset.Icc 1 (2 * n), d i + 2 * n * n ≤ ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i d:ℕ → ℕn:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d i⊢ ∑ i ∈ Finset.image (fun x ↦ x + 2 * n) (Finset.Icc 1 (2 * n)), d i = ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n) d:ℕ → ℕn:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihreindex:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i = ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n)⊢ ∑ i ∈ Finset.Icc 1 (2 * n), d i + 2 * n * n ≤ ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i
ext x d:ℕ → ℕn:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ix:ℕ⊢ x ∈ Finset.Icc (2 * n + 1) (4 * n) ↔ x ∈ Finset.image (fun x ↦ x + 2 * n) (Finset.Icc 1 (2 * n)) d:ℕ → ℕn:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d i⊢ ∑ i ∈ Finset.image (fun x ↦ x + 2 * n) (Finset.Icc 1 (2 * n)), d i = ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n) d:ℕ → ℕn:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihreindex:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i = ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n)⊢ ∑ i ∈ Finset.Icc 1 (2 * n), d i + 2 * n * n ≤ ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i; simp [Finset.mem_Icc] d:ℕ → ℕn:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ix:ℕ⊢ 2 * n < x ∧ x ≤ 4 * n ↔ 1 + 2 * n ≤ x ∧ x ≤ 2 * n + 2 * n d:ℕ → ℕn:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d i⊢ ∑ i ∈ Finset.image (fun x ↦ x + 2 * n) (Finset.Icc 1 (2 * n)), d i = ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n) d:ℕ → ℕn:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihreindex:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i = ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n)⊢ ∑ i ∈ Finset.Icc 1 (2 * n), d i + 2 * n * n ≤ ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i; omega All goals completed! 🐙 d:ℕ → ℕn:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d i⊢ ∑ i ∈ Finset.image (fun x ↦ x + 2 * n) (Finset.Icc 1 (2 * n)), d i = ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n) d:ℕ → ℕn:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihreindex:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i = ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n)⊢ ∑ i ∈ Finset.Icc 1 (2 * n), d i + 2 * n * n ≤ ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i] d:ℕ → ℕn:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d i⊢ ∑ i ∈ Finset.image (fun x ↦ x + 2 * n) (Finset.Icc 1 (2 * n)), d i = ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n) d:ℕ → ℕn:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihreindex:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i = ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n)⊢ ∑ i ∈ Finset.Icc 1 (2 * n), d i + 2 * n * n ≤ ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i
rw [Finset.sum_image d:ℕ → ℕn:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d i⊢ ∑ x ∈ Finset.Icc 1 (2 * n), d (x + 2 * n) = ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n)d:ℕ → ℕn:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d i⊢ Set.InjOn (fun x ↦ x + 2 * n) ↑(Finset.Icc 1 (2 * n)) d:ℕ → ℕn:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d i⊢ Set.InjOn (fun x ↦ x + 2 * n) ↑(Finset.Icc 1 (2 * n)) d:ℕ → ℕn:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihreindex:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i = ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n)⊢ ∑ i ∈ Finset.Icc 1 (2 * n), d i + 2 * n * n ≤ ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i] d:ℕ → ℕn:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d i⊢ Set.InjOn (fun x ↦ x + 2 * n) ↑(Finset.Icc 1 (2 * n)) d:ℕ → ℕn:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihreindex:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i = ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n)⊢ ∑ i ∈ Finset.Icc 1 (2 * n), d i + 2 * n * n ≤ ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i; intro a _ b _ hab d:ℕ → ℕn:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ia:ℕa✝¹:a ∈ ↑(Finset.Icc 1 (2 * n))b:ℕa✝:b ∈ ↑(Finset.Icc 1 (2 * n))hab:(fun x ↦ x + 2 * n) a = (fun x ↦ x + 2 * n) b⊢ a = b d:ℕ → ℕn:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihreindex:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i = ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n)⊢ ∑ i ∈ Finset.Icc 1 (2 * n), d i + 2 * n * n ≤ ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i; exact Nat.add_right_cancel hab d:ℕ → ℕn:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihreindex:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i = ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n)⊢ ∑ i ∈ Finset.Icc 1 (2 * n), d i + 2 * n * n ≤ ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i d:ℕ → ℕn:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihreindex:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i = ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n)⊢ ∑ i ∈ Finset.Icc 1 (2 * n), d i + 2 * n * n ≤ ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i
rw [hreindex d:ℕ → ℕn:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihreindex:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i = ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n)⊢ ∑ i ∈ Finset.Icc 1 (2 * n), d i + 2 * n * n ≤ ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n) d:ℕ → ℕn:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihreindex:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i = ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n)⊢ ∑ i ∈ Finset.Icc 1 (2 * n), d i + 2 * n * n ≤ ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n)] d:ℕ → ℕn:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihreindex:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i = ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n)⊢ ∑ i ∈ Finset.Icc 1 (2 * n), d i + 2 * n * n ≤ ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n)
have hpt : ∀ i, d i + n ≤ d (i + 2 * n) := fun i => by d:ℕ → ℕn:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihreindex:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i = ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n)i:ℕ⊢ d i + n ≤ d (i + 2 * n) d:ℕ → ℕn:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihreindex:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i = ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n)hpt:∀ (i : ℕ), d i + n ≤ d (i + 2 * n)⊢ ∑ i ∈ Finset.Icc 1 (2 * n), d i + 2 * n * n ≤ ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n)
have h1 := lemma1_b d i n h_mono h_no_three d:ℕ → ℕn:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihreindex:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i = ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n)i:ℕh1:n ≤ d (i + 2 * n) - d i⊢ d i + n ≤ d (i + 2 * n) d:ℕ → ℕn:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihreindex:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i = ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n)hpt:∀ (i : ℕ), d i + n ≤ d (i + 2 * n)⊢ ∑ i ∈ Finset.Icc 1 (2 * n), d i + 2 * n * n ≤ ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n)
have h2 := h_mono (show i ≤ i + 2 * n by omega All goals completed! 🐙 d:ℕ → ℕn:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihreindex:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i = ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n)i:ℕh1:n ≤ d (i + 2 * n) - d ih2:d i ≤ d (i + 2 * n)⊢ d i + n ≤ d (i + 2 * n) d:ℕ → ℕn:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihreindex:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i = ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n)hpt:∀ (i : ℕ), d i + n ≤ d (i + 2 * n)⊢ ∑ i ∈ Finset.Icc 1 (2 * n), d i + 2 * n * n ≤ ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n)) d:ℕ → ℕn:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihreindex:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i = ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n)i:ℕh1:n ≤ d (i + 2 * n) - d ih2:d i ≤ d (i + 2 * n)⊢ d i + n ≤ d (i + 2 * n) d:ℕ → ℕn:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihreindex:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i = ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n)hpt:∀ (i : ℕ), d i + n ≤ d (i + 2 * n)⊢ ∑ i ∈ Finset.Icc 1 (2 * n), d i + 2 * n * n ≤ ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n)
omega d:ℕ → ℕn:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihreindex:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i = ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n)hpt:∀ (i : ℕ), d i + n ≤ d (i + 2 * n)⊢ ∑ i ∈ Finset.Icc 1 (2 * n), d i + 2 * n * n ≤ ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n) d:ℕ → ℕn:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihreindex:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i = ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n)hpt:∀ (i : ℕ), d i + n ≤ d (i + 2 * n)⊢ ∑ i ∈ Finset.Icc 1 (2 * n), d i + 2 * n * n ≤ ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n)
have hcard : (Finset.Icc 1 (2 * n)).card = 2 * n := by d:ℕ → ℕn:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d i⊢ ∑ i ∈ Finset.Icc 1 (2 * n), d i + 2 * n * n ≤ ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i d:ℕ → ℕn:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihreindex:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i = ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n)hpt:∀ (i : ℕ), d i + n ≤ d (i + 2 * n)hcard:#(Finset.Icc 1 (2 * n)) = 2 * n⊢ ∑ i ∈ Finset.Icc 1 (2 * n), d i + 2 * n * n ≤ ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n) simp [Nat.card_Icc] d:ℕ → ℕn:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihreindex:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i = ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n)hpt:∀ (i : ℕ), d i + n ≤ d (i + 2 * n)hcard:#(Finset.Icc 1 (2 * n)) = 2 * n⊢ ∑ i ∈ Finset.Icc 1 (2 * n), d i + 2 * n * n ≤ ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n) d:ℕ → ℕn:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihreindex:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i = ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n)hpt:∀ (i : ℕ), d i + n ≤ d (i + 2 * n)hcard:#(Finset.Icc 1 (2 * n)) = 2 * n⊢ ∑ i ∈ Finset.Icc 1 (2 * n), d i + 2 * n * n ≤ ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n)
have hsum_n : ∑ _ ∈ Finset.Icc 1 (2 * n), n = 2 * n * n := by d:ℕ → ℕn:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d i⊢ ∑ i ∈ Finset.Icc 1 (2 * n), d i + 2 * n * n ≤ ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i d:ℕ → ℕn:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihreindex:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i = ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n)hpt:∀ (i : ℕ), d i + n ≤ d (i + 2 * n)hcard:#(Finset.Icc 1 (2 * n)) = 2 * nhsum_n:∑ x ∈ Finset.Icc 1 (2 * n), n = 2 * n * n⊢ ∑ i ∈ Finset.Icc 1 (2 * n), d i + 2 * n * n ≤ ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n)
rw [Finset.sum_const, d:ℕ → ℕn:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihreindex:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i = ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n)hpt:∀ (i : ℕ), d i + n ≤ d (i + 2 * n)hcard:#(Finset.Icc 1 (2 * n)) = 2 * n⊢ #(Finset.Icc 1 (2 * n)) • n = 2 * n * n d:ℕ → ℕn:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihreindex:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i = ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n)hpt:∀ (i : ℕ), d i + n ≤ d (i + 2 * n)hcard:#(Finset.Icc 1 (2 * n)) = 2 * nhsum_n:∑ x ∈ Finset.Icc 1 (2 * n), n = 2 * n * n⊢ ∑ i ∈ Finset.Icc 1 (2 * n), d i + 2 * n * n ≤ ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n) hcard, d:ℕ → ℕn:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihreindex:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i = ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n)hpt:∀ (i : ℕ), d i + n ≤ d (i + 2 * n)hcard:#(Finset.Icc 1 (2 * n)) = 2 * n⊢ (2 * n) • n = 2 * n * n d:ℕ → ℕn:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihreindex:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i = ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n)hpt:∀ (i : ℕ), d i + n ≤ d (i + 2 * n)hcard:#(Finset.Icc 1 (2 * n)) = 2 * nhsum_n:∑ x ∈ Finset.Icc 1 (2 * n), n = 2 * n * n⊢ ∑ i ∈ Finset.Icc 1 (2 * n), d i + 2 * n * n ≤ ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n) smul_eq_mul d:ℕ → ℕn:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihreindex:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i = ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n)hpt:∀ (i : ℕ), d i + n ≤ d (i + 2 * n)hcard:#(Finset.Icc 1 (2 * n)) = 2 * n⊢ 2 * n * n = 2 * n * n d:ℕ → ℕn:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihreindex:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i = ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n)hpt:∀ (i : ℕ), d i + n ≤ d (i + 2 * n)hcard:#(Finset.Icc 1 (2 * n)) = 2 * nhsum_n:∑ x ∈ Finset.Icc 1 (2 * n), n = 2 * n * n⊢ ∑ i ∈ Finset.Icc 1 (2 * n), d i + 2 * n * n ≤ ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n)] d:ℕ → ℕn:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihreindex:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i = ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n)hpt:∀ (i : ℕ), d i + n ≤ d (i + 2 * n)hcard:#(Finset.Icc 1 (2 * n)) = 2 * nhsum_n:∑ x ∈ Finset.Icc 1 (2 * n), n = 2 * n * n⊢ ∑ i ∈ Finset.Icc 1 (2 * n), d i + 2 * n * n ≤ ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n) d:ℕ → ℕn:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihreindex:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i = ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n)hpt:∀ (i : ℕ), d i + n ≤ d (i + 2 * n)hcard:#(Finset.Icc 1 (2 * n)) = 2 * nhsum_n:∑ x ∈ Finset.Icc 1 (2 * n), n = 2 * n * n⊢ ∑ i ∈ Finset.Icc 1 (2 * n), d i + 2 * n * n ≤ ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n)
rw [← hsum_n, d:ℕ → ℕn:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihreindex:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i = ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n)hpt:∀ (i : ℕ), d i + n ≤ d (i + 2 * n)hcard:#(Finset.Icc 1 (2 * n)) = 2 * nhsum_n:∑ x ∈ Finset.Icc 1 (2 * n), n = 2 * n * n⊢ ∑ i ∈ Finset.Icc 1 (2 * n), d i + ∑ x ∈ Finset.Icc 1 (2 * n), n ≤ ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n) d:ℕ → ℕn:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihreindex:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i = ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n)hpt:∀ (i : ℕ), d i + n ≤ d (i + 2 * n)hcard:#(Finset.Icc 1 (2 * n)) = 2 * nhsum_n:∑ x ∈ Finset.Icc 1 (2 * n), n = 2 * n * n⊢ ∑ x ∈ Finset.Icc 1 (2 * n), (d x + n) ≤ ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n) ← Finset.sum_add_distrib d:ℕ → ℕn:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihreindex:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i = ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n)hpt:∀ (i : ℕ), d i + n ≤ d (i + 2 * n)hcard:#(Finset.Icc 1 (2 * n)) = 2 * nhsum_n:∑ x ∈ Finset.Icc 1 (2 * n), n = 2 * n * n⊢ ∑ x ∈ Finset.Icc 1 (2 * n), (d x + n) ≤ ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n) d:ℕ → ℕn:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihreindex:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i = ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n)hpt:∀ (i : ℕ), d i + n ≤ d (i + 2 * n)hcard:#(Finset.Icc 1 (2 * n)) = 2 * nhsum_n:∑ x ∈ Finset.Icc 1 (2 * n), n = 2 * n * n⊢ ∑ x ∈ Finset.Icc 1 (2 * n), (d x + n) ≤ ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n)] d:ℕ → ℕn:ℕh_mono:Monotone dh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihreindex:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i = ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n)hpt:∀ (i : ℕ), d i + n ≤ d (i + 2 * n)hcard:#(Finset.Icc 1 (2 * n)) = 2 * nhsum_n:∑ x ∈ Finset.Icc 1 (2 * n), n = 2 * n * n⊢ ∑ x ∈ Finset.Icc 1 (2 * n), (d x + n) ≤ ∑ i ∈ Finset.Icc 1 (2 * n), d (i + 2 * n)
exact Finset.sum_le_sum fun i _ => hpt i All goals completed! 🐙Lemma 2 (a) Inequality involving sums of terms of a nondecreasing sequence with no three terms equal.
@[category API, AMS 5]
lemma lemma2_a
(h_mono : Monotone d)
(_h_pos : ∀ k, 0 < d k)
(h_no_three : ∀ i, d (i + 2) ≠ d i) :
2 * n * n ≤
∑ i ∈ .Icc (2 * n + 1) (4 * n), d i -
∑ i ∈ .Icc 1 (2 * n), d i := by d:ℕ → ℕn:ℕh_mono:Monotone d_h_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d i⊢ 2 * n * n ≤ ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i - ∑ i ∈ Finset.Icc 1 (2 * n), d i
have := lemma2_helper_short d n h_mono h_no_three d:ℕ → ℕn:ℕh_mono:Monotone d_h_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ithis:∑ i ∈ Finset.Icc 1 (2 * n), d i + 2 * n * n ≤ ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i⊢ 2 * n * n ≤ ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i - ∑ i ∈ Finset.Icc 1 (2 * n), d i
omega All goals completed! 🐙Lemma 2 (b) Inequality involving sums of terms of a nondecreasing sequence with no three terms equal.
@[category API, AMS 5]
lemma lemma2_b
(h_mono : Monotone d)
(h_pos : ∀ k, 0 < d k)
(h_no_three : ∀ i, d (i + 2) ≠ d i) :
2 * n * n + 2 * n + 1 ≤
∑ i ∈ .Icc (2 * n + 1) (4 * n + 1), d i -
∑ i ∈ .Icc 1 (2 * n), d i := by d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d i⊢ 2 * n * n + 2 * n + 1 ≤ ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i - ∑ i ∈ Finset.Icc 1 (2 * n), d i
-- Split the upper sum at `4 * n + 1`.
have hsplit : ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i =
(∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i) + d (4 * n + 1) := by
rw [show Finset.Icc (2 * n + 1) (4 * n + 1) =
insert (4 * n + 1) (Finset.Icc (2 * n + 1) (4 * n)) by d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d i⊢ 2 * n * n + 2 * n + 1 ≤ ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i - ∑ i ∈ Finset.Icc 1 (2 * n), d i d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d i⊢ ∑ i ∈ insert (4 * n + 1) (Finset.Icc (2 * n + 1) (4 * n)), d i =
∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1) d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihsplit:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i = ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1)⊢ 2 * n * n + 2 * n + 1 ≤ ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i - ∑ i ∈ Finset.Icc 1 (2 * n), d i
ext x d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ix:ℕ⊢ x ∈ Finset.Icc (2 * n + 1) (4 * n + 1) ↔ x ∈ insert (4 * n + 1) (Finset.Icc (2 * n + 1) (4 * n)) d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d i⊢ ∑ i ∈ insert (4 * n + 1) (Finset.Icc (2 * n + 1) (4 * n)), d i =
∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1) d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihsplit:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i = ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1)⊢ 2 * n * n + 2 * n + 1 ≤ ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i - ∑ i ∈ Finset.Icc 1 (2 * n), d i; simp [Finset.mem_Icc, Finset.mem_insert] d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ix:ℕ⊢ 2 * n < x ∧ x ≤ 4 * n + 1 ↔ x = 4 * n + 1 ∨ 2 * n < x ∧ x ≤ 4 * n d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d i⊢ ∑ i ∈ insert (4 * n + 1) (Finset.Icc (2 * n + 1) (4 * n)), d i =
∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1) d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihsplit:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i = ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1)⊢ 2 * n * n + 2 * n + 1 ≤ ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i - ∑ i ∈ Finset.Icc 1 (2 * n), d i; omega All goals completed! 🐙 d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d i⊢ ∑ i ∈ insert (4 * n + 1) (Finset.Icc (2 * n + 1) (4 * n)), d i =
∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1) d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihsplit:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i = ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1)⊢ 2 * n * n + 2 * n + 1 ≤ ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i - ∑ i ∈ Finset.Icc 1 (2 * n), d i] d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d i⊢ ∑ i ∈ insert (4 * n + 1) (Finset.Icc (2 * n + 1) (4 * n)), d i =
∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1) d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihsplit:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i = ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1)⊢ 2 * n * n + 2 * n + 1 ≤ ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i - ∑ i ∈ Finset.Icc 1 (2 * n), d i
rw [Finset.sum_insert (by d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d i⊢ 4 * n + 1 ∉ Finset.Icc (2 * n + 1) (4 * n) d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihsplit:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i = ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1)⊢ 2 * n * n + 2 * n + 1 ≤ ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i - ∑ i ∈ Finset.Icc 1 (2 * n), d i simp [Finset.mem_Icc] All goals completed! 🐙 d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihsplit:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i = ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1)⊢ 2 * n * n + 2 * n + 1 ≤ ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i - ∑ i ∈ Finset.Icc 1 (2 * n), d i), add_comm d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d i⊢ ∑ x ∈ Finset.Icc (2 * n + 1) (4 * n), d x + d (4 * n + 1) = ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1) d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihsplit:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i = ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1)⊢ 2 * n * n + 2 * n + 1 ≤ ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i - ∑ i ∈ Finset.Icc 1 (2 * n), d i] d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihsplit:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i = ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1)⊢ 2 * n * n + 2 * n + 1 ≤ ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i - ∑ i ∈ Finset.Icc 1 (2 * n), d i d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihsplit:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i = ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1)⊢ 2 * n * n + 2 * n + 1 ≤ ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i - ∑ i ∈ Finset.Icc 1 (2 * n), d i
-- Bound `d (4 * n + 1) ≥ 2 * n + 1` via two applications of `lemma1_b` + `h_pos`.
have h_dbig : 2 * n + 1 ≤ d (4 * n + 1) := by
have h1 := lemma1_b d 1 n h_mono h_no_three d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihsplit:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i = ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1)h1:n ≤ d (1 + 2 * n) - d 1⊢ 2 * n + 1 ≤ d (4 * n + 1) d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihsplit:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i = ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1)h_dbig:2 * n + 1 ≤ d (4 * n + 1)⊢ 2 * n * n + 2 * n + 1 ≤ ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i - ∑ i ∈ Finset.Icc 1 (2 * n), d i
have h2 := lemma1_b d (2 * n + 1) n h_mono h_no_three d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihsplit:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i = ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1)h1:n ≤ d (1 + 2 * n) - d 1h2:n ≤ d (2 * n + 1 + 2 * n) - d (2 * n + 1)⊢ 2 * n + 1 ≤ d (4 * n + 1) d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihsplit:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i = ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1)h_dbig:2 * n + 1 ≤ d (4 * n + 1)⊢ 2 * n * n + 2 * n + 1 ≤ ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i - ∑ i ∈ Finset.Icc 1 (2 * n), d i
have hp := h_pos 1 d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihsplit:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i = ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1)h1:n ≤ d (1 + 2 * n) - d 1h2:n ≤ d (2 * n + 1 + 2 * n) - d (2 * n + 1)hp:0 < d 1⊢ 2 * n + 1 ≤ d (4 * n + 1) d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihsplit:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i = ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1)h_dbig:2 * n + 1 ≤ d (4 * n + 1)⊢ 2 * n * n + 2 * n + 1 ≤ ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i - ∑ i ∈ Finset.Icc 1 (2 * n), d i
have m1 : d 1 ≤ d (1 + 2 * n) := h_mono (by d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihsplit:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i = ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1)h1:n ≤ d (1 + 2 * n) - d 1h2:n ≤ d (2 * n + 1 + 2 * n) - d (2 * n + 1)hp:0 < d 1⊢ 1 ≤ 1 + 2 * n d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihsplit:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i = ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1)h1:n ≤ d (1 + 2 * n) - d 1h2:n ≤ d (2 * n + 1 + 2 * n) - d (2 * n + 1)hp:0 < d 1m1:d 1 ≤ d (1 + 2 * n)⊢ 2 * n + 1 ≤ d (4 * n + 1) d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihsplit:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i = ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1)h_dbig:2 * n + 1 ≤ d (4 * n + 1)⊢ 2 * n * n + 2 * n + 1 ≤ ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i - ∑ i ∈ Finset.Icc 1 (2 * n), d i omega All goals completed! 🐙 d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihsplit:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i = ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1)h1:n ≤ d (1 + 2 * n) - d 1h2:n ≤ d (2 * n + 1 + 2 * n) - d (2 * n + 1)hp:0 < d 1m1:d 1 ≤ d (1 + 2 * n)⊢ 2 * n + 1 ≤ d (4 * n + 1) d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihsplit:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i = ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1)h_dbig:2 * n + 1 ≤ d (4 * n + 1)⊢ 2 * n * n + 2 * n + 1 ≤ ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i - ∑ i ∈ Finset.Icc 1 (2 * n), d i) d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihsplit:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i = ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1)h1:n ≤ d (1 + 2 * n) - d 1h2:n ≤ d (2 * n + 1 + 2 * n) - d (2 * n + 1)hp:0 < d 1m1:d 1 ≤ d (1 + 2 * n)⊢ 2 * n + 1 ≤ d (4 * n + 1) d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihsplit:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i = ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1)h_dbig:2 * n + 1 ≤ d (4 * n + 1)⊢ 2 * n * n + 2 * n + 1 ≤ ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i - ∑ i ∈ Finset.Icc 1 (2 * n), d i
have m2 : d (2 * n + 1) ≤ d (2 * n + 1 + 2 * n) := h_mono (by d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihsplit:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i = ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1)h1:n ≤ d (1 + 2 * n) - d 1h2:n ≤ d (2 * n + 1 + 2 * n) - d (2 * n + 1)hp:0 < d 1m1:d 1 ≤ d (1 + 2 * n)⊢ 2 * n + 1 ≤ 2 * n + 1 + 2 * n d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihsplit:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i = ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1)h1:n ≤ d (1 + 2 * n) - d 1h2:n ≤ d (2 * n + 1 + 2 * n) - d (2 * n + 1)hp:0 < d 1m1:d 1 ≤ d (1 + 2 * n)m2:d (2 * n + 1) ≤ d (2 * n + 1 + 2 * n)⊢ 2 * n + 1 ≤ d (4 * n + 1) d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihsplit:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i = ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1)h_dbig:2 * n + 1 ≤ d (4 * n + 1)⊢ 2 * n * n + 2 * n + 1 ≤ ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i - ∑ i ∈ Finset.Icc 1 (2 * n), d i omega All goals completed! 🐙 d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihsplit:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i = ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1)h1:n ≤ d (1 + 2 * n) - d 1h2:n ≤ d (2 * n + 1 + 2 * n) - d (2 * n + 1)hp:0 < d 1m1:d 1 ≤ d (1 + 2 * n)m2:d (2 * n + 1) ≤ d (2 * n + 1 + 2 * n)⊢ 2 * n + 1 ≤ d (4 * n + 1) d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihsplit:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i = ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1)h_dbig:2 * n + 1 ≤ d (4 * n + 1)⊢ 2 * n * n + 2 * n + 1 ≤ ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i - ∑ i ∈ Finset.Icc 1 (2 * n), d i) d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihsplit:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i = ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1)h1:n ≤ d (1 + 2 * n) - d 1h2:n ≤ d (2 * n + 1 + 2 * n) - d (2 * n + 1)hp:0 < d 1m1:d 1 ≤ d (1 + 2 * n)m2:d (2 * n + 1) ≤ d (2 * n + 1 + 2 * n)⊢ 2 * n + 1 ≤ d (4 * n + 1) d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihsplit:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i = ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1)h_dbig:2 * n + 1 ≤ d (4 * n + 1)⊢ 2 * n * n + 2 * n + 1 ≤ ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i - ∑ i ∈ Finset.Icc 1 (2 * n), d i
have e1 : 1 + 2 * n = 2 * n + 1 := by d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d i⊢ 2 * n * n + 2 * n + 1 ≤ ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i - ∑ i ∈ Finset.Icc 1 (2 * n), d i d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihsplit:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i = ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1)h1:n ≤ d (1 + 2 * n) - d 1h2:n ≤ d (2 * n + 1 + 2 * n) - d (2 * n + 1)hp:0 < d 1m1:d 1 ≤ d (1 + 2 * n)m2:d (2 * n + 1) ≤ d (2 * n + 1 + 2 * n)e1:1 + 2 * n = 2 * n + 1⊢ 2 * n + 1 ≤ d (4 * n + 1) d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihsplit:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i = ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1)h_dbig:2 * n + 1 ≤ d (4 * n + 1)⊢ 2 * n * n + 2 * n + 1 ≤ ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i - ∑ i ∈ Finset.Icc 1 (2 * n), d i ring d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihsplit:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i = ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1)h1:n ≤ d (1 + 2 * n) - d 1h2:n ≤ d (2 * n + 1 + 2 * n) - d (2 * n + 1)hp:0 < d 1m1:d 1 ≤ d (1 + 2 * n)m2:d (2 * n + 1) ≤ d (2 * n + 1 + 2 * n)e1:1 + 2 * n = 2 * n + 1⊢ 2 * n + 1 ≤ d (4 * n + 1) d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihsplit:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i = ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1)h_dbig:2 * n + 1 ≤ d (4 * n + 1)⊢ 2 * n * n + 2 * n + 1 ≤ ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i - ∑ i ∈ Finset.Icc 1 (2 * n), d i d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihsplit:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i = ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1)h1:n ≤ d (1 + 2 * n) - d 1h2:n ≤ d (2 * n + 1 + 2 * n) - d (2 * n + 1)hp:0 < d 1m1:d 1 ≤ d (1 + 2 * n)m2:d (2 * n + 1) ≤ d (2 * n + 1 + 2 * n)e1:1 + 2 * n = 2 * n + 1⊢ 2 * n + 1 ≤ d (4 * n + 1) d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihsplit:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i = ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1)h_dbig:2 * n + 1 ≤ d (4 * n + 1)⊢ 2 * n * n + 2 * n + 1 ≤ ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i - ∑ i ∈ Finset.Icc 1 (2 * n), d i
have e2 : 2 * n + 1 + 2 * n = 4 * n + 1 := by d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d i⊢ 2 * n * n + 2 * n + 1 ≤ ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i - ∑ i ∈ Finset.Icc 1 (2 * n), d i d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihsplit:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i = ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1)h1:n ≤ d (1 + 2 * n) - d 1h2:n ≤ d (2 * n + 1 + 2 * n) - d (2 * n + 1)hp:0 < d 1m1:d 1 ≤ d (1 + 2 * n)m2:d (2 * n + 1) ≤ d (2 * n + 1 + 2 * n)e1:1 + 2 * n = 2 * n + 1e2:2 * n + 1 + 2 * n = 4 * n + 1⊢ 2 * n + 1 ≤ d (4 * n + 1) d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihsplit:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i = ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1)h_dbig:2 * n + 1 ≤ d (4 * n + 1)⊢ 2 * n * n + 2 * n + 1 ≤ ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i - ∑ i ∈ Finset.Icc 1 (2 * n), d i ring d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihsplit:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i = ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1)h1:n ≤ d (1 + 2 * n) - d 1h2:n ≤ d (2 * n + 1 + 2 * n) - d (2 * n + 1)hp:0 < d 1m1:d 1 ≤ d (1 + 2 * n)m2:d (2 * n + 1) ≤ d (2 * n + 1 + 2 * n)e1:1 + 2 * n = 2 * n + 1e2:2 * n + 1 + 2 * n = 4 * n + 1⊢ 2 * n + 1 ≤ d (4 * n + 1) d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihsplit:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i = ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1)h_dbig:2 * n + 1 ≤ d (4 * n + 1)⊢ 2 * n * n + 2 * n + 1 ≤ ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i - ∑ i ∈ Finset.Icc 1 (2 * n), d i d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihsplit:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i = ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1)h1:n ≤ d (1 + 2 * n) - d 1h2:n ≤ d (2 * n + 1 + 2 * n) - d (2 * n + 1)hp:0 < d 1m1:d 1 ≤ d (1 + 2 * n)m2:d (2 * n + 1) ≤ d (2 * n + 1 + 2 * n)e1:1 + 2 * n = 2 * n + 1e2:2 * n + 1 + 2 * n = 4 * n + 1⊢ 2 * n + 1 ≤ d (4 * n + 1) d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihsplit:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i = ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1)h_dbig:2 * n + 1 ≤ d (4 * n + 1)⊢ 2 * n * n + 2 * n + 1 ≤ ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i - ∑ i ∈ Finset.Icc 1 (2 * n), d i
rw [e1 d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihsplit:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i = ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1)h1:n ≤ d (2 * n + 1) - d 1h2:n ≤ d (2 * n + 1 + 2 * n) - d (2 * n + 1)hp:0 < d 1m1:d 1 ≤ d (2 * n + 1)m2:d (2 * n + 1) ≤ d (2 * n + 1 + 2 * n)e1:1 + 2 * n = 2 * n + 1e2:2 * n + 1 + 2 * n = 4 * n + 1⊢ 2 * n + 1 ≤ d (4 * n + 1) d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihsplit:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i = ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1)h1:n ≤ d (2 * n + 1) - d 1h2:n ≤ d (2 * n + 1 + 2 * n) - d (2 * n + 1)hp:0 < d 1m1:d 1 ≤ d (2 * n + 1)m2:d (2 * n + 1) ≤ d (2 * n + 1 + 2 * n)e1:1 + 2 * n = 2 * n + 1e2:2 * n + 1 + 2 * n = 4 * n + 1⊢ 2 * n + 1 ≤ d (4 * n + 1) d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihsplit:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i = ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1)h_dbig:2 * n + 1 ≤ d (4 * n + 1)⊢ 2 * n * n + 2 * n + 1 ≤ ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i - ∑ i ∈ Finset.Icc 1 (2 * n), d i] at h1 m1 d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihsplit:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i = ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1)h1:n ≤ d (2 * n + 1) - d 1h2:n ≤ d (2 * n + 1 + 2 * n) - d (2 * n + 1)hp:0 < d 1m1:d 1 ≤ d (2 * n + 1)m2:d (2 * n + 1) ≤ d (2 * n + 1 + 2 * n)e1:1 + 2 * n = 2 * n + 1e2:2 * n + 1 + 2 * n = 4 * n + 1⊢ 2 * n + 1 ≤ d (4 * n + 1) d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihsplit:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i = ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1)h_dbig:2 * n + 1 ≤ d (4 * n + 1)⊢ 2 * n * n + 2 * n + 1 ≤ ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i - ∑ i ∈ Finset.Icc 1 (2 * n), d i; rw [e2 d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihsplit:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i = ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1)h1:n ≤ d (2 * n + 1) - d 1h2:n ≤ d (4 * n + 1) - d (2 * n + 1)hp:0 < d 1m1:d 1 ≤ d (2 * n + 1)m2:d (2 * n + 1) ≤ d (4 * n + 1)e1:1 + 2 * n = 2 * n + 1e2:2 * n + 1 + 2 * n = 4 * n + 1⊢ 2 * n + 1 ≤ d (4 * n + 1) d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihsplit:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i = ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1)h1:n ≤ d (2 * n + 1) - d 1h2:n ≤ d (4 * n + 1) - d (2 * n + 1)hp:0 < d 1m1:d 1 ≤ d (2 * n + 1)m2:d (2 * n + 1) ≤ d (4 * n + 1)e1:1 + 2 * n = 2 * n + 1e2:2 * n + 1 + 2 * n = 4 * n + 1⊢ 2 * n + 1 ≤ d (4 * n + 1) d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihsplit:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i = ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1)h_dbig:2 * n + 1 ≤ d (4 * n + 1)⊢ 2 * n * n + 2 * n + 1 ≤ ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i - ∑ i ∈ Finset.Icc 1 (2 * n), d i] at h2 m2 d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihsplit:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i = ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1)h1:n ≤ d (2 * n + 1) - d 1h2:n ≤ d (4 * n + 1) - d (2 * n + 1)hp:0 < d 1m1:d 1 ≤ d (2 * n + 1)m2:d (2 * n + 1) ≤ d (4 * n + 1)e1:1 + 2 * n = 2 * n + 1e2:2 * n + 1 + 2 * n = 4 * n + 1⊢ 2 * n + 1 ≤ d (4 * n + 1) d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihsplit:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i = ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1)h_dbig:2 * n + 1 ≤ d (4 * n + 1)⊢ 2 * n * n + 2 * n + 1 ≤ ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i - ∑ i ∈ Finset.Icc 1 (2 * n), d i
omega d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihsplit:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i = ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1)h_dbig:2 * n + 1 ≤ d (4 * n + 1)⊢ 2 * n * n + 2 * n + 1 ≤ ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i - ∑ i ∈ Finset.Icc 1 (2 * n), d i d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihsplit:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i = ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1)h_dbig:2 * n + 1 ≤ d (4 * n + 1)⊢ 2 * n * n + 2 * n + 1 ≤ ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i - ∑ i ∈ Finset.Icc 1 (2 * n), d i
have h_add := lemma2_helper_short d n h_mono h_no_three d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihsplit:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i = ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1)h_dbig:2 * n + 1 ≤ d (4 * n + 1)h_add:∑ i ∈ Finset.Icc 1 (2 * n), d i + 2 * n * n ≤ ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i⊢ 2 * n * n + 2 * n + 1 ≤ ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i - ∑ i ∈ Finset.Icc 1 (2 * n), d i
rw [hsplit d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihsplit:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i = ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1)h_dbig:2 * n + 1 ≤ d (4 * n + 1)h_add:∑ i ∈ Finset.Icc 1 (2 * n), d i + 2 * n * n ≤ ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i⊢ 2 * n * n + 2 * n + 1 ≤ ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1) - ∑ i ∈ Finset.Icc 1 (2 * n), d i d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihsplit:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i = ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1)h_dbig:2 * n + 1 ≤ d (4 * n + 1)h_add:∑ i ∈ Finset.Icc 1 (2 * n), d i + 2 * n * n ≤ ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i⊢ 2 * n * n + 2 * n + 1 ≤ ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1) - ∑ i ∈ Finset.Icc 1 (2 * n), d i] d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d ihsplit:∑ i ∈ Finset.Icc (2 * n + 1) (4 * n + 1), d i = ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1)h_dbig:2 * n + 1 ≤ d (4 * n + 1)h_add:∑ i ∈ Finset.Icc 1 (2 * n), d i + 2 * n * n ≤ ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i⊢ 2 * n * n + 2 * n + 1 ≤ ∑ i ∈ Finset.Icc (2 * n + 1) (4 * n), d i + d (4 * n + 1) - ∑ i ∈ Finset.Icc 1 (2 * n), d i
omega All goals completed! 🐙Lemma 2 (c) Inequality involving sums of terms of a nondecreasing sequence with no three terms equal.
@[category API, AMS 5]
lemma lemma2_c
(h_mono : Monotone d)
(h_pos : ∀ k, 0 < d k)
(h_no_three : ∀ i, d (i + 2) ≠ d i) :
2 * n * n + 2 * n ≤
(∑ i ∈ .Icc (2 * n + 2) (4 * n + 2), d i) -
∑ i ∈ .Icc 1 (2 * n + 1), d i := by d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d i⊢ 2 * n * n + 2 * n ≤ ∑ i ∈ Finset.Icc (2 * n + 2) (4 * n + 2), d i - ∑ i ∈ Finset.Icc 1 (2 * n + 1), d i
sorry All goals completed! 🐙Lemma 2 (d) Inequality involving sums of terms of a nondecreasing sequence with no three terms equal.
@[category API, AMS 5]
lemma lemma2_d
(h_mono : Monotone d)
(h_pos : ∀ k, 0 < d k)
(h_no_three : ∀ i, d (i + 2) ≠ d i) :
2 * n * n + 4 * n + 2 ≤
(∑ i ∈ .Icc (2 * n + 2) (4 * n + 3), d i) -
∑ i ∈ .Icc 1 (2 * n + 1), d i := by d:ℕ → ℕn:ℕh_mono:Monotone dh_pos:∀ (k : ℕ), 0 < d kh_no_three:∀ (i : ℕ), d (i + 2) ≠ d i⊢ 2 * n * n + 4 * n + 2 ≤ ∑ i ∈ Finset.Icc (2 * n + 2) (4 * n + 3), d i - ∑ i ∈ Finset.Icc 1 (2 * n + 1), d i
sorry All goals completed! 🐙end DegreeSequencesTriangleFreenamespace SimpleGraphvariable {α : Type*} [Fintype α] [DecidableEq α]
The degree sequence of G is compact if it satisfies
IsCompactSequenceOn for all valid indices k such that k + 2 < Fintype.card α.
def HasCompactdegreeSequence (G : SimpleGraph α) [DecidableRel G.Adj] : Prop :=
DegreeSequencesTriangleFree.IsCompactSequenceOn (fun k => (degreeSequence G).getD k 0) {k | k + 2 < Fintype.card α}
Theorem 1. If a triangle-free graph has f = 2,
then it is bipartite, has minimum degree 1, and
its degree sequence is compact.
@[category research solved, AMS 5]
theorem theorem1 (G : SimpleGraph α) (h_conn: G.Connected) [DecidableRel G.Adj]
(h₁ : G.CliqueFree 3) (h₂ : degreeSequenceMultiplicity G = 2) :
G.IsBipartite ∧ G.minDegree = 1 ∧ HasCompactdegreeSequence G := by α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αG:SimpleGraph αh_conn:G.Connectedinst✝:DecidableRel G.Adjh₁:G.CliqueFree 3h₂:G.degreeSequenceMultiplicity = 2⊢ G.IsBipartite ∧ G.minDegree = 1 ∧ G.HasCompactdegreeSequence
sorry All goals completed! 🐙
Lemma 3. For every n there exists a bipartite graph with
8 n vertices, minimum degree n + 1, and f = 3.
@[category API, AMS 5]
lemma lemma3 (n : ℕ) (hn : 0 < n) :
∃ (G : SimpleGraph (Fin (8 * n))) (_ : DecidableRel G.Adj),
G.IsBipartite ∧ G.minDegree = n + 1 ∧ degreeSequenceMultiplicity G = 3 := by n:ℕhn:0 < n⊢ ∃ G x, G.IsBipartite ∧ G.minDegree = n + 1 ∧ G.degreeSequenceMultiplicity = 3
sorry All goals completed! 🐙open scoped Classical in
Lemma 4. Let G be a triangle-free graph with n vertices and let v be a vertex of G.
There exists a triangle-free graph H containing G as an induced subgraph such that:
(i) the degree of v in H is one more than its degree in G;
(ii) for every vertex w of G other than v the degree of w in H is the same as its degree in G;
(iii) if J is the subgraph of H induced by the vertices not in G, then f(J)=3 and δ(J) ≥ 2n.
@[category API, AMS 5]
lemma lemma4 (G : SimpleGraph α) [DecidableRel G.Adj] (h_conn: G.Connected)
(h₁ : G.CliqueFree 3) (v : α) :
∃ (β : Type*) (_ : Fintype β) (H : SimpleGraph β) (_ : DecidableRel H.Adj) (i : G ↪g H),
H.CliqueFree 3 ∧
H.degree (i v) = G.degree v + 1 ∧
(∀ w ≠ v, H.degree (i w) = G.degree w) ∧
let J := H.induce (Set.compl (Set.range i))
degreeSequenceMultiplicity J = 3 ∧ J.minDegree ≥ 2 * Fintype.card α := by α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αG:SimpleGraph αinst✝:DecidableRel G.Adjh_conn:G.Connectedh₁:G.CliqueFree 3v:α⊢ ∃ β x H x_1 i,
H.CliqueFree 3 ∧
H.degree (i v) = G.degree v + 1 ∧
(∀ (w : α), w ≠ v → H.degree (i w) = G.degree w) ∧
let J := induce (Set.range ⇑i).compl H;
J.degreeSequenceMultiplicity = 3 ∧ J.minDegree ≥ 2 * Fintype.card α
sorry All goals completed! 🐙
Theorem 2. Every triangle-free graph is an induced subgraph of one
with f = 3.
@[category research solved, AMS 5]
theorem theorem2 (G : SimpleGraph α) [DecidableRel G.Adj] (h_conn: G.Connected)
(h : G.CliqueFree 3) :
∃ (β : Type*) (_ : Fintype β) (H : SimpleGraph β) (_ : DecidableRel H.Adj) (i : G ↪g H),
H.CliqueFree 3 ∧ degreeSequenceMultiplicity H = 3 := by α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αG:SimpleGraph αinst✝:DecidableRel G.Adjh_conn:G.Connectedh:G.CliqueFree 3⊢ ∃ β x H x_1 i, H.CliqueFree 3 ∧ H.degreeSequenceMultiplicity = 3
sorry All goals completed! 🐙
F n is the smallest number of vertices of a triangle-free graph
with chromatic number n and f = 3.
@[category research solved, AMS 5]
noncomputable def F (n : ℕ) : ℕ :=
sInf { p | ∃ (G : SimpleGraph (Fin p)) (_ : DecidableRel G.Adj),
G.CliqueFree 3 ∧ G.chromaticNumber = n ∧ degreeSequenceMultiplicity G = 3 }The smallest number of vertices of a triangle-free graph with chromatic number 3 and f=3 is 7.
@[category research solved, AMS 5]
theorem F_three : F 3 = 7 := by ⊢ F 3 = 7
sorry All goals completed! 🐙The smallest number of vertices of a triangle-free graph with chromatic number 4 and f=3 is at most 19.
@[category research solved, AMS 5]
theorem F_four_le : F 4 ≤ 19 := by ⊢ F 4 ≤ 19
sorry All goals completed! 🐙end SimpleGraph