Compfiles/Imo2006P3.lean

GitHub source file

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$.

Imports (3)
Imported by 1 file
  1. theorem Imo2006P3.lhs_ineq Replacing x and y with their average increases the left side line 51 source

    Source documentation

    Replacing x and y with 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.hAdd

    Proof 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.mp and 68 more

    91 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
    …
  2. theorem Imo2006P3.four_pow_four_pos line 57 source

    standard axioms: Classical.choice, Quot.sound, propext what this means

    Statement uses: LT.lt, Real, OfNat.ofNat, HPow.hPow, Nat

    Proof 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.false

    36 instances, coercions and auxiliary constants left out.

    Tactic trace: 1 steps

    Open to load the checked before-and-after goal states.

  3. theorem Imo2006P3.mid_ineq line 59 source

    standard axioms: Classical.choice, Quot.sound, propext what this means

    Statement uses: Real, LE.le, HMul.hMul, HPow.hPow, Nat, OfNat.ofNat, HDiv.hDiv, HAdd.hAdd

    Proof 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_gt and 74 more

    105 instances, coercions and auxiliary constants left out.

    Tactic trace: 4 steps

    Open to load the checked before-and-after goal states.

  4. theorem Imo2006P3.rhs_ineq Replacing x and y with their average decreases the right side line 65 source

    Source documentation

    Replacing x and y with 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.hAdd

    Proof 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_zero and 58 more

    81 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
    …
  5. theorem Imo2006P3.zero_lt_32 line 69 source

    standard axioms: Classical.choice, Quot.sound, propext what this means

    Statement uses: LT.lt, Real, OfNat.ofNat, Nat

    Proof uses: Mathlib.Meta.NormNum.isNat_lt_true, Mathlib.Meta.NormNum.isNat_ofNat, Nat.cast_zero, Eq.refl, Mathlib.Meta.NormNum.instAtLeastTwo, Bool, Bool.false

    27 instances, coercions and auxiliary constants left out.

    Tactic trace: 1 steps

    Open to load the checked before-and-after goal states.

  6. theorem Imo2006P3.subst_wlog line 71 source

    standard 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.hPow

    Proof 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_ofNat and 125 more

    153 instances, coercions and auxiliary constants left out.

    Tactic trace: 16 steps

    Open to load the checked before-and-after goal states.

  7. theorem Imo2006P3.subst_proof₁ Proof that M = 9 * sqrt 2 / 32 works with the substitution line 93 source

    Source documentation

    Proof that M = 9 * sqrt 2 / 32 works 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.hPow

    Proof 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, Lattice and 74 more

    120 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
    …
  8. theorem Imo2006P3.proof₁ line 102 source

    standard 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.sqrt

    Proof 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.symm and 78 more

    97 instances, coercions and auxiliary constants left out.

    Tactic trace: 3 steps

    Open to load the checked before-and-after goal states.

  9. theorem Imo2006P3.proof₂ line 110 source

    standard 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.sqrt

    Proof 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_pos and 86 more

    124 instances, coercions and auxiliary constants left out.

    Tactic trace: 17 steps

    Open to load the checked before-and-after goal states.

  10. determine Imo2006P3.solution line 133 source

    standard axioms: Classical.choice, Quot.sound, propext what this means

    Statement uses: Real

    Proof uses: HDiv.hDiv, HMul.hMul, OfNat.ofNat, Real.sqrt

    10 instances, coercions and auxiliary constants left out.

  11. problem Imo2006P3.imo2006_p3 IMO 2006 Problem 3: the least constant M line 135 source

    L4DEL 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.

    1. 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.
    2. 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.
    3. Part one (proof₁) shows the inequality holds for this M, using auxiliary inequalities such as lhs_ineq, mid_ineq and rhs_ineq.
    4. 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.solution

    Proof 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