Problems / erdos-69 / spec-7f0efe19
Prescribed lower bounds for omega on a window
spec-7f0efe19 Opn.erdos_69_omega_window
proved
Proposed by a contributor.
$\displaystyle \forall k\in\mathbb{N},\ \forall c:\mathbb{N}\to\mathbb{N}\ \ \exists N\in\mathbb{N}\ \ \forall j<k:\quad c(j) \le \omega(N+1+j)$
For every length k and every sequence of naturals c there is a natural N with c(j) ≤ ω(N+1+j) for each j < k, where ω(n) is the number of distinct prime factors of n.
Lean
theorem Opn.erdos_69_omega_window :
∀ (k : ℕ) (c : ℕ → ℕ), ∃ N : ℕ, ∀ j < k, c j ≤ ω (N + 1 + j) := by
sorryWhy does it end in sorry?
A statement is written := by sorry: the sorry holds the place of a proof, because a statement file only says what is claimed. A proof the gate checked is its own file, Proof.lean. How to read a proof page →
How it was proved
Proved by Proof.lean, checked by the kernel. Its attestation, 000301, records the gate’s run.
The proof step by step (outline)
Checked by the kernel — an outline of the attested proof below: attestations/000301.json, merge commit 0b4c88bbdf03.
Outline of Proof.lean, extracted by the gate at 82834c4684b8 from the proof’s elaboration: each step is a claim the proof establishes and the goal it leaves. Open a step for what it uses and its Lean lines.
hqphave∀ (x : ℕ × ℕ), Nat.Prime (q x)Leaves
∃ (N : ℕ), ∀ j < k, c j ≤ (ω : ℕ → ℕ) (N + (1 : ℕ) + j), withhqp : ∀ (x : ℕ × ℕ), Nat.Prime (q x).Uses library
Nat.prime_nth_prime.Lean, line 20
have hqp : ∀ x, (q x).Prime := fun x => Nat.prime_nth_prime _
targets/erdos-69/nodes/spec-7f0efe19/Proof.lean, line 20 at
0b4c88bbdf03↗hqinjhaveFunction.Injective qLeaves
∃ (N : ℕ), ∀ j < k, c j ≤ (ω : ℕ → ℕ) (N + (1 : ℕ) + j), withhqinj : Function.Injective q.Uses library
Function.InjectiveA functionf : α → βis called injective iff x = f yimpliesx = y. ,Prod.ext.Lean, lines 21–26
have hqinj : Function.Injective q := by intro x y h have h1 : Nat.pair x.1 x.2 = Nat.pair y.1 y.2 := Nat.nth_injective Nat.infinite_setOfPred_prime h obtain ⟨h2, h3⟩ := Nat.pair_eq_pair.1 h1 exact Prod.ext h2 h3targets/erdos-69/nodes/spec-7f0efe19/Proof.lean, lines 21–26 at
0b4c88bbdf03↗hqinj.h1haveNat.pair x.1 x.2 = Nat.pair y.1 y.2Leaves
x = y, withh1 : Nat.pair x.1 x.2 = Nat.pair y.1 y.2.Uses library
Nat.pairPairing function for the natural numbers. ,Nat.nth_injective,Nat.infinite_setOfPred_primeA version ofNat.exists_infinite_primesusing theSet.Infinitepredicate. .Lean, lines 23–24
have h1 : Nat.pair x.1 x.2 = Nat.pair y.1 y.2 := Nat.nth_injective Nat.infinite_setOfPred_prime htargets/erdos-69/nodes/spec-7f0efe19/Proof.lean, lines 23–24 at
0b4c88bbdf03↗hqinj.s2obtainx.1 = y.1 ∧ x.2 = y.2Leaves
x = y, withh2 : x.1 = y.1,h3 : x.2 = y.2.Uses library
Nat.pair_eq_pair.Lean, line 25
obtain ⟨h2, h3⟩ := Nat.pair_eq_pair.1 h1
targets/erdos-69/nodes/spec-7f0efe19/Proof.lean, line 25 at
0b4c88bbdf03↗
hmemhave∀ (j i : ℕ), j < k → i < c j → (j, i) ∈ tLeaves
∃ (N : ℕ), ∀ j < k, c j ≤ (ω : ℕ → ℕ) (N + (1 : ℕ) + j), withhmem : ∀ (j i : ℕ), j < k → i < c j → (j, i) ∈ t.Uses library
Finset.mem_filter,Finset.mem_product,Finset.mem_range,And.introAnd.intro : a → b → a ∧ bis the constructor for the And operation. ,lt_of_lt_of_le,Finset.le_sup.Lean, lines 29–33
have hmem : ∀ j i, j < k → i < c j → (j, i) ∈ t := by intro j i hj hi simp only [t, Finset.mem_filter, Finset.mem_product, Finset.mem_range] refine ⟨⟨hj, lt_of_lt_of_le hi ?_⟩, hi⟩ exact Finset.le_sup (f := c) (Finset.mem_range.2 hj)targets/erdos-69/nodes/spec-7f0efe19/Proof.lean, lines 29–33 at
0b4c88bbdf03↗hthave∀ x ∈ t, x.1 < kLeaves
∃ (N : ℕ), ∀ j < k, c j ≤ (ω : ℕ → ℕ) (N + (1 : ℕ) + j), withht : ∀ x ∈ t, x.1 < k.Uses library
Finset.mem_filter,Finset.mem_product,Finset.mem_range.Lean, lines 34–37
have ht : ∀ x ∈ t, x.1 < k := by intro x hx simp only [t, Finset.mem_filter, Finset.mem_product, Finset.mem_range] at hx exact hx.1.1targets/erdos-69/nodes/spec-7f0efe19/Proof.lean, lines 34–37 at
0b4c88bbdf03↗hq0have∀ x ∈ t, q x ≠ (0 : ℕ)Leaves
∃ (N : ℕ), ∀ j < k, c j ≤ (ω : ℕ → ℕ) (N + (1 : ℕ) + j), withhq0 : ∀ x ∈ t, q x ≠ (0 : ℕ).Lean, line 38
have hq0 : ∀ x ∈ t, q x ≠ 0 := fun x _ => (hqp x).ne_zero
targets/erdos-69/nodes/spec-7f0efe19/Proof.lean, line 38 at
0b4c88bbdf03↗hcophave(↑t : Set (ℕ × ℕ)).Pairwise (Function.onFun Nat.Coprime q)Leaves
∃ (N : ℕ), ∀ j < k, c j ≤ (ω : ℕ → ℕ) (N + (1 : ℕ) + j), withhcop : (↑t : Set (ℕ × ℕ)).Pairwise (Function.onFun Nat.Coprime q).Uses library
SetA set is a collection of elements of some typeα. ,Function.onFunGiven functionsf : β → β → φandg : α → β, produce a functionα → α → φthat evaluatesgon each argument, then appliesfto the results. ,Nat.Coprimemandnare coprime, or relatively prime, if theirgcdis 1. ,Nat.coprime_primes.Lean, lines 39–41
have hcop : (↑t : Set (ℕ × ℕ)).Pairwise (Function.onFun Nat.Coprime q) := by intro x _ y _ hxy exact (Nat.coprime_primes (hqp x) (hqp y)).2 (hqinj.ne hxy)targets/erdos-69/nodes/spec-7f0efe19/Proof.lean, lines 39–41 at
0b4c88bbdf03↗s7obtain{ k : ℕ // ∀ i ∈ t, k ≡ a i [MOD q i] }Leaves
∃ (N : ℕ), ∀ j < k, c j ≤ (ω : ℕ → ℕ) (N + (1 : ℕ) + j), withN : ℕ,hN : ∀ i ∈ t, N ≡ a i [MOD q i].Uses library
Nat.chineseRemainderOfFinsetThe natural number less than∏ i ∈ t, s icongruent toa imods ifor alli ∈ t. .Lean, line 43
obtain ⟨N, hN⟩ := Nat.chineseRemainderOfFinset a q t hq0 hcop
targets/erdos-69/nodes/spec-7f0efe19/Proof.lean, line 43 at
0b4c88bbdf03↗hdvdhave∀ i < c j, q (j, i) ∣ N + (1 : ℕ) + jLeaves
c j ≤ (ω : ℕ → ℕ) (N + (1 : ℕ) + j), withhdvd : ∀ i < c j, q (j, i) ∣ N + (1 : ℕ) + j.Uses library
add_assoc.Lean, lines 45–58
have hdvd : ∀ i < c j, q (j, i) ∣ N + 1 + j := by intro i hi have hx := hmem j i hj hi have h1 : N ≡ a (j, i) [MOD q (j, i)] := hN _ hx have h2 : 1 + j ≤ (k + 1) * q (j, i) := by have : 2 ≤ q (j, i) := (hqp _).two_le nlinarith have h3 : N + (1 + j) ≡ (k + 1) * q (j, i) [MOD q (j, i)] := by have := h1.add_right (1 + j) simpa [a, Nat.sub_add_cancel h2] using this have h4 : (k + 1) * q (j, i) ≡ 0 [MOD q (j, i)] := (Nat.modEq_zero_iff_dvd).2 (dvd_mul_left _ _) have h5 := (Nat.modEq_zero_iff_dvd).1 (h3.trans h4) simpa [add_assoc] using h5targets/erdos-69/nodes/spec-7f0efe19/Proof.lean, lines 45–58 at
0b4c88bbdf03↗hdvd.hxhave(j, i) ∈ tLeaves
q (j, i) ∣ N + (1 : ℕ) + j, withhx : (j, i) ∈ t.Lean, line 47
have hx := hmem j i hj hi
targets/erdos-69/nodes/spec-7f0efe19/Proof.lean, line 47 at
0b4c88bbdf03↗hdvd.h1haveN ≡ a (j, i) [MOD q (j, i)]Leaves
q (j, i) ∣ N + (1 : ℕ) + j, withh1 : N ≡ a (j, i) [MOD q (j, i)].Lean, line 48
have h1 : N ≡ a (j, i) [MOD q (j, i)] := hN _ hx
targets/erdos-69/nodes/spec-7f0efe19/Proof.lean, line 48 at
0b4c88bbdf03↗hdvd.h2have(1 : ℕ) + j ≤ (k + (1 : ℕ)) * q (j, i)Leaves
q (j, i) ∣ N + (1 : ℕ) + j, withh2 : (1 : ℕ) + j ≤ (k + (1 : ℕ)) * q (j, i).Lean, lines 49–51
have h2 : 1 + j ≤ (k + 1) * q (j, i) := by have : 2 ≤ q (j, i) := (hqp _).two_le nlinarithtargets/erdos-69/nodes/spec-7f0efe19/Proof.lean, lines 49–51 at
0b4c88bbdf03↗hdvd.h2.thishave(2 : ℕ) ≤ q (j, i)Leaves
(1 : ℕ) + j ≤ (k + (1 : ℕ)) * q (j, i), withthis : (2 : ℕ) ≤ q (j, i).Lean, line 50
have : 2 ≤ q (j, i) := (hqp _).two_le
targets/erdos-69/nodes/spec-7f0efe19/Proof.lean, line 50 at
0b4c88bbdf03↗
hdvd.h3haveN + ((1 : ℕ) + j) ≡ (k + (1 : ℕ)) * q (j, i) [MOD q (j, i)]Leaves
q (j, i) ∣ N + (1 : ℕ) + j, withh3 : N + ((1 : ℕ) + j) ≡ (k + (1 : ℕ)) * q (j, i) [MOD q (j, i)].Uses library
Nat.sub_add_cancel.Lean, lines 52–54
have h3 : N + (1 + j) ≡ (k + 1) * q (j, i) [MOD q (j, i)] := by have := h1.add_right (1 + j) simpa [a, Nat.sub_add_cancel h2] using thistargets/erdos-69/nodes/spec-7f0efe19/Proof.lean, lines 52–54 at
0b4c88bbdf03↗hdvd.h3.thishaveN + ((1 : ℕ) + j) ≡ a (j, i) + ((1 : ℕ) + j) [MOD q (j, i)]Leaves
N + ((1 : ℕ) + j) ≡ (k + (1 : ℕ)) * q (j, i) [MOD q (j, i)], withthis : N + ((1 : ℕ) + j) ≡ a (j, i) + ((1 : ℕ) + j) [MOD q (j, i)].Lean, line 53
have := h1.add_right (1 + j)
targets/erdos-69/nodes/spec-7f0efe19/Proof.lean, line 53 at
0b4c88bbdf03↗
hdvd.h4have(k + (1 : ℕ)) * q (j, i) ≡ (0 : ℕ) [MOD q (j, i)]Leaves
q (j, i) ∣ N + (1 : ℕ) + j, withh4 : (k + (1 : ℕ)) * q (j, i) ≡ (0 : ℕ) [MOD q (j, i)].Uses library
Nat.modEq_zero_iff_dvd,dvd_mul_left.Lean, lines 55–56
have h4 : (k + 1) * q (j, i) ≡ 0 [MOD q (j, i)] := (Nat.modEq_zero_iff_dvd).2 (dvd_mul_left _ _)targets/erdos-69/nodes/spec-7f0efe19/Proof.lean, lines 55–56 at
0b4c88bbdf03↗hdvd.h5haveq (j, i) ∣ N + ((1 : ℕ) + j)Leaves
q (j, i) ∣ N + (1 : ℕ) + j, withh5 : q (j, i) ∣ N + ((1 : ℕ) + j).Uses library
Nat.modEq_zero_iff_dvd.Lean, line 57
have h5 := (Nat.modEq_zero_iff_dvd).1 (h3.trans h4)
targets/erdos-69/nodes/spec-7f0efe19/Proof.lean, line 57 at
0b4c88bbdf03↗
h_x3c9(hω) have(ω : ℕ → ℕ) (N + (1 : ℕ) + j) = (N + (1 : ℕ) + j).primeFactors.cardLeaves
c j ≤ (ω : ℕ → ℕ) (N + (1 : ℕ) + j), withhω : (ω : ℕ → ℕ) (N + (1 : ℕ) + j) = (N + (1 : ℕ) + j).primeFactors.card.Uses library
ArithmeticFunction.cardDistinctFactors_apply,Nat.primeFactorsThe prime factors of a natural number as a finset. ,List.card_toFinset.Lean, lines 59–60
have hω : ω (N + 1 + j) = (N + 1 + j).primeFactors.card := by rw [ArithmeticFunction.cardDistinctFactors_apply, Nat.primeFactors, List.card_toFinset]targets/erdos-69/nodes/spec-7f0efe19/Proof.lean, lines 59–60 at
0b4c88bbdf03↗hcardhave(Finset.range (c j)).card ≤ (N + (1 : ℕ) + j).primeFactors.cardLeaves
c j ≤ (N + (1 : ℕ) + j).primeFactors.card, withhcard : (Finset.range (c j)).card ≤ (N + (1 : ℕ) + j).primeFactors.card.Uses library
Finset.card_le_card_of_injOn,Finset.rangerange nis the set of natural numbers less thann. .Lean, lines 62–63
have hcard := Finset.card_le_card_of_injOn (s := Finset.range (c j)) (t := (N + 1 + j).primeFactors) (fun i => q (j, i)) ?_ ?_targets/erdos-69/nodes/spec-7f0efe19/Proof.lean, lines 62–63 at
0b4c88bbdf03↗s11caseLeaves
c j ≤ (N + (1 : ℕ) + j).primeFactors.card.Lean, line 64
· simpa using hcard
targets/erdos-69/nodes/spec-7f0efe19/Proof.lean, line 64 at
0b4c88bbdf03↗s12caseLeaves
Set.MapsTo (fun (i : ℕ) => q (j, i)) (↑(Finset.range (c j)) : Set ℕ) (↑(N + (1 : ℕ) + j).primeFactors : Set ℕ).Uses library
Nat.mem_primeFactors,And.introAnd.intro : a → b → a ∧ bis the constructor for the And operation. .Lean, lines 65–67
· intro i hi have hi' : i < c j := Finset.mem_range.1 hi exact Nat.mem_primeFactors.2 ⟨hqp _, hdvd i hi', by omega⟩targets/erdos-69/nodes/spec-7f0efe19/Proof.lean, lines 65–67 at
0b4c88bbdf03↗s12.hi'havei < c jLeaves
(fun (i : ℕ) => q (j, i)) i ∈ (↑(N + (1 : ℕ) + j).primeFactors : Set ℕ), withhi' : i < c j.Uses library
Finset.mem_range.Lean, line 66
have hi' : i < c j := Finset.mem_range.1 hi
targets/erdos-69/nodes/spec-7f0efe19/Proof.lean, line 66 at
0b4c88bbdf03↗
s13caseLeaves
Set.InjOn (fun (i : ℕ) => q (j, i)) (↑(Finset.range (c j)) : Set ℕ).Lean, lines 68–70
· intro i _ i' _ h have := hqinj h simpa using thistargets/erdos-69/nodes/spec-7f0efe19/Proof.lean, lines 68–70 at
0b4c88bbdf03↗s13.thishave(j, i) = (j, i')Leaves
i = i', withthis : (j, i) = (j, i').Lean, line 69
have := hqinj h
targets/erdos-69/nodes/spec-7f0efe19/Proof.lean, line 69 at
0b4c88bbdf03↗
The proof in Lean (Proof.lean)
Checked by the kernel — these bytes are the ones its attestation names: attestations/000301.json, merge commit 0b4c88bbdf03.
artifact_hash of the attestation below, so these are the bytes the gate checked. Rendered from targets/erdos-69/nodes/spec-7f0efe19/Proof.lean, sha256 72506db4539a.import Mathlib
import Nodes.«spec-7f0efe19».Context
open scoped ArithmeticFunction.omega
/-! A speculative ingredient for erdos-69 (D-29): prescribed lower bounds for `ω` on a window of
consecutive integers. For every length `k` and every choice of lower bounds `c 0, …, c (k-1)`
there is `N` with `c j ≤ ω (N + 1 + j)` for each `j < k`: give each slot its own set of distinct
primes and solve the congruences by the Chinese remainder theorem. Rationality of
`∑ ω(n)/2^n` would make every tail `∑_{j ≥ 0} ω(N+1+j)/2^(j+1)` lie in a fixed lattice
`(1/b)ℤ`, and arguments against that (the literature route is Tao–Teräväinen, arXiv:2512.01739)
need windows whose `ω` values are controlled. This lemma is only the elementary, lower-bound
half of that control; the upper bounds, the hard part, are not here. -/
theorem Opn.erdos_69_omega_window :
∀ (k : ℕ) (c : ℕ → ℕ), ∃ N : ℕ, ∀ j < k, c j ≤ ω (N + 1 + j) := by
intro k c
-- one distinct prime `q (j, i)` for each slot `j < k` and each `i < c j`
let q : ℕ × ℕ → ℕ := fun x => Nat.nth Nat.Prime (Nat.pair x.1 x.2)
have hqp : ∀ x, (q x).Prime := fun x => Nat.prime_nth_prime _
have hqinj : Function.Injective q := by
intro x y h
have h1 : Nat.pair x.1 x.2 = Nat.pair y.1 y.2 :=
Nat.nth_injective Nat.infinite_setOfPred_prime h
obtain ⟨h2, h3⟩ := Nat.pair_eq_pair.1 h1
exact Prod.ext h2 h3
let t : Finset (ℕ × ℕ) :=
((Finset.range k) ×ˢ (Finset.range ((Finset.range k).sup c))).filter (fun x => x.2 < c x.1)
have hmem : ∀ j i, j < k → i < c j → (j, i) ∈ t := by
intro j i hj hi
simp only [t, Finset.mem_filter, Finset.mem_product, Finset.mem_range]
refine ⟨⟨hj, lt_of_lt_of_le hi ?_⟩, hi⟩
exact Finset.le_sup (f := c) (Finset.mem_range.2 hj)
have ht : ∀ x ∈ t, x.1 < k := by
intro x hx
simp only [t, Finset.mem_filter, Finset.mem_product, Finset.mem_range] at hx
exact hx.1.1
have hq0 : ∀ x ∈ t, q x ≠ 0 := fun x _ => (hqp x).ne_zero
have hcop : (↑t : Set (ℕ × ℕ)).Pairwise (Function.onFun Nat.Coprime q) := by
intro x _ y _ hxy
exact (Nat.coprime_primes (hqp x) (hqp y)).2 (hqinj.ne hxy)
let a : ℕ × ℕ → ℕ := fun x => (k + 1) * q x - (1 + x.1)
obtain ⟨N, hN⟩ := Nat.chineseRemainderOfFinset a q t hq0 hcop
refine ⟨N, fun j hj => ?_⟩
have hdvd : ∀ i < c j, q (j, i) ∣ N + 1 + j := by
intro i hi
have hx := hmem j i hj hi
have h1 : N ≡ a (j, i) [MOD q (j, i)] := hN _ hx
have h2 : 1 + j ≤ (k + 1) * q (j, i) := by
have : 2 ≤ q (j, i) := (hqp _).two_le
nlinarith
have h3 : N + (1 + j) ≡ (k + 1) * q (j, i) [MOD q (j, i)] := by
have := h1.add_right (1 + j)
simpa [a, Nat.sub_add_cancel h2] using this
have h4 : (k + 1) * q (j, i) ≡ 0 [MOD q (j, i)] :=
(Nat.modEq_zero_iff_dvd).2 (dvd_mul_left _ _)
have h5 := (Nat.modEq_zero_iff_dvd).1 (h3.trans h4)
simpa [add_assoc] using h5
have hω : ω (N + 1 + j) = (N + 1 + j).primeFactors.card := by
rw [ArithmeticFunction.cardDistinctFactors_apply, Nat.primeFactors, List.card_toFinset]
rw [hω]
have hcard := Finset.card_le_card_of_injOn (s := Finset.range (c j))
(t := (N + 1 + j).primeFactors) (fun i => q (j, i)) ?_ ?_
· simpa using hcard
· intro i hi
have hi' : i < c j := Finset.mem_range.1 hi
exact Nat.mem_primeFactors.2 ⟨hqp _, hdvd i hi', by omega⟩
· intro i _ i' _ h
have := hqinj h
simpa using thisWhat is known
Work on it
No explainer yet. This proof written as a journal would print it, labelled unverified, is the next thing a writer could add, by pull request (D-3, D-36; the guide shows how).
How to contribute → · Pull requests in flight ↗ · See it in the problem’s graph →
Record
Statement: the Lean file and its words (1 version)
Statement not audited — only a problem’s root statement is audited for fidelity (D-9); the kernel checks a proof against this Lean as written.
import Mathlib
import Nodes.«spec-7f0efe19».Context
open scoped ArithmeticFunction.omega
/-! A speculative ingredient for erdos-69 (D-29): prescribed lower bounds for `ω` on a window of
consecutive integers. For every length `k` and every choice of lower bounds `c 0, …, c (k-1)`
there is `N` with `c j ≤ ω (N + 1 + j)` for each `j < k`: give each slot its own set of distinct
primes and solve the congruences by the Chinese remainder theorem. Rationality of
`∑ ω(n)/2^n` would make every tail `∑_{j ≥ 0} ω(N+1+j)/2^(j+1)` lie in a fixed lattice
`(1/b)ℤ`, and arguments against that (the literature route is Tao–Teräväinen, arXiv:2512.01739)
need windows whose `ω` values are controlled. This lemma is only the elementary, lower-bound
half of that control; the upper bounds, the hard part, are not here. -/
theorem Opn.erdos_69_omega_window :
∀ (k : ℕ) (c : ℕ → ℕ), ∃ N : ℕ, ∀ j < k, c j ≤ ω (N + 1 + j) := by
sorryA statement is written := by sorry: the sorry holds the place of a proof, because a statement file only says what is claimed. A proof the gate checked is its own file, Proof.lean. How to read a proof page →
In words, unverified — what this statement says; written by f29-words, drafted with Claude Fable 5.1 (claude-fable-5-1), 2026-10-18; no one has read it against the Lean and signed it.
Draft · drafted, by the model named above
$\displaystyle \forall k\in\mathbb{N},\ \forall c:\mathbb{N}\to\mathbb{N}\ \ \exists N\in\mathbb{N}\ \ \forall j<k:\quad c(j) \le \omega(N+1+j)$
For every length k and every sequence of naturals c there is a natural N with c(j) ≤ ω(N+1+j) for each j < k, where ω(n) is the number of distinct prime factors of n.
Rendered from gloss/4b982f4329ad….md · Improve these words →
Rendered from targets/erdos-69/nodes/spec-7f0efe19/Statement.lean. Origin: authored.
Attestation: pass, 7 of 7 checks
Checked by the kernel — the gate’s record of the run: attestations/000301.json, merge commit 0b4c88bbdf03.
Verdict pass, from attestations/000301.json.
- Submitter
t0929-3- Toolchain
- leanprover/lean4:v4.33.1 (hash
f54d0bc916bf76a7fae460ce9d078ccd1f74aeb4fd12c4b6546bca28b6aa1c63) - Mathlib
- 0df444a360eaa60ab8c11dca51a86af692955474
- Reviewer
- none needed (calibration)
| Step | Check | Result |
|---|---|---|
| 1 | toolchain | pass |
| 2 | paths | pass |
| 4 | kernel-replay | pass |
| 5 | axioms | pass |
| 6 | hazards | pass |
| 7 | witness | pass |
| 8 | deps | pass |
Witness
Checked by the kernel — step 7 passed in the run its attestation records: attestations/000301.json, merge commit 0b4c88bbdf03.
c12e03295ecf.import Mathlib open scoped ArithmeticFunction.omega theorem witness : ∃ (k : ℕ) (c : ℕ → ℕ), True := ⟨0, fun _ => 0, trivial⟩
No gloss yet: no one has written in words what this witness says (D-3 v3.30); the Lean above is the witness. How to write one →