File: hilbertPolynomial-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 (155 lines) | stat: -rw-r--r-- 5,530 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
--- status: DRAFT
--- author(s): L. Gold
--- notes: show ex of eventually = HF

document { 
     Key => hilbertPolynomial,
     Headline => "compute the Hilbert polynomial",
     "In a singly graded ambient ring, the ", 
     TO2(hilbertFunction, "Hilbert function"), 
     " eventually is a polynomial called the Hilbert polynomial. By
     default this polynomial is written in terms of the Hilbert
     polynomials of projective spaces because it is a good form for
     extracting geometric information from the polynomial. The Hilbert
     polynomial of ", TT "P^i", " is ",  TT "z |--> binomial(z + i, i).",
     SeeAlso => {"degreesRing", "reduceHilbert", "poincare", "Complexes :: poincareN",
	  "hilbertSeries", "hilbertFunction"},
    Subnodes => {
	TO [hilbertPolynomial, Projective],
	TO ProjectiveHilbertPolynomial,
	TO projectiveHilbertPolynomial,
        },
     } 

document {
     Key => (hilbertPolynomial,Ring),
     Headline => "compute the Hilbert polynomial of the ring",
     Usage => "hilbertPolynomial R",
     Inputs => { 
	  "R" => Ring
	  },
     Outputs => {
	  ProjectiveHilbertPolynomial => "unless the option Projective is false" 
	  },
     "We compute the ", TO2(hilbertPolynomial, "Hilbert polynomial"),
     " of a coordinate ring of the rational quartic curve in ", 
     TT "P^3.",
         EXAMPLE {
	  "R = ZZ/101[a..d];",
      	  "S = coimage map(R, R, {a^4, a^3*b, a*b^3, b^4});",
      	  "presentation S",
      	  "h =  hilbertPolynomial S",
     	  "hilbertPolynomial(S, Projective=>false)"
	  },
     "The rational quartic curve in ", TT "P^3", " is therefore 'like'
     4 copies of ", TT "P^1", ", with three points missing.  One can
     see this by noticing that there is a deformation of the rational
     quartic to the union of 4 lines, or 'sticks', which intersect in
     three successive points.",
     PARA{},
     "These Hilbert polynomials can serve as ", 
     TO2 (hilbertFunction,"Hilbert functions"), 
     " too since the values of the Hilbert polynomial eventually are
     the same as the Hilbert function. ",
     EXAMPLE {
	  "apply(5, k-> h(k))",
	  "apply(5, k-> hilbertFunction(k,S))"
	  }
     }

document { 
     Key => (hilbertPolynomial,Module),
     Headline => "compute the Hilbert polynomial of the module",
     Usage => "hilbertPolynomial M",
     Inputs => {
	  "M" => Module
	  },
     Outputs => {
	  ProjectiveHilbertPolynomial => "unless the option Projective is false" 
	  },
     "We compute the ", TO2(hilbertPolynomial, "Hilbert polynomial"),
     " of a module.",
     EXAMPLE {
	  "R = QQ[a..d];",
	  "M = module monomialCurveIdeal(R, {1,3,4});",
	  "h = hilbertPolynomial M",
     	  "hilbertPolynomial(M, Projective=>false)"
	  	  },
     PARA{},
--     "These Hilbert polynomials can serve as ", 
--      TO2 (hilbertFunction,"Hilbert functions"), 
--      " too since the values of the Hilbert polynomial eventually are
--      the same as the Hilbert function. ",
--      EXAMPLE {
-- 	  "apply(5, k-> h(k))",
-- 	  "apply(5, k-> hilbertFunction(k,M))"
-- 	  }
     }

document { 
     Key => (hilbertPolynomial,Ideal),
     Headline => "compute the Hilbert polynomial of the quotient of
     the ambient ring by the ideal",
     Usage => "hilbertPolynomial I",
     Inputs => {
	  "I" => Ideal
	  },
     Outputs => {
	  ProjectiveHilbertPolynomial => "unless the option Projective is false" 
	  },
     "We compute the ", TO2(hilbertPolynomial, "Hilbert polynomial"),
     " of the quotient of the ambient ring by an ideal.",
     EXAMPLE {
	  "R = QQ[a..d];",
	  "I = monomialCurveIdeal(R, {1,3,4});",
	  "h = hilbertPolynomial I",
	  "hilbertPolynomial (R/I)",
	  "hilbertPolynomial(I, Projective=>false)"
	  },
     PARA{},
     "These Hilbert polynomials can serve as ", 
     TO2 (hilbertFunction,"Hilbert functions"), 
     " too since the values of the Hilbert polynomial eventually are
     the same as the Hilbert function.",
     EXAMPLE {
	  "apply(10, k-> h(k))",
	  "apply(10, k-> hilbertFunction(k,I))"
	  },
     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 => [hilbertPolynomial, Projective],
     Headline => "choose how to display the Hilbert polynomial",
     Usage => "hilbertPolynomial(...,Projective => b",
     Inputs => {
	  "b" => Boolean => "either true or false"
	  },
     TT "Projective => true", " is an option to ", TO "hilbertPolynomial", 
     " which specifies that the Hilbert polynomial produced should be
     expressed in terms of the Hilbert polynomials of projective
     spaces. This is the default.",
     PARA{},
     TT "Projective => false", " is an option to ", TO "hilbertPolynomial",
     " which specifies that the Hilbert polynomial produced should be
     expressed as a polynomial in the variable ", TT "i", ".",
     PARA{},
     "We compute the ", TO2(hilbertPolynomial, "Hilbert polynomial"), 
     " of a coordinate ring of the  rational quartic curve in ", 
     TT "P^3.",
     EXAMPLE {
	  "R = ZZ/101[a..d];",
      	  "S = coimage map(R, R, {a^4, a^3*b, a*b^3, b^4});",
      	  "hilbertPolynomial S",
	  "hilbertPolynomial(S, Projective=>false)"
     	  },
     "When the option Projective is false, the variable ", 
     TT "i", " is a local variable. The command ", 
     TT "use ring", "will make ", TT "i", 
     "into a global variable.",
     SeeAlso => "ProjectiveHilbertPolynomial"
     }