IMO 2024 P1

Determine all real numbers \alpha such that, for every positive integer n, the integer \lfloor \alpha\rfloor + \lfloor2\alpha\rfloor + \cdots + \lfloor n\alpha\rfloor is a multiple of n. (Note that \lfloor z\rfloor denotes the greatest integer less than or equal to z. For example, \lfloor-\pi\rfloor = -4 and \lfloor2\rfloor = \lfloor2.9\rfloor = 2.)

Solution: \alpha is an even integer.

open scoped BigOperators theorem imo_2024_p1 : {(α : ) | (n : ), 0 < n (n : ) ( i in Finset.Icc 1 n, i * α)} = {α : | k : , Even k α = k} :=
{α | ∀ (n : ), 0 < n → ↑niFinset.Icc 1 n, i * α} = {α | ∃ k, Even kα = k}
(∀ x ∈ {α | ∀ (n : ), 0 < n → ↑niFinset.Icc 1 n, i * α}, x{α | ∃ k, Even kα = k}){α | ∃ k, Even kα = k}{α | ∀ (n : ), 0 < n → ↑niFinset.Icc 1 n, i * α}
/- We introduce a variable that will be used in the second part of the proof (the hard direction), namely the integer `l` such that `2l = ⌊α⌋ + ⌊2α⌋` (this comes from the given divisibility condition with `n = 2`). -/
refine_1{α | ∃ k, Even kα = k}{α | ∀ (n : ), 0 < n → ↑niFinset.Icc 1 n, i * α}
refine_2
x:
L:x{α | ∀ (n : ), 0 < n → ↑niFinset.Icc 1 n, i * α}
l:
Y:iFinset.Icc 1 2, i * x = ↑2 * l
x{α | ∃ k, Even kα = k}
refine_1
x✝¹:
y:x✝¹{α | ∃ k, Even kα = k}
x✝:
x:0 < x✝
S:
p:Even Sx✝¹ = S
x✝iFinset.Icc 1 x✝, i * x✝¹
refine_2
x:
L:x{α | ∀ (n : ), 0 < n → ↑niFinset.Icc 1 n, i * α}
l:
Y:iFinset.Icc 1 2, i * x = ↑2 * l
x{α | ∃ k, Even kα = k}
refine_1
x✝¹:
y:x✝¹{α | ∃ k, Even kα = k}
x✝:
x:0 < x✝
S:
p:Even Sx✝¹ = S
x✝iFinset.Icc 1 x✝, i * x✝¹
/- We start by showing that every `α` of the form `2k` works. In this case, the sum simplifies to `kn(n+1)`), which is clearly divisible by `n`. -/ simp_all[λL:=>(
x✝¹:
y:x✝¹{α | ∃ k, Even kα = k}
x✝:
x:0 < x✝
S:
p:Even Sx✝¹ = S
L:
L * S = L * S
All goals completed! 🐙
:(L:)*S=L* S )]
refine_1
x✝¹:
x✝:
x:0 + 1x✝
S:
p:S % 2 = 0S = S
↑(∑ xFinset.range (x✝.succ - 1), 1 + xFinset.range (x✝.succ - 1), x) * S % x✝ = 0
refine_1
x✝¹:
x✝:
S:
x:1x✝
p:2S
x✝(↑x✝ + x✝ * (↑x✝ - 1) / 2) * S
exact dvd_trans 2+((_:)-1),
x✝¹:
x✝:
S:
x:1x✝
p:2S
(↑x✝ + x✝ * (↑x✝ - 1) / 2) * 2 = x✝ * (2 + (↑x✝ - 1))
linarith[((:Int)*(Nat-1)).ediv_mul_cancel$ Int.prime_two.dvd_mul.2<|
x✝¹:
x✝:
S:
x:1x✝
p:2S
2x✝2x✝ - 1
x✝¹:
x✝:
S:
x:1x✝
p:2S
2x✝2x✝ - 1
All goals completed! 🐙
] (mul_dvd_mul_left @_ (p)) /- Now let's prove the converse, i.e. that every `α` in the LHS is an even integer. We claim for all such `α` and `n ∈ ℕ`, we have `⌊(n+1)*α⌋ = ⌊α⌋+2n(l-⌊α⌋)`. -/
refine_2
x:
L:x{α | ∀ (n : ), 0 < n → ↑niFinset.Icc 1 n, i * α}
l:
Y:iFinset.Icc 1 2, i * x = ↑2 * l
this:∀ (n : ), (↑n + 1) * x = x + 2 * n * (l - x)
x{α | ∃ k, Even kα = k}
this
x:
L:x{α | ∀ (n : ), 0 < n → ↑niFinset.Icc 1 n, i * α}
l:
Y:iFinset.Icc 1 2, i * x = ↑2 * l
∀ (n : ), (↑n + 1) * x = x + 2 * n * (l - x)
refine_2
x:
L:x{α | ∀ (n : ), 0 < n → ↑niFinset.Icc 1 n, i * α}
l:
Y:iFinset.Icc 1 2, i * x = ↑2 * l
this:∀ (n : ), (↑n + 1) * x = x + 2 * n * (l - x)
x{α | ∃ k, Even kα = k}
/- Let's assume for now that the claim is true, and see how this is enough to finish our proof. -/
refine_2
x:
L:x{α | ∀ (n : ), 0 < n → ↑niFinset.Icc 1 n, i * α}
l:
Y:iFinset.Icc 1 2, i * x = ↑2 * l
this:∀ (n : ), ↑x + (↑l - x) * (↑n * 2)x * (↑n + 1)x * (↑n + 1) < x + (↑l - x) * (↑n * 2) + 1
x{α | ∃ k, Even kα = k}
-- We'll show that `α = 2(l-⌊α⌋)`, which is obviously even.
h
x:
L:x{α | ∀ (n : ), 0 < n → ↑niFinset.Icc 1 n, i * α}
l:
Y:iFinset.Icc 1 2, i * x = ↑2 * l
this:∀ (n : ), ↑x + (↑l - x) * (↑n * 2)x * (↑n + 1)x * (↑n + 1) < x + (↑l - x) * (↑n * 2) + 1
Even ((l - x) * 2)x = ↑((l - x) * 2)
h
x:
L:x{α | ∀ (n : ), 0 < n → ↑niFinset.Icc 1 n, i * α}
l:
Y:iFinset.Icc 1 2, i * x = ↑2 * l
this:∀ (n : ), ↑x + (↑l - x) * (↑n * 2)x * (↑n + 1)x * (↑n + 1) < x + (↑l - x) * (↑n * 2) + 1
x = (↑l - x) * 2
-- To do so, it suffices to show `α ≤ 2(l-⌊α⌋)` and `α ≥ 2(l-⌊α⌋)`.
h.a
x:
L:x{α | ∀ (n : ), 0 < n → ↑niFinset.Icc 1 n, i * α}
l:
Y:iFinset.Icc 1 2, i * x = ↑2 * l
this:∀ (n : ), ↑x + (↑l - x) * (↑n * 2)x * (↑n + 1)x * (↑n + 1) < x + (↑l - x) * (↑n * 2) + 1
x(↑l - x) * 2
h.a
x:
L:x{α | ∀ (n : ), 0 < n → ↑niFinset.Icc 1 n, i * α}
l:
Y:iFinset.Icc 1 2, i * x = ↑2 * l
this:∀ (n : ), ↑x + (↑l - x) * (↑n * 2)x * (↑n + 1)x * (↑n + 1) < x + (↑l - x) * (↑n * 2) + 1
(↑l - x) * 2x
/- To prove the first inequality, notice that if `α > 2(l-⌊α⌋)` then there exists an integer `N > 0` such that `N ≥ 1/(α - 2(l -⌊α⌋))`. By our assumed claim (with `n = N`), we have `⌊α⌋ + 2(l-⌊α⌋)N + 1 > (N+1)α`, i.e. `⌊α⌋ + (2(l-⌊α⌋) - α)N + 1 > α`, and this implies `⌊α⌋ > α`; contradiction. -/ use not_lt.1 (
{α | ∀ (n : ), 0 < n → ↑niFinset.Icc 1 n, i * α} = {α | ∃ k, Even kα = k}
cases exists_nat_ge (1/(x-_)) with|_ N =>nlinarith[ one_div_mul_cancel $ sub_ne_zero.2 ·.ne',9,Int.floor_le x, this N]) /- Similarly, if `α < 2(l-⌊α⌋)` then we can find a positive natural `N` such that `N ≥ 1/(2(l-⌊α⌋) - α)`. By our claim (with `n = N`), we have `(N+1)α ≥ ⌊α⌋ + 2(l-⌊α⌋)N`, i.e. `α ≥ ⌊α⌋ + (2(l-⌊α⌋) - α)N`, and this implies `a ≥ ⌊α⌋ + 1`; contradiction. -/ use not_lt.1 (
{α | ∀ (n : ), 0 < n → ↑niFinset.Icc 1 n, i * α} = {α | ∃ k, Even kα = k}
cases exists_nat_ge (1/_:)with|_ A=>nlinarith[Int.lt_floor_add_one x,one_div_mul_cancel$ sub_ne_zero.2 ·.ne',this A]) /- Now all that's left to do is to prove our claim `⌊(n + 1)α⌋ = ⌊α⌋ + 2n(l - ⌊α⌋)`. -/
this
x:
L:x{α | ∀ (n : ), 0 < n → ↑niFinset.Icc 1 n, i * α}
l:
Y:iFinset.Icc 1 2, i * x = ↑2 * l
n✝:
(↑n✝ + 1) * x = x + 2 * n✝ * (l - x)
-- We argue by strong induction on `n`.
this.ind
x:
L:x{α | ∀ (n : ), 0 < n → ↑niFinset.Icc 1 n, i * α}
l:
Y:iFinset.Icc 1 2, i * x = ↑2 * l
n✝:
a✝:m < n✝, (↑m + 1) * x = x + 2 * m * (l - x)
(↑n✝ + 1) * x = x + 2 * n✝ * (l - x)
-- By our hypothesis on `α`, we know that `(n+1) | ∑_{i=1}^(n+1) ⌊iα⌋`
this.ind
x:
l:
Y:iFinset.Icc 1 2, i * x = ↑2 * l
n✝:
a✝:m < n✝, (↑m + 1) * x = x + 2 * m * (l - x)
L:0 < n✝ + 1 → ↑(n✝ + 1)iFinset.Icc 1 (n✝ + 1), i * x
(↑n✝ + 1) * x = x + 2 * n✝ * (l - x)
this.ind
x:
l:
n✝:
Y:x + x + x = 2 * l
a✝:m < n✝, ↑x + 2 * (↑m * (↑l - x))x + m * xx + m * x < 1 + (↑x + 2 * (↑m * (↑l - x)))
L:n✝ + 1x + n✝ * x + x_1Finset.range n✝, x + x_1 * x
x + 2 * (↑n✝ * (↑l - x))x + n✝ * xx + n✝ * x < 1 + (↑x + 2 * (↑n✝ * (↑l - x)))
this.ind
x:
l:
Y:x + x + x = 2 * l
∀ (n : ), (∀ m < n, ↑x + 2 * (↑m * (↑l - x))x + m * xx + m * x < 1 + (↑x + 2 * (↑m * (↑l - x)))) → ↑n + 1x + n * x + x_1Finset.range n, x + x_1 * x → ↑x + 2 * (↑n * (↑l - x))x + n * xx + n * x < 1 + (↑x + 2 * (↑n * (↑l - x)))
/- Thus, there exists `c` such that `(n+1)*c = ∑_{i=1}^{n+1} ⌊iα⌋ = ⌊nα+α⌋ + ∑_{i=1}^n ⌊iα⌋`. -/
this.ind.intro
x:
l:
Y:x + x + x = 2 * l
A:
B:m < A, ↑x + 2 * (↑m * (↑l - x))x + m * xx + m * x < 1 + (↑x + 2 * (↑m * (↑l - x)))
c:
h✝:x + A * x + x_1Finset.range A, x + x_1 * x = (↑A + 1) * c
x + 2 * (↑A * (↑l - x))x + A * xx + A * x < 1 + (↑x + 2 * (↑A * (↑l - x)))
this.ind.intro
x:
l:
A:
c:
Y:2 * lx + x + xx + x < 2 * l - x + 1
B:m < A, ↑x + 2 * (↑m * (↑l - x))x + m * xx + m * x < 1 + (↑x + 2 * (↑m * (↑l - x)))
h✝:x_1Finset.range A, x + x_1 * x = (↑A + 1) * c - x + A * x
x + 2 * (↑A * (↑l - x))x + A * xx + A * x < 1 + (↑x + 2 * (↑A * (↑l - x)))
/- By the inductive hypothesis, `∑_{i=0}^{n-1}, ⌊α+iα⌋ = ∑_{i=0}^{n-1}, ⌊α⌋+2*i*(l-⌊α⌋)`. -/
this.ind.intro
x:
l:
A:
c:
Y:2 * lx + x + xx + x < 2 * l - x + 1
B:m < A, ↑x + 2 * (↑m * (↑l - x))x + m * xx + m * x < 1 + (↑x + 2 * (↑m * (↑l - x)))
h✝:x_1Finset.range A, x + x_1 * x = (↑A + 1) * c - x + A * x
this:dFinset.range A, x + d * x = QFinset.range A, (x + 2 * (↑Q * (l - x)))
x + 2 * (↑A * (↑l - x))x + A * xx + A * x < 1 + (↑x + 2 * (↑A * (↑l - x)))
this
x:
l:
A:
c:
Y:2 * lx + x + xx + x < 2 * l - x + 1
B:m < A, ↑x + 2 * (↑m * (↑l - x))x + m * xx + m * x < 1 + (↑x + 2 * (↑m * (↑l - x)))
h✝:x_1Finset.range A, x + x_1 * x = (↑A + 1) * c - x + A * x
dFinset.range A, x + d * x = QFinset.range A, (x + 2 * (↑Q * (l - x)))
this.ind.intro
x:
l:
A:
c:
Y:2 * lx + x + xx + x < 2 * l - x + 1
B:m < A, ↑x + 2 * (↑m * (↑l - x))x + m * xx + m * x < 1 + (↑x + 2 * (↑m * (↑l - x)))
h✝:x_1Finset.range A, x + x_1 * x = (↑A + 1) * c - x + A * x
this:dFinset.range A, x + d * x = QFinset.range A, (x + 2 * (↑Q * (l - x)))
x + 2 * (↑A * (↑l - x))x + A * xx + A * x < 1 + (↑x + 2 * (↑A * (↑l - x)))
this.ind.intro
x:
l:
A:
c:
Y:2 * lx + x + xx + x < 2 * l - x + 1
B:m < A, ↑x + 2 * (↑m * (↑l - x))x + m * xx + m * x < 1 + (↑x + 2 * (↑m * (↑l - x)))
h✝:x_1Finset.range A, x + x_1 * x = (↑A + 1) * c - x + A * x
this✝:dFinset.range A, x + d * x = QFinset.range A, (x + 2 * (↑Q * (l - x)))
this:dFinset.range A, ↑d = A * (↑A - 1) / 2
x + 2 * (↑A * (↑l - x))x + A * xx + A * x < 1 + (↑x + 2 * (↑A * (↑l - x)))
this
x:
l:
A:
c:
Y:2 * lx + x + xx + x < 2 * l - x + 1
B:m < A, ↑x + 2 * (↑m * (↑l - x))x + m * xx + m * x < 1 + (↑x + 2 * (↑m * (↑l - x)))
h✝:x_1Finset.range A, x + x_1 * x = (↑A + 1) * c - x + A * x
this:dFinset.range A, x + d * x = QFinset.range A, (x + 2 * (↑Q * (l - x)))
dFinset.range A, ↑d = A * (↑A - 1) / 2
this.ind.intro
x:
l:
A:
c:
Y:2 * lx + x + xx + x < 2 * l - x + 1
B:m < A, ↑x + 2 * (↑m * (↑l - x))x + m * xx + m * x < 1 + (↑x + 2 * (↑m * (↑l - x)))
h✝:x_1Finset.range A, x + x_1 * x = (↑A + 1) * c - x + A * x
this✝:dFinset.range A, x + d * x = QFinset.range A, (x + 2 * (↑Q * (l - x)))
this:dFinset.range A, ↑d = A * (↑A - 1) / 2
x + 2 * (↑A * (↑l - x))x + A * xx + A * x < 1 + (↑x + 2 * (↑A * (↑l - x)))
this
x:
l:
A:
c:
Y:2 * lx + x + xx + x < 2 * l - x + 1
B:m < A, ↑x + 2 * (↑m * (↑l - x))x + m * xx + m * x < 1 + (↑x + 2 * (↑m * (↑l - x)))
h✝:x_1Finset.range A, x + x_1 * x = (↑A + 1) * c - x + A * x
this✝:dFinset.range A, x + d * x = QFinset.range A, (x + 2 * (↑Q * (l - x)))
this:dFinset.range A, ↑d = A * (↑A - 1) / 2
A * (↑A - 1) % 2 = 0
this.ind.intro
x:
l:
A:
c:
Y:2 * lx + x + xx + x < 2 * l - x + 1
B:m < A, ↑x + 2 * (↑m * (↑l - x))x + m * xx + m * x < 1 + (↑x + 2 * (↑m * (↑l - x)))
h✝:x_1Finset.range A, x + x_1 * x = (↑A + 1) * c - x + A * x
this✝¹:dFinset.range A, x + d * x = QFinset.range A, (x + 2 * (↑Q * (l - x)))
this✝:dFinset.range A, ↑d = A * (↑A - 1) / 2
this:A * (↑A - 1) % 2 = 0
x + 2 * (↑A * (↑l - x))x + A * xx + A * x < 1 + (↑x + 2 * (↑A * (↑l - x)))
this
x:
l:
A:
c:
Y:2 * lx + x + xx + x < 2 * l - x + 1
B:m < A, ↑x + 2 * (↑m * (↑l - x))x + m * xx + m * x < 1 + (↑x + 2 * (↑m * (↑l - x)))
h✝:x_1Finset.range A, x + x_1 * x = (↑A + 1) * c - x + A * x
this✝:dFinset.range A, x + d * x = QFinset.range A, (x + 2 * (↑Q * (l - x)))
this:dFinset.range A, ↑d = A * (↑A - 1) / 2
A * (↑A - 1) % 2 = 0
cases@Int.emod_two_eq A with|_ B
this.inr
x:
l:
A:
c:
Y:2 * lx + x + xx + x < 2 * l - x + 1
B✝:m < A, ↑x + 2 * (↑m * (↑l - x))x + m * xx + m * x < 1 + (↑x + 2 * (↑m * (↑l - x)))
h✝:x_1Finset.range A, x + x_1 * x = (↑A + 1) * c - x + A * x
this✝:dFinset.range A, x + d * x = QFinset.range A, (x + 2 * (↑Q * (l - x)))
this:dFinset.range A, ↑d = A * (↑A - 1) / 2
B:A % 2 = 1
A * (↑A - 1) % 2 = 0
All goals completed! 🐙
this.ind.intro
x:
l:
A:
c:
Y:2 * lx + x + xx + x < 2 * l - x + 1
B:m < A, ↑x + 2 * (↑m * (↑l - x))x + m * xx + m * x < 1 + (↑x + 2 * (↑m * (↑l - x)))
h✝:x_1Finset.range A, x + x_1 * x = (↑A + 1) * c - x + A * x
this✝¹:dFinset.range A, x + d * x = QFinset.range A, (x + 2 * (↑Q * (l - x)))
this✝:dFinset.range A, ↑d = A * (↑A - 1) / 2
this:2A * (↑A - 1)
x + 2 * (↑A * (↑l - x))x + A * xx + A * x < 1 + (↑x + 2 * (↑A * (↑l - x)))
this.ind.intro
x:
l:
A:
c:
Y:2 * lx + x + xx + x < 2 * l - x + 1
B:m < A, ↑x + 2 * (↑m * (↑l - x))x + m * xx + m * x < 1 + (↑x + 2 * (↑m * (↑l - x)))
h✝:x_1Finset.range A, x + x_1 * x = (↑A + 1) * c - x + A * x
this✝¹:dFinset.range A, ↑d = A * (↑A - 1) / 2
this✝:2A * (↑A - 1)
this:dFinset.range A, x + d * x = A * x + 2 * ((∑ iFinset.range A, ↑i) * (l - x))
x + 2 * (↑A * (↑l - x))x + A * xx + A * x < 1 + (↑x + 2 * (↑A * (↑l - x)))
this.ind.intro
x:
l:
A:
c:
Y:2 * lx + x + xx + x < 2 * l - x + 1
B:m < A, ↑x + 2 * (↑m * (↑l - x))x + m * xx + m * x < 1 + (↑x + 2 * (↑m * (↑l - x)))
h✝:x_1Finset.range A, x + x_1 * x + x + A * x = (↑A + 1) * c
this✝¹:dFinset.range A, ↑d = A * (↑A - 1) / 2
this✝:2A * (↑A - 1)
this:dFinset.range A, x + d * x = A * x + 2 * ((∑ iFinset.range A, ↑i) * (l - x))
x + 2 * (↑A * (↑l - x))x + A * xx + A * x < 1 + (↑x + 2 * (↑A * (↑l - x)))
/- Combined with `∑_{i=0}^{n-1},⌊iα+α⌋ = (n+1)c - ⌊nα+α⌋`, we have `⌊nα+α⌋ = (n+1)c - n⌊α⌋ - n(n-1)(l-⌊α⌋)`, so `⌊nα+α⌋ ≥ (n+1)c - n⌊α⌋ - n(n-1)(l-⌊α⌋)` and `⌊nα+α⌋ < (n+1)c - n⌊α⌋ - n(n-1)(l-⌊α⌋) + 1`. Also, since `2*l = ⌊α⌋ + ⌊2α⌋`, we have `2α+⌊α⌋-1 < 2*l ≤ 2α+⌊α⌋.`-/
this.ind.intro
x:
l:
A:
c:
Y:2 * lx + x + xx + x < 2 * l - x + 1
this✝¹:2A * (↑A - 1)
B:∀ (m : ), ↑m < A → ↑x + 2 * m * (↑l - x)x + m * xx + m * x < 1 + (↑x + 2 * m * (↑l - x))
h✝:(↑A + 1) * c - (↑A * x + 2 * ↑(↑A * (↑A - 1) / 2) * (↑l - x))x + A * xx + A * x < (↑A + 1) * c - (↑A * x + 2 * ↑(↑A * (↑A - 1) / 2) * (↑l - x)) + 1
this✝:True
this:True
x + 2 * A * (↑l - x)x + A * xx + A * x < 1 + (↑x + 2 * A * (↑l - x))
this.ind.intro
x:
l:
A:
c:
Y:2 * lx + x + xx + x < 2 * l - x + 1
this✝¹:2A * (↑A - 1)
B:∀ (m : ), ↑m < A → ↑x + 2 * m * (↑l - x)x + m * xx + m * x < 1 + (↑x + 2 * m * (↑l - x))
this✝:True
this:True
h✝:(↑A + 1) * c - (↑A * x + 2 * (↑A * (↑A - 1) / 2) * (↑l - x))x + A * xx + A * x < (↑A + 1) * c - (↑A * x + 2 * (↑A * (↑A - 1) / 2) * (↑l - x)) + 1
x + 2 * A * (↑l - x)x + A * xx + A * x < 1 + (↑x + 2 * A * (↑l - x))
-- We will now show that `c = n*(l-⌊α⌋) + ⌊α⌋`.
this.ind.intro.inl
x:
l:
A:
c:
Y:2 * lx + x + xx + x < 2 * l - x + 1
this✝¹:2A * (↑A - 1)
B:∀ (m : ), ↑m < A → ↑x + 2 * m * (↑l - x)x + m * xx + m * x < 1 + (↑x + 2 * m * (↑l - x))
this✝:True
this:True
h✝¹:(↑A + 1) * c - (↑A * x + 2 * (↑A * (↑A - 1) / 2) * (↑l - x))x + A * xx + A * x < (↑A + 1) * c - (↑A * x + 2 * (↑A * (↑A - 1) / 2) * (↑l - x)) + 1
h✝:c < A * (l - x) + x + 1
S5: =
x + 2 * A * (↑l - x)x + A * xx + A * x < 1 + (↑x + 2 * A * (↑l - x))
this.ind.intro.inr
x:
l:
A:
c:
Y:2 * lx + x + xx + x < 2 * l - x + 1
this✝¹:2A * (↑A - 1)
B:∀ (m : ), ↑m < A → ↑x + 2 * m * (↑l - x)x + m * xx + m * x < 1 + (↑x + 2 * m * (↑l - x))
this✝:True
this:True
h✝¹:(↑A + 1) * c - (↑A * x + 2 * (↑A * (↑A - 1) / 2) * (↑l - x))x + A * xx + A * x < (↑A + 1) * c - (↑A * x + 2 * (↑A * (↑A - 1) / 2) * (↑l - x)) + 1
h✝:cA * (l - x) + x + 1
S5: =
x + 2 * A * (↑l - x)x + A * xx + A * x < 1 + (↑x + 2 * A * (↑l - x))
this.ind.intro.inl
x:
l:
A:
c:
Y:2 * lx + x + xx + x < 2 * l - x + 1
this✝¹:2A * (↑A - 1)
B:∀ (m : ), ↑m < A → ↑x + 2 * m * (↑l - x)x + m * xx + m * x < 1 + (↑x + 2 * m * (↑l - x))
this✝:True
this:True
h✝¹:(↑A + 1) * c - (↑A * x + 2 * (↑A * (↑A - 1) / 2) * (↑l - x))x + A * xx + A * x < (↑A + 1) * c - (↑A * x + 2 * (↑A * (↑A - 1) / 2) * (↑l - x)) + 1
h✝:c < A * (l - x) + x + 1
S5: =
x + 2 * A * (↑l - x)x + A * xx + A * x < 1 + (↑x + 2 * A * (↑l - x))
this.ind.intro.inl
x:
l:
A:
c:
Y:2 * lx + x + xx + x < 2 * l - x + 1
this:2A * (↑A - 1)
h✝¹:c < A * (l - x) + x + 1
B:m < A, ↑x + 2 * m * (↑l - x)x + m * xx + m * x < 1 + (↑x + 2 * m * (↑l - x))
h✝:(↑A + 1) * cx + A * x + (↑A * x + 2 * (↑A * (↑A - 1) / 2) * (↑l - x))x + A * x < (↑A + 1) * c - (↑A * x + 2 * (↑A * (↑A - 1) / 2) * (↑l - x)) + 1
x + 2 * A * (↑l - x)x + A * xx + A * x < 1 + (↑x + 2 * A * (↑l - x))
have:(c+1:)<=A*(l-x)+x+1:=
{α | ∀ (n : ), 0 < n → ↑niFinset.Icc 1 n, i * α} = {α | ∃ k, Even kα = k}
All goals completed! 🐙
this.ind.intro.inl
x:
l:
A:
c:
Y:2 * lx + x + xx + x < 2 * l - x + 1
this✝:2A * (↑A - 1)
h✝¹:c < A * (l - x) + x + 1
B:m < A, ↑x + 2 * m * (↑l - x)x + m * xx + m * x < 1 + (↑x + 2 * m * (↑l - x))
h✝:(↑A + 1) * cx + A * x + (↑A * x + 2 * (↑A * (↑A - 1) / 2) * (↑l - x))x + A * x < (↑A + 1) * c - (↑A * x + 2 * (↑A * (↑A - 1) / 2) * (↑l - x)) + 1
this:cA * (↑l - x) + x
x + 2 * A * (↑l - x)x + A * xx + A * x < 1 + (↑x + 2 * A * (↑l - x))
this.ind.intro.inl.inl
x:
l:
A:
c:
Y:2 * lx + x + xx + x < 2 * l - x + 1
this✝:2A * (↑A - 1)
h✝²:c < A * (l - x) + x + 1
B:m < A, ↑x + 2 * m * (↑l - x)x + m * xx + m * x < 1 + (↑x + 2 * m * (↑l - x))
h✝¹:(↑A + 1) * cx + A * x + (↑A * x + 2 * (↑A * (↑A - 1) / 2) * (↑l - x))x + A * x < (↑A + 1) * c - (↑A * x + 2 * (↑A * (↑A - 1) / 2) * (↑l - x)) + 1
this:cA * (↑l - x) + x
h✝:c = A * (↑l - x) + x
x + 2 * A * (↑l - x)x + A * xx + A * x < 1 + (↑x + 2 * A * (↑l - x))
this.ind.intro.inl.inr
x:
l:
A:
c:
Y:2 * lx + x + xx + x < 2 * l - x + 1
this✝:2A * (↑A - 1)
h✝²:c < A * (l - x) + x + 1
B:m < A, ↑x + 2 * m * (↑l - x)x + m * xx + m * x < 1 + (↑x + 2 * m * (↑l - x))
h✝¹:(↑A + 1) * cx + A * x + (↑A * x + 2 * (↑A * (↑A - 1) / 2) * (↑l - x))x + A * x < (↑A + 1) * c - (↑A * x + 2 * (↑A * (↑A - 1) / 2) * (↑l - x)) + 1
this:cA * (↑l - x) + x
h✝:c < A * (↑l - x) + x
x + 2 * A * (↑l - x)x + A * xx + A * x < 1 + (↑x + 2 * A * (↑l - x))
this.ind.intro.inl.inl
x:
l:
A:
c:
Y:2 * lx + x + xx + x < 2 * l - x + 1
this✝:2A * (↑A - 1)
h✝²:c < A * (l - x) + x + 1
B:m < A, ↑x + 2 * m * (↑l - x)x + m * xx + m * x < 1 + (↑x + 2 * m * (↑l - x))
h✝¹:(↑A + 1) * cx + A * x + (↑A * x + 2 * (↑A * (↑A - 1) / 2) * (↑l - x))x + A * x < (↑A + 1) * c - (↑A * x + 2 * (↑A * (↑A - 1) / 2) * (↑l - x)) + 1
this:cA * (↑l - x) + x
h✝:c = A * (↑l - x) + x
x + 2 * A * (↑l - x)x + A * xx + A * x < 1 + (↑x + 2 * A * (↑l - x))
/- For if `c = n*(l-⌊α⌋) + ⌊α⌋`, then $$` ⌊(n+1)α⌋ = (n+1)c - n⌊α⌋ - n(n-1)(l-⌊α⌋) = (n+1)(n(l - ⌊α⌋) + ⌊α⌋) - n⌊α⌋ - n(n-1)(l-⌊α⌋) = 2n(l-⌊α⌋) + ⌊α⌋ ` as desired. -/ repeat use
x:
l:
A:
c:
Y:2 * lx + x + xx + x < 2 * l - x + 1
this✝:2A * (↑A - 1)
h✝²:c < A * (l - x) + x + 1
B:m < A, ↑x + 2 * m * (↑l - x)x + m * xx + m * x < 1 + (↑x + 2 * m * (↑l - x))
h✝¹:(↑A + 1) * cx + A * x + (↑A * x + 2 * (↑A * (↑A - 1) / 2) * (↑l - x))x + A * x < (↑A + 1) * c - (↑A * x + 2 * (↑A * (↑A - 1) / 2) * (↑l - x)) + 1
this:cA * (↑l - x) + x
h✝:c = A * (↑l - x) + x
x + A * x < 1 + (↑x + 2 * A * (↑l - x))
All goals completed! 🐙
/- Now, we show `c = n*(l-⌊α⌋) + ⌊α⌋` via contradiction split into two cases. First suppose `c ≤ n(l - ⌊α⌋) + ⌊α⌋ - 1`. $$` (n+1)α < (n+1)c - n⌊α⌋ - n(n-1)(l-⌊α⌋) + 1 ≤ (n+1)(n(l-⌊α⌋) + ⌊α⌋ - 1) - n⌊α⌋ - n(n-1)(l-⌊α⌋) + 1 = 2n(l-⌊α⌋) + ⌊α⌋ - n = 2ln - 2n⌊α⌋ + ⌊α⌋ - n ≤ (2α+⌊α⌋)n - 2n⌊α⌋ + ⌊α⌋ - n = nα + n(α-⌊α⌋-1) + ⌊α⌋ n + α. ` contradiction. -/ nlinarith[(
x:
l:
A:
c:
Y:2 * lx + x + xx + x < 2 * l - x + 1
this✝:2A * (↑A - 1)
h✝²:c < A * (l - x) + x + 1
B:m < A, ↑x + 2 * m * (↑l - x)x + m * xx + m * x < 1 + (↑x + 2 * m * (↑l - x))
h✝¹:(↑A + 1) * cx + A * x + (↑A * x + 2 * (↑A * (↑A - 1) / 2) * (↑l - x))x + A * x < (↑A + 1) * c - (↑A * x + 2 * (↑A * (↑A - 1) / 2) * (↑l - x)) + 1
this:cA * (↑l - x) + x
h✝:c < A * (↑l - x) + x
A * (↑l - x) + xc + 1
All goals completed! 🐙
:(A*(l -x):)+(x) >=(c)+01),9,Int.add_emod 5,Int.floor_le (@x : ),Int.lt_floor_add_one (x:)] /- Next, suppose `c ≥ n(l - ⌊α⌋) + ⌊α⌋ + 1`. $$` (n+1)α ≥ (n+1)c - n⌊α⌋ - n(n-1)(l-⌊α⌋) ≥ (n+1)(n(l-⌊α⌋) + ⌊α⌋ + 1) - n⌊α⌋ - n(n-1)(l-⌊α⌋) = 2n(l-⌊α⌋) + ⌊α⌋ + n + 1 = 2ln - 2n⌊α⌋ + ⌊α⌋ + n + 1 > (2α+⌊α⌋-1)n - 2n⌊α⌋ + ⌊α⌋ + n + 1 = nα + n(α-⌊α⌋) + ⌊α⌋ + 1 > n + α ` contradiction. -/
this.ind.intro.inr
x:
l:
A:
c:
Y:2 * lx + x + xx + x < 2 * l - x + 1
this:2A * (↑A - 1)
h✝¹:cA * (l - x) + x + 1
B:m < A, ↑x + 2 * m * (↑l - x)x + m * xx + m * x < 1 + (↑x + 2 * m * (↑l - x))
h✝:(↑A + 1) * cx + A * x + (↑A * x + 2 * (↑A * (↑A - 1) / 2) * (↑l - x))x + A * x < (↑A + 1) * c - (↑A * x + 2 * (↑A * (↑A - 1) / 2) * (↑l - x)) + 1
x + 2 * A * (↑l - x)x + A * xx + A * x < 1 + (↑x + 2 * A * (↑l - x))
nlinarith[(
x:
l:
A:
c:
Y:2 * lx + x + xx + x < 2 * l - x + 1
this:2A * (↑A - 1)
h✝¹:cA * (l - x) + x + 1
B:m < A, ↑x + 2 * m * (↑l - x)x + m * xx + m * x < 1 + (↑x + 2 * m * (↑l - x))
h✝:(↑A + 1) * cx + A * x + (↑A * x + 2 * (↑A * (↑A - 1) / 2) * (↑l - x))x + A * x < (↑A + 1) * c - (↑A * x + 2 * (↑A * (↑A - 1) / 2) * (↑l - x)) + 1
cA * (↑l - x) + x + 1
All goals completed! 🐙
:(c:)>=A*(l-_)+_+1),Int.floor_le x,Int.lt_floor_add_one x]
this
x:
l:
A:
c:
Y:2 * lx + x + xx + x < 2 * l - x + 1
B:m < A, ↑x + 2 * (↑m * (↑l - x))x + m * xx + m * x < 1 + (↑x + 2 * (↑m * (↑l - x)))
h✝:x_1Finset.range A, x + x_1 * x = (↑A + 1) * c - x + A * x
this:dFinset.range A, x + d * x = QFinset.range A, (x + 2 * (↑Q * (l - x)))
↑(A * (A - 1) / 2) = (↑A * A - A * 1) / 2
cases A with|_
this.succ
x:
l:
c:
Y:2 * lx + x + xx + x < 2 * l - x + 1
n✝:
B:m < n✝ + 1, ↑x + 2 * (↑m * (↑l - x))x + m * xx + m * x < 1 + (↑x + 2 * (↑m * (↑l - x)))
h✝:x_1Finset.range (n✝ + 1), x + x_1 * x = (↑(n✝ + 1) + 1) * c - x + ↑(n✝ + 1) * x
this:dFinset.range (n✝ + 1), x + d * x = QFinset.range (n✝ + 1), (x + 2 * (↑Q * (l - x)))
↑((n✝ + 1) * (n✝ + 1 - 1) / 2) = (↑(n✝ + 1) * ↑(n✝ + 1) - ↑(n✝ + 1) * 1) / 2
All goals completed! 🐙
use Finset.sum_congr rfl<|
x:
l:
A:
c:
Y:2 * lx + x + xx + x < 2 * l - x + 1
B:m < A, ↑x + 2 * (↑m * (↑l - x))x + m * xx + m * x < 1 + (↑x + 2 * (↑m * (↑l - x)))
h✝:x_1Finset.range A, x + x_1 * x = (↑A + 1) * c - x + A * x
x_1Finset.range A, x + x_1 * x = x + 2 * (↑x_1 * (l - x))
All goals completed! 🐙

The following command shows which axioms the proof relies upon:

'imo_2024_p1' depends on axioms: [propext, Classical.choice, Quot.sound]#print axioms imo_2024_p1
'imo_2024_p1' depends on axioms: [propext, Classical.choice, Quot.sound]

These are the standard built in axioms.