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

4 declarations, 0 contain sorry, 0 declared as axioms

USA Mathematical Olympiad 2000, Problem 6

Let a₁, b₁, a₂, b₂, ..., aₙ, bₙ be nonnegative real numbers. Prove that

∑ᵢⱼ min(aᵢaⱼ, bᵢbⱼ) ≤ ∑ᵢⱼ min(aᵢbⱼ, aⱼbᵢ),

where each sum is taken over all n² pairs (i, j).

Imports (2)
Imported by 1 file
  1. theorem Usa2000P6.key_identity The key algebraic identity: the difference of the two min-terms of a pair of indices factors as a sign times a nonnegative min-kernel entry line 58 source

    Source documentation

    The key algebraic identity: the difference of the two min-terms of a pair of indices factors as a sign times a nonnegative min-kernel entry.

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

    Statement uses: Real, LE.le, OfNat.ofNat, Eq, HSub.hSub, Min.min, HMul.hMul, ite, Neg.neg, abs

    Proof uses: dite, Eq.mpr, id, congrArg, ite_eq_left, min_eq_right, mul_le_mul, abs_of_nonneg, Iff.mpr, sub_nonneg, Eq.symm, min_sub_sub_right, min_comm, Min, Eq.rec, Eq.refl, Mathlib.Tactic.Ring.of_eq, HAdd.hAdd, HPow.hPow, Nat and 49 more

    89 instances, coercions and auxiliary constants left out.

    Tactic trace: 50 steps

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

    theorem key_identity (a b c d : ℝ) (ha : 0 ≤ a) (hb : 0 ≤ b) (hc : 0 ≤ c) (hd : 0 ≤ d) :
        min (a * d) (c * b) - min (a * c) (b * d) =
          (if b ≤ a then (1 : ℝ) else -1) * (if d ≤ c then (1 : ℝ) else -1) *
            min (min a b * |c - d|) (min c d * |a - b|) := by
    …
  2. theorem Usa2000P6.min_kernel_nonneg The min kernel Kᵢⱼ = min (s i) (s j) is positive semidefinite: its quadratic form is nonnegative for every real vector z line 109 source

    Source documentation

    The min kernel Kᵢⱼ = min (s i) (s j) is positive semidefinite: its quadratic form is nonnegative for every real vector z. Proved by strong induction on the index set, peeling off an index where s is minimal.

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

    Statement uses: DecidableEq, Real, Finset, Membership.mem, LE.le, OfNat.ofNat, Finset.sum, HMul.hMul, Min.min

    Proof uses: Finset.strongInduction, LT.lt, Eq, EmptyCollection.emptyCollection, Finset.Nonempty, Or, Finset.eq_empty_or_nonempty, of_eq_true, Eq.trans, True, congrArg, Finset.sum_const_zero, Eq.symm, And, Exists, Finset.exists_min_image, HAdd.hAdd, HPow.hPow, Nat, HSub.hSub and 83 more

    104 instances, coercions and auxiliary constants left out.

    Tactic trace: 54 steps

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

    theorem min_kernel_nonneg {ι : Type*} [DecidableEq ι] (z : ι → ℝ) :
        ∀ (T : Finset ι) (s : ι → ℝ), (∀ i ∈ T, 0 ≤ s i) →
          0 ≤ ∑ i ∈ T, ∑ j ∈ T, z i * z j * min (s i) (s j) := by
    …
  3. theorem Usa2000P6.kernel_nonneg The generalized min kernel Mᵢⱼ = min (u i * w j) (u j * w i), with u and w nonnegative, is positive semidefinite line 182 source

    Source documentation

    The generalized min kernel Mᵢⱼ = min (u i * w j) (u j * w i), with u and w nonnegative, is positive semidefinite. On the support of w it equals w i * w j * min (u i / w i) (u j / w j), so this reduces to min_kernel_nonneg.

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

    Statement uses: DecidableEq, Finset, Real, Membership.mem, LE.le, OfNat.ofNat, Finset.sum, HMul.hMul, Min.min

    Proof uses: Finset.filter, LT.lt, Finset.filter_subset, Not, Eq, Decidable.byContradiction, Iff.mpr, And, Finset.mem_filter, And.intro, lt_of_le_of_ne, Ne.symm, Eq.mpr, id, congrArg, MulZeroClass.mul_zero, min_eq_right, mul_nonneg, Eq.refl, min_eq_left and 77 more

    84 instances, coercions and auxiliary constants left out.

    Tactic trace: 30 steps

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

    theorem kernel_nonneg {ι : Type*} [DecidableEq ι] (S : Finset ι) (u w z : ι → ℝ)
        (hu : ∀ i ∈ S, 0 ≤ u i) (hw : ∀ i ∈ S, 0 ≤ w i) :
        0 ≤ ∑ i ∈ S, ∑ j ∈ S, z i * z j * min (u i * w j) (u j * w i) := by
    …

    Mentions: S

  4. problem Usa2000P6.usa2000_p6 line 223 source

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

    Statement uses: Nat, Fin, Real, LE.le, OfNat.ofNat, Finset.sum, Finset.univ, Min.min, HMul.hMul

    Proof uses: Eq.mpr, HSub.hSub, id, Eq, congrArg, Eq.symm, propext, sub_nonneg, Finset.sum_sub_distrib, Finset.sum_congr, rfl, Finset, Membership.mem, Eq.refl, ite, Neg.neg, abs, Usa2000P6.key_identity, Usa2000P6.kernel_nonneg, le_min and 1 more

    43 instances, coercions and auxiliary constants left out.

    Tactic trace: 9 steps

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