Zulip Chat Archive

Stream: Is there code for X?

Topic: Powers of `Ideal.span`


Christian Merten (Apr 21 2024 at 10:50):

I need an explicit description of the elements of the power of an ideal I : Ideal R spanned by a S : Set R. Ideally this formulation:

import Mathlib

variable {R : Type*} [CommRing R]

lemma Ideal.mem_span_pow {n : } (S : Set R) (x : R) :
    x  (Ideal.span S) ^ n   (p : MvPolynomial S R),
    MvPolynomial.IsHomogeneous p n  MvPolynomial.eval Subtype.val p = x :=
  sorry

Is there something towards this? The forward direction is rather straightforward using induction on n and docs#Submodule.span_induction, the backwards direction seems to be worse.

Andrew Yang (Apr 21 2024 at 12:07):

import Mathlib

variable {R : Type*} [CommRing R]

lemma Ideal.mem_span_pow {n : } (S : Set R) (x : R) :
    x  (Ideal.span S) ^ n   (p : MvPolynomial S R),
    MvPolynomial.IsHomogeneous p n  MvPolynomial.eval Subtype.val p = x := by
  constructor
  · sorry
  · rintro p, hp, rfl
    rw [ p.sum_single, map_finsupp_sum, Finsupp.sum]
    apply sum_mem
    rintro c hc
    simp only [MvPolynomial.single_eq_monomial, MvPolynomial.eval_monomial]
    apply mul_mem_left
    rw [ @hp c (by simpa using hc), MvPolynomial.weightedDegree_one,
      MvPolynomial.degree,  Finset.prod_pow_eq_pow_sum, Finsupp.prod]
    apply Ideal.prod_mem_prod
    exact fun x _  Ideal.pow_mem_pow (subset_span x.2) _

Christian Merten (Apr 21 2024 at 12:13):

Thanks a lot! I derailed at the goal state (Finsupp.prod c fun n e ↦ ↑n ^ e) ∈ Ideal.span S ^ n which I eventually could prove by induction on n, but your solution is way shorter.


Last updated: May 02 2025 at 03:31 UTC