/-
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 FormalConjecturesUtilErdős Problem 615
A Ramsey–Turán problem of Erdős, Hajnal, Simonovits, Sós, and Szemerédi [EHSSS93]: does there exist a constant $c > 0$ such that every graph on $n$ vertices with at least $(1/8 - c)n^2$ edges contains either a $K_4$ or an independent set on at least $n/\log n$ vertices? In the notation of Ramsey–Turán theory this asks whether $$\mathrm{rt}(n; 4, n/\log n) < (1/8 - c)n^2.$$
This was disproved by Fox, Loh, and Zhao [FLZ15], who showed that $\mathrm{rt}(n; 4, ne^{-f(n)}) \geq (1/8 - o(1))n^2$ whenever $f(n) = o(\sqrt{\log n/\log\log n})$. In the other direction Sudakov [Su03] had shown that $\mathrm{rt}(n; 4, ne^{-f(n)}) = o(n^2)$ whenever $f(n)/\sqrt{\log n} \to \infty$.
[EHSSS93] Erdős, P., Hajnal, A., Simonovits, M., Sós, V. T., and Szemerédi, E.,
[Su03] Sudakov, B.,
[FLZ15] Fox, J., Loh, P.-S., and Zhao, Y.,
open Classical Filter SimpleGraph
namespace Erdos615
Does there exist some constant $c > 0$ such that for all sufficiently large $n$, if $G$ is a graph with $n$ vertices and at least $(1/8 - c)n^2$ edges then $G$ must contain either a $K_4$ or an independent set on at least $n/\log n$ vertices?
The answer is no, as shown by Fox, Loh, and Zhao [FLZ15].
@[category research solved, AMS 5]
theorem erdos_615 : answer(False) ↔
∃ c : ℝ, 0 < c ∧ ∀ᶠ (n : ℕ) in atTop,
∀ G : SimpleGraph (Fin n), (1 / 8 - c) * n ^ 2 ≤ G.edgeFinset.card →
¬ G.CliqueFree 4 ∨ (n : ℝ) / Real.log n ≤ G.indepNum := ⊢ False ↔
∃ c,
0 < c ∧
∀ᶠ (n : ℕ) in atTop,
∀ (G : SimpleGraph (Fin n)),
(1 / 8 - c) * ↑n ^ 2 ≤ ↑G.edgeFinset.card → ¬G.CliqueFree 4 ∨ ↑n / Real.log ↑n ≤ ↑α(G)
All goals completed! 🐙
The result of Fox, Loh, and Zhao [FLZ15] disproving the problem: if $f(n) \geq 0$ satisfies $f(n) = o(\sqrt{\log n/\log\log n})$, then for every $\epsilon > 0$ and all sufficiently large $n$ there is a $K_4$-free graph on $n$ vertices with independence number at most $ne^{-f(n)}$ and at least $(1/8 - \epsilon)n^2$ edges; that is, $\mathrm{rt}(n; 4, ne^{-f(n)}) \geq (1/8 - o(1))n^2$. Applied with $f(n) = \log\log n$, this disproves the headline problem, since $ne^{-f(n)} = n/\log n = o(n)$.
@[category research solved, AMS 5]
theorem erdos_615.variants.fox_loh_zhao (f : ℕ → ℝ) (hf : ∀ n, 0 ≤ f n)
(hfo : Tendsto (fun n : ℕ => f n / Real.sqrt (Real.log n / Real.log (Real.log n)))
atTop (nhds 0)) (ε : ℝ) (hε : 0 < ε) :
∀ᶠ (n : ℕ) in atTop,
∃ G : SimpleGraph (Fin n), G.CliqueFree 4 ∧
(G.indepNum : ℝ) ≤ n * Real.exp (-f n) ∧
(1 / 8 - ε) * n ^ 2 ≤ G.edgeFinset.card := f:ℕ → ℝhf:∀ (n : ℕ), 0 ≤ f nhfo:Tendsto (fun n => f n / √(Real.log ↑n / Real.log (Real.log ↑n))) atTop (nhds 0)ε:ℝhε:0 < ε⊢ ∀ᶠ (n : ℕ) in atTop, ∃ G, G.CliqueFree 4 ∧ ↑α(G) ≤ ↑n * Real.exp (-f n) ∧ (1 / 8 - ε) * ↑n ^ 2 ≤ ↑G.edgeFinset.card
All goals completed! 🐙
The complementary result of Sudakov [Su03]: if $f(n)/\sqrt{\log n} \to \infty$ then $\mathrm{rt}(n; 4, ne^{-f(n)}) = o(n^2)$; that is, for every $\epsilon > 0$ and all sufficiently large $n$, every $K_4$-free graph on $n$ vertices with independence number at most $ne^{-f(n)}$ has at most $\epsilon n^2$ edges.
@[category research solved, AMS 5]
theorem erdos_615.variants.sudakov (f : ℕ → ℝ)
(hf : Tendsto (fun n : ℕ => f n / Real.sqrt (Real.log n)) atTop atTop)
(ε : ℝ) (hε : 0 < ε) :
∀ᶠ (n : ℕ) in atTop,
∀ G : SimpleGraph (Fin n), G.CliqueFree 4 →
(G.indepNum : ℝ) ≤ n * Real.exp (-f n) →
(G.edgeFinset.card : ℝ) ≤ ε * n ^ 2 := f:ℕ → ℝhf:Tendsto (fun n => f n / √(Real.log ↑n)) atTop atTopε:ℝhε:0 < ε⊢ ∀ᶠ (n : ℕ) in atTop,
∀ (G : SimpleGraph (Fin n)), G.CliqueFree 4 → ↑α(G) ≤ ↑n * Real.exp (-f n) → ↑G.edgeFinset.card ≤ ε * ↑n ^ 2
All goals completed! 🐙
A sanity check for erdos_615: the empty graph on $n \geq 3$ vertices contains an independent
set on at least $n/\log n$ vertices (namely the whole vertex set), so it satisfies the
conclusion of the implication in the problem statement.
@[category test, AMS 5]
theorem erdos_615.variants.test_bot (n : ℕ) (hn : 3 ≤ n) :
(n : ℝ) / Real.log n ≤ (⊥ : SimpleGraph (Fin n)).indepNum := n:ℕhn:3 ≤ n⊢ ↑n / Real.log ↑n ≤ ↑α(⊥)
have hn' : (3 : ℝ) ≤ n := n:ℕhn:3 ≤ n⊢ ↑n / Real.log ↑n ≤ ↑α(⊥) All goals completed! 🐙
have h1 : (1 : ℝ) ≤ Real.log n := n:ℕhn:3 ≤ n⊢ ↑n / Real.log ↑n ≤ ↑α(⊥)
n:ℕhn:3 ≤ nhn':3 ≤ ↑n := cast (Eq.symm Nat.cast_le._simp_1) hn⊢ Real.exp 1 ≤ ↑n
calc Real.exp 1 ≤ 3 := n:ℕhn:3 ≤ nhn':3 ≤ ↑n := cast (Eq.symm Nat.cast_le._simp_1) hn⊢ Real.exp 1 ≤ 3
n:ℕhn:3 ≤ nhn':3 ≤ ↑n := cast (Eq.symm Nat.cast_le._simp_1) hnthis:Real.exp 1 < 2.7182818286 := Real.exp_one_lt_d9⊢ Real.exp 1 ≤ 3
All goals completed! 🐙
_ ≤ n := hn'
have h2 : (n : ℝ) / Real.log n ≤ n := div_le_self (n:ℕhn:3 ≤ nhn':3 ≤ ↑n := cast (Eq.symm Nat.cast_le._simp_1) hnh1:1 ≤ Real.log ↑n :=
Eq.mpr
(id
(congrArg (fun _a => _a)
(propext
(Real.le_log_iff_exp_le
(lt_of_not_ge fun a =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 3)))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1)))))
Mathlib.Tactic.Ring.neg_zero))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 3))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1)) (Eq.refl (Int.negOfNat 3))))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 3))
(Mathlib.Tactic.Ring.add_pf_add_zero ((Int.negOfNat 3).rawCast + 0)))
(Mathlib.Tactic.Ring.zero_mul ((Int.negOfNat 1).rawCast + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero ((Int.negOfNat 3).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 3)))
(Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (Nat.rawCast 3)
(Mathlib.Tactic.Ring.add_pf_zero_add
(↑n ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 3))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 3))
(Eq.refl (Int.ofNat 0))))
(Mathlib.Tactic.Ring.add_pf_zero_add (↑n ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))
(Mathlib.Tactic.Ring.sub_pf Mathlib.Tactic.Ring.neg_zero
(Mathlib.Tactic.Ring.add_pf_add_zero (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑n) (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0)))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.add_lt_of_neg_of_le
(Mathlib.Tactic.Linarith.add_lt_of_neg_of_le
(Mathlib.Tactic.Linarith.mul_neg (neg_neg_of_pos Mathlib.Tactic.Linarith.zero_lt_one)
(Mathlib.Meta.NormNum.isNat_lt_true (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero)
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 3)) (Eq.refl false)))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le hn'))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a))))))))
(Trans.trans
(have this := Real.exp_one_lt_d9;
le_of_not_gt fun a =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 1408590857)))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1)))))
Mathlib.Tactic.Ring.neg_zero))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1408590857))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1)) (Eq.refl (Int.negOfNat 1408590857))))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1408590857))
(Mathlib.Tactic.Ring.add_pf_add_zero ((Int.negOfNat 1408590857).rawCast + 0)))
(Mathlib.Tactic.Ring.zero_mul ((Int.negOfNat 1).rawCast + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero ((Int.negOfNat 1408590857).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 5000000000)))
(Mathlib.Tactic.Ring.atom_pf (Real.exp 1))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (Real.exp 1) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_one (Nat.rawCast 5000000000)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 5000000000))
(Mathlib.Tactic.Ring.add_pf_add_zero
(Real.exp 1 ^ Nat.rawCast 1 * Nat.rawCast 5000000000 + 0)))
(Mathlib.Tactic.Ring.zero_mul (Real.exp 1 ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(Real.exp 1 ^ Nat.rawCast 1 * Nat.rawCast 5000000000 + 0))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 13591409143)))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 13591409143))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (Nat.rawCast 13591409143 + 0)))
(Mathlib.Tactic.Ring.zero_mul (Nat.rawCast 13591409143 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero (Nat.rawCast 13591409143 + 0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 13591409143))
(Eq.refl (Int.negOfNat 13591409143)))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_gt (Int.negOfNat 13591409143).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero
(Real.exp 1 ^ Nat.rawCast 1 * Nat.rawCast 5000000000 + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1408590857))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 13591409143))
(Eq.refl (Int.negOfNat 15000000000))))
(Mathlib.Tactic.Ring.add_pf_zero_add (Real.exp 1 ^ Nat.rawCast 1 * Nat.rawCast 5000000000 + 0))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 5000000000)))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 3)))
(Mathlib.Tactic.Ring.atom_pf (Real.exp 1))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Real.exp 1) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (Nat.rawCast 3)
(Mathlib.Tactic.Ring.add_pf_zero_add
(Real.exp 1 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 5000000000) (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 3)
(Eq.refl 15000000000)))
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (Real.exp 1) (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 5000000000))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.negOfNat 5000000000)))))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 5000000000))
(Mathlib.Tactic.Ring.add_pf_add_zero
(Real.exp 1 ^ Nat.rawCast 1 * (Int.negOfNat 5000000000).rawCast + 0)))
(Mathlib.Tactic.Ring.add_pf_add_lt (Nat.rawCast 15000000000)
(Mathlib.Tactic.Ring.add_pf_zero_add
(Real.exp 1 ^ Nat.rawCast 1 * (Int.negOfNat 5000000000).rawCast + 0))))
(Mathlib.Tactic.Ring.zero_mul
(Nat.rawCast 3 + (Real.exp 1 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))
(Mathlib.Tactic.Ring.add_pf_add_zero
(Nat.rawCast 15000000000 +
(Real.exp 1 ^ Nat.rawCast 1 * (Int.negOfNat 5000000000).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 15000000000))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 15000000000))
(Eq.refl (Int.ofNat 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (Real.exp 1) (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 5000000000))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 5000000000)) (Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.add_neg
(Mathlib.Tactic.Linarith.add_neg
(Mathlib.Tactic.Linarith.mul_neg (neg_neg_of_pos Mathlib.Tactic.Linarith.zero_lt_one)
(Mathlib.Meta.NormNum.isNat_lt_true (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero)
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 1408590857)) (Eq.refl false)))
(Eq.mp
(congrArg (fun _a => _a < 0)
(CancelDenoms.derive_trans
(Eq.trans
(congrArg (HSub.hSub (Real.exp 1))
(Mathlib.Meta.NormNum.IsNNRat.to_eq
(Mathlib.Meta.NormNum.isNNRat_ofScientific_of_true
(Mathlib.Meta.NormNum.isNNRat_ratCast
(Mathlib.Meta.NormNum.IsRat.to_isNNRat
(Mathlib.Meta.NormNum.isRat_mkRat
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.isNat_natCast 27182818286 27182818286
(Mathlib.Meta.NormNum.IsNat.raw_refl 27182818286)))
(Mathlib.Meta.NormNum.isNat_pow (Eq.refl HPow.hPow)
(Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 10))
(Mathlib.Meta.NormNum.IsNat.raw_refl 10)
(Mathlib.Meta.NormNum.IsNatPowT.run
(Mathlib.Meta.NormNum.IsNatPowT.trans
(Mathlib.Meta.NormNum.IsNatPowT.trans Mathlib.Meta.NormNum.IsNatPowT.bit0
Mathlib.Meta.NormNum.IsNatPowT.bit1)
Mathlib.Meta.NormNum.IsNatPowT.bit0)))
(Mathlib.Meta.NormNum.IsNNRat.to_isRat
(Mathlib.Meta.NormNum.isNNRat_div
(Mathlib.Meta.NormNum.isNNRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_intCast (Int.ofNat 27182818286) 27182818286
(Mathlib.Meta.NormNum.isNat_intOfNat
(Mathlib.Meta.NormNum.IsNat.raw_refl 27182818286))))
(Mathlib.Meta.NormNum.isNNRat_inv_pos
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_natCast 10000000000 10000000000
(Mathlib.Meta.NormNum.IsNat.raw_refl 10000000000))))
(Eq.refl (Nat.mul 27182818286 1)) (Eq.refl 10000000000))))))))
(Eq.refl 13591409143) (Eq.refl 5000000000)))
(Eq.trans
(congrArg (HSub.hSub (Real.exp 1))
(Mathlib.Meta.NormNum.IsNNRat.to_eq
(Mathlib.Meta.NormNum.isNNRat_div
(Mathlib.Meta.NormNum.isNNRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 13591409143)))
(Mathlib.Meta.NormNum.isNNRat_inv_pos
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 5000000000))))
(Eq.refl (Nat.mul 13591409143 1)) (Eq.refl 5000000000)))
(Eq.refl 13591409143) (Eq.refl 5000000000)))
(congrArg (HSub.hSub (Real.exp 1))
(Mathlib.Meta.NormNum.IsNNRat.to_eq
(Mathlib.Meta.NormNum.isNNRat_div
(Mathlib.Meta.NormNum.isNNRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 13591409143)))
(Mathlib.Meta.NormNum.isNNRat_inv_pos
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 5000000000))))
(Eq.refl (Nat.mul 13591409143 1)) (Eq.refl 5000000000)))
(Eq.refl 13591409143) (Eq.refl 5000000000)))))
(CancelDenoms.sub_subst rfl
(CancelDenoms.div_subst rfl
(Mathlib.Meta.NormNum.isNat_eq_true
(Mathlib.Meta.NormNum.IsNNRat.to_isNat
(Mathlib.Meta.NormNum.isNNRat_div
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.IsNNRat.to_isNat
(Mathlib.Meta.NormNum.isNNRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 5000000000)))
(Mathlib.Meta.NormNum.isNNRat_inv_pos
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 5000000000))))
(Eq.refl (Nat.mul 5000000000 1)) (Eq.refl 5000000000))))))
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Meta.NormNum.isNat_eq_true
(Mathlib.Meta.NormNum.isNat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 5000000000)) (Eq.refl 5000000000))
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 5000000000)))))))
(Mathlib.Tactic.Linarith.mul_neg (Mathlib.Tactic.Linarith.sub_neg_of_lt this)
(Mathlib.Meta.NormNum.isNat_lt_true (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero)
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 5000000000)) (Eq.refl false)))))
(Mathlib.Tactic.Linarith.mul_neg (Mathlib.Tactic.Linarith.sub_neg_of_lt a)
(Mathlib.Meta.NormNum.isNat_lt_true (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero)
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 5000000000)) (Eq.refl false))))))
hn')⊢ 0 ≤ ↑n All goals completed! 🐙) h1
have h3 : (Finset.univ : Finset (Fin n)).card ≤ (⊥ : SimpleGraph (Fin n)).indepNum :=
SimpleGraph.IsIndepSet.card_le_indepNum (n:ℕhn:3 ≤ nhn':3 ≤ ↑n := cast (Eq.symm Nat.cast_le._simp_1) hnh1:1 ≤ Real.log ↑n :=
Eq.mpr
(id
(congrArg (fun _a => _a)
(propext
(Real.le_log_iff_exp_le
(lt_of_not_ge fun a =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 3)))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1)))))
Mathlib.Tactic.Ring.neg_zero))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 3))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1)) (Eq.refl (Int.negOfNat 3))))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 3))
(Mathlib.Tactic.Ring.add_pf_add_zero ((Int.negOfNat 3).rawCast + 0)))
(Mathlib.Tactic.Ring.zero_mul ((Int.negOfNat 1).rawCast + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero ((Int.negOfNat 3).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 3)))
(Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (Nat.rawCast 3)
(Mathlib.Tactic.Ring.add_pf_zero_add
(↑n ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 3))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 3))
(Eq.refl (Int.ofNat 0))))
(Mathlib.Tactic.Ring.add_pf_zero_add (↑n ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))
(Mathlib.Tactic.Ring.sub_pf Mathlib.Tactic.Ring.neg_zero
(Mathlib.Tactic.Ring.add_pf_add_zero (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑n) (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0)))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.add_lt_of_neg_of_le
(Mathlib.Tactic.Linarith.add_lt_of_neg_of_le
(Mathlib.Tactic.Linarith.mul_neg (neg_neg_of_pos Mathlib.Tactic.Linarith.zero_lt_one)
(Mathlib.Meta.NormNum.isNat_lt_true (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero)
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 3)) (Eq.refl false)))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le hn'))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a))))))))
(Trans.trans
(have this := Real.exp_one_lt_d9;
le_of_not_gt fun a =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 1408590857)))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1)))))
Mathlib.Tactic.Ring.neg_zero))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1408590857))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1)) (Eq.refl (Int.negOfNat 1408590857))))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1408590857))
(Mathlib.Tactic.Ring.add_pf_add_zero ((Int.negOfNat 1408590857).rawCast + 0)))
(Mathlib.Tactic.Ring.zero_mul ((Int.negOfNat 1).rawCast + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero ((Int.negOfNat 1408590857).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 5000000000)))
(Mathlib.Tactic.Ring.atom_pf (Real.exp 1))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (Real.exp 1) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_one (Nat.rawCast 5000000000)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 5000000000))
(Mathlib.Tactic.Ring.add_pf_add_zero
(Real.exp 1 ^ Nat.rawCast 1 * Nat.rawCast 5000000000 + 0)))
(Mathlib.Tactic.Ring.zero_mul (Real.exp 1 ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(Real.exp 1 ^ Nat.rawCast 1 * Nat.rawCast 5000000000 + 0))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 13591409143)))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 13591409143))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (Nat.rawCast 13591409143 + 0)))
(Mathlib.Tactic.Ring.zero_mul (Nat.rawCast 13591409143 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero (Nat.rawCast 13591409143 + 0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 13591409143))
(Eq.refl (Int.negOfNat 13591409143)))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_gt (Int.negOfNat 13591409143).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero
(Real.exp 1 ^ Nat.rawCast 1 * Nat.rawCast 5000000000 + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1408590857))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 13591409143))
(Eq.refl (Int.negOfNat 15000000000))))
(Mathlib.Tactic.Ring.add_pf_zero_add (Real.exp 1 ^ Nat.rawCast 1 * Nat.rawCast 5000000000 + 0))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 5000000000)))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 3)))
(Mathlib.Tactic.Ring.atom_pf (Real.exp 1))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Real.exp 1) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (Nat.rawCast 3)
(Mathlib.Tactic.Ring.add_pf_zero_add
(Real.exp 1 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 5000000000) (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 3)
(Eq.refl 15000000000)))
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (Real.exp 1) (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 5000000000))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.negOfNat 5000000000)))))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 5000000000))
(Mathlib.Tactic.Ring.add_pf_add_zero
(Real.exp 1 ^ Nat.rawCast 1 * (Int.negOfNat 5000000000).rawCast + 0)))
(Mathlib.Tactic.Ring.add_pf_add_lt (Nat.rawCast 15000000000)
(Mathlib.Tactic.Ring.add_pf_zero_add
(Real.exp 1 ^ Nat.rawCast 1 * (Int.negOfNat 5000000000).rawCast + 0))))
(Mathlib.Tactic.Ring.zero_mul
(Nat.rawCast 3 + (Real.exp 1 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))
(Mathlib.Tactic.Ring.add_pf_add_zero
(Nat.rawCast 15000000000 +
(Real.exp 1 ^ Nat.rawCast 1 * (Int.negOfNat 5000000000).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 15000000000))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 15000000000))
(Eq.refl (Int.ofNat 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (Real.exp 1) (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 5000000000))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 5000000000)) (Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.add_neg
(Mathlib.Tactic.Linarith.add_neg
(Mathlib.Tactic.Linarith.mul_neg (neg_neg_of_pos Mathlib.Tactic.Linarith.zero_lt_one)
(Mathlib.Meta.NormNum.isNat_lt_true (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero)
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 1408590857)) (Eq.refl false)))
(Eq.mp
(congrArg (fun _a => _a < 0)
(CancelDenoms.derive_trans
(Eq.trans
(congrArg (HSub.hSub (Real.exp 1))
(Mathlib.Meta.NormNum.IsNNRat.to_eq
(Mathlib.Meta.NormNum.isNNRat_ofScientific_of_true
(Mathlib.Meta.NormNum.isNNRat_ratCast
(Mathlib.Meta.NormNum.IsRat.to_isNNRat
(Mathlib.Meta.NormNum.isRat_mkRat
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.isNat_natCast 27182818286 27182818286
(Mathlib.Meta.NormNum.IsNat.raw_refl 27182818286)))
(Mathlib.Meta.NormNum.isNat_pow (Eq.refl HPow.hPow)
(Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 10))
(Mathlib.Meta.NormNum.IsNat.raw_refl 10)
(Mathlib.Meta.NormNum.IsNatPowT.run
(Mathlib.Meta.NormNum.IsNatPowT.trans
(Mathlib.Meta.NormNum.IsNatPowT.trans Mathlib.Meta.NormNum.IsNatPowT.bit0
Mathlib.Meta.NormNum.IsNatPowT.bit1)
Mathlib.Meta.NormNum.IsNatPowT.bit0)))
(Mathlib.Meta.NormNum.IsNNRat.to_isRat
(Mathlib.Meta.NormNum.isNNRat_div
(Mathlib.Meta.NormNum.isNNRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_intCast (Int.ofNat 27182818286) 27182818286
(Mathlib.Meta.NormNum.isNat_intOfNat
(Mathlib.Meta.NormNum.IsNat.raw_refl 27182818286))))
(Mathlib.Meta.NormNum.isNNRat_inv_pos
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_natCast 10000000000 10000000000
(Mathlib.Meta.NormNum.IsNat.raw_refl 10000000000))))
(Eq.refl (Nat.mul 27182818286 1)) (Eq.refl 10000000000))))))))
(Eq.refl 13591409143) (Eq.refl 5000000000)))
(Eq.trans
(congrArg (HSub.hSub (Real.exp 1))
(Mathlib.Meta.NormNum.IsNNRat.to_eq
(Mathlib.Meta.NormNum.isNNRat_div
(Mathlib.Meta.NormNum.isNNRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 13591409143)))
(Mathlib.Meta.NormNum.isNNRat_inv_pos
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 5000000000))))
(Eq.refl (Nat.mul 13591409143 1)) (Eq.refl 5000000000)))
(Eq.refl 13591409143) (Eq.refl 5000000000)))
(congrArg (HSub.hSub (Real.exp 1))
(Mathlib.Meta.NormNum.IsNNRat.to_eq
(Mathlib.Meta.NormNum.isNNRat_div
(Mathlib.Meta.NormNum.isNNRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 13591409143)))
(Mathlib.Meta.NormNum.isNNRat_inv_pos
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 5000000000))))
(Eq.refl (Nat.mul 13591409143 1)) (Eq.refl 5000000000)))
(Eq.refl 13591409143) (Eq.refl 5000000000)))))
(CancelDenoms.sub_subst rfl
(CancelDenoms.div_subst rfl
(Mathlib.Meta.NormNum.isNat_eq_true
(Mathlib.Meta.NormNum.IsNNRat.to_isNat
(Mathlib.Meta.NormNum.isNNRat_div
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.IsNNRat.to_isNat
(Mathlib.Meta.NormNum.isNNRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 5000000000)))
(Mathlib.Meta.NormNum.isNNRat_inv_pos
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 5000000000))))
(Eq.refl (Nat.mul 5000000000 1)) (Eq.refl 5000000000))))))
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Meta.NormNum.isNat_eq_true
(Mathlib.Meta.NormNum.isNat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 5000000000)) (Eq.refl 5000000000))
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 5000000000)))))))
(Mathlib.Tactic.Linarith.mul_neg (Mathlib.Tactic.Linarith.sub_neg_of_lt this)
(Mathlib.Meta.NormNum.isNat_lt_true (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero)
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 5000000000)) (Eq.refl false)))))
(Mathlib.Tactic.Linarith.mul_neg (Mathlib.Tactic.Linarith.sub_neg_of_lt a)
(Mathlib.Meta.NormNum.isNat_lt_true (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero)
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 5000000000)) (Eq.refl false))))))
hn')h2:↑n / Real.log ↑n ≤ ↑n :=
div_le_self
(le_of_lt
(Nat.cast_pos'.mpr
(lt_of_lt_of_le
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 3)) (Eq.refl (Nat.ble 1 3)))
hn)))
h1⊢ ⊥.IsIndepSet ↑Finset.univ All goals completed! 🐙)
have h4 : (n : ℝ) ≤ (⊥ : SimpleGraph (Fin n)).indepNum := n:ℕhn:3 ≤ n⊢ ↑n / Real.log ↑n ≤ ↑α(⊥) exact_mod_cast n:ℕhn:3 ≤ nhn':3 ≤ ↑n := cast (Eq.symm Nat.cast_le._simp_1) hnh1:1 ≤ Real.log ↑n :=
Eq.mpr
(id
(congrArg (fun _a => _a)
(propext
(Real.le_log_iff_exp_le
(lt_of_not_ge fun a =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 3)))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1)))))
Mathlib.Tactic.Ring.neg_zero))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 3))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1)) (Eq.refl (Int.negOfNat 3))))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 3))
(Mathlib.Tactic.Ring.add_pf_add_zero ((Int.negOfNat 3).rawCast + 0)))
(Mathlib.Tactic.Ring.zero_mul ((Int.negOfNat 1).rawCast + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero ((Int.negOfNat 3).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 3)))
(Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (Nat.rawCast 3)
(Mathlib.Tactic.Ring.add_pf_zero_add
(↑n ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 3))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 3))
(Eq.refl (Int.ofNat 0))))
(Mathlib.Tactic.Ring.add_pf_zero_add (↑n ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))
(Mathlib.Tactic.Ring.sub_pf Mathlib.Tactic.Ring.neg_zero
(Mathlib.Tactic.Ring.add_pf_add_zero (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑n) (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0)))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.add_lt_of_neg_of_le
(Mathlib.Tactic.Linarith.add_lt_of_neg_of_le
(Mathlib.Tactic.Linarith.mul_neg (neg_neg_of_pos Mathlib.Tactic.Linarith.zero_lt_one)
(Mathlib.Meta.NormNum.isNat_lt_true (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero)
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 3)) (Eq.refl false)))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le hn'))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a))))))))
(Trans.trans
(have this := Real.exp_one_lt_d9;
le_of_not_gt fun a =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 1408590857)))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1)))))
Mathlib.Tactic.Ring.neg_zero))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1408590857))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1)) (Eq.refl (Int.negOfNat 1408590857))))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1408590857))
(Mathlib.Tactic.Ring.add_pf_add_zero ((Int.negOfNat 1408590857).rawCast + 0)))
(Mathlib.Tactic.Ring.zero_mul ((Int.negOfNat 1).rawCast + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero ((Int.negOfNat 1408590857).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 5000000000)))
(Mathlib.Tactic.Ring.atom_pf (Real.exp 1))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (Real.exp 1) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_one (Nat.rawCast 5000000000)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 5000000000))
(Mathlib.Tactic.Ring.add_pf_add_zero
(Real.exp 1 ^ Nat.rawCast 1 * Nat.rawCast 5000000000 + 0)))
(Mathlib.Tactic.Ring.zero_mul (Real.exp 1 ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(Real.exp 1 ^ Nat.rawCast 1 * Nat.rawCast 5000000000 + 0))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 13591409143)))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 13591409143))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (Nat.rawCast 13591409143 + 0)))
(Mathlib.Tactic.Ring.zero_mul (Nat.rawCast 13591409143 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero (Nat.rawCast 13591409143 + 0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 13591409143))
(Eq.refl (Int.negOfNat 13591409143)))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_gt (Int.negOfNat 13591409143).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero
(Real.exp 1 ^ Nat.rawCast 1 * Nat.rawCast 5000000000 + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1408590857))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 13591409143))
(Eq.refl (Int.negOfNat 15000000000))))
(Mathlib.Tactic.Ring.add_pf_zero_add (Real.exp 1 ^ Nat.rawCast 1 * Nat.rawCast 5000000000 + 0))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 5000000000)))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 3)))
(Mathlib.Tactic.Ring.atom_pf (Real.exp 1))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Real.exp 1) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (Nat.rawCast 3)
(Mathlib.Tactic.Ring.add_pf_zero_add
(Real.exp 1 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 5000000000) (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 3)
(Eq.refl 15000000000)))
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (Real.exp 1) (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 5000000000))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.negOfNat 5000000000)))))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 5000000000))
(Mathlib.Tactic.Ring.add_pf_add_zero
(Real.exp 1 ^ Nat.rawCast 1 * (Int.negOfNat 5000000000).rawCast + 0)))
(Mathlib.Tactic.Ring.add_pf_add_lt (Nat.rawCast 15000000000)
(Mathlib.Tactic.Ring.add_pf_zero_add
(Real.exp 1 ^ Nat.rawCast 1 * (Int.negOfNat 5000000000).rawCast + 0))))
(Mathlib.Tactic.Ring.zero_mul
(Nat.rawCast 3 + (Real.exp 1 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))
(Mathlib.Tactic.Ring.add_pf_add_zero
(Nat.rawCast 15000000000 +
(Real.exp 1 ^ Nat.rawCast 1 * (Int.negOfNat 5000000000).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 15000000000))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 15000000000))
(Eq.refl (Int.ofNat 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (Real.exp 1) (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 5000000000))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 5000000000)) (Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.add_neg
(Mathlib.Tactic.Linarith.add_neg
(Mathlib.Tactic.Linarith.mul_neg (neg_neg_of_pos Mathlib.Tactic.Linarith.zero_lt_one)
(Mathlib.Meta.NormNum.isNat_lt_true (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero)
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 1408590857)) (Eq.refl false)))
(Eq.mp
(congrArg (fun _a => _a < 0)
(CancelDenoms.derive_trans
(Eq.trans
(congrArg (HSub.hSub (Real.exp 1))
(Mathlib.Meta.NormNum.IsNNRat.to_eq
(Mathlib.Meta.NormNum.isNNRat_ofScientific_of_true
(Mathlib.Meta.NormNum.isNNRat_ratCast
(Mathlib.Meta.NormNum.IsRat.to_isNNRat
(Mathlib.Meta.NormNum.isRat_mkRat
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.isNat_natCast 27182818286 27182818286
(Mathlib.Meta.NormNum.IsNat.raw_refl 27182818286)))
(Mathlib.Meta.NormNum.isNat_pow (Eq.refl HPow.hPow)
(Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 10))
(Mathlib.Meta.NormNum.IsNat.raw_refl 10)
(Mathlib.Meta.NormNum.IsNatPowT.run
(Mathlib.Meta.NormNum.IsNatPowT.trans
(Mathlib.Meta.NormNum.IsNatPowT.trans Mathlib.Meta.NormNum.IsNatPowT.bit0
Mathlib.Meta.NormNum.IsNatPowT.bit1)
Mathlib.Meta.NormNum.IsNatPowT.bit0)))
(Mathlib.Meta.NormNum.IsNNRat.to_isRat
(Mathlib.Meta.NormNum.isNNRat_div
(Mathlib.Meta.NormNum.isNNRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_intCast (Int.ofNat 27182818286) 27182818286
(Mathlib.Meta.NormNum.isNat_intOfNat
(Mathlib.Meta.NormNum.IsNat.raw_refl 27182818286))))
(Mathlib.Meta.NormNum.isNNRat_inv_pos
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_natCast 10000000000 10000000000
(Mathlib.Meta.NormNum.IsNat.raw_refl 10000000000))))
(Eq.refl (Nat.mul 27182818286 1)) (Eq.refl 10000000000))))))))
(Eq.refl 13591409143) (Eq.refl 5000000000)))
(Eq.trans
(congrArg (HSub.hSub (Real.exp 1))
(Mathlib.Meta.NormNum.IsNNRat.to_eq
(Mathlib.Meta.NormNum.isNNRat_div
(Mathlib.Meta.NormNum.isNNRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 13591409143)))
(Mathlib.Meta.NormNum.isNNRat_inv_pos
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 5000000000))))
(Eq.refl (Nat.mul 13591409143 1)) (Eq.refl 5000000000)))
(Eq.refl 13591409143) (Eq.refl 5000000000)))
(congrArg (HSub.hSub (Real.exp 1))
(Mathlib.Meta.NormNum.IsNNRat.to_eq
(Mathlib.Meta.NormNum.isNNRat_div
(Mathlib.Meta.NormNum.isNNRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 13591409143)))
(Mathlib.Meta.NormNum.isNNRat_inv_pos
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 5000000000))))
(Eq.refl (Nat.mul 13591409143 1)) (Eq.refl 5000000000)))
(Eq.refl 13591409143) (Eq.refl 5000000000)))))
(CancelDenoms.sub_subst rfl
(CancelDenoms.div_subst rfl
(Mathlib.Meta.NormNum.isNat_eq_true
(Mathlib.Meta.NormNum.IsNNRat.to_isNat
(Mathlib.Meta.NormNum.isNNRat_div
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.IsNNRat.to_isNat
(Mathlib.Meta.NormNum.isNNRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 5000000000)))
(Mathlib.Meta.NormNum.isNNRat_inv_pos
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 5000000000))))
(Eq.refl (Nat.mul 5000000000 1)) (Eq.refl 5000000000))))))
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Meta.NormNum.isNat_eq_true
(Mathlib.Meta.NormNum.isNat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 5000000000)) (Eq.refl 5000000000))
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 5000000000)))))))
(Mathlib.Tactic.Linarith.mul_neg (Mathlib.Tactic.Linarith.sub_neg_of_lt this)
(Mathlib.Meta.NormNum.isNat_lt_true (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero)
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 5000000000)) (Eq.refl false)))))
(Mathlib.Tactic.Linarith.mul_neg (Mathlib.Tactic.Linarith.sub_neg_of_lt a)
(Mathlib.Meta.NormNum.isNat_lt_true (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero)
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 5000000000)) (Eq.refl false))))))
hn')h2:↑n / Real.log ↑n ≤ ↑n :=
div_le_self
(le_of_lt
(Nat.cast_pos'.mpr
(lt_of_lt_of_le
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 3)) (Eq.refl (Nat.ble 1 3)))
hn)))
h1h3:Finset.univ.card ≤ α(⊥) :=
IsIndepSet.card_le_indepNum
(of_eq_true
(Eq.trans (Eq.trans (congrArg ⊥.IsIndepSet Finset.coe_univ) (test_bot._simp_1 ⊥))
(Eq.trans
(forall_congr fun ⦃x⦄ =>
Eq.trans
(implies_congr (Set.mem_univ._simp_1 x)
(Eq.trans
(forall_congr fun ⦃y⦄ =>
Eq.trans
(implies_congr (Set.mem_univ._simp_1 y)
(Eq.trans
(implies_congr (Eq.refl ¬x = y)
(Eq.trans (congrArg Not (bot_adj._simp_1 x y)) not_false_eq_true))
(implies_true ¬x = y)))
imp_self._simp_1)
(implies_true (Fin n))))
imp_self._simp_1)
(implies_true (Fin n)))))⊢ n ≤ α(⊥) All goals completed! 🐙
All goals completed! 🐙
end Erdos615