Compfiles/Usa1995P4.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
19 declarations, 0 contain sorry, 0 declared as axioms
USA Mathematical Olympiad 1995, Problem 4
a₀, a₁, a₂, ... is an infinite sequence of integers such that aₙ - aₘ is divisible by n - m for all (unequal) n and m. For some polynomial p(x) we have p(n) > |aₙ| for all n. Show that there is a polynomial q(x) such that q(n) = aₙ for all n.
Imports (8)
Imported by 1 file
- lemma
Usa1995P4.gcd_lcm_dvd_prod_gcdgcd (lcm over s) xdivides the product of the individual gcds line 38 sourceSource documentation
gcd (lcm over s) xdivides the product of the individual gcds.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Finset,Membership.mem,LT.lt,OfNat.ofNat,Dvd.dvd,Nat.gcd,Finset.lcm,Finset.prodProof uses:
Finset.induction_on,EmptyCollection.emptyCollection,Eq.mpr,id,Eq,congrArg,Finset.lcm_empty,Nat.gcd_one_left,Finset.prod_empty,dvd_refl,Not,Insert.insert,GCDMonoid.lcm,Finset.lcm_insert,HMul.hMul,Finset.prod_insert,Nat.dvd_gcd,Dvd.dvd.trans,Nat.gcd_dvd_left,lcm_dvd_muland 4 more36 instances, coercions and auxiliary constants left out.
Tactic trace: 9 steps
Open to load the checked before-and-after goal states.
lemma gcd_lcm_dvd_prod_gcd (t : ℕ → ℕ) (x : ℕ) (s : Finset ℕ) : (∀ i ∈ s, 0 < t i) → Nat.gcd (s.lcm t) x ∣ ∏ i ∈ s, Nat.gcd (t i) x := by … - lemma
Usa1995P4.prod_eq_lcm_mul_gcd_prodExact factorization: a product of naturals equals their lcm times the product of the gcds of the successive partial lcms with the next factor line 57 sourceSource documentation
Exact factorization: a product of naturals equals their lcm times the product of the gcds of the successive partial lcms with the next factor.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Eq,Finset.prod,Finset.range,HAdd.hAdd,OfNat.ofNat,HMul.hMul,Finset.lcm,Nat.gcdProof uses:
Nat.recAux,Eq.mpr,id,congrArg,Finset.prod_range_succ,Finset.prod_range_zero,one_mul,mul_one,Insert.insert,Finset,Finset.range_add_one,GCDMonoid.lcm,Finset.lcm_insert,EmptyCollection.emptyCollection,Finset.range_zero,Finset.lcm_empty,Nat.lcm,lcm_eq_nat_lcm,Nat.lcm_one_right,Eq.refland 20 more48 instances, coercions and auxiliary constants left out.
Tactic trace: 10 steps
Open to load the checked before-and-after goal states.
lemma prod_eq_lcm_mul_gcd_prod (t : ℕ → ℕ) (k : ℕ) : ∏ i ∈ Finset.range (k + 1), t i = (Finset.range (k + 1)).lcm t * ∏ j ∈ Finset.range k, Nat.gcd ((Finset.range (j + 1)).lcm t) (t (j + 1)) := by … - lemma
Usa1995P4.gcd_lcm_le_powEach step gcd is at mostN ^ (j + 1), sincegcd (m - i) (m - (j+1))divides(j + 1) - i ≤ Nfor everyi < j + 1line 90 sourceSource documentation
Each step gcd is at most
N ^ (j + 1), sincegcd (m - i) (m - (j+1))divides(j + 1) - i ≤ Nfor everyi < j + 1.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,LT.lt,Membership.mem,Finset,Finset.range,LE.le,Nat.gcd,Finset.lcm,HAdd.hAdd,OfNat.ofNat,HSub.hSub,HPow.hPowProof uses:
Iff.mp,Finset.mem_range,Dvd.dvd,Finset.prod, Usa1995P4.gcd_lcm_dvd_prod_gcd,Finset.prod_pos,Nat.gcd_pos_of_pos_left,Eq,Eq.mpr,id,congrArg,Eq.symm,Nat.dvd_sub,Nat.gcd_dvd_left,Nat.gcd_dvd_right,LE.le.trans,Nat.le_of_dvd,Trans.trans,Finset.card,Finset.prod_le_pow_cardand 2 more47 instances, coercions and auxiliary constants left out.
Tactic trace: 20 steps
Open to load the checked before-and-after goal states.
lemma gcd_lcm_le_pow (m N j : ℕ) (hm : N < m) (hj : j ∈ Finset.range N) : Nat.gcd ((Finset.range (j + 1)).lcm (fun i => m - i)) (m - (j + 1)) ≤ N ^ (j + 1) := by … - lemma
Usa1995P4.prod_le_lcm_mul_powA lower bound for the lcm of theN + 1consecutive integersm, m - 1, ..., m - N: their product is at mostN ^ (N * (N + 1))times their lcm line 117 sourceSource documentation
A lower bound for the lcm of the
N + 1consecutive integersm, m - 1, ..., m - N: their product is at mostN ^ (N * (N + 1))times their lcm.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,LT.lt,LE.le,Finset.prod,Finset.range,HAdd.hAdd,OfNat.ofNat,HSub.hSub,HMul.hMul,Finset.lcm,HPow.hPowProof uses:
Eq,GT.gt,Or,Nat.eq_zero_or_pos,Eq.mpr,id,congrArg,Finset.prod_range_succ,Finset.prod_range_zero,one_mul,Insert.insert,Finset,Finset.range_add_one,GCDMonoid.lcm,Finset.lcm_insert,EmptyCollection.emptyCollection,Finset.range_zero,Finset.lcm_empty,Nat.lcm,lcm_eq_nat_lcmand 31 more70 instances, coercions and auxiliary constants left out.
Tactic trace: 12 steps
Open to load the checked before-and-after goal states.
lemma prod_le_lcm_mul_pow (N m : ℕ) (hm : N < m) : ∏ i ∈ Finset.range (N + 1), (m - i) ≤ ((Finset.range (N + 1)).lcm fun i => m - i) * N ^ (N * (N + 1)) := by … - lemma
Usa1995P4.interpolate_existsLagrange interpolation (over ℚ): the firstN + 1values of an integer sequence are interpolated by a rational polynomial of degree at mostNline 147 sourceSource documentation
Lagrange interpolation (over ℚ): the first
N + 1values of an integer sequence are interpolated by a rational polynomial of degree at mostN.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Int,Exists,Polynomial,Rat,And,LE.le,Polynomial.natDegree,Eq,Polynomial.evalProof uses:
Set.InjOn,Finset,Finset.range,HAdd.hAdd,OfNat.ofNat,Membership.mem,Set,Iff.mp,Rat.natCast_inj,Exists.intro,LinearMap,RingHom.id,Lagrange.interpolate,And.intro,LT.lt,WithBot,Polynomial.degree,Finset.card,Lagrange.degree_interpolate_lt,diteand 17 more48 instances, coercions and auxiliary constants left out.
Tactic trace: 14 steps
Open to load the checked before-and-after goal states.
lemma interpolate_exists (a : ℕ → ℤ) (N : ℕ) : ∃ q : ℚ[X], q.natDegree ≤ N ∧ ∀ i : ℕ, i ≤ N → q.eval (i : ℚ) = (a i : ℚ) := by … - def
Usa1995P4.denomProdThe product of the denominators of the coefficients ofqof degree at mostNline 166 sourceSource documentation
The product of the denominators of the coefficients of
qof degree at mostN. Scalingqby this natural number clears the denominators.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Polynomial,Rat,NatProof uses:
Finset.prod,Finset.range,HAdd.hAdd,OfNat.ofNat,Rat.den,Finsupp,Polynomial.coeff10 instances, coercions and auxiliary constants left out.
def denomProd (q : ℚ[X]) (N : ℕ) : ℕ := ∏ i ∈ Finset.range (N + 1), (q.coeff i).den
- def
Usa1995P4.clearCoeffThe (integer) coefficients ofdenomProd q N • qline 169 sourceSource documentation
The (integer) coefficients of
denomProd q N • q.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Polynomial,Rat,Nat,IntProof uses:
Rat.num,HMul.hMul, Usa1995P4.denomProd,Finsupp,Polynomial.coeff10 instances, coercions and auxiliary constants left out.
def clearCoeff (q : ℚ[X]) (N : ℕ) (i : ℕ) : ℤ := …
- def
Usa1995P4.clearPolyThe integer polynomial obtained fromq : ℚ[X]by clearing denominators: its coefficients areclearCoeff q N, so it agrees withdenomProd q N • qon all evaluations line 175 sourceSource documentation
The integer polynomial obtained from
q : ℚ[X]by clearing denominators: its coefficients areclearCoeff q N, so it agrees withdenomProd q N • qon all evaluations.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Polynomial,Rat,Nat,IntProof uses:
Finset.sum,Finset.range,HAdd.hAdd,OfNat.ofNat,LinearMap,RingHom.id,Polynomial.monomial, Usa1995P4.clearCoeff14 instances, coercions and auxiliary constants left out.
noncomputable def clearPoly (q : ℚ[X]) (N : ℕ) : ℤ[X] := …
- lemma
Usa1995P4.denomProd_posline 178 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Polynomial,Rat,Nat,LT.lt,OfNat.ofNat, Usa1995P4.denomProdProof uses:
Finset.prod_pos,Rat.den,Finsupp,Polynomial.coeff,Finset.range,HAdd.hAdd,Membership.mem,Finset,Rat.den_pos19 instances, coercions and auxiliary constants left out.
- lemma
Usa1995P4.clearCoeff_specThe defining property ofclearCoeff: as rationals,clearCoeff q N iequalsdenomProd q N * q.coeff i(fori ≤ N) line 183 sourceSource documentation
The defining property of
clearCoeff: as rationals,clearCoeff q N iequalsdenomProd q N * q.coeff i(fori ≤ N).standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Polynomial,Rat,Nat,Membership.mem,Finset,Finset.range,HAdd.hAdd,OfNat.ofNat,Eq, Usa1995P4.clearCoeff,HMul.hMul, Usa1995P4.denomProd,Finsupp,Polynomial.coeffProof uses:
Finset.prod,Rat.den,Dvd.dvd,Finset.dvd_prod_of_mem,cast,Eq.symm,Eq.trans,congrArg,Int,Rat.num,Eq.mpr,id,Trans.trans,Mathlib.Tactic.Ring.of_eq,HPow.hPow,Nat.rawCast,Mathlib.Tactic.Ring.Common.mul_congr,Mathlib.Tactic.Ring.Common.atom_pf,rfl,Eq.refland 15 more73 instances, coercions and auxiliary constants left out.
Tactic trace: 16 steps
Open to load the checked before-and-after goal states.
lemma clearCoeff_spec (q : ℚ[X]) (N : ℕ) {i : ℕ} (hi : i ∈ Finset.range (N + 1)) : ((clearCoeff q N i : ℤ) : ℚ) = (denomProd q N : ℚ) * q.coeff i := by …Mentions: Usa1995P4.clearCoeff, Usa1995P4.denomProd
- lemma
Usa1995P4.clearPoly_evalline 200 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Polynomial,Rat,Nat,Int,Eq,Polynomial.eval, Usa1995P4.clearPoly,Finset.sum,Finset.range,HAdd.hAdd,OfNat.ofNat,HMul.hMul, Usa1995P4.clearCoeff,HPow.hPowProof uses:
Eq.mpr,LinearMap,RingHom.id,Polynomial.monomial,id,congrArg,Usa1995P4.clearPoly.eq_1,Polynomial.eval_finsetSum,Finset.sum_congr,rfl,Finset,Membership.mem,Polynomial.eval_monomial,Eq.refl36 instances, coercions and auxiliary constants left out.
Tactic trace: 3 steps
Open to load the checked before-and-after goal states.
- lemma
Usa1995P4.clearPoly_eval_castEvaluating the cleared polynomial givesdenomProd q Ntimes the evaluation ofq(as rational numbers) line 207 sourceSource documentation
Evaluating the cleared polynomial gives
denomProd q Ntimes the evaluation ofq(as rational numbers).standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Polynomial,Rat,Nat,LE.le,Polynomial.natDegree,Eq,Polynomial.eval,Int, Usa1995P4.clearPoly,HMul.hMul, Usa1995P4.denomProdProof uses:
Eq.mpr,Finset.sum,Finset.range,HAdd.hAdd,OfNat.ofNat, Usa1995P4.clearCoeff,HPow.hPow,id,congrArg, Usa1995P4.clearPoly_eval,Int.cast_sum,Finsupp,Polynomial.coeff,Finset.sum_congr,rfl,Finset,Membership.mem,Int.cast_mul,Int.cast_pow,Int.cast_natCastand 10 more63 instances, coercions and auxiliary constants left out.
Tactic trace: 4 steps
Open to load the checked before-and-after goal states.
lemma clearPoly_eval_cast (q : ℚ[X]) {N : ℕ} (hqN : q.natDegree ≤ N) (m : ℕ) : (((clearPoly q N).eval (m : ℤ) : ℤ) : ℚ) = (denomProd q N : ℚ) * q.eval (m : ℚ) := by …Mentions: Usa1995P4.clearPoly, Usa1995P4.denomProd
- lemma
Usa1995P4.clearPoly_nodeAt the interpolation nodesi ≤ N, the cleared polynomial takes the valuedenomProd q N * a iline 217 sourceSource documentation
At the interpolation nodes
i ≤ N, the cleared polynomial takes the valuedenomProd q N * a i.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Int,Polynomial,Rat,LE.le,Polynomial.natDegree,Eq,Polynomial.eval, Usa1995P4.clearPoly,HMul.hMul, Usa1995P4.denomProdProof uses: Usa1995P4.clearPoly_eval_cast,
Eq.mpr,id,congrArg,Eq.trans,Int.cast_mul,congrFun',Int.cast_natCast,Mathlib.Tactic.Ring.of_eq,HAdd.hAdd,HPow.hPow,Nat.rawCast,OfNat.ofNat,Mathlib.Tactic.Ring.Common.mul_congr,Mathlib.Tactic.Ring.Common.atom_pf,rfl,Eq.symm,Eq.refl,Mathlib.Tactic.Ring.Common.add_mul,Mathlib.Tactic.Ring.Common.mul_addand 10 more54 instances, coercions and auxiliary constants left out.
Tactic trace: 7 steps
Open to load the checked before-and-after goal states.
lemma clearPoly_node (a : ℕ → ℤ) {q : ℚ[X]} {N : ℕ} (hqN : q.natDegree ≤ N) (hqval : ∀ i : ℕ, i ≤ N → q.eval (i : ℚ) = (a i : ℚ)) {i : ℕ} (hi : i ≤ N) : (clearPoly q N).eval (i : ℤ) = (denomProd q N : ℤ) * a i := by …Mentions: Usa1995P4.clearPoly, Usa1995P4.denomProd
- lemma
Usa1995P4.clearPoly_dvdThe differenceclearPoly q N ⬝ m - denomProd q N * a mis divisible bym - ifor everyi ≤ Nline 229 sourceSource documentation
The difference
clearPoly q N ⬝ m - denomProd q N * a mis divisible bym - ifor everyi ≤ N.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Int,Dvd.dvd,HSub.hSub,Polynomial,Rat,LE.le,Polynomial.natDegree,Eq,Polynomial.eval,Membership.mem,Finset,Finset.range,HAdd.hAdd,OfNat.ofNat, Usa1995P4.clearPoly,HMul.hMul, Usa1995P4.denomProdProof uses:
Polynomial.sub_dvd_eval_sub, Usa1995P4.clearPoly_node,Iff.mp,LT.lt,Nat.succ,Nat.lt_succ_iff,Finset.mem_range,dvd_sub,dvd_mul_of_dvd_right,Eq.mpr,id,congrArg,Mathlib.Tactic.Ring.of_eq,HPow.hPow,Nat.rawCast,Int.rawCast,inferInstance,Ring,Int.negOfNat,Mathlib.Tactic.Ring.Common.sub_congrand 34 more65 instances, coercions and auxiliary constants left out.
Tactic trace: 8 steps
Open to load the checked before-and-after goal states.
lemma clearPoly_dvd (a : ℕ → ℤ) (hdiv : ∀ n m : ℕ, ((n : ℤ) - (m : ℤ)) ∣ a n - a m) {q : ℚ[X]} {N : ℕ} (hqN : q.natDegree ≤ N) (hqval : ∀ i : ℕ, i ≤ N → q.eval (i : ℚ) = (a i : ℚ)) (m : ℕ) {i : ℕ} (hi : i ∈ Finset.range (N + 1)) : ((m : ℤ) - (i : ℤ)) ∣ (clearPoly q N).eval (m : ℤ) - (denomProd q N : ℤ) * a m := by …Mentions: Usa1995P4.clearPoly, Usa1995P4.denomProd
- lemma
Usa1995P4.sum_pow_abs_leA sum of the form∑ c i * m ^ iwithm ≥ 1grows at most likem ^ Nline 252 sourceSource documentation
A sum of the form
∑ c i * m ^ iwithm ≥ 1grows at most likem ^ N.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Int,LE.le,OfNat.ofNat,abs,Finset.sum,Finset.range,HAdd.hAdd,HMul.hMul,HPow.hPow,Int.natAbsProof uses:
le_of_lt,Iff.mpr,LT.lt,Nat.cast_pos',lt_of_lt_of_le,inferInstance,PartialOrder,Zero,Mathlib.Meta.Positivity.pos_of_isNat,Mathlib.Meta.NormNum.isNat_ofNat,Eq.refl,Bool,Nat.ble,Trans.trans,Eq,Finset.abs_sum_le_sum_abs,Finset.sum_congr,rfl,Finset,Membership.memand 22 more109 instances, coercions and auxiliary constants left out.
Tactic trace: 11 steps
Open to load the checked before-and-after goal states.
lemma sum_pow_abs_le (c : ℕ → ℤ) (N : ℕ) (m : ℕ) (hm : 1 ≤ m) : |∑ i ∈ Finset.range (N + 1), c i * (m : ℤ) ^ i| ≤ ((∑ i ∈ Finset.range (N + 1), (c i).natAbs : ℕ) : ℤ) * (m : ℤ) ^ N := by … - lemma
Usa1995P4.abs_eval_leThe evaluation of an integer polynomial atm ≥ 1is bounded by a constant timesm ^ natDegreeline 272 sourceSource documentation
The evaluation of an integer polynomial at
m ≥ 1is bounded by a constant timesm ^ natDegree.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Polynomial,Int,Nat,LE.le,OfNat.ofNat,abs,Polynomial.eval,HMul.hMul,Finset.sum,Finset.range,HAdd.hAdd,Polynomial.natDegree,Int.natAbs,Finsupp,Polynomial.coeff,HPow.hPowProof uses:
Eq.mpr,id,Eq,congrArg,Polynomial.eval_eq_sum_range, Usa1995P4.sum_pow_abs_le46 instances, coercions and auxiliary constants left out.
Tactic trace: 2 steps
Open to load the checked before-and-after goal states.
lemma abs_eval_le (p : ℤ[X]) (m : ℕ) (hm : 1 ≤ m) : |p.eval (m : ℤ)| ≤ ((∑ i ∈ Finset.range (p.natDegree + 1), (p.coeff i).natAbs : ℕ) : ℤ) * (m : ℤ) ^ p.natDegree := by … - lemma
Usa1995P4.clearPoly_eq_of_largeKey step: for largem, the cleared polynomial agrees withdenomProd q N * a mline 283 sourceSource documentation
Key step: for large
m, the cleared polynomial agrees withdenomProd q N * a m. The difference is divisible by the lcm ofm, m - 1, ..., m - N, which (being larger than the product of the growth bounds) forces the difference to vanish.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Int,Dvd.dvd,HSub.hSub,Polynomial,Rat,LE.le,Polynomial.natDegree,Eq,Polynomial.eval,OfNat.ofNat,abs, Usa1995P4.clearPoly,HMul.hMul,HPow.hPow,LT.lt,HAdd.hAdd, Usa1995P4.denomProdProof uses:
rfl,Decidable.byContradiction,Not,Ne,Eq.mpr,id,congrArg,Iff.mpr,sub_ne_zero,Membership.mem,Finset,Finset.range,Int.natAbs, Usa1995P4.clearPoly_dvd,Nat.cast_sub,Iff.mp,Finset.mem_range,Int.ofNat_dvd_left,Eq.mp,Eq.symmand 107 more171 instances, coercions and auxiliary constants left out.
Tactic trace: 70 steps
Open to load the checked before-and-after goal states.
lemma clearPoly_eq_of_large (a : ℕ → ℤ) (hdiv : ∀ n m : ℕ, ((n : ℤ) - (m : ℤ)) ∣ a n - a m) {q : ℚ[X]} {N : ℕ} (hqN : q.natDegree ≤ N) (hqval : ∀ i : ℕ, i ≤ N → q.eval (i : ℚ) = (a i : ℚ)) {C C₁ : ℕ} (hC : ∀ m : ℕ, 1 ≤ m → |(clearPoly q N).eval (m : ℤ)| ≤ (C : ℤ) * (m : ℤ) ^ N) (hC₁ : ∀ m : ℕ, 1 ≤ m → |a m| ≤ (C₁ : ℤ) * (m : ℤ) ^ N) (m : ℕ) (hm : 2 * N < m) (hmB : 2 ^ (N + 1) * N ^ (N * (N + 1)) * (C + denomProd q N * C₁) < m) : (clearPoly q N).eval (m : ℤ) = (denomProd q N : ℤ) * a m := by …Mentions: Usa1995P4.clearPoly, Usa1995P4.denomProd
- lemma
Usa1995P4.clearPoly_eq_allDocumented declaration: clearPoly_eq_all line 384 sourceSource documentation
Tail argument: the cleared polynomial agrees with
denomProd q N * a nfor everyn(for large arguments useclearPoly_eq_of_large; divisibility byM - nfor a largeMthen forces equality atn).standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Int,Dvd.dvd,HSub.hSub,Polynomial,Rat,LE.le,Polynomial.natDegree,Eq,Polynomial.eval,OfNat.ofNat,abs, Usa1995P4.clearPoly,HMul.hMul,HPow.hPow, Usa1995P4.denomProdProof uses:
rfl,Int.natAbs,Exists,And,LT.lt,HAdd.hAdd,Exists.intro, Usa1995P4.clearPoly_eq_of_large,Polynomial.sub_dvd_eval_sub,dvd_sub,dvd_mul_of_dvd_right,Neg.neg,Eq.mpr,id,congrArg,Mathlib.Tactic.Ring.of_eq,Nat.rawCast,Mathlib.Meta.NormNum.instAddMonoidWithOne,inferInstance,Ringand 43 more94 instances, coercions and auxiliary constants left out.
Tactic trace: 26 steps
Open to load the checked before-and-after goal states.
lemma clearPoly_eq_all (a : ℕ → ℤ) (hdiv : ∀ n m : ℕ, ((n : ℤ) - (m : ℤ)) ∣ a n - a m) {q : ℚ[X]} {N : ℕ} (hqN : q.natDegree ≤ N) (hqval : ∀ i : ℕ, i ≤ N → q.eval (i : ℚ) = (a i : ℚ)) {C C₁ : ℕ} (hC : ∀ m : ℕ, 1 ≤ m → |(clearPoly q N).eval (m : ℤ)| ≤ (C : ℤ) * (m : ℤ) ^ N) (hC₁ : ∀ m : ℕ, 1 ≤ m → |a m| ≤ (C₁ : ℤ) * (m : ℤ) ^ N) (n : ℕ) : (clearPoly q N).eval (n : ℤ) = (denomProd q N : ℤ) * a n := by …Mentions: Usa1995P4.clearPoly, Usa1995P4.denomProd
- problem
Usa1995P4.usa1995_p4line 426 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Int,Dvd.dvd,HSub.hSub,Exists,Polynomial,GT.gt,Polynomial.eval,abs,Rat,EqProof uses:
And,LE.le,Polynomial.natDegree, Usa1995P4.interpolate_exists,OfNat.ofNat, Usa1995P4.clearPoly,HMul.hMul,HPow.hPow,Exists.intro,Finset.sum,Finset.range,HAdd.hAdd,Int.natAbs, Usa1995P4.clearCoeff,Eq.mpr,id,congrArg, Usa1995P4.clearPoly_eval, Usa1995P4.sum_pow_abs_le,Finsuppand 38 more86 instances, coercions and auxiliary constants left out.
Tactic trace: 23 steps
Open to load the checked before-and-after goal states.