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

6 declarations, 0 contain sorry, 0 declared as axioms

USA Mathematical Olympiad 1975, Problem 3

A polynomial p(x) of degree n satisfies p(0) = 0, p(1) = 1/2, p(2) = 2/3, ... , p(n) = n/(n+1). Find p(n+1).

Imports (11)
Imported by 1 file
  1. determine Usa1975P3.answer line 36 source

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

    Statement uses: Nat, Real

    Proof uses: ite, Odd, OfNat.ofNat, HDiv.hDiv, HAdd.hAdd

    13 instances, coercions and auxiliary constants left out.

  2. lemma Usa1975P3.natDegree_prod_X_sub_C The degree of ∏_{i < m} (X - i) is m line 41 source

    Source documentation

    The degree of ∏_{i < m} (X - i) is m.

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

    Statement uses: Nat, Eq, Polynomial.natDegree, Real, Finset.prod, Polynomial, Finset.range, HSub.hSub, Polynomial.X, RingHom, Polynomial.C

    Proof uses: Finset.sum, Polynomial.natDegree_prod, Membership.mem, Finset, Polynomial.X_sub_C_ne_zero, Eq.mpr, id, congrArg, Trans.simple, OfNat.ofNat, Finset.sum_congr, rfl, Polynomial.natDegree_X_sub_C, of_eq_true, Eq.trans, True, congrFun', HSMul.hSMul, Finset.card, Finset.sum_const and 3 more

    44 instances, coercions and auxiliary constants left out.

    Tactic trace: 7 steps

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

    lemma natDegree_prod_X_sub_C (m : ℕ) :
        (∏ i ∈ Finset.range m, (X - C (i : ℝ))).natDegree = m := by
    …
  3. lemma Usa1975P3.prod_range_add_one_cast ∏_{i < m} (i + 1) = m!, cast to the reals line 52 source

    Source documentation

    ∏_{i < m} (i + 1) = m!, cast to the reals.

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

    Statement uses: Nat, Eq, Real, Finset.prod, Finset.range, HAdd.hAdd, OfNat.ofNat, Nat.factorial

    Proof uses: cast, Eq.symm, Eq.trans, congrFun', congrArg, Finset.prod_congr, Eq.refl, Finset, Membership.mem, Nat.cast_one, Finset.prod_range_add_one_eq_factorial

    38 instances, coercions and auxiliary constants left out.

    Tactic trace: 1 steps

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

    lemma prod_range_add_one_cast (m : ℕ) :
        ∏ i ∈ Finset.range m, ((i : ℝ) + 1) = (Nat.factorial m : ℝ) := by
    …
  4. lemma Usa1975P3.eval_prod_X_sub_C_neg_one ∏_{i < m} (X - i) evaluated at -1 equals (-1)^m * m! line 57 source

    Source documentation

    ∏_{i < m} (X - i) evaluated at -1 equals (-1)^m * m!.

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

    Statement uses: Nat, Eq, Real, Polynomial.eval, Neg.neg, OfNat.ofNat, Finset.prod, Polynomial, Finset.range, HSub.hSub, Polynomial.X, RingHom, Polynomial.C, HMul.hMul, HPow.hPow, Nat.factorial

    Proof uses: Eq.mpr, id, congrArg, Polynomial.eval_prod, congrFun', Finset.prod_congr, Eq.refl, Finset, Membership.mem, Eq.trans, Polynomial.eval_sub, congr, Polynomial.eval_X, Polynomial.eval_C, HAdd.hAdd, Mathlib.Tactic.Ring.of_eq, Int.rawCast, inferInstance, Ring, Int.negOfNat and 37 more

    81 instances, coercions and auxiliary constants left out.

    Tactic trace: 5 steps

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

    lemma eval_prod_X_sub_C_neg_one (m : ℕ) :
        (∏ i ∈ Finset.range m, (X - C (i : ℝ))).eval (-1 : ℝ) = (-1 : ℝ) ^ m * (Nat.factorial m : ℝ) := by
    …
  5. lemma Usa1975P3.eval_prod_X_sub_C_self ∏_{i < m} (X - i) evaluated at m equals m! line 67 source

    Source documentation

    ∏_{i < m} (X - i) evaluated at m equals m!.

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

    Statement uses: Nat, Eq, Real, Polynomial.eval, Finset.prod, Polynomial, Finset.range, HSub.hSub, Polynomial.X, RingHom, Polynomial.C, Nat.factorial

    Proof uses: Eq.mpr, id, congrArg, Polynomial.eval_prod, congrFun', Finset.prod_congr, Eq.refl, Finset, Membership.mem, Eq.trans, Polynomial.eval_sub, congr, Polynomial.eval_X, Polynomial.eval_C, OfNat.ofNat, GT.gt, Or, Nat.eq_zero_or_pos, of_eq_true, True and 48 more

    91 instances, coercions and auxiliary constants left out.

    Tactic trace: 18 steps

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

    lemma eval_prod_X_sub_C_self (m : ℕ) :
        (∏ i ∈ Finset.range m, (X - C (i : ℝ))).eval (m : ℝ) = (Nat.factorial m : ℝ) := by
    …
  6. problem Usa1975P3.usa1975_p3 line 86 source

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

    Statement uses: Nat, Polynomial, Real, Eq, Polynomial.natDegree, Membership.mem, Finset, Finset.range, HAdd.hAdd, OfNat.ofNat, Polynomial.eval, HDiv.hDiv, Usa1975P3.answer

    Proof uses: GT.gt, Or, Nat.eq_zero_or_pos, Iff.mpr, LT.lt, Finset.mem_range, Nat.one_pos, Eq.mp, congr, congrArg, congrFun', CharP.cast_eq_zero, Eq.trans, zero_add, div_one, RingHom, Polynomial.C, Finsupp, Polynomial.coeff, Polynomial.eq_C_of_natDegree_eq_zero and 167 more

    202 instances, coercions and auxiliary constants left out.

    Tactic trace: 130 steps

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