Zulip Chat Archive
Stream: maths
Topic: mv_polynomial.vars
Chris Hughes (Sep 12 2021 at 20:53):
I'm really struggling with mv_polynomial.vars
. I'm looking for some lemma that I can use to reason about it without having to think about polynomials as finsupp
. Something like the fact that p
is in the image of the canonical map from mv_polynomial p.vars R
, or the fact that for any set s
, algebra.adjoin (X '' s) = {p | ↑p.vars ⊆ s}
. Does someone who knows this part of the library have a good idea about how to do this?
Adam Topaz (Sep 12 2021 at 21:13):
Is docs#mv_polynomial.eval₂ the preferred way to "change the variables type" (after composition with mv_polynomial.X
of course)? The API search comes up with nothing when I look for mv_polynomial vars eval
which is not very promising...
Chris Hughes (Sep 12 2021 at 23:00):
(deleted)
Chris Hughes (Sep 12 2021 at 23:01):
Adam Topaz said:
Is docs#mv_polynomial.eval₂ the preferred way to "change the variables type" (after composition with
mv_polynomial.X
of course)? The API search comes up with nothing when I look formv_polynomial vars eval
which is not very promising...
The preferred way is rename
.
Chris Hughes (Sep 12 2021 at 23:04):
I guess maybe vars_rename
is the key.
Chris Hughes (Sep 12 2021 at 23:14):
It's still not easy to work out how to use that.
Adam Topaz (Sep 12 2021 at 23:17):
( docs#mv_polynomial.vars_rename since I'm on mobile)
Chris Hughes (Sep 12 2021 at 23:20):
Let s
be the smallest set such that p
is in the image of rename (coe : s -> sigma)
. suppose rename coe q = p
, then q.vars ⊆ s ⊆ p.vars
by vars_rename
. Therefore p
is in the image of the map from mv_polynomial p.vars R
. I'm tired, but I hope that's right.
Chris Hughes (Sep 12 2021 at 23:21):
This tells me vars
is big enough which is what I struggling with. I already knew it was small enough.
Chris Hughes (Sep 12 2021 at 23:25):
Hang on, I know q.vars ⊆ s
and q.vars ⊆ p.vars
but not s ⊆ p.vars
which is what I need.
Johan Commelin (Sep 13 2021 at 04:57):
@Chris Hughes I'm not a vars
expert, but I've worked with it before. I need to take care of some bureaucrazy this morning. But please ping me later today, if you are still struggling with it then.
Chris Hughes (Sep 13 2021 at 08:36):
It seems like I managed it. The key lemma was eval₂_hom_congr'
lemma exists_rename_eq_of_vars_subset_range (p : mv_polynomial σ R) (f : S → σ)
(hfi : injective f) (hf : ↑p.vars ⊆ set.range f) :
∃ q : mv_polynomial S R, rename f q = p
Johan Commelin (Sep 13 2021 at 08:37):
I think I used eval\2_hom_congr'
a tonne during the Witt project.
Johan Commelin (Sep 13 2021 at 08:37):
Do you need injectivity of f
?
Johan Commelin (Sep 13 2021 at 08:39):
Ooh, I see. We used the version without '
quite a lot, and the version with '
was used twice.
Eric Wieser (Sep 13 2021 at 08:53):
(docs#mv_polynomial.eval₂_hom_congr')
Last updated: Dec 20 2023 at 11:08 UTC