Compfiles/Imo2006P5.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
6 declarations, 0 contain sorry, 0 declared as axioms
International Mathematical Olympiad 2006, Problem 5
Let $P(x)$ be a polynomial of degree $n>1$ with integer coefficients, and let $k$ be a positive integer. Consider the polynomial $Q(x) = P(P(\ldots P(P(x))\ldots))$, where $P$ occurs $k$ times. Prove that there are at most $n$ integers $t$ such that $Q(t)=t$.
Imported by 1 file
- theorem
Imo2006P5.Int.natAbs_eq_of_chain_dvdIf every entry in a cyclic list of integers divides the next, then they all have the same absolute value line 63 sourceSource documentation
If every entry in a cyclic list of integers divides the next, then they all have the same absolute value.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Cycle,Int,Cycle.Chain,Dvd.dvd,Membership.mem,Eq,Nat,Int.natAbsProof uses:
Int.natAbs_eq_of_dvd_dvd,Eq.mp,congrArg,propext,Cycle.chain_iff_pairwise6 instances, coercions and auxiliary constants left out.
Tactic trace: 2 steps
Open to load the checked before-and-after goal states.
theorem Int.natAbs_eq_of_chain_dvd {l : Cycle ℤ} {x y : ℤ} (hl : l.Chain (· ∣ ·)) (hx : x ∈ l) (hy : y ∈ l) : x.natAbs = y.natAbs := by … - theorem
Imo2006P5.Int.add_eq_add_of_natAbs_eq_of_natAbs_eqline 68 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Int,Ne,Eq,Nat,Int.natAbs,HSub.hSub,HAdd.hAdd7 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
- theorem
Imo2006P5.Polynomial.isPeriodicPt_eval_twoThe main lemma in the proof: if $P^k(t)=t$, then $P(P(t))=t$ line 74 sourceSource documentation
The main lemma in the proof: if $P^k(t)=t$, then $P(P(t))=t$.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Polynomial,Int,Membership.mem,Set,Function.periodicPts,Polynomial.eval,Function.IsPeriodicPt,OfNat.ofNat,NatProof uses:
Cycle,Cycle.map,HSub.hSub,Function.periodicOrbit,Nat.iterate,HAdd.hAdd,Eq.mpr,Exists,And,Eq,id,congrArg,propext,Cycle.mem_map,Nat.succ,Function.iterate_succ_apply',Exists.intro,And.intro,Function.iterate_mem_periodicOrbit,rfland 52 more57 instances, coercions and auxiliary constants left out.
Tactic trace: 42 steps
Open to load the checked before-and-after goal states.
theorem Polynomial.isPeriodicPt_eval_two {P : Polynomial ℤ} {t : ℤ} (ht : t ∈ periodicPts fun x => P.eval x) : IsPeriodicPt (fun x => P.eval x) 2 t := by …Mentions: P
- theorem
Imo2006P5.Polynomial.iterate_comp_sub_X_neline 133 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Polynomial,Int,LT.lt,Nat,OfNat.ofNat,Polynomial.natDegree,Ne,HSub.hSub,Nat.iterate,Polynomial.comp,Polynomial.XProof uses:
Eq.mpr,id,Eq,congrArg,propext,sub_ne_zero,ne_of_apply_ne,And,Not,Eq.trans,HPow.hPow,congr,HMul.hMul,Polynomial.natDegree_iterate_comp,Polynomial.natDegree_X,mul_one,Or,Eq.mp,LT.lt.ne',one_lt_pow₀62 instances, coercions and auxiliary constants left out.
Tactic trace: 3 steps
Open to load the checked before-and-after goal states.
- theorem
Imo2006P5.imo2006_p5'We solve the problem for the specific case k = 2 first line 140 sourceSource documentation
We solve the problem for the specific case k = 2 first.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Polynomial,Int,LT.lt,Nat,OfNat.ofNat,Polynomial.natDegree,LE.le,Finset.card,Multiset.toFinset,Polynomial.roots,HSub.hSub,Polynomial.comp,Polynomial.XProof uses:
Eq,Eq.mpr,id,congrArg,Polynomial.natDegree_sub_eq_left_of_natDegree_lt,congrFun',Polynomial.natDegree_X,Eq.refl,Ne,False.elim,False,LE.le.not_gt,zero_le_one,Eq.mp,Eq.symm,Polynomial.natDegree_zero,dite,Finset,LE.le.trans,Finset.card_le_cardand 39 more81 instances, coercions and auxiliary constants left out.
Tactic trace: 50 steps
Open to load the checked before-and-after goal states.
theorem imo2006_p5' {P : Polynomial ℤ} (hP : 1 < P.natDegree) : (P.comp P - X).roots.toFinset.card ≤ P.natDegree := by …Mentions: P
- problem
Imo2006P5.imo2006_p5line 198 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Polynomial,Int,LT.lt,Nat,OfNat.ofNat,Polynomial.natDegree,LE.le,Finset.card,Multiset.toFinset,Polynomial.roots,HSub.hSub,Nat.iterate,Polynomial.comp,Polynomial.XProof uses:
LE.le.trans,Finset.card_le_card,Membership.mem,Finset,Ne,id,Eq.mp,Not,Eq,congrFun',congrArg,Polynomial.comp_X, Imo2006P5.Polynomial.iterate_comp_sub_X_ne,zero_lt_two,Polynomial.IsRoot,Polynomial.isRoot_of_mem_roots,Iff.mp,Multiset,Multiset.mem_toFinset,Eq.mprand 16 more50 instances, coercions and auxiliary constants left out.
Tactic trace: 7 steps
Open to load the checked before-and-after goal states.