1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
|
--- status: DRAFT
--- author(s): L. Gold, and Dan Grayson
--- notes:
undocumented {
(degreesRing, PolynomialRing), (degreesRing, QuotientRing),
(degreesMonoid, PolynomialRing), (degreesMonoid, QuotientRing),
}
doc ///
Node
Key
degreesRing
(degreesRing, Ring)
(degreesRing, Monoid)
degreesMonoid
(degreesMonoid, Ring)
(degreesMonoid, Monoid)
Headline
the ring or monoid of degrees
Usage
degreesRing A
degreesMonoid A
Inputs
A:{Ring,Monoid}
Outputs
:{PolynomialRing,Monoid} -- a Laurent polynomial ring or monoid with inverses
Description
Text
Given a ring or monoid @TT "A"@ with @TO2(degreeLength, "degree length")@ $n$,
@TT "degreesRing"@ and @TT "degreesMonoid"@ produce a Laurent polynomial ring
or monoid of Laurent monomials in $n$ variables, respectively, whose monomials
correspond to the degrees of elements of @TT "A"@. The variable has no subscript
when $n=1$.
Example
A = ZZ[x,y];
degreesRing A
degreesMonoid A
degrees oo
heft A
R = QQ[x,y, Degrees => {{1,-2}, {2,-1}}];
degreesRing R
degreesMonoid R
degrees oo
heft R
S = QQ[x,y, Degrees => {-2,1}];
degreesRing S
degreesMonoid S
degrees oo
heft S
Text
Note that in the last example the ring does not have a @TO2("heft vectors", "heft vector")@.
@TO2(hilbertSeries, "Hilbert series")@ and @TO2(hilbertPolynomial, "polynomials")@ of modules
over @TT "A"@ are elements of its degrees ring over @TO "ZZ"@. The monomial ordering is chosen
so that the Hilbert series, which has an infinite number of terms, is bounded above by the weight.
Elements of this ring are also used as variables for Poincare polynomials generated by @TO "poincare"@
and @TO "Complexes :: poincareN"@.
Example
R = QQ[x,y, Degrees => {{1,-2,0}, {2,-1,1}}];
use degreesRing R
hilbertSeries module ideal vars R
(1+T_1+T_2^2)^3 -* no-capture-flag *-
SeeAlso
use
heft
poincare
"Complexes :: poincareN"
hilbertFunction
hilbertPolynomial
hilbertSeries
degreeLength
[monoid, DegreeRank]
Subnodes
(degreesRing, List)
Node
Key
(degreesRing, List)
(degreesRing, ZZ)
(degreesMonoid, List)
(degreesMonoid, ZZ)
Headline
the ring or monoid of degrees
Usage
degreesRing L
degreesMonoid L
degreesRing n
degreesMonoid n
Inputs
:{List,ZZ} -- see @TO "heft vectors"@ or @TO degreeLength@
Outputs
A:{Monoid,PolynomialRing}
a monoid of Laurent monomials or ring of Laurent polynomials.
Description
Text
These functions produce either a monoid of Laurent monomials or Laurent polynomial
ring $A$ in @TT "n"@ variables, where @TT "n"@ is the length of the list @TT "L"@,
which is typically a @TO2("heft vectors", "heft vector")@. Each monomial in the
output corresponds to a degree vector for a ring with heft vector @TT "L"@ or
degree length @TT "n"@ and no heft vector.
When a list is given, the variables of the output have degrees given by the
elements of @TT "L"@ and weights are the negative of the degrees.
When an integer is given, then the number of variables is @TT "n"@,
the degrees are all @TT "{}"@, and the weights are all @TT "-1"@.
Example
degreesMonoid {1,2,3}
degreesMonoid 3
Text
The monomial ordering used in the degrees ring is @TT "RevLex"@ so the polynomials
in it will be displayed with the smallest exponents first, because such polynomials
are often used as Hilbert series.
Assign the degrees ring to a global variable or call @TO(use, Monoid)@ to assign
the indeterminates of the ring or monoid to global variables.
Example
assert instance(T_0, IndexedVariable)
use degreesMonoid 3
assert instance(T_0, degreesMonoid 3)
A = degreesRing 4
assert instance(T_0, degreesRing 4)
SeeAlso
use
heft
degreeLength
"division in polynomial rings with monomials less than 1"
///
|