Compfiles/Imo2006P3.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
11 declarations, 0 contain sorry, 0 declared as axioms
International Mathematical Olympiad 2006, Problem 3
Determine the least real number $M$ such that $$ \left| ab(a^2 - b^2) + bc(b^2 - c^2) + ca(c^2 - a^2) \right| ≤ M (a^2 + b^2 + c^2)^2 $$ for all real numbers $a$, $b$, $c$.
Imported by 1 file
- theorem
Imo2006P3.lhs_ineqReplacingxandywith their average increases the left side line 51 sourceSource documentation
Replacing
xandywith their average increases the left side.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Real,LE.le,OfNat.ofNat,HMul.hMul,Nat,HPow.hPow,HAdd.hAddProof uses:
GE.ge,HSub.hSub,mul_nonneg,Even.pow_nonneg,even_two_mul,add_nonneg,le_of_lt,Mathlib.Meta.Positivity.pos_of_isNat,Mathlib.Meta.NormNum.isNat_ofNat,Eq.refl,Mathlib.Meta.NormNum.instAtLeastTwo,Bool,Nat.ble,Trans.trans,Eq,mul_le_mul_of_nonneg_right,le_of_not_gt,LT.lt,Mathlib.Tactic.Linarith.lt_irrefl,Eq.mpand 68 more91 instances, coercions and auxiliary constants left out.
Tactic trace: 6 steps
Open to load the checked before-and-after goal states.
theorem lhs_ineq {x y : ℝ} (hxy : 0 ≤ x * y) : 16 * x ^ 2 * y ^ 2 * (x + y) ^ 2 ≤ ((x + y) ^ 2) ^ 3 := by … - theorem
Imo2006P3.four_pow_four_posline 57 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
LT.lt,Real,OfNat.ofNat,HPow.hPow,NatProof uses:
Mathlib.Meta.NormNum.isNat_lt_true,Mathlib.Meta.NormNum.isNat_ofNat,Nat.cast_zero,Mathlib.Meta.NormNum.isNat_pow,Eq.refl,Mathlib.Meta.NormNum.instAtLeastTwo,Mathlib.Meta.NormNum.IsNatPowT.run,Mathlib.Meta.NormNum.IsNatPowT.trans,Eq,Nat.pow,Mathlib.Meta.NormNum.IsNatPowT.bit0,Bool,Bool.false36 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
- theorem
Imo2006P3.mid_ineqline 59 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Real,LE.le,HMul.hMul,HPow.hPow,Nat,OfNat.ofNat,HDiv.hDiv,HAdd.hAddProof uses:
Eq.mpr,id,Eq,congrArg,propext,le_div_iff₀, Imo2006P3.four_pow_four_pos,HSub.hSub,mul_nonneg,Even.pow_nonneg,even_two_mul,add_nonneg,le_of_lt,Mathlib.Meta.Positivity.pos_of_isNat,Mathlib.Meta.NormNum.isNat_ofNat,Eq.refl,Mathlib.Meta.NormNum.instAtLeastTwo,Bool,Nat.ble,le_of_not_gtand 74 more105 instances, coercions and auxiliary constants left out.
Tactic trace: 4 steps
Open to load the checked before-and-after goal states.
- theorem
Imo2006P3.rhs_ineqReplacingxandywith their average decreases the right side line 65 sourceSource documentation
Replacing
xandywith their average decreases the right side.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Real,LE.le,HMul.hMul,OfNat.ofNat,Nat,HPow.hPow,HAdd.hAddProof uses:
HSub.hSub,Even.pow_nonneg,even_two_mul,le_of_not_gt,LT.lt,Mathlib.Tactic.Linarith.lt_irrefl,Eq.mp,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.sub_congr,Mathlib.Tactic.Ring.cast_zero,Mathlib.Meta.NormNum.isNat_ofNat,Nat.cast_zeroand 58 more81 instances, coercions and auxiliary constants left out.
Tactic trace: 3 steps
Open to load the checked before-and-after goal states.
theorem rhs_ineq {x y : ℝ} : 3 * (x + y) ^ 2 ≤ 2 * (x ^ 2 + y ^ 2 + (x + y) ^ 2) := by … - theorem
Imo2006P3.zero_lt_32line 69 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
LT.lt,Real,OfNat.ofNat,NatProof uses:
Mathlib.Meta.NormNum.isNat_lt_true,Mathlib.Meta.NormNum.isNat_ofNat,Nat.cast_zero,Eq.refl,Mathlib.Meta.NormNum.instAtLeastTwo,Bool,Bool.false27 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
- theorem
Imo2006P3.subst_wlogline 71 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Real,LE.le,OfNat.ofNat,HMul.hMul,Eq,HAdd.hAdd,Nat,abs,Real.sqrt,HPow.hPowProof uses:
Mathlib.Tactic.LinearCombination.eq_of_eq,HSub.hSub,Mathlib.Tactic.LinearCombination.mul_const_eq,Mathlib.Tactic.LinearCombination.eq_rearrange,Mathlib.Tactic.Ring.of_eq,Mathlib.Tactic.Ring.Common.sub_congr,Nat.rawCast,Mathlib.Tactic.Ring.Common.add_congr,Mathlib.Tactic.Ring.Common.pow_congr,Mathlib.Tactic.Ring.Common.atom_pf,rfl,Eq.mpr,id,congrArg,Eq.symm,Eq.refl,Mathlib.Tactic.Ring.Common.add_pf_add_lt,Mathlib.Tactic.Ring.Common.add_pf_zero_add,Mathlib.Tactic.Ring.cast_pos,Mathlib.Meta.NormNum.isNat_ofNatand 125 more153 instances, coercions and auxiliary constants left out.
Tactic trace: 16 steps
Open to load the checked before-and-after goal states.
- theorem
Imo2006P3.subst_proof₁Proof thatM = 9 * sqrt 2 / 32works with the substitution line 93 sourceSource documentation
Proof that
M = 9 * sqrt 2 / 32works with the substitution.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Real,Eq,HAdd.hAdd,OfNat.ofNat,LE.le,abs,HMul.hMul,HDiv.hDiv,Real.sqrt,Nat,HPow.hPowProof uses:
Not,Or,Classical.em,Eq.mpr,id,congrArg,div_mul_eq_mul_div,propext,le_div_iff₀', Imo2006P3.zero_lt_32, Imo2006P3.subst_wlog,Or.resolve_left,mul_nonneg_of_three,eq_of_heq,LE,HEq,Eq.refl,HEq.refl,Eq.symm,Latticeand 74 more120 instances, coercions and auxiliary constants left out.
Tactic trace: 12 steps
Open to load the checked before-and-after goal states.
theorem subst_proof₁ (x y z s : ℝ) (hxyz : x + y + z = 0) : |x * y * z * s| ≤ sqrt 2 / 32 * (x ^ 2 + y ^ 2 + z ^ 2 + s ^ 2) ^ 2 := by … - theorem
Imo2006P3.proof₁line 102 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Real,LE.le,abs,HAdd.hAdd,HMul.hMul,HSub.hSub,HPow.hPow,Nat,OfNat.ofNat,HDiv.hDiv,Real.sqrtProof uses:
Trans.trans,Eq,Neg.neg,of_eq_true,Eq.trans,True,congr,congrArg,Nat.rawCast,Int.rawCast,inferInstance,Ring,Int.negOfNat,Mathlib.Tactic.Ring.Common.add_congr,Mathlib.Tactic.Ring.Common.mul_congr,Mathlib.Tactic.Ring.Common.atom_pf,rfl,Eq.mpr,id,Eq.symmand 78 more97 instances, coercions and auxiliary constants left out.
Tactic trace: 3 steps
Open to load the checked before-and-after goal states.
- theorem
Imo2006P3.proof₂line 110 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Real,LE.le,abs,HAdd.hAdd,HMul.hMul,HSub.hSub,HPow.hPow,Nat,OfNat.ofNat,HDiv.hDiv,Real.sqrtProof uses:
Eq.mpr,id,Eq,congrArg,rfl,Real.sq_sqrt,Mathlib.Meta.NormNum.isNat_le_true,Mathlib.Meta.NormNum.isNat_ofNat,Nat.cast_zero,Eq.refl,Mathlib.Meta.NormNum.instAtLeastTwo,Bool,Bool.true,Trans.trans,Mathlib.Tactic.Ring.of_eq,Nat.rawCast,NNRat.rawCast,Mathlib.Tactic.Ring.Common.div_congr,Mathlib.Tactic.Ring.Common.mul_congr,Mathlib.Tactic.Ring.cast_posand 86 more124 instances, coercions and auxiliary constants left out.
Tactic trace: 17 steps
Open to load the checked before-and-after goal states.
- determine
Imo2006P3.solutionline 133 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
RealProof uses:
HDiv.hDiv,HMul.hMul,OfNat.ofNat,Real.sqrt10 instances, coercions and auxiliary constants left out.
- problem
Imo2006P3.imo2006_p3IMO 2006 Problem 3: the least constant M line 135 sourceL4DEL explanation
The least M with |ab(a^2-b^2) + bc(b^2-c^2) + ca(c^2-a^2)| at most M(a^2+b^2+c^2)^2 for all reals is 9 sqrt(2) / 32.
- Problem: determine the least real M such that the stated inequality holds for all real a, b, c. The statement is IsLeast of the set of such M with the determined answer solution = 9 * sqrt 2 / 32.
- Solution (complete, no sorry): substitute x = a - b, y = b - c, z = c - a, s = a + b + c, following Evan Chen's notes cited in the file.
- Part one (proof₁) shows the inequality holds for this M, using auxiliary inequalities such as lhs_ineq, mid_ineq and rhs_ineq.
- Part two (proof₂) shows every valid M is at least 9 sqrt(2) / 32 by plugging in a = 2 - 3 sqrt 2, b = 2, c = 2 + 3 sqrt 2, where the inequality is an equality.
See also: Imo2019P1.imo2019_p1
Sources and attribution: Pinned Lean source (47b19bbfe5f3)
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
IsLeast,Real,Set.ofPred,LE.le,abs,HAdd.hAdd,HMul.hMul,HSub.hSub,HPow.hPow,Nat,OfNat.ofNat, Imo2006P3.solutionProof uses:
And.intro,Membership.mem,Set,lowerBounds,Eq.mpr,id,Eq,congrArg,propext,Set.mem_ofPred, Imo2006P3.proof₁,mem_lowerBounds, Imo2006P3.proof₂31 instances, coercions and auxiliary constants left out.
Tactic trace: 9 steps
Open to load the checked before-and-after goal states.
problem imo2006_p3 : IsLeast { M | (∀ a b c : ℝ, |a * b * (a ^ 2 - b ^ 2) + b * c * (b ^ 2 - c ^ 2) + c * a * (c ^ 2 - a ^ 2)| ≤ M * (a ^ 2 + b ^ 2 + c ^ 2) ^ 2) } solution := by …Mentions: Imo2006P3.solution