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.Xof course)? The API search comes up with nothing when I look formv_polynomial vars evalwhich 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: May 02 2025 at 03:31 UTC