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

5 declarations, 0 contain sorry, 0 declared as axioms

USA Mathematical Olympiad 1980, Problem 1

A balance has unequal arms and pans of unequal weight. It is used to weigh two objects of unequal weight. The first object balances against a weight A, when placed in the left pan and against a weight a, when placed in the right pan. The corresponding weights for the second object are B and b. A third object balances against a weight C, when placed in the left pan. What is its true weight?

Imports (7)
Imported by 1 file
  1. determine Usa1980P1.solution line 38 source

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

    Statement uses: Real

    Proof uses: HAdd.hAdd, HMul.hMul, Real.sqrt, HDiv.hDiv, HSub.hSub, OfNat.ofNat

    11 instances, coercions and auxiliary constants left out.

  2. lemma Usa1980P1.ne_of_balance The two objects have unequal weights, so the weights A and B that balance them from the left pan must differ line 55 source

    Source documentation

    The two objects have unequal weights, so the weights A and B that balance them from the left pan must differ.

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

    Statement uses: Real, Eq, HAdd.hAdd, HMul.hMul, Ne

    Proof uses: Eq.mpr, id, congrArg, Eq.refl

    8 instances, coercions and auxiliary constants left out.

    Tactic trace: 3 steps

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

    lemma ne_of_balance {A B h k x₁ x₂ : ℝ}
        (h1 : x₁ = h * A + k) (h3 : x₂ = h * B + k) (hne : x₁ ≠ x₂) :
        A ≠ B := by
    …

    Mentions: h

  3. lemma Usa1980P1.h_sq Eliminating the true weights x₁ and x₂ gives a - b = h ^ 2 * (A - B) line 62 source

    Source documentation

    Eliminating the true weights x₁ and x₂ gives a - b = h ^ 2 * (A - B).

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

    Statement uses: Real, Eq, HAdd.hAdd, HMul.hMul, HPow.hPow, Nat, OfNat.ofNat, HSub.hSub

    Proof uses: Mathlib.Tactic.LinearCombination.eq_of_eq, Mathlib.Tactic.LinearCombination.add_eq_eq, Eq.mp, congrArg, Eq.symm, Mathlib.Tactic.LinearCombination.eq_rearrange, Mathlib.Tactic.Ring.of_eq, Mathlib.Tactic.Ring.Common.sub_congr, Nat.rawCast, Mathlib.Tactic.Ring.Common.add_congr, Int.rawCast, inferInstance, Ring, Int.negOfNat, Mathlib.Tactic.Ring.Common.mul_congr, Mathlib.Tactic.Ring.Common.pow_congr, Mathlib.Tactic.Ring.Common.atom_pf, rfl, Eq.mpr, id and 42 more

    70 instances, coercions and auxiliary constants left out.

    Tactic trace: 3 steps

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

    lemma h_sq {A a B b h k x₁ x₂ : ℝ}
        (h1 : x₁ = h * A + k) (h2 : a = h * x₁ + k)
        (h3 : x₂ = h * B + k) (h4 : b = h * x₂ + k) :
        h ^ 2 * (A - B) = a - b := by
    …

    Mentions: h

  4. lemma Usa1980P1.offset_eq The offset k is determined by (h + 1) * k = a - h ^ 2 * A line 71 source

    Source documentation

    The offset k is determined by (h + 1) * k = a - h ^ 2 * A.

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

    Statement uses: Real, Eq, HAdd.hAdd, HMul.hMul, OfNat.ofNat, HSub.hSub, HPow.hPow, Nat

    Proof uses: Mathlib.Tactic.LinearCombination.eq_of_eq, Eq.symm, Eq.mp, congrArg, 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.mul_congr, Mathlib.Tactic.Ring.Common.atom_pf, rfl, Eq.mpr, id, Eq.refl, Mathlib.Tactic.Ring.cast_pos, Mathlib.Meta.NormNum.isNat_ofNat, Nat.cast_one, Mathlib.Tactic.Ring.Common.add_pf_add_gt, Mathlib.Tactic.Ring.Common.add_pf_add_zero and 41 more

    73 instances, coercions and auxiliary constants left out.

    Tactic trace: 2 steps

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

    lemma offset_eq {A a h k x₁ : ℝ}
        (h1 : x₁ = h * A + k) (h2 : a = h * x₁ + k) :
        (h + 1) * k = a - h ^ 2 * A := by
    …

    Mentions: h

  5. problem Usa1980P1.usa1980_p1 line 79 source

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

    Statement uses: Real, LT.lt, OfNat.ofNat, Eq, HAdd.hAdd, HMul.hMul, Ne, Usa1980P1.solution

    Proof uses: Usa1980P1.ne_of_balance, HPow.hPow, Nat, HSub.hSub, Usa1980P1.h_sq, Usa1980P1.offset_eq, HDiv.hDiv, Eq.mpr, id, congrArg, propext, div_eq_iff, Iff.mpr, sub_ne_zero, Eq.symm, Real.sqrt, Real.sqrt_sq, le_of_lt, Not.intro, Mathlib.Tactic.Linarith.lt_irrefl and 74 more

    104 instances, coercions and auxiliary constants left out.

    Tactic trace: 17 steps

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