imo-v1 / imo2025p1
imo2025p1
open
difficulty 4
credited
Run this goal:
./swarm/run.sh --goal imo2025p1What it runs
The Lean statement the swarm must prove — kernel-verified at Gate A. The trailing sorry is the open obligation a proof replaces.
goals/imo2025p1.lean
import Mathlib
open scoped Affine Finset
open Module
noncomputable def xAxis : AffineSubspace ℝ (EuclideanSpace ℝ (Fin 2)) where
carrier := {p | p 1 = 0}
smul_vsub_vadd_mem c p₁ p₂ p₃ hp₁ hp₂ hp₃ := by simp_all
noncomputable def yAxis : AffineSubspace ℝ (EuclideanSpace ℝ (Fin 2)) where
carrier := {p | p 0 = 0}
smul_vsub_vadd_mem c p₁ p₂ p₃ hp₁ hp₂ hp₃ := by simp_all
noncomputable def linexy0 : AffineSubspace ℝ (EuclideanSpace ℝ (Fin 2)) where
carrier := {p | p 0 + p 1 = 0}
smul_vsub_vadd_mem c p₁ p₂ p₃ hp₁ hp₂ hp₃ := by
simp only [Fin.isValue, vsub_eq_sub, vadd_eq_add, Set.mem_setOf_eq, PiLp.add_apply,
PiLp.smul_apply, PiLp.sub_apply, smul_eq_mul]
suffices c * (p₁ 0 + p₁ 1 - (p₂ 0 + p₂ 1)) + (p₃ 0 + p₃ 1) = 0 by
rw [← this]
ring
simp_all
def Sunny (s : AffineSubspace ℝ (EuclideanSpace ℝ (Fin 2))) : Prop :=
¬ s ∥ xAxis ∧ ¬ s ∥ yAxis ∧ ¬ s ∥ linexy0
def answer : (Set.Ici 3) → Set ℕ := sorry
theorem imo2025p1 (n : Set.Ici 3) :
{k | ∃ lines : Finset (AffineSubspace ℝ (EuclideanSpace ℝ (Fin 2))),
have : DecidablePred Sunny := Classical.decPred _;
#lines = n ∧ (∀ l ∈ lines, finrank ℝ l.direction = 1) ∧
(∀ a b : ℕ, 0 < a → 0 < b → a + b ≤ (n : ℕ) + 1 → ∃ l ∈ lines, !₂[(a : ℝ), b] ∈ l) ∧
#{l ∈ lines | Sunny l} = k} = answer n := by
sorryRuns (0)
No runs recorded for this suite yet — they appear here as the swarm attempts the benchmarks.