File: hilbertSeries-doc.m2

package info (click to toggle)
macaulay2 1.25.05%2Bds-2
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 172,152 kB
  • sloc: cpp: 107,824; ansic: 16,193; javascript: 4,189; makefile: 3,899; lisp: 702; yacc: 604; sh: 476; xml: 177; perl: 114; lex: 65; python: 33
file content (197 lines) | stat: -rw-r--r-- 6,417 bytes parent folder | download | duplicates (2)
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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
--- status: DRAFT 
--- author(s): L.Gold
--- note:

document { 
     Key => hilbertSeries,
     Headline => "compute the Hilbert series",
     "The Hilbert series is the formal power series in the variables of the
     degrees ring whose coefficients are the dimensions of the corresponding
     graded component.", 
     "Note that the series is provided as a type of expression called
     a ", TO "Divide", ".",
     SeeAlso => {"degreesRing", "reduceHilbert", "poincare", "Complexes :: poincareN",
	 "hilbertPolynomial", "hilbertFunction"},
     Subnodes => {
	 TO [hilbertSeries, Order],
	 TO [hilbertSeries, Reduce],
         },
     }

document { 
     Key => {(hilbertSeries, PolynomialRing), (hilbertSeries,QuotientRing)},
     Headline => "compute the Hilbert series of a ring",
     Usage => "hilbertSeries R",
     Inputs => {
	  "R"
	  },
     Outputs => {
	  Divide => "the Hilbert series" },
     "We compute the ", TO2(hilbertSeries, "Hilbert series"), " of a ring.",
     EXAMPLE {
	  "R = ZZ/101[x, Degrees => {2}]/ideal(x^2);",
      	  "s = hilbertSeries R",
	  "numerator s",
     	  "poincare R"
	  },
     "Recall that the variables of the power series are the variables of
     the ", TO2 (degreesRing,"degrees ring"), ".",
     EXAMPLE {
	  "R=ZZ/101[x, Degrees => {{1,1}}]/ideal(x^2);",
      	  "s = hilbertSeries R",
	  "numerator s",
     	  "poincare R"
	  }
     }

document { 
     Key => (hilbertSeries,Module),
     Headline => "compute the Hilbert series of the module",
     Usage => "hilbertSeries M",
     Inputs => {
	  "M"
	  },
     Outputs => {
	  Divide => "the Hilbert series" 
	  },
     "We compute the ", TO2 (hilbertSeries, "Hilbert series"), " of a
     module.",
     EXAMPLE {
	  "R = ZZ/101[x, Degrees => {2}];",
	  "M = module ideal x^2",
      	  "s = hilbertSeries M",
      	  "numerator s",
      	  "poincare M"
	  },
     "Recall that the variables of the power series are the variables of
     the ", TO2 (degreesRing,"degrees ring"), ".",
     EXAMPLE {
	  "R=ZZ/101[x, Degrees => {{1,1}}];",
	  "M = module ideal x^2;",
	  "s = hilbertSeries M",
     	  "numerator s",
	  "poincare M"
	  }
     }

document { 
     Key => {(hilbertSeries, Ideal)},
     Headline => "compute the Hilbert series of the quotient of the ambient ring by the ideal",
     Usage => "hilbertSeries I",
     Inputs => {
	  "I" => Ideal
	  },
     Outputs => {
	  Divide =>  "the Hilbert series" },
     "We compute the ", TO2  (hilbertSeries, "Hilbert series"), " of ", 
     TT "R/I", ", the quotient of the ambient ring by the
     ideal. Caution: For an ideal ", TT "I", " running ", 
     TT "hilbertSeries I ", "calculates the Hilbert series of ",
     TT "R/I", ".",
     EXAMPLE {
	  "R = ZZ/101[x, Degrees => {2}];",
	  "I = ideal x^2",
      	  "s = hilbertSeries I",
      	  "numerator s",
      	  "poincare I",
	  "reduceHilbert s"	  
	  },
     "Recall that the variables of the power series are the variables of
     the ", TO2 (degreesRing,"degrees ring"), ".",
     EXAMPLE {
	  "R=ZZ/101[x, Degrees => {{1,1}}];",
	  "I = ideal x^2;",
	  "s = hilbertSeries I",
	  "numerator s",
	  "poincare I",
	  "reduceHilbert s"
	  },
     Caveat => {
	  "As is often the case, calling this function on an ideal ", 
	  TT "I", " actually computes it for ", TT "R/I", " where ", 
	  TT "R", " is the ring of ", TT "I", ".",
	  }
     }
document { 
     Key => (hilbertSeries,ProjectiveHilbertPolynomial),
     Headline => "compute the Hilbert series of a projective Hilbert polynomial",
     Usage => "hilbertSeries P",
     Inputs => {
	  "P" => ProjectiveHilbertPolynomial
	  },
     Outputs => {
	  Divide =>  "the Hilbert series" },
     "We compute the ", TO2 (hilbertSeries, "Hilbert series"), " of a
     projective Hilbert polynomial.",
     EXAMPLE {
	  "P = projectiveHilbertPolynomial 3",
      	  "s = hilbertSeries P",
     	  "numerator s"
	  },
     "Computing the ", TO2 (hilbertSeries, "Hilbert series"), " of a
     projective variety can be useful for finding the h-vector of a
     simplicial complex from its f-vector. For example, consider the
     octahedron. The ideal below is its Stanley-Reisner ideal. We can
     see its f-vector (1, 6, 12, 8) in the Hilbert polynomial, and
     then we get the h-vector (1,3,3,1) from the coefficients of the
     Hilbert series projective Hilbert polynomial.",
     EXAMPLE {
     	  "R = QQ[a..h];",
	  "I = ideal (a*b, c*d, e*f);",
	  "P=hilbertPolynomial(I)",
	  "s = hilbertSeries P",
	  "numerator s"
     }
}

document { 
     Key => [hilbertSeries, Order],
     Headline => "display the truncated power series expansion",
     Usage => "hilbertSeries(..., Order => n)",
     Inputs => {
	  "n" => ZZ},
     Consequences => {
	  {"The output is no longer of type ", TO "Divide", ". It is a
	  polynomial in the ", TO2 (degreesRing,"degrees ring"), "."}
	  },
     "We compute the Hilbert series both without and with the optional
     argument. In the second case notice the terms of power series
     expansion up to, but not including, degree 5 are displayed rather
     than expressing the series as a rational function. The polynomial
     expression is an element of a Laurent polynomial ring that is
     the ", TO2 (degreesRing,"degrees ring"), " of the ambient ring.",
     EXAMPLE {
	  "R = ZZ/101[x,y];",
      	  "hilbertSeries(R/x^3)",
	  "hilbertSeries(R/x^3, Order =>5)"
	  },
     "If the ambient ring is multigraded, then the ",
     TO2 (degreesRing,"degrees ring"), " has multiple variables.",
     EXAMPLE {
	  "R = ZZ/101[x,y, Degrees=>{{1,2},{2,3}}];",
	  "hilbertSeries(R/x^3, Order =>5)"
	  },     
     "The heft vector provides a suitable monomial ordering and degrees in the ring of the Hilbert series.",
     EXAMPLE lines ///
     R = QQ[a..d,Degrees=>{{-2,-1},{-1,0},{0,1},{1,2}}]
     hilbertSeries(R, Order =>3)
     degrees ring oo
     heft R
     ///,
     }

document {
     Key => [hilbertSeries,Reduce],
     Headline => "reduce the Hilbert series",
     Usage => "hilbertSeries(..., Reduce => true)",
     Consequences => {{"the resulting rational function is reduced by cancelling
	       factors of the numerator that occur explicitly as factors of the denominator.  
	       See also ", TO "reduceHilbert", "."
	       }},
     EXAMPLE lines ///
     R = QQ[x,y,z];
     hilbertSeries ideal (x,y)
     hilbertSeries(ideal (x,y), Reduce => true)
     ///
     }