Compfiles/Usa2002P3.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
8 declarations, 0 contain sorry, 0 declared as axioms
USA Mathematical Olympiad 2002, Problem 3
Prove that any monic polynomial (a polynomial with leading coefficient 1) of degree n with real coefficients is the average of two monic polynomials of degree n with n real roots.
Imports (4)
Imported by 1 file
- theorem
Usa2002P3.injOn_range_of_stepIfξis strictly increasing at consecutive arguments belown, then it is injective onFinset.range nline 34 sourceSource documentation
If
ξis strictly increasing at consecutive arguments belown, then it is injective onFinset.range n.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Real,LT.lt,HAdd.hAdd,OfNat.ofNat,Set.InjOn,Finset,Finset.rangeProof uses:
Nat.recAux,Eq.mp,congrFun',congrArg,zero_add,LT.lt.trans,Membership.mem,Set,Eq,Or,lt_trichotomy,HSub.hSub,Set.Iio,propext,Set.mem_Iio,Finset.coe_range,absurd,ne_of_lt,Eq.symm,ne_of_gt32 instances, coercions and auxiliary constants left out.
Tactic trace: 30 steps
Open to load the checked before-and-after goal states.
theorem injOn_range_of_step {n : ℕ} {ξ : ℕ → ℝ} (h : ∀ i, i + 1 < n → ξ i < ξ (i + 1)) : Set.InjOn ξ (Finset.range n) := by …Mentions: h
- theorem
Usa2002P3.card_roots_eq_nA nonzero real polynomial of degreenthat hasndistinct real roots has exactlynroots (counted with multiplicity), and in particular it splits line 62 sourceSource documentation
A nonzero real polynomial of degree
nthat hasndistinct real roots has exactlynroots (counted with multiplicity), and in particular it splits.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Polynomial,Real,Nat,Ne,OfNat.ofNat,Eq,Polynomial.natDegree,Set.InjOn,Finset,Finset.range,Membership.mem,Polynomial.eval,And,Multiset.card,Polynomial.roots,Polynomial.SplitsProof uses:
LE.le,Multiset,Finset.val,Finset.image,Eq.mpr,HasSubset.Subset,id,congrArg,propext,Multiset.le_iff_subset,Finset.nodup,Exists,Iff.mp,Finset.mem_image,Iff.mpr,Polynomial.IsRoot,Polynomial.mem_roots,Finset.card,Finset.card_image_of_injOn,Finset.card_rangeand 8 more31 instances, coercions and auxiliary constants left out.
Tactic trace: 14 steps
Open to load the checked before-and-after goal states.
theorem card_roots_eq_n {p : ℝ[X]} {n : ℕ} (hp0 : p ≠ 0) (hn : p.natDegree = n) {ξ : ℕ → ℝ} (hinj : Set.InjOn ξ (Finset.range n)) (hroot : ∀ i ∈ Finset.range n, p.eval (ξ i) = 0) : p.roots.card = n ∧ p.Splits := by … - theorem
Usa2002P3.card_roots_eq_n_of_intervalsDocumented declaration: card_roots_eq_n_of_intervals line 83 sourceSource documentation
A nonzero real polynomial of degree
nthat has a root in each ofnopen intervals(L i, R i)arranged in increasing order (R i ≤ L (i+1)) has exactlynreal roots and splits.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Polynomial,Real,Nat,Ne,OfNat.ofNat,Eq,Polynomial.natDegree,LT.lt,HAdd.hAdd,LE.le,Exists,And,Membership.mem,Set,Set.Ioo,Polynomial.eval,Multiset.card,Polynomial.roots,Polynomial.SplitsProof uses:
Exists.intro,dite,Classical.choose,Not,Eq.mpr,id,congr,congrArg,Decidable,dite_eq_left,congrFun',Classical.choose_spec,And.right,And.left,lt_trans,lt_of_lt_of_le, Usa2002P3.card_roots_eq_n, Usa2002P3.injOn_range_of_step,Finset,Finset.rangeand 2 more33 instances, coercions and auxiliary constants left out.
Tactic trace: 11 steps
Open to load the checked before-and-after goal states.
theorem card_roots_eq_n_of_intervals {p : ℝ[X]} {n : ℕ} (hp0 : p ≠ 0) (hn : p.natDegree = n) {L R : ℕ → ℝ} (hstep : ∀ i, i + 1 < n → R i ≤ L (i + 1)) (hex : ∀ i, i < n → ∃ x ∈ Set.Ioo (L i) (R i), p.eval x = 0) : p.roots.card = n ∧ p.Splits := by … - theorem
Usa2002P3.exists_root_of_eval_mul_negIntermediate value theorem for polynomials: ifpchanges sign betweenaandb, thenphas a root in the open interval(a, b)line 102 sourceSource documentation
Intermediate value theorem for polynomials: if
pchanges sign betweenaandb, thenphas a root in the open interval(a, b).standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Polynomial,Real,LT.lt,HMul.hMul,Polynomial.eval,OfNat.ofNat,Exists,And,Membership.mem,Set,Set.Ioo,EqProof uses:
Or,Iff.mp,mul_neg_iff,HAdd.hAdd,Set.image,intermediate_value_Ioo',LT.lt.le,Polynomial.continuousOn,Set.Icc,And.intro,Exists.intro,intermediate_value_Ioo72 instances, coercions and auxiliary constants left out.
Tactic trace: 7 steps
Open to load the checked before-and-after goal states.
theorem exists_root_of_eval_mul_neg {p : ℝ[X]} {a b : ℝ} (hab : a < b) (h : p.eval a * p.eval b < 0) : ∃ c ∈ Set.Ioo a b, p.eval c = 0 := by …Mentions: h
- theorem
Usa2002P3.card_roots_and_splitsLetpbe a nonzero real polynomial of degreenwhose values at the integers1, ..., nalternate in sign, so thatphas a root in each of then - 1intervals(i, i+1)line 114 sourceSource documentation
Let
pbe a nonzero real polynomial of degreenwhose values at the integers1, ..., nalternate in sign, so thatphas a root in each of then - 1intervals(i, i+1). If moreoverpchanges sign on one of the two "tails"(-∞, 1)or(n, ∞), thenphas exactlynreal roots and splits.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Polynomial,Real,Nat,Ne,OfNat.ofNat,Eq,Polynomial.natDegree,LE.le,HAdd.hAdd,LT.lt,HMul.hMul,Polynomial.eval,Or,Exists,And,Multiset.card,Polynomial.roots,Polynomial.SplitsProof uses: Usa2002P3.card_roots_eq_n_of_intervals,
ite,Eq.mpr,id,congrArg,ite_eq_right,le_refl,dite,Membership.mem,Set,Set.Ioo,ite_eq_left,rfl, Usa2002P3.exists_root_of_eval_mul_neg,Exists.intro,And.intro,of_eq_true,Eq.trans,True,congrFun'and 8 more73 instances, coercions and auxiliary constants left out.
Tactic trace: 47 steps
Open to load the checked before-and-after goal states.
theorem card_roots_and_splits {p : ℝ[X]} {n : ℕ} (hp0 : p ≠ 0) (hn : p.natDegree = n) (hmul : ∀ i : ℕ, 1 ≤ i → i + 1 ≤ n → p.eval (i : ℝ) * p.eval ((i + 1 : ℕ) : ℝ) < 0) (htail : (∃ a₁ : ℝ, a₁ < 1 ∧ p.eval a₁ * p.eval 1 < 0) ∨ (∃ a₂ : ℝ, (n : ℝ) < a₂ ∧ p.eval (n : ℝ) * p.eval a₂ < 0)) : p.roots.card = n ∧ p.Splits := by … - theorem
Usa2002P3.exists_eval_posA monic real polynomial of positive degree takes arbitrarily large positive values line 158 sourceSource documentation
A monic real polynomial of positive degree takes arbitrarily large positive values.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Polynomial,Real,Polynomial.Monic,LE.le,Nat,OfNat.ofNat,Polynomial.natDegree,Exists,And,LT.lt,Polynomial.evalProof uses:
WithBot,Polynomial.degree,Iff.mp,Polynomial.natDegree_pos_iff_degree_pos,Polynomial.leadingCoeff,Eq,Eq.mpr,id,congrArg,zero_le_one,Filter.Tendsto,Filter.atTop,Polynomial.tendsto_atTop_of_leadingCoeff_nonneg,Filter.Eventually.exists,Filter.Eventually.and,Filter.Tendsto.eventually_ge_atTop,Filter.eventually_gt_atTop,Exists.intro,And.intro,lt_of_not_geand 47 more82 instances, coercions and auxiliary constants left out.
Tactic trace: 10 steps
Open to load the checked before-and-after goal states.
theorem exists_eval_pos {p : ℝ[X]} (hm : p.Monic) (hd : 1 ≤ p.natDegree) (B : ℝ) : ∃ c : ℝ, B < c ∧ 0 < p.eval c := by … - theorem
Usa2002P3.exists_eval_neg_one_pow_posA monic real polynomialpof degreen, multiplied by(-1)^n, takes arbitrarily large positive values at large negative arguments line 172 sourceSource documentation
A monic real polynomial
pof degreen, multiplied by(-1)^n, takes arbitrarily large positive values at large negative arguments.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Polynomial,Real,Polynomial.Monic,LE.le,Nat,OfNat.ofNat,Polynomial.natDegree,Exists,And,LT.lt,HMul.hMul,HPow.hPow,Neg.neg,Polynomial.evalProof uses:
Ne,Eq,Polynomial.leadingCoeff,Asymptotics.IsEquivalent,Filter.atBot,Polynomial.isEquivalent_atBot_lead,Eq.mp,congrArg,funext,one_mul,Asymptotics.IsEquivalent.mul,Asymptotics.IsEquivalent.refl,Filter.Tendsto,Filter.atTop,Filter.Tendsto.comp,Filter.tendsto_pow_atTop,Filter.tendsto_neg_atBot_atTop,Filter.Tendsto.congr',Filter.univ_mem',Set.ofPredand 71 more115 instances, coercions and auxiliary constants left out.
Tactic trace: 19 steps
Open to load the checked before-and-after goal states.
theorem exists_eval_neg_one_pow_pos {p : ℝ[X]} (hm : p.Monic) (hd : 1 ≤ p.natDegree) (B : ℝ) : ∃ a : ℝ, a < B ∧ 0 < (-1 : ℝ) ^ p.natDegree * p.eval a := by … - problem
Usa2002P3.usa2002_p3line 197 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Polynomial,Real,Polynomial.Monic,Eq,Polynomial.natDegree,Exists,And,Multiset.card,Polynomial.roots,Polynomial.Splits,HDiv.hDiv,HAdd.hAdd,OfNat.ofNatProof uses:
Ne,Or,eq_or_ne,Iff.mp,Polynomial.Monic.natDegree_eq_zero,two_ne_zero,Exists.intro,And.intro,Polynomial.monic_one,of_eq_true,Eq.trans,True,congrFun',congrArg,Polynomial.natDegree_one,eq_self,Multiset,Polynomial.roots_one,Polynomial.Splits.one,Eq.mprand 131 more175 instances, coercions and auxiliary constants left out.
Tactic trace: 174 steps
Open to load the checked before-and-after goal states.