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

7 declarations, 0 contain sorry, 0 declared as axioms

USA Mathematical Olympiad 1978, Problem 3

You are told that all integers from 33 to 73 inclusive can be expressed as a sum of positive integers whose reciprocals sum to 1. Show that the same is true for all integers greater than 73.

Imports (6)
Imported by 1 file
  1. def Usa1978P3.Expressible A natural number n is expressible if it can be written as a sum of positive integers whose reciprocals sum to 1 line 32 source

    Source documentation

    A natural number n is expressible if it can be written as a sum of positive integers whose reciprocals sum to 1.

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

    Statement uses: Nat

    Proof uses: Exists, List, And, Membership.mem, LT.lt, OfNat.ofNat, Eq, List.sum, Rat, List.map, Inv.inv

    13 instances, coercions and auxiliary constants left out.

    def Expressible (n : ℕ) : Prop :=
    …
  2. lemma Usa1978P3.sum_map_two_mul line 37 source

    standard axioms: propext what this means

    Statement uses: List, Nat, Eq, List.sum, List.map, HMul.hMul, OfNat.ofNat

    Proof uses: List.rec, of_eq_true, List.nil, Eq.trans, True, congr, congrArg, List.map_nil, MulZeroClass.mul_zero, eq_self, Eq.mpr, List.cons, HAdd.hAdd, id, congrFun', List.map_cons, Mathlib.Tactic.Ring.of_eq, HPow.hPow, Nat.rawCast, Mathlib.Tactic.Ring.Common.add_congr and 18 more

    28 instances, coercions and auxiliary constants left out.

    Tactic trace: 4 steps

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

  3. lemma Usa1978P3.recip_sum_map_two_mul line 42 source

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

    Statement uses: List, Nat, Eq, Rat, List.sum, List.map, Inv.inv, HMul.hMul, OfNat.ofNat

    Proof uses: List.rec, of_eq_true, List.nil, Eq.trans, True, congr, congrArg, List.map_nil, MulZeroClass.mul_zero, eq_self, Eq.mpr, List.cons, HAdd.hAdd, id, List.map_cons, congrFun', Nat.cast_mul, mul_inv_rev, Mathlib.Tactic.Ring.of_eq, HPow.hPow and 35 more

    70 instances, coercions and auxiliary constants left out.

    Tactic trace: 4 steps

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

  4. lemma Usa1978P3.expressible_two_mul_add Documented declaration: expressible_two_mul_add line 55 source

    Source documentation

    The key construction: given a representation of n, doubling every summand halves the sum of the reciprocals, so adjoining two more positive summands c, d whose reciprocals sum to 1 / 2 yields a representation of 2 * n + (c + d).

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

    Statement uses: Nat, Usa1978P3.Expressible, LT.lt, OfNat.ofNat, Eq, Rat, HAdd.hAdd, Inv.inv, HDiv.hDiv, HMul.hMul

    Proof uses: List, And, Membership.mem, List.sum, List.map, Exists.intro, HAppend.hAppend, List.cons, List.nil, And.intro, Or, Eq.mp, congrArg, propext, List.mem_append, Exists, List.mem_map, mul_pos, Mathlib.Meta.Positivity.pos_of_isNat, Mathlib.Meta.NormNum.isNat_ofNat and 28 more

    76 instances, coercions and auxiliary constants left out.

    Tactic trace: 27 steps

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

    lemma expressible_two_mul_add {n : ℕ} (h : Expressible n) {c d : ℕ}
        (hc : 0 < c) (hd : 0 < d) (hcd : (c : ℚ)⁻¹ + (d : ℚ)⁻¹ = 1 / 2) :
        Expressible (2 * n + (c + d)) := by
    …

    Mentions: h, Usa1978P3.Expressible

  5. lemma Usa1978P3.expressible_two_mul_add_eight Adjoining two 4s: if n is expressible, so is 2 * n + 8 line 80 source

    Source documentation

    Adjoining two 4s: if n is expressible, so is 2 * n + 8.

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

    Statement uses: Nat, Usa1978P3.Expressible, HAdd.hAdd, HMul.hMul, OfNat.ofNat

    Proof uses: Usa1978P3.expressible_two_mul_add, Mathlib.Meta.NormNum.isNat_lt_true, Mathlib.Meta.NormNum.isNat_ofNat, Eq.refl, Bool, Bool.false, Mathlib.Meta.NormNum.isNNRat_eq_true, Rat, Inv.inv, HDiv.hDiv, Mathlib.Meta.NormNum.isNNRat_add, Mathlib.Meta.NormNum.isNNRat_inv_pos, Mathlib.Meta.NormNum.IsNat.to_isNNRat, Mathlib.Meta.NormNum.isNat_natCast, Mathlib.Meta.NormNum.isNNRat_div, Mathlib.Meta.NormNum.isNNRat_mul, Nat.mul

    41 instances, coercions and auxiliary constants left out.

    Tactic trace: 3 steps

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

    lemma expressible_two_mul_add_eight {n : ℕ} (h : Expressible n) :
        Expressible (2 * n + 8) :=
    …

    Mentions: h, Usa1978P3.Expressible

  6. lemma Usa1978P3.expressible_two_mul_add_nine Adjoining 3 and 6: if n is expressible, so is 2 * n + 9 line 85 source

    Source documentation

    Adjoining 3 and 6: if n is expressible, so is 2 * n + 9.

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

    Statement uses: Nat, Usa1978P3.Expressible, HAdd.hAdd, HMul.hMul, OfNat.ofNat

    Proof uses: Usa1978P3.expressible_two_mul_add, Mathlib.Meta.NormNum.isNat_lt_true, Mathlib.Meta.NormNum.isNat_ofNat, Eq.refl, Bool, Bool.false, Mathlib.Meta.NormNum.isNNRat_eq_true, Rat, Inv.inv, HDiv.hDiv, Mathlib.Meta.NormNum.isNNRat_add, Mathlib.Meta.NormNum.isNNRat_inv_pos, Mathlib.Meta.NormNum.IsNat.to_isNNRat, Mathlib.Meta.NormNum.isNat_natCast, Mathlib.Meta.NormNum.isNNRat_div, Mathlib.Meta.NormNum.isNNRat_mul, Nat.mul

    41 instances, coercions and auxiliary constants left out.

    Tactic trace: 3 steps

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

    lemma expressible_two_mul_add_nine {n : ℕ} (h : Expressible n) :
        Expressible (2 * n + 9) :=
    …

    Mentions: h, Usa1978P3.Expressible

  7. problem Usa1978P3.usa1978_p3 line 91 source

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

    Statement uses: Nat, LE.le, OfNat.ofNat, Usa1978P3.Expressible, LT.lt

    Proof uses: Nat.strong_induction_on, Even, Odd, Or, Nat.even_or_odd, Eq, HAdd.hAdd, HMul.hMul, HSub.hSub, dite, Not, Eq.mpr, id, congrArg, Usa1978P3.expressible_two_mul_add_eight, Usa1978P3.expressible_two_mul_add_nine

    35 instances, coercions and auxiliary constants left out.

    Tactic trace: 32 steps

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