Compfiles/Usa2019P3.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
24 declarations, 0 contain sorry, 0 declared as axioms
USA Mathematical Olympiad 2019, Problem 3
Let K be the set of positive integers not containing the decimal digit 7. Determine all polynomials f(x) with nonnegative coefficients such that f(x) ∈ K for all x ∈ K.
Imports (6)
Imported by 1 file
- def
Usa2019P3.KThe set of positive integers whose decimal representation does not contain the digit 7 line 34 sourceSource documentation
The set of positive integers whose decimal representation does not contain the digit 7.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Set,NatProof uses:
Set.ofPred,And,LT.lt,OfNat.ofNat,Not,Membership.mem,List,Nat.digits3 instances, coercions and auxiliary constants left out.
def K : Set ℕ := {n | 0 < n ∧ 7 ∉ Nat.digits 10 n} - theorem
Usa2019P3.mem_Kline 36 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Iff,Membership.mem,Set, Usa2019P3.K,And,LT.lt,OfNat.ofNat,Not,List,Nat.digitsProof uses:
Iff.rfl5 instances, coercions and auxiliary constants left out.
- determine
Usa2019P3.solution_setThe polynomials that mapKintoK: the constants with value inK, and the polynomials10^e * x + kwithk < 10^eandk ∈ K ∪ {0}line 40 sourceSource documentation
The polynomials that map
KintoK: the constants with value inK, and the polynomials10^e * x + kwithk < 10^eandk ∈ K ∪ {0}.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Set,Polynomial,NatProof uses:
Set.ofPred,Or,Exists,And,Membership.mem, Usa2019P3.K,Eq,RingHom,Polynomial.C,LT.lt,HPow.hPow,OfNat.ofNat,HAdd.hAdd,HMul.hMul,Polynomial.X17 instances, coercions and auxiliary constants left out.
determine solution_set : Set (Polynomial ℕ) := …
- theorem
Usa2019P3.one_mem_Kline 66 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Membership.mem,Nat,Set, Usa2019P3.K,OfNat.ofNatProof uses:
And.intro,LT.lt,Not,List,Nat.digits,Mathlib.Meta.NormNum.isNat_lt_true,Mathlib.Meta.NormNum.isNat_ofNat,Eq.refl,Bool,Bool.false,Eq,List.cons,List.nil,Nat.digits_of_lt,Mathlib.Meta.NormNum.isNat_eq_false,Eq.mpr,id,congrArg,of_eq_true,Eq.transand 6 more18 instances, coercions and auxiliary constants left out.
Tactic trace: 7 steps
Open to load the checked before-and-after goal states.
- theorem
Usa2019P3.digits_len_le_of_lt_powThe decimal digits ofahave length at mostkwhena < 10 ^ kline 73 sourceSource documentation
The decimal digits of
ahave length at mostkwhena < 10 ^ k.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,LT.lt,HPow.hPow,OfNat.ofNat,LE.le,List.length,Nat.digitsProof uses:
Iff.mpr,Nat.digits_length_le_iff,Mathlib.Meta.NormNum.isNat_lt_true,Mathlib.Meta.NormNum.isNat_ofNat,Eq.refl,Bool,Bool.false22 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
theorem digits_len_le_of_lt_pow {a k : ℕ} (h : a < 10 ^ k) : (Nat.digits 10 a).length ≤ k := …Mentions: h
- theorem
Usa2019P3.digits_mul_pow_addDocumented declaration: digits_mul_pow_add line 80 sourceSource documentation
Core concatenation lemma: if
a < 10 ^ kand0 < m, then the decimal digits ofm * 10 ^ k + aare the digits ofa, padded with zeros up to lengthk, followed by the digits ofm.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,LT.lt,OfNat.ofNat,HPow.hPow,Eq,List,Nat.digits,HAdd.hAdd,HMul.hMul,HAppend.hAppend,List.replicate,HSub.hSub,List.lengthProof uses:
LE.le, Usa2019P3.digits_len_le_of_lt_pow,Eq.mpr,id,congrArg,Nat.add_sub_cancel',Mathlib.Tactic.Ring.of_eq,Nat.rawCast,Mathlib.Tactic.Ring.Common.add_congr,Mathlib.Tactic.Ring.Common.mul_congr,Mathlib.Tactic.Ring.Common.atom_pf,rfl,Eq.symm,Eq.refl,Mathlib.Tactic.Ring.Common.pow_congr,Mathlib.Tactic.Ring.cast_pos,Mathlib.Meta.NormNum.isNat_ofNat,Mathlib.Tactic.Ring.Common.pow_add,Mathlib.Tactic.Ring.Common.single_pow,Mathlib.Tactic.Ring.Common.pow_prod_atomand 18 more48 instances, coercions and auxiliary constants left out.
Tactic trace: 7 steps
Open to load the checked before-and-after goal states.
theorem digits_mul_pow_add {m a k : ℕ} (hm : 0 < m) (ha : a < 10 ^ k) : Nat.digits 10 (m * 10 ^ k + a) = Nat.digits 10 a ++ List.replicate (k - (Nat.digits 10 a).length) 0 ++ Nat.digits 10 m := by … - theorem
Usa2019P3.seven_mem_digits_of_le_ltAny natural number in[7 * 10 ^ E, 8 * 10 ^ E)contains the digit 7 (in fact, as its leading digit) line 94 sourceSource documentation
Any natural number in
[7 * 10 ^ E, 8 * 10 ^ E)contains the digit 7 (in fact, as its leading digit).standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,LE.le,HMul.hMul,OfNat.ofNat,HPow.hPow,LT.lt,Membership.mem,List,Nat.digitsProof uses:
HSub.hSub,Eq,HAdd.hAdd,Eq.mpr,id,congrArg,HAppend.hAppend,List.replicate,List.length, Usa2019P3.digits_mul_pow_add,Mathlib.Meta.NormNum.isNat_lt_true,Mathlib.Meta.NormNum.isNat_ofNat,Eq.refl,Bool,Bool.false,List.cons,List.nil,Nat.digits_of_lt,Mathlib.Meta.NormNum.isNat_eq_false,List.mem_concat_self36 instances, coercions and auxiliary constants left out.
Tactic trace: 11 steps
Open to load the checked before-and-after goal states.
theorem seven_mem_digits_of_le_lt {y E : ℕ} (h1 : 7 * 10 ^ E ≤ y) (h2 : y < 8 * 10 ^ E) : 7 ∈ Nat.digits 10 y := by … - theorem
Usa2019P3.digits_ten_pow_sub_oneThe decimal digits of10 ^ s - 1are exactlysnines line 104 sourceSource documentation
The decimal digits of
10 ^ s - 1are exactlysnines.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Eq,List,Nat.digits,OfNat.ofNat,HSub.hSub,HPow.hPow,List.replicateProof uses:
Nat.recAux,of_eq_true,List.nil,Eq.trans,True,congrFun',congrArg,pow_zero,tsub_self,Nat.digits_zero,eq_self,LT.lt,pow_pos,Mathlib.Meta.NormNum.isNat_lt_true,Mathlib.Meta.NormNum.isNat_ofNat,Eq.refl,Bool,Bool.false,HAdd.hAdd,HMul.hMuland 15 more49 instances, coercions and auxiliary constants left out.
Tactic trace: 16 steps
Open to load the checked before-and-after goal states.
theorem digits_ten_pow_sub_one (s : ℕ) : Nat.digits 10 (10 ^ s - 1) = List.replicate s 9 := by … - theorem
Usa2019P3.seven_pow_sub_one_mem_KThe number7 * 10 ^ s - 1(i.e. a six followed bysnines) lies inKline 121 sourceSource documentation
The number
7 * 10 ^ s - 1(i.e. a six followed bysnines) lies inK.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Membership.mem,Set, Usa2019P3.K,HSub.hSub,HMul.hMul,OfNat.ofNat,HPow.hPowProof uses:
LT.lt,pow_pos,Mathlib.Meta.NormNum.isNat_lt_true,Mathlib.Meta.NormNum.isNat_ofNat,Eq.refl,Bool,Bool.false,And.intro,Not,List,Nat.digits,Eq,HAdd.hAdd,Nat.sub_lt,Eq.mpr,id,congrArg,HAppend.hAppend,List.replicate,List.lengthand 22 more49 instances, coercions and auxiliary constants left out.
Tactic trace: 17 steps
Open to load the checked before-and-after goal states.
theorem seven_pow_sub_one_mem_K (s : ℕ) : 7 * 10 ^ s - 1 ∈ K := by …
Mentions: Usa2019P3.K
- def
Usa2019P3.dropTrailingZerosRemove the trailing (i.e. most significant) zeros of a digit list line 134 sourceSource documentation
Remove the trailing (i.e. most significant) zeros of a digit list.
no axioms what this means
Statement uses:
List,NatProof uses:
List.reverse,List.dropWhile,Decidable.decide,Eq,OfNat.ofNat2 instances, coercions and auxiliary constants left out.
def dropTrailingZeros (L : List ℕ) : List ℕ := (L.reverse.dropWhile (· = 0)).reverse
- theorem
Usa2019P3.ofDigits_eq_zero_of_forall_eq_zeroline 136 sourcestandard axioms: propext what this means
Statement uses:
List,Nat,Membership.mem,Eq,OfNat.ofNat,Nat.ofDigitsProof uses:
List.rec,List.nil,Eq.refl,List.cons,Eq.mpr,HAdd.hAdd,HMul.hMul,id,congrArg,Nat.ofDigits_cons,List.mem_cons_self,List.mem_cons_of_mem,MulZeroClass.mul_zero,add_zero19 instances, coercions and auxiliary constants left out.
Tactic trace: 3 steps
Open to load the checked before-and-after goal states.
- theorem
Usa2019P3.ofDigits_dropTrailingZerosline 144 sourcestandard axioms: propext what this means
Statement uses:
List,Nat,Eq,Nat.ofDigits,OfNat.ofNat, Usa2019P3.dropTrailingZerosProof uses:
HAppend.hAppend,List.reverse,List.takeWhile,Decidable.decide,List.dropWhile,rfl,Eq.mpr,id,congrArg,Eq.rec,Eq.refl,Eq.trans,Eq.symm,List.reverse_reverse,List.takeWhile_append_dropWhile,List.reverse_append,HAdd.hAdd,HMul.hMul,HPow.hPow,List.lengthand 10 more25 instances, coercions and auxiliary constants left out.
Tactic trace: 10 steps
Open to load the checked before-and-after goal states.
- theorem
Usa2019P3.digits_ofDigits_eq_dropTrailingZerosline 161 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
List,Nat,Membership.mem,LT.lt,OfNat.ofNat,Eq,Nat.digits,Nat.ofDigits, Usa2019P3.dropTrailingZerosProof uses:
List.reverseRecOn,List.nil,Eq.refl,HAppend.hAppend,List.cons,dite,Eq.mpr,id,congrArg,Nat.ofDigits_append_zero,List.mem_append_left,List.reverse,List.dropWhile,Decidable.decide,List.reverse_append,of_eq_true,Eq.trans,True,congrFun',List.reverse_consand 23 more22 instances, coercions and auxiliary constants left out.
Tactic trace: 26 steps
Open to load the checked before-and-after goal states.
- theorem
Usa2019P3.mem_dropTrailingZeros_of_memline 185 sourcestandard axioms: propext what this means
Statement uses:
Nat,Ne,OfNat.ofNat,List,Membership.mem, Usa2019P3.dropTrailingZerosProof uses:
id,Eq.mpr,List.reverse,List.dropWhile,Decidable.decide,Eq,congrArg,propext,List.mem_reverse,HAppend.hAppend,List.takeWhile,List.takeWhile_append_dropWhile,Or,Eq.mp,List.mem_append,Eq.symm,absurd,of_decide_eq_true,List.mem_takeWhile_imp8 instances, coercions and auxiliary constants left out.
Tactic trace: 10 steps
Open to load the checked before-and-after goal states.
- theorem
Usa2019P3.not_mem_ofDigits_of_not_memIf all entries ofLare digits and7does not occur in the digits ofNat.ofDigits 10 L, then7does not occur inLeither line 198 sourceSource documentation
If all entries of
Lare digits and7does not occur in the digits ofNat.ofDigits 10 L, then7does not occur inLeither.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
List,Nat,Membership.mem,LT.lt,OfNat.ofNat,Not,Nat.digits,Nat.ofDigitsProof uses:
Eq.mpr, Usa2019P3.dropTrailingZeros,id,Eq,congrArg, Usa2019P3.digits_ofDigits_eq_dropTrailingZeros, Usa2019P3.mem_dropTrailingZeros_of_mem,Mathlib.Meta.NormNum.isNat_eq_false,Mathlib.Meta.NormNum.isNat_ofNat,Eq.refl,Bool,Bool.false10 instances, coercions and auxiliary constants left out.
Tactic trace: 5 steps
Open to load the checked before-and-after goal states.
theorem not_mem_ofDigits_of_not_mem {L : List ℕ} (hL : ∀ l ∈ L, l < 10) (h : 7 ∉ Nat.digits 10 (Nat.ofDigits 10 L)) : 7 ∉ L := by …Mentions: h
- theorem
Usa2019P3.ofDigits_flatMap_digits_padThe base-10 value of the digit list obtained by concatenating the padded blocks ofb 0, b 1, …, b (n - 1)(each block padded to widthE) equals∑ i, b i * 10 ^ (E * i)line 208 sourceSource documentation
The base-10 value of the digit list obtained by concatenating the padded blocks of
b 0, b 1, …, b (n - 1)(each block padded to widthE) equals∑ i, b i * 10 ^ (E * i).standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,LT.lt,HPow.hPow,OfNat.ofNat,Eq,Nat.ofDigits,List.flatMap,HAppend.hAppend,List,Nat.digits,List.replicate,HSub.hSub,List.length,List.range,Finset.sum,Finset.range,HMul.hMulProof uses:
Nat.recAux,of_eq_true,Eq.trans,True,congrFun',congrArg,List.nil,List.flatMap_nil,eq_self,LE.le,Iff.mpr,Nat.digits_length_le_iff,Mathlib.Meta.NormNum.isNat_lt_true,Mathlib.Meta.NormNum.isNat_ofNat,Eq.refl,Bool,Bool.false,Eq.mpr,HAdd.hAdd,idand 21 more51 instances, coercions and auxiliary constants left out.
Tactic trace: 11 steps
Open to load the checked before-and-after goal states.
theorem ofDigits_flatMap_digits_pad {E : ℕ} (b : ℕ → ℕ) (hb : ∀ i, b i < 10 ^ E) (n : ℕ) : Nat.ofDigits 10 ((List.range n).flatMap fun i => Nat.digits 10 (b i) ++ List.replicate (E - (Nat.digits 10 (b i)).length) 0) = ∑ i ∈ Finset.range n, b i * 10 ^ (E * i) := by … - theorem
Usa2019P3.coeff_stableReduction to monomials: iffmapsKintoKand itsi-th coefficient is nonzero, thenf.coeff i * m ^ i ∈ Kfor everym ∈ Kline 235 sourceSource documentation
Reduction to monomials: if
fmapsKintoKand itsi-th coefficient is nonzero, thenf.coeff i * m ^ i ∈ Kfor everym ∈ K. The idea: evaluate at10 ^ E * mfor a hugeE; the decimal digits of the result are the padded blocks of the digits off.coeff i * m ^ i.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Polynomial,Nat,Membership.mem,Set, Usa2019P3.K,Polynomial.eval,Ne,Finsupp,Polynomial.coeff,OfNat.ofNat,HMul.hMul,HPow.hPowProof uses:
LT.lt,Not,List,Nat.digits,Eq,rfl,Finset.sum,Finset.range,HAdd.hAdd,Polynomial.natDegree,dite,LE.le,Finset.single_le_sum,Finset,Nat.zero_le,Iff.mpr,Finset.mem_range,Nat.lt_succ_of_le,Nat.lt_pow_self,Mathlib.Meta.NormNum.isNat_lt_trueand 79 more83 instances, coercions and auxiliary constants left out.
Tactic trace: 73 steps
Open to load the checked before-and-after goal states.
theorem coeff_stable {f : Polynomial ℕ} (hf : ∀ n ∈ K, f.eval n ∈ K) {m : ℕ} (hm : m ∈ K) {i : ℕ} (hi : f.coeff i ≠ 0) : f.coeff i * m ^ i ∈ K := by …Mentions: f, Usa2019P3.K
- theorem
Usa2019P3.eq_ten_pow_of_stableLinear classification: ifx ↦ c * xmapsKintoKandc ≠ 0, thencis a power of ten line 305 sourceSource documentation
Linear classification: if
x ↦ c * xmapsKintoKandc ≠ 0, thencis a power of ten. Otherwise, withd * 10 ^ e ≤ c < (d + 1) * 10 ^ eandd ∈ {1, …, 9} ∖ {7}, an explicit multiplierx ∈ K(depending ond) makesc * xbegin with the digit7.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Ne,OfNat.ofNat,Membership.mem,Set, Usa2019P3.K,HMul.hMul,Exists,Eq,HPow.hPowProof uses:
Classical.byContradiction,Not, Usa2019P3.one_mem_K,Eq.mp,congrArg,mul_one,LT.lt,List,Nat.digits,False,List.length,List.length_pos_of_ne_nil,Iff.mpr,List.nil,Nat.digits_ne_nil_iff_ne_zero,HSub.hSub,rfl,pow_pos,Mathlib.Meta.NormNum.isNat_lt_true,Mathlib.Meta.NormNum.isNat_ofNatand 86 more132 instances, coercions and auxiliary constants left out.
Tactic trace: 268 steps (first 200 of 268)
Open to load the checked before-and-after goal states.
theorem eq_ten_pow_of_stable {c : ℕ} (hc : c ≠ 0) (hstab : ∀ m ∈ K, c * m ∈ K) : ∃ e, c = 10 ^ e := by …Mentions: Usa2019P3.K
- theorem
Usa2019P3.coeff_zero_pow_linearThe constant coefficient of(a * x + b) ^ disb ^ dline 459 sourceSource documentation
The constant coefficient of
(a * x + b) ^ disb ^ d.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Eq,Finsupp,Polynomial.coeff,HPow.hPow,Polynomial,HAdd.hAdd,HMul.hMul,RingHom,Polynomial.C,Polynomial.X,OfNat.ofNatProof uses:
Nat.recAux,of_eq_true,Eq.trans,True,congr,congrArg,congrFun',eq_natCast,pow_zero,Polynomial.coeff_one_zero,eq_self,Eq.mpr,id,pow_succ,Polynomial.mul_coeff_zero,Polynomial.coeff_add,ite,Polynomial.coeff_natCast_ite,ite_eq_left_of_eq_true,Polynomial.coeff_X_zeroand 2 more57 instances, coercions and auxiliary constants left out.
Tactic trace: 4 steps
Open to load the checked before-and-after goal states.
theorem coeff_zero_pow_linear (d a b : ℕ) : ((C a * X + C b) ^ d).coeff 0 = b ^ d := by …
- theorem
Usa2019P3.coeff_one_pow_linearThe coefficient ofxin(a * x + b) ^ disd * a * b ^ (d - 1)line 467 sourceSource documentation
The coefficient of
xin(a * x + b) ^ disd * a * b ^ (d - 1).standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Eq,Finsupp,Polynomial.coeff,HPow.hPow,Polynomial,HAdd.hAdd,HMul.hMul,RingHom,Polynomial.C,Polynomial.X,OfNat.ofNat,HSub.hSubProof uses:
Nat.recAux,of_eq_true,Eq.trans,True,congr,congrArg,ite,congrFun',eq_natCast,pow_zero,Polynomial.coeff_one,ite_eq_right_of_eq_false,MulZeroClass.zero_mul,zero_tsub,mul_one,eq_self,Eq.mpr,id,pow_succ,Polynomial.mul_coeff_oneand 45 more81 instances, coercions and auxiliary constants left out.
Tactic trace: 15 steps
Open to load the checked before-and-after goal states.
theorem coeff_one_pow_linear (d a b : ℕ) : ((C a * X + C b) ^ d).coeff 1 = d * a * b ^ (d - 1) := by … - theorem
Usa2019P3.not_stable_of_degree_two_leHigher-degree classification: no monomialc * x ^ dwithd ≥ 2mapsKintoKline 489 sourceSource documentation
Higher-degree classification: no monomial
c * x ^ dwithd ≥ 2mapsKintoK. Otherwisec * (10x + 3) ^ dwould be stable too, and reducing to monomials forcesc * d * 3 ^ (d - 1) * 10to be a power of ten, which is impossible since it is divisible by3.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Ne,OfNat.ofNat,LE.le,Membership.mem,Set, Usa2019P3.K,HMul.hMul,HPow.hPow,FalseProof uses:
HAdd.hAdd,LT.lt,Not,List,Nat.digits,And.intro,Eq,HAppend.hAppend,List.replicate,HSub.hSub,List.length, Usa2019P3.digits_mul_pow_add,Mathlib.Meta.NormNum.isNat_lt_true,Mathlib.Meta.NormNum.isNat_ofNat,Eq.refl,Mathlib.Meta.NormNum.isNat_pow,Mathlib.Meta.NormNum.natPow_one,Bool,Bool.false,List.consand 84 more86 instances, coercions and auxiliary constants left out.
Tactic trace: 52 steps
Open to load the checked before-and-after goal states.
theorem not_stable_of_degree_two_le {c d : ℕ} (hc : c ≠ 0) (hd : 2 ≤ d) (hstab : ∀ m ∈ K, c * m ^ d ∈ K) : False := by …Mentions: Usa2019P3.K
- theorem
Usa2019P3.const_lt_of_linear_stableIfx ↦ 10 ^ e * x + kmapsKintoKandk ≠ 0, thenk < 10 ^ eline 536 sourceSource documentation
If
x ↦ 10 ^ e * x + kmapsKintoKandk ≠ 0, thenk < 10 ^ e. Otherwise, writingk = q * 10 ^ e + rwithq ≥ 1, the inputx = 7 * 10 ^ q - 1 ∈ Kmakesx + qstart with the digit7.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Membership.mem,Set, Usa2019P3.K,HAdd.hAdd,HMul.hMul,HPow.hPow,OfNat.ofNat,LT.ltProof uses:
Decidable.byContradiction,Not,pow_pos,Mathlib.Meta.NormNum.isNat_lt_true,Mathlib.Meta.NormNum.isNat_ofNat,Eq.refl,Bool,Bool.false,Exists,And,Eq,False,Exists.intro,HDiv.hDiv,HMod.hMod,And.intro,Nat.div_pos,Eq.mp,LE.le,Nat.mod_ltand 49 more68 instances, coercions and auxiliary constants left out.
Tactic trace: 35 steps
Open to load the checked before-and-after goal states.
theorem const_lt_of_linear_stable {e k : ℕ} (hstab : ∀ n ∈ K, 10 ^ e * n + k ∈ K) : k < 10 ^ e := by …Mentions: Usa2019P3.K
- theorem
Usa2019P3.stable_of_formDocumented declaration: stable_of_form line 571 sourceSource documentation
The polynomials
10 ^ e * x + kwithk < 10 ^ eandk ∈ K ∪ {0}do mapKintoK: the decimal digits of10 ^ e * n + kare the digits ofkpadded to widthe, followed by the digits ofn.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,LT.lt,HPow.hPow,OfNat.ofNat,Or,Eq,Membership.mem,Set, Usa2019P3.K,Polynomial.eval,HAdd.hAdd,Polynomial,HMul.hMul,RingHom,Polynomial.C,Polynomial.XProof uses:
Not,List,Nat.digits,of_eq_true,Eq.trans,True,congrFun',congrArg,congr,eq_natCast,Nat.cast_pow,Polynomial.eval_add,Polynomial.eval_mul,Polynomial.eval_pow,Polynomial.eval_ofNat,Polynomial.eval_X,Polynomial.eval_natCast,eq_self,Eq.mpr,idand 29 more77 instances, coercions and auxiliary constants left out.
Tactic trace: 29 steps
Open to load the checked before-and-after goal states.
theorem stable_of_form {e k : ℕ} (hlt : k < 10 ^ e) (hk : k = 0 ∨ k ∈ K) : ∀ n ∈ K, (C (10 ^ e) * X + C k).eval n ∈ K := by …Mentions: Usa2019P3.K
- problem
Usa2019P3.usa2019_p3line 597 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Polynomial,Nat,Iff,Membership.mem,Set, Usa2019P3.K,Polynomial.eval, Usa2019P3.solution_setProof uses:
id,Iff.intro,Or,Exists,And,Eq,RingHom,Polynomial.C,LT.lt,HPow.hPow,OfNat.ofNat,HAdd.hAdd,HMul.hMul,Polynomial.X,Ne,False, Usa2019P3.one_mem_K,absurd,And.left,Notand 68 more76 instances, coercions and auxiliary constants left out.
Tactic trace: 73 steps
Open to load the checked before-and-after goal states.