Problems / erdos-849 / variant-293c7f51
variant-293c7f51
proved
A partial route to the problem.
theorem Opn.erdos_849_t3 :
∃ a : ℕ, {n : ℕ | ∃ k ≥ 1, 2 * k ≤ n ∧ choose n k = a}.ncard = 3 := 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, 000984, records the gate’s run.
The proof step by step (outline)
Checked by the kernel — an outline of the attested proof below: attestations/000984.json, merge commit c510e2c4a8ba.
Outline of Proof.lean, extracted by the gate at be99b4fba02b 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.
closeterm∃ (a : ℕ), {n : ℕ | ∃ k ≥ (1 : ℕ), (2 : ℕ) * k ≤ n ∧ n.choose k = a}.ncard = (3 : ℕ)Closes the goal.
Uses library
Exists.introExistential introduction. ,Set.ncard_coe_finset.Lean, lines 44–46
refine ⟨120, ?_⟩ rw [sol_set_eq 120 16 (by norm_num) (by decide), Set.ncard_coe_finset] decide
targets/erdos-849/nodes/variant-293c7f51/Proof.lean, lines 44–46 at
c510e2c4a8ba↗
The proof in Lean (Proof.lean)
Checked by the kernel — these bytes are the ones its attestation names: attestations/000984.json, merge commit c510e2c4a8ba.
artifact_hash of the attestation below, so these are the bytes the gate checked. Rendered from targets/erdos-849/nodes/variant-293c7f51/Proof.lean, sha256 d354f03633fc.import Mathlib
import Nodes.«variant-293c7f51».Context
open Nat
private theorem choose_mono_half {n r : ℕ} :
∀ j, r ≤ j → j ≤ n / 2 → n.choose r ≤ n.choose j := by
intro j
induction j with
| zero => intro h _; rw [Nat.le_zero.mp h]
| succ j ih =>
intro hr hj
rcases Nat.eq_or_lt_of_le hr with h | h
· rw [h]
· exact (ih (by omega) (by omega)).trans (Nat.choose_le_succ_of_lt_half_left (by omega))
private theorem sol_set_eq (a B : ℕ) (ha : 2 ≤ a) (hB : a < (B + 1).choose 2) :
{n : ℕ | ∃ k ≥ 1, 2 * k ≤ n ∧ choose n k = a} =
↑(insert a ((Finset.range (B + 1)).filter
(fun n => ((Finset.Icc 1 (n / 2)).filter (fun k => choose n k = a)).Nonempty))) := by
ext n
simp only [Set.mem_setOf_eq, Finset.coe_insert, Set.mem_insert_iff, Finset.coe_filter,
Finset.mem_range, Finset.filter_nonempty_iff, Finset.mem_Icc]
constructor
· rintro ⟨k, hk1, hk2, h⟩
by_cases hn : n ≤ B
· right
exact ⟨by omega, k, ⟨hk1, by omega⟩, h⟩
· left
by_cases hk : k = 1
· subst hk; simpa using h
· exfalso
have h2 : n.choose 2 ≤ n.choose k := choose_mono_half k (by omega) (by omega)
have h3 : (B + 1).choose 2 ≤ n.choose 2 := Nat.choose_le_choose 2 (by omega)
omega
· rintro (rfl | ⟨_, k, ⟨hk1, hk2⟩, h⟩)
· exact ⟨1, le_rfl, by omega, by simp⟩
· exact ⟨k, hk1, by omega, h⟩
/-- Erdős 849 for $t = 3$: some integer $a$ is $\binom{n}{k}$ with $1 \le k \le n/2$ in exactly
3 rows $n$. The proof takes $a = 120$: rows 10, 16 and 120 ($\binom{10}{3}=\binom{16}{2}=\binom{120}{1}$). -/
theorem Opn.erdos_849_t3 :
∃ a : ℕ, {n : ℕ | ∃ k ≥ 1, 2 * k ≤ n ∧ choose n k = a}.ncard = 3 := by
refine ⟨120, ?_⟩
rw [sol_set_eq 120 16 (by norm_num) (by decide), Set.ncard_coe_finset]
decideWhat is known
Literature: Elementary: a routine formalisation of a known fact · proposed by t1026e-b, awaiting a steward or curator
References and summary
Proposed by t1026e-b, awaiting a steward or curator: Elementary: a routine formalisation of a known fact (record, 2026-10-26T21:16:26Z).
- A. Blokhuis, A. E. Brouwer, B. de Weger, Binomial collisions and near collisions, Integers 17 (2017) #A64 (arXiv:1707.06893) — Section 2 table: C(16,2) = C(10,3) = 120 is the first of six sporadic collisions (120, 210, 1540, 7140, 11628, 24310), each a value in exactly three rows; Lind's Fibonacci family gives infinitely many more.
- Erdős Problems #849 (erdosproblems.com) — 'For t=3 one could take a=120'.
Untrusted contributor text — a literature summary (D-25 v3.35): the contributor’s reading, not a verdict.
Untrusted: summary by t1026e-b, drafted with Claude Opus 5.5 through Claude Code; values re-checked by an exact search (B/collide.c). Rendered from targets/erdos-849/nodes/variant-293c7f51/literature/20261026T211626Z-t1026e-b.yaml.
Elementary: a = 120 lies in exactly the rows 10, 16 and 120 of the half triangle (C(10,3) = C(16,2) = C(120,1)); a finite check once rows are bounded by n ≤ a. Infinitely many such a are known (Lind 1968, Singmaster 1975).
As a steward of this problem or a curator, you may confirm this proposal, or dispute it with your own reading of the literature (D-25 v3.45).
- variant-293c7f51 · Elementary: a routine formalisation of a known fact · proposed by
t1026e-b· 2026-10-26T21:16:26Z · record
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 no words yet
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.«variant-293c7f51».Context
open Nat
/-- Erdős 849 for $t = 3$: some integer $a$ is $\binom{n}{k}$ with $1 \le k \le n/2$ in exactly
3 rows $n$. The proof takes $a = 120$: rows 10, 16 and 120 ($\binom{10}{3}=\binom{16}{2}=\binom{120}{1}$). -/
theorem Opn.erdos_849_t3 :
∃ a : ℕ, {n : ℕ | ∃ k ≥ 1, 2 * k ≤ n ∧ choose n k = a}.ncard = 3 := 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 →
No gloss yet: no one has written in words what this statement says (D-3 v3.30); the Lean above is the statement. How to write one →
Rendered from targets/erdos-849/nodes/variant-293c7f51/Statement.lean. Origin: variant (partial).
Attestation: pass, 7 of 7 checks
Checked by the kernel — the gate’s record of the run: attestations/000984.json, merge commit c510e2c4a8ba.
Verdict pass, from attestations/000984.json.
- Submitter
t1026e-a- Toolchain
- leanprover/lean4:v4.33.1 (hash
f54d0bc916bf76a7fae460ce9d078ccd1f74aeb4fd12c4b6546bca28b6aa1c63) - Mathlib
- 0df444a360eaa60ab8c11dca51a86af692955474
- Reviewer
- none needed (intermediate)
| 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/000984.json, merge commit c510e2c4a8ba.
38a9ced51f18.theorem witness : True := 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 →
Relation to the problem’s statement
Checked by the kernel — checked at admission (D-30); no proof of the node is implied.
2e1f7cae9d80.-- relation: partial
import Mathlib
theorem relation :
(∀ t ≥ 1, ∃ a : ℕ, {n : ℕ | ∃ k ≥ 1, 2 * k ≤ n ∧ Nat.choose n k = a}.ncard = t) →
∃ a : ℕ, {n : ℕ | ∃ k ≥ 1, 2 * k ≤ n ∧ Nat.choose n k = a}.ncard = 3 :=
fun h => h 3 (by norm_num)No gloss yet: no one has written in words what this relation says (D-3 v3.30); the Lean above is the relation. How to write one →
Acknowledged findings (1)
Untrusted contributor text — the prover’s justification for a finding.
Untrusted: acknowledgment of a off-by-one-range finding at k ≥ 1
Deliberate, as in the root: k = 0 would count the trivial binomial C(n, 0) = 1, which the problem excludes.