Compfiles/Usa1993P5.lean
Explanation legend Lean4 Domain Explanation Language (L4DEL)
L4DEL explanations are a separate layer. They do not change the Lean source. Intuition is explanatory prose; numbered items are a reading path; sources link the wording back to evidence.
- L4DEL
- Lean4 Domain Explanation Language
Credit: The upstream authors and contributors retain credit for the project and mathematics. lean4-explainer only renders their pinned source and adds the separately disclosed explanation layer.
Project sources: Pinned compfiles documentation, Pinned compfiles corpus index
12 declarations, 0 contain sorry, 0 declared as axioms
USA Mathematical Olympiad 1993, Problem 5
A sequence xₙ of positive reals satisfies xₙ₋₁xₙ₊₁ ≤ xₙ². Let aₙ be the average of the terms x₀, x₁, ..., xₙ and bₙ be the average of the terms x₁, x₂, ..., xₙ. Show that aₙbₙ₋₁ ≥ aₙ₋₁bₙ.
Imported by 1 file
- def
Usa1993P5.a_avga_avg x nis the average of the termsx 0, x 1, ..., x nline 28 sourceSource documentation
a_avg x nis the average of the termsx 0, x 1, ..., x n.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,RealProof uses:
HDiv.hDiv,Finset.sum,Finset.range,HAdd.hAdd,OfNat.ofNat12 instances, coercions and auxiliary constants left out.
noncomputable def a_avg (x : ℕ → ℝ) (n : ℕ) : ℝ := (∑ i ∈ Finset.range (n + 1), x i) / (n + 1)
- def
Usa1993P5.b_avgb_avg x nis the average of the termsx 1, x 2, ..., x nline 31 sourceSource documentation
b_avg x nis the average of the termsx 1, x 2, ..., x n.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,RealProof uses:
HDiv.hDiv,Finset.sum,Finset.range,HAdd.hAdd,OfNat.ofNat9 instances, coercions and auxiliary constants left out.
noncomputable def b_avg (x : ℕ → ℝ) (n : ℕ) : ℝ := (∑ i ∈ Finset.range n, x (i + 1)) / n …
- theorem
Usa1993P5.two_mul_sqrt_le_addTwo-variable AM–GM line 47 sourceSource documentation
Two-variable AM–GM.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Real,LE.le,OfNat.ofNat,HMul.hMul,Nat,Real.sqrt,HAdd.hAddProof uses:
Eq.mpr,id,Eq,congrArg,Real.sqrt_mul,le_of_not_gt,LT.lt,Mathlib.Tactic.Linarith.lt_irrefl,Eq.mp,HSub.hSub,HPow.hPow,Mathlib.Tactic.Ring.of_eq,Mathlib.Tactic.Ring.Common.add_congr,Nat.rawCast,Int.rawCast,inferInstance,Ring,Int.negOfNat,Mathlib.Meta.NormNum.instAddMonoidWithOne,Mathlib.Tactic.Ring.Common.sub_congrand 62 more82 instances, coercions and auxiliary constants left out.
Tactic trace: 2 steps
Open to load the checked before-and-after goal states.
theorem two_mul_sqrt_le_add {u v : ℝ} (hu : 0 ≤ u) (hv : 0 ≤ v) : 2 * Real.sqrt (u * v) ≤ u + v := by … - theorem
Usa1993P5.ratio_antitoneThe consecutive ratios are nonincreasing line 53 sourceSource documentation
The consecutive ratios are nonincreasing.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Real,LT.lt,OfNat.ofNat,LE.le,HMul.hMul,HAdd.hAdd,HPow.hPow,Antitone,HDiv.hDivProof uses:
antitone_nat_of_succ_le,id,Eq.mpr,Eq,congrArg,propext,div_le_div_iff₀,mul_comm,Eq.mp,pow_two64 instances, coercions and auxiliary constants left out.
Tactic trace: 8 steps
Open to load the checked before-and-after goal states.
theorem ratio_antitone (x : ℕ → ℝ) (hx : ∀ n, 0 < x n) (h : ∀ n, x n * x (n + 2) ≤ x (n + 1) ^ 2) : Antitone (fun j ↦ x (j + 1) / x j) := by …Mentions: h
- theorem
Usa1993P5.prod_le_of_leMoving two indices apart weakly decreases the product line 66 sourceSource documentation
Moving two indices apart weakly decreases the product.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Real,LT.lt,OfNat.ofNat,LE.le,HMul.hMul,HAdd.hAdd,HPow.hPow,HSub.hSubProof uses:
HDiv.hDiv, Usa1993P5.ratio_antitone,Eq.mp,congrArg,mul_comm,propext,div_le_div_iff₀,Nat.sub_add_cancel63 instances, coercions and auxiliary constants left out.
Tactic trace: 7 steps
Open to load the checked before-and-after goal states.
theorem prod_le_of_le (x : ℕ → ℝ) (hx : ∀ n, 0 < x n) (h : ∀ n, x n * x (n + 2) ≤ x (n + 1) ^ 2) {a b : ℕ} (ha : 1 ≤ a) (hab : a ≤ b) : x (a - 1) * x (b + 1) ≤ x a * x b := by …Mentions: h
- theorem
Usa1993P5.x0_mul_xn_leSymmetric products:x 0 * x n ≤ x i * x (n - i)line 78 sourceSource documentation
Symmetric products:
x 0 * x n ≤ x i * x (n - i).standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Real,LT.lt,OfNat.ofNat,LE.le,HMul.hMul,HAdd.hAdd,HPow.hPow,HSub.hSubProof uses:
Nat.recAux,of_eq_true,Eq.trans,True,congrArg,tsub_zero, Usa1993P5.prod_le_of_le,Eq.mpr,id,Eq,le_trans,Eq.mp,Nat.add_sub_cancel45 instances, coercions and auxiliary constants left out.
Tactic trace: 15 steps
Open to load the checked before-and-after goal states.
theorem x0_mul_xn_le (x : ℕ → ℝ) (hx : ∀ n, 0 < x n) (h : ∀ n, x n * x (n + 2) ≤ x (n + 1) ^ 2) : ∀ {i n : ℕ}, 2 * i ≤ n → x 0 * x n ≤ x i * x (n - i) := by …Mentions: h
- theorem
Usa1993P5.pair_geEach paired sumx i + x (n - i)is at least2 * √(x 0 * x n)line 93 sourceSource documentation
Each paired sum
x i + x (n - i)is at least2 * √(x 0 * x n).standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Real,LT.lt,OfNat.ofNat,LE.le,HMul.hMul,HAdd.hAdd,HPow.hPow,Real.sqrt,HSub.hSubProof uses:
dite, Usa1993P5.x0_mul_xn_le,Not,Eq.mp,congrArg,mul_comm,Eq,Real.sqrt_le_sqrt, Usa1993P5.two_mul_sqrt_le_add,LT.lt.le,le_of_not_gt,Mathlib.Tactic.Linarith.lt_irrefl,Mathlib.Tactic.Ring.of_eq,Mathlib.Tactic.Ring.Common.add_congr,Nat.rawCast,Int.rawCast,inferInstance,Ring,Int.negOfNat,Mathlib.Tactic.Ring.Common.mul_congrand 48 more95 instances, coercions and auxiliary constants left out.
Tactic trace: 13 steps
Open to load the checked before-and-after goal states.
theorem pair_ge (x : ℕ → ℝ) (hx : ∀ n, 0 < x n) (h : ∀ n, x n * x (n + 2) ≤ x (n + 1) ^ 2) {i n : ℕ} (hi : i ≤ n) : 2 * Real.sqrt (x 0 * x n) ≤ x i + x (n - i) := by …Mentions: h
- theorem
Usa1993P5.sum_pair_geThe key estimate:k ≥ (n - 1) * √(x 0 * x n), in doubled form line 110 sourceSource documentation
The key estimate:
k ≥ (n - 1) * √(x 0 * x n), in doubled form.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Real,LT.lt,OfNat.ofNat,LE.le,HMul.hMul,HAdd.hAdd,HPow.hPow,HSub.hSub,Real.sqrt,Finset.sum,Finset.rangeProof uses:
Eq,Eq.mpr,id,congrArg,Eq.symm,Finset.sum_range_reflect,Finset.sum_congr,rfl,Finset,Membership.mem,Eq.rec,Eq.refl,Eq.mp,propext,Finset.mem_range,Trans.trans,HSMul.hSMul,Finset.card,Finset.sum_const,Finset.card_rangeand 27 more94 instances, coercions and auxiliary constants left out.
Tactic trace: 18 steps
Open to load the checked before-and-after goal states.
theorem sum_pair_ge (x : ℕ → ℝ) (hx : ∀ n, 0 < x n) (h : ∀ n, x n * x (n + 2) ≤ x (n + 1) ^ 2) {n : ℕ} (hn : 2 ≤ n) : ((n : ℝ) - 1) * (2 * Real.sqrt (x 0 * x n)) ≤ 2 * ∑ i ∈ Finset.range (n - 1), x (i + 1) := by …Mentions: h
- theorem
Usa1993P5.sum_decompPeeling off the first and last terms of a range sum line 137 sourceSource documentation
Peeling off the first and last terms of a range sum.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Real,Eq,Finset.sum,Finset.range,HAdd.hAdd,OfNat.ofNatProof uses:
Eq.mpr,id,congrArg,rfl,Finset.sum_range_succ',Finset.sum_range_succ,Mathlib.Tactic.Ring.of_eq,HMul.hMul,HPow.hPow,Nat.rawCast,Mathlib.Tactic.Ring.Common.add_congr,Mathlib.Tactic.Ring.Common.atom_pf,Eq.symm,Eq.refl,Mathlib.Tactic.Ring.Common.add_pf_add_lt,Mathlib.Tactic.Ring.Common.add_pf_zero_add,Mathlib.Tactic.Ring.Common.add_pf_add_gt,Mathlib.Tactic.Ring.Common.add_pf_add_zero31 instances, coercions and auxiliary constants left out.
Tactic trace: 2 steps
Open to load the checked before-and-after goal states.
theorem sum_decomp (x : ℕ → ℝ) (m : ℕ) : ∑ i ∈ Finset.range (m + 2), x i = x 0 + (∑ i ∈ Finset.range m, x (i + 1)) + x (m + 1) := by … - theorem
Usa1993P5.final_algebraThe algebraic heart of the proof line 144 sourceSource documentation
The algebraic heart of the proof.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Real,LE.le,OfNat.ofNat,Nat,LT.lt,HSub.hSub,HMul.hMul,HPow.hPow,HAdd.hAdd,HDiv.hDivProof uses:
lt_of_not_ge,Mathlib.Tactic.Linarith.lt_irrefl,Eq.mp,Neg.neg,congrArg,Mathlib.Tactic.Ring.of_eq,Mathlib.Tactic.Ring.Common.add_congr,Nat.rawCast,Int.rawCast,inferInstance,Ring,Int.negOfNat,Mathlib.Tactic.Ring.Common.mul_congr,Mathlib.Tactic.Ring.cast_pos,Mathlib.Meta.NormNum.isNat_ofNat,Eq.refl,Mathlib.Meta.NormNum.instAtLeastTwo,Mathlib.Tactic.Ring.Common.neg_congr,Nat.cast_one,Mathlib.Tactic.Ring.Common.neg_addand 62 more117 instances, coercions and auxiliary constants left out.
Tactic trace: 6 steps
Open to load the checked before-and-after goal states.
theorem final_algebra {N k x0 xn : ℝ} (hN : 2 ≤ N) (hN1 : 0 < N - 1) (hkey : (N ^ 2 - 1) * (x0 * xn) ≤ k * (k + x0 + xn)) : (x0 + k) / N * ((k + xn) / N) ≤ (x0 + k + xn) / (N + 1) * (k / (N - 1)) := by … - theorem
Usa1993P5.key_ineqThe inequalityk * (k + x 0 + x n) ≥ (n ^ 2 - 1) * x 0 * x nline 154 sourceSource documentation
The inequality
k * (k + x 0 + x n) ≥ (n ^ 2 - 1) * x 0 * x n.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Real,LT.lt,OfNat.ofNat,LE.le,HMul.hMul,HAdd.hAdd,HPow.hPow,HSub.hSub,Finset.sum,Finset.rangeProof uses:
Eq.mpr,id,Eq,congrArg,rfl,Real.sqrt,Real.sqrt_nonneg,Real.sq_sqrt,mul_nonneg,LT.lt.le,cast,Eq.symm,Finset.sum_nonneg,Membership.mem,Finset, Usa1993P5.sum_pair_ge,le_of_not_gt,Mathlib.Tactic.Linarith.lt_irrefl,Eq.mp,Mathlib.Tactic.Ring.of_eqand 77 more112 instances, coercions and auxiliary constants left out.
Tactic trace: 20 steps
Open to load the checked before-and-after goal states.
theorem key_ineq (x : ℕ → ℝ) (hx : ∀ n, 0 < x n) (h : ∀ n, x n * x (n + 2) ≤ x (n + 1) ^ 2) {n : ℕ} (hn : 2 ≤ n) : ((n : ℝ) ^ 2 - 1) * (x 0 * x n) ≤ (∑ i ∈ Finset.range (n - 1), x (i + 1)) * ((∑ i ∈ Finset.range (n - 1), x (i + 1)) + x 0 + x n) := by …Mentions: h
- problem
Usa1993P5.usa1993_p5line 183 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Real,LT.lt,OfNat.ofNat,LE.le,HMul.hMul,HAdd.hAdd,HPow.hPow,GE.ge, Usa1993P5.a_avg, Usa1993P5.b_avg,HSub.hSubProof uses:
cast,Eq.symm,lt_of_not_ge,Mathlib.Tactic.Linarith.lt_irrefl,Eq.mp,Neg.neg,congrArg,Mathlib.Tactic.Ring.of_eq,Mathlib.Tactic.Ring.Common.add_congr,Nat.rawCast,Mathlib.Meta.NormNum.instAddMonoidWithOne,inferInstance,Ring,Int.rawCast,Int.negOfNat,Mathlib.Tactic.Ring.Common.neg_congr,Mathlib.Tactic.Ring.cast_pos,Mathlib.Meta.NormNum.isNat_ofNat,Nat.cast_one,Mathlib.Tactic.Ring.Common.neg_addand 46 more105 instances, coercions and auxiliary constants left out.
Tactic trace: 24 steps
Open to load the checked before-and-after goal states.