Zulip Chat Archive
Stream: Is there code for X?
Topic: Polynomial pigeonhole
Violeta Hernández (Feb 03 2026 at 14:33):
There's got to be some lemma that proves the brunt of this, but I'm not sure how to find it.
import Mathlib.Algebra.Polynomial.Degree.Defs
import Mathlib.Algebra.Polynomial.Eval.Defs
import Mathlib.Data.Set.Card
open Polynomial in
theorem ncard_polynomial_image {R : Type*} [Field R] (p : R[X]) (s : Set R) :
s.ncard / p.natDegree ≤ (p.eval '' s).ncard := by
sorry
The idea of course is that there can only be p.natDegree collisions per polynomial.
Junyan Xu (Feb 04 2026 at 13:40):
You should be able to show (p.eval ⁻¹' t).ncard ≤ p.natDegree * t.ncard from Polynomial.preimage_eval_singleton (recently added), then take t = p.eval '' s and use monotonicity of ncard. I wouldn't call this pigeonhole ...
Last updated: Feb 28 2026 at 14:05 UTC