Multigraded Poincaré polynomial
DefinitionMultigraded Poincaré polynomial#✓fully proved
Let \(K\) be a field, let \(R = K[x_1, \dots, x_n]\), let \(M\) be a multigraded \(R\)-module, and let \(D\) be base-change data for a multigraded free resolution \(F_\bullet\) of \(M\) in which \(F_i\) has a homogeneous basis indexed by a finite set \(\iota_i\), with \(\iota_i\) empty for every \(i > b\) for a fixed \(b \in \mathbb{N}\). The multigraded Poincaré polynomial of \(D\) is the element of the monoid algebra \(\mathbb{N}[\mathbb{N} \times \mathbb{Z}^n]\) whose coefficient at \((i, \alpha)\) is the multigraded Betti number \(\beta_{i,\alpha}(D)\) of \(D\) in homological degree \(i\) and multidegree \(\alpha\); the hypotheses on the \(\iota_i\) make these coefficients finitely supported.
MetaMathlibExt.multigradedPoincarePolynomial · 19 lines
public noncomputable def multigradedPoincarePolynomial {K : Type u} [Field K] {n : ℕ}
{M : Type u} [AddCommGroup M]
[Module (MvPolynomial (Fin n) K) M] [Module K M]
{targetGraded : MultigradedPolynomialModule K n M}
{resolution : CategoryTheory.ProjectiveResolution
(ModuleCat.of (MvPolynomial (Fin n) K) M)}
{ι : ℕ → Type u}
{res : MultigradedFreeResolution K n M targetGraded resolution ι}
(data : MultigradedBaseChange targetGraded resolution ι res)
(bound : ℕ)
(finiteBasis : ∀ i, Finite (ι i))
(emptyAbove : ∀ i, bound < i → IsEmpty (ι i)) :
AddMonoidAlgebra Nat (Nat × (Fin n →₀ Int)) :=
AddMonoidAlgebra.ofCoeff (Finsupp.ofSupportFinite (multigradedPoincareCoefficients data) (by
have h : Function.HasFiniteSupport (multigradedPoincareCoefficients data) :=
multigradedPoincareCoefficients_hasFiniteSupport_of_finiteResolution data
bound finiteBasis emptyAbove
unfold Function.HasFiniteSupport at h
exact h))
public structure MultigradedPolynomialModule (M : Type*) [AddCommGroup M]
[Module (MvPolynomial (Fin n) K) M] [Module K M] where
/-- The homogeneous `K`-submodule in degree `α`. -/
component : (Fin n →₀ ℤ) → Submodule K M
/-- The homogeneous pieces decompose `M` as a direct sum. -/
decomposition : DirectSum.Decomposition component
/-- Scalar multiplication by `k : K` agrees with the `MvPolynomial.C k` action. -/
smul_via_C : ∀ (k : K) (m : M), k • m = ((MvPolynomial.C k : MvPolynomial (Fin n) K)) • m
/-- Monomials shift homogeneous degrees by the embedded exponent. -/
monomial_mem : ∀ (a : Fin n →₀ ℕ) (c : K) (α : Fin n →₀ ℤ) (m : M),
m ∈ component α →
((MvPolynomial.monomial a c : MvPolynomial (Fin n) K)) • m ∈
⋯
MathlibExt/RingTheory/GradedAlgebra/MultigradedPolynomialModule.lean:65
public structure MultigradedFreeResolution (K : Type*) [Field K] (n : ℕ)
(M : Type*) [AddCommGroup M] [Module (MvPolynomial (Fin n) K) M]
[Module K M]
(targetGraded : MultigradedPolynomialModule K n M)
(resolution : CategoryTheory.ProjectiveResolution
(ModuleCat.of (MvPolynomial (Fin n) K) M))
(ι : ℕ → Type*) where
/-- Each resolution term carries a multigraded free module structure. -/
termFree : ∀ (i : ℕ),
letI : Module K ↥(resolution.complex.X i) :=
Module.compHom _ (MvPolynomial.C : K →+* MvPolynomial (Fin n) K);
MultigradedFreeModule K n ↥(resolution.complex.X i) (ι i)
⋯
MathlibExt/RingTheory/GradedAlgebra/MultigradedFreeResolution.lean:90
public structure MultigradedBaseChange {K : Type u} [Field K] {n : ℕ}
{M : Type u} [AddCommGroup M]
[Module (MvPolynomial (Fin n) K) M] [Module K M]
(targetGraded : MultigradedPolynomialModule K n M)
(resolution : CategoryTheory.ProjectiveResolution
(ModuleCat.of (MvPolynomial (Fin n) K) M))
(ι : ℕ → Type u)
(res : MultigradedFreeResolution K n M targetGraded resolution ι) where
/-- Direct-sum decomposition of each base-changed term over the degree pieces. -/
decomposition : ∀ (i : ℕ), DirectSum.Decomposition
(fun β => baseChangedDegreePiece targetGraded resolution ι res i β)
/-- Successor differentials preserve each degree piece. -/
⋯
MathlibExt/RingTheory/GradedAlgebra/MultigradedBetti.lean:95
public noncomputable def multigradedPoincareCoefficients
{K : Type u} [Field K] {n : ℕ}
{M : Type u} [AddCommGroup M]
[Module (MvPolynomial (Fin n) K) M] [Module K M]
{targetGraded : MultigradedPolynomialModule K n M}
{resolution : CategoryTheory.ProjectiveResolution
(ModuleCat.of (MvPolynomial (Fin n) K) M)}
{ι : ℕ → Type u}
{res : MultigradedFreeResolution K n M targetGraded resolution ι}
(data : MultigradedBaseChange targetGraded resolution ι res) :
ℕ × (Fin n →₀ Int) → ℕ :=
fun p => multigradedBettiNumber data p.2 p.1
MathlibExt/RingTheory/GradedAlgebra/MultigradedPoincareCoefficients.lean:59
TheoremCoefficients of the multigraded Poincaré polynomial#✓fully proved
Let \(K\) be a field, let \(R = K[x_1, \dots, x_n]\), let \(M\) be a multigraded \(R\)-module, and let \(D\) be base-change data for a multigraded free resolution \(F_\bullet\) of \(M\) in which \(F_i\) has a homogeneous basis indexed by a finite set \(\iota_i\), with \(\iota_i\) empty for every \(i > b\) for a fixed \(b \in \mathbb{N}\). For every \(i \in \mathbb{N}\) and \(\alpha \in \mathbb{Z}^n\), the coefficient at \((i, \alpha)\) of the multigraded Poincaré polynomial of \(D\) is the multigraded Betti number \(\beta_{i,\alpha}(D)\) of \(D\) in homological degree \(i\) and multidegree \(\alpha\).
MetaMathlibExt.multigradedPoincarePolynomial_coeff · 15 lines
public theorem multigradedPoincarePolynomial_coeff {K : Type u} [Field K] {n : ℕ}
{M : Type u} [AddCommGroup M]
[Module (MvPolynomial (Fin n) K) M] [Module K M]
{targetGraded : MultigradedPolynomialModule K n M}
{resolution : CategoryTheory.ProjectiveResolution
(ModuleCat.of (MvPolynomial (Fin n) K) M)}
{ι : ℕ → Type u}
{res : MultigradedFreeResolution K n M targetGraded resolution ι}
(data : MultigradedBaseChange targetGraded resolution ι res)
(bound : ℕ)
(finiteBasis : ∀ i, Finite (ι i))
(emptyAbove : ∀ i, bound < i → IsEmpty (ι i))
(i : ℕ) (α : Fin n →₀ Int) :
(multigradedPoincarePolynomial data bound finiteBasis emptyAbove).coeff (i, α) =
multigradedBettiNumber data α i
public structure MultigradedPolynomialModule (M : Type*) [AddCommGroup M]
[Module (MvPolynomial (Fin n) K) M] [Module K M] where
/-- The homogeneous `K`-submodule in degree `α`. -/
component : (Fin n →₀ ℤ) → Submodule K M
/-- The homogeneous pieces decompose `M` as a direct sum. -/
decomposition : DirectSum.Decomposition component
/-- Scalar multiplication by `k : K` agrees with the `MvPolynomial.C k` action. -/
smul_via_C : ∀ (k : K) (m : M), k • m = ((MvPolynomial.C k : MvPolynomial (Fin n) K)) • m
/-- Monomials shift homogeneous degrees by the embedded exponent. -/
monomial_mem : ∀ (a : Fin n →₀ ℕ) (c : K) (α : Fin n →₀ ℤ) (m : M),
m ∈ component α →
((MvPolynomial.monomial a c : MvPolynomial (Fin n) K)) • m ∈
⋯
MathlibExt/RingTheory/GradedAlgebra/MultigradedPolynomialModule.lean:65
public structure MultigradedFreeResolution (K : Type*) [Field K] (n : ℕ)
(M : Type*) [AddCommGroup M] [Module (MvPolynomial (Fin n) K) M]
[Module K M]
(targetGraded : MultigradedPolynomialModule K n M)
(resolution : CategoryTheory.ProjectiveResolution
(ModuleCat.of (MvPolynomial (Fin n) K) M))
(ι : ℕ → Type*) where
/-- Each resolution term carries a multigraded free module structure. -/
termFree : ∀ (i : ℕ),
letI : Module K ↥(resolution.complex.X i) :=
Module.compHom _ (MvPolynomial.C : K →+* MvPolynomial (Fin n) K);
MultigradedFreeModule K n ↥(resolution.complex.X i) (ι i)
⋯
MathlibExt/RingTheory/GradedAlgebra/MultigradedFreeResolution.lean:90
public structure MultigradedBaseChange {K : Type u} [Field K] {n : ℕ}
{M : Type u} [AddCommGroup M]
[Module (MvPolynomial (Fin n) K) M] [Module K M]
(targetGraded : MultigradedPolynomialModule K n M)
(resolution : CategoryTheory.ProjectiveResolution
(ModuleCat.of (MvPolynomial (Fin n) K) M))
(ι : ℕ → Type u)
(res : MultigradedFreeResolution K n M targetGraded resolution ι) where
/-- Direct-sum decomposition of each base-changed term over the degree pieces. -/
decomposition : ∀ (i : ℕ), DirectSum.Decomposition
(fun β => baseChangedDegreePiece targetGraded resolution ι res i β)
/-- Successor differentials preserve each degree piece. -/
⋯
MathlibExt/RingTheory/GradedAlgebra/MultigradedBetti.lean:95
public noncomputable def multigradedPoincarePolynomial {K : Type u} [Field K] {n : ℕ}
{M : Type u} [AddCommGroup M]
[Module (MvPolynomial (Fin n) K) M] [Module K M]
{targetGraded : MultigradedPolynomialModule K n M}
{resolution : CategoryTheory.ProjectiveResolution
(ModuleCat.of (MvPolynomial (Fin n) K) M)}
{ι : ℕ → Type u}
{res : MultigradedFreeResolution K n M targetGraded resolution ι}
(data : MultigradedBaseChange targetGraded resolution ι res)
(bound : ℕ)
(finiteBasis : ∀ i, Finite (ι i))
(emptyAbove : ∀ i, bound < i → IsEmpty (ι i)) :
⋯
MathlibExt/RingTheory/GradedAlgebra/MultigradedPoincarePolynomial.lean:66
public noncomputable def multigradedBettiNumber {K : Type u} [Field K] {n : ℕ}
{M : Type u} [AddCommGroup M]
[Module (MvPolynomial (Fin n) K) M] [Module K M]
{targetGraded : MultigradedPolynomialModule K n M}
{resolution : CategoryTheory.ProjectiveResolution
(ModuleCat.of (MvPolynomial (Fin n) K) M)}
{ι : ℕ → Type u}
{res : MultigradedFreeResolution K n M targetGraded resolution ι}
(data : MultigradedBaseChange targetGraded resolution ι res)
(α : Fin n →₀ Int) (i : ℕ) : ℕ :=
haveI := data.hasHom α i
haveI := data.finiteDim α i
⋯
MathlibExt/RingTheory/GradedAlgebra/MultigradedBetti.lean:135
Loading dependency explorer…
The dependency explorer needs JavaScript and its graph data.