Compfiles/Imo1969P6.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

3 declarations, 0 contain sorry, 0 declared as axioms

International Mathematical Olympiad 1969, Problem 6

Given real numbers x₁, x₂, y₁, y₂, z₁, z₂ satisfying x₁ > 0, x₂ > 0, x₁y₁ > z₁², and x₂y₂ > z₂², prove that

8 / ((x₁ + x₂)(y₁ + y₂) - (z₁ + z₂)²) ≤ 1 / (x₁y₁ - z₁²) + 1 / (x₂y₂ - z₂²).

Give necessary and sufficient conditions for equality.

Imports (3)
Imported by 1 file
  1. theorem Imo1969P6.amgm_chain Documented declaration: amgm_chain line 39 source

    Source documentation

    The core AM–GM chain of the solution: with p² = x₁y₁ - z₁² and q² = x₂y₂ - z₂² we have pq + z₁z₂ ≤ √(x₁y₁ · x₂y₂) = √(x₁y₂) · √(x₂y₁) and 2 √(x₁y₂) √(x₂y₁) ≤ x₁y₂ + x₂y₁ (AM–GM).

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

    Statement uses: Real, LT.lt, OfNat.ofNat, Eq, HPow.hPow, Nat, HSub.hSub, HMul.hMul, And, LE.le, HAdd.hAdd, Real.sqrt

    Proof uses: Mathlib.Tactic.Linarith.eq_of_not_lt_of_not_gt, Not.intro, Mathlib.Tactic.Linarith.lt_irrefl, Eq.mp, congrArg, 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_congr, Mathlib.Tactic.Ring.Common.mul_congr, Mathlib.Tactic.Ring.Common.atom_pf, rfl, Eq.mpr, id, Eq.symm and 68 more

    99 instances, coercions and auxiliary constants left out.

    Tactic trace: 19 steps

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

    theorem amgm_chain {x₁ x₂ y₁ y₂ z₁ z₂ p q : ℝ}
        (hx₁ : 0 < x₁) (hy₁ : 0 < y₁) (hx₂ : 0 < x₂) (hy₂ : 0 < y₂)
        (hp₂ : p ^ 2 = x₁ * y₁ - z₁ ^ 2) (hq₂ : q ^ 2 = x₂ * y₂ - z₂ ^ 2) :
        p * q + z₁ * z₂ ≤ Real.sqrt (x₁ * y₁ * (x₂ * y₂)) ∧
          Real.sqrt (x₁ * y₁ * (x₂ * y₂)) = Real.sqrt (x₁ * y₂) * Real.sqrt (x₂ * y₁) ∧
            2 * (Real.sqrt (x₁ * y₂) * Real.sqrt (x₂ * y₁)) ≤ x₁ * y₂ + x₂ * y₁ := by
    …
  2. determine Imo1969P6.eqCondition The condition for equality to hold line 64 source

    Source documentation

    The condition for equality to hold.

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

    Statement uses: Real

    Proof uses: And, Eq

    determine eqCondition (x₁ x₂ y₁ y₂ z₁ z₂ : ℝ) : Prop := x₁ = x₂ ∧ y₁ = y₂ ∧ z₁ = z₂
  3. problem Imo1969P6.imo1969_p6 line 66 source

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

    Statement uses: Real, LT.lt, OfNat.ofNat, HPow.hPow, Nat, HMul.hMul, And, LE.le, HDiv.hDiv, HSub.hSub, HAdd.hAdd, Iff, Eq, Imo1969P6.eqCondition

    Proof uses: Iff.mpr, sub_pos, pos_of_mul_pos_right, lt_of_le_of_lt, sq_nonneg, LT.lt.le, Eq.mpr, id, congrArg, rfl, Real.sqrt, Real.sqrt_pos_of_pos, Eq.mp, Real.sq_sqrt, Imo1969P6.amgm_chain, le_of_not_gt, Mathlib.Tactic.Linarith.lt_irrefl, Mathlib.Tactic.Ring.of_eq, Mathlib.Tactic.Ring.Common.add_congr, Nat.rawCast and 144 more

    172 instances, coercions and auxiliary constants left out.

    Tactic trace: 124 steps

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