Compfiles/Usa1978P3.lean
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
- def
Usa1978P3.ExpressibleA natural numbernis expressible if it can be written as a sum of positive integers whose reciprocals sum to1line 32 sourceSource documentation
A natural number
nis expressible if it can be written as a sum of positive integers whose reciprocals sum to1.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
NatProof uses:
Exists,List,And,Membership.mem,LT.lt,OfNat.ofNat,Eq,List.sum,Rat,List.map,Inv.inv13 instances, coercions and auxiliary constants left out.
def Expressible (n : ℕ) : Prop := …
- lemma
Usa1978P3.sum_map_two_mulline 37 sourcestandard axioms: propext what this means
Statement uses:
List,Nat,Eq,List.sum,List.map,HMul.hMul,OfNat.ofNatProof 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_congrand 18 more28 instances, coercions and auxiliary constants left out.
Tactic trace: 4 steps
Open to load the checked before-and-after goal states.
- lemma
Usa1978P3.recip_sum_map_two_mulline 42 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
List,Nat,Eq,Rat,List.sum,List.map,Inv.inv,HMul.hMul,OfNat.ofNatProof 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.hPowand 35 more70 instances, coercions and auxiliary constants left out.
Tactic trace: 4 steps
Open to load the checked before-and-after goal states.
- lemma
Usa1978P3.expressible_two_mul_addDocumented declaration: expressible_two_mul_add line 55 sourceSource documentation
The key construction: given a representation of
n, doubling every summand halves the sum of the reciprocals, so adjoining two more positive summandsc, dwhose reciprocals sum to1 / 2yields a representation of2 * 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.hMulProof 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_ofNatand 28 more76 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
- lemma
Usa1978P3.expressible_two_mul_add_eightAdjoining two4s: ifnis expressible, so is2 * n + 8line 80 sourceSource documentation
Adjoining two
4s: ifnis expressible, so is2 * n + 8.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat, Usa1978P3.Expressible,HAdd.hAdd,HMul.hMul,OfNat.ofNatProof 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.mul41 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
- lemma
Usa1978P3.expressible_two_mul_add_nineAdjoining3and6: ifnis expressible, so is2 * n + 9line 85 sourceSource documentation
Adjoining
3and6: ifnis expressible, so is2 * n + 9.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat, Usa1978P3.Expressible,HAdd.hAdd,HMul.hMul,OfNat.ofNatProof 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.mul41 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
- problem
Usa1978P3.usa1978_p3line 91 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,LE.le,OfNat.ofNat, Usa1978P3.Expressible,LT.ltProof 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_nine35 instances, coercions and auxiliary constants left out.
Tactic trace: 32 steps
Open to load the checked before-and-after goal states.