Zulip Chat Archive

Stream: general

Topic: go from relation to polynomial


Jack J Garzella (Jun 24 2020 at 02:15):

Say I have a linear relation on the finset 1, α, α^2, ..., α^n (e.g. from the lemma exists_nontrivial_relation_of_dim_lt_card), which on paper I might write as c_0 * 1 + c_1 * α +, ..., c_n * α^n = 0. I want to reinterpret this equation as the statement "the polynomial c_0 * 1 + c_1 * x +, ..., c_n * x^n has α as a root. It's unclear to me how to even get the polynomial in the first place, and then one would need to assert that it has the proper root.

This seems like a good example of a statement that is "mathematically obvious" but very subtle in Lean. How should one go about this?

This step is key in the proof of the following lemma

lemma degree_le_findim (x : L) {hx : is_integral F x} :
degree (minimal_polynomial hx)  findim F L := sorry

Alex J. Best (Jun 24 2020 at 02:33):

(in mathlib) A polynomial over K is a function \N \to K with finite support, so the slickest way is probably to define the function as a composition \N \to V \to K where V \to K is from exists_nontrivial_relation_of_dim_lt_card and \N \to V is the map \lambda n, \alpha^n, then prove this has finite support. What I wrote doesn't quite make sense as really you want \N \to K to send any m bigger than the original degree to 0, so there should be an if in there or something too.

Scott Morrison (Jun 24 2020 at 03:59):

(This is an excellent question, and I would love to see progress here! I've already wanted this for the second half of Schur's lemma.)

Johan Commelin (Jun 24 2020 at 04:37):

@Jack J Garzella In what form do you have the linear relation?

Johan Commelin (Jun 24 2020 at 04:38):

As some sort of finset.sum or as something being an element of the span of other elements?

Johan Commelin (Jun 24 2020 at 04:38):

Or maybe something else?

Johan Commelin (Jun 24 2020 at 04:51):

Whatever the shape you have it in, I agree that it makes sense to add a new constructor for polynomials.
Something like this

def polynomial.of_relation := sorry -- figuring out the correct generality here might be non-trivial...

lemma polynomial.of_relation_is_root :
  eval\2 _ _ (polynomial.of_relation _ _ _ _) x = 0

Anne Baanen (Jun 24 2020 at 08:39):

Did you already check the proof that a Noetherian (i.e. finite-dimensional) field extension is integral? It has a relatively explicit construction, although I don't understand all the details from reading it.


Last updated: Dec 20 2023 at 11:08 UTC