File: installHilbertFunction-doc.m2

package info (click to toggle)
macaulay2 1.17.1%2Bds-2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 68,376 kB
  • sloc: cpp: 102,995; ansic: 10,040; javascript: 6,019; sh: 3,506; makefile: 3,426; lisp: 727; yacc: 590; perl: 369; xml: 177; python: 141; lex: 65; awk: 3
file content (57 lines) | stat: -rw-r--r-- 1,959 bytes parent folder | download
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
-- -*- coding: utf-8 -*-
--- status: Draft
--- author(s): MES
--- notes: 

document { 
     Key => {installHilbertFunction,
	  (installHilbertFunction,Ideal,RingElement),
	  (installHilbertFunction,Module,RingElement),
	  (installHilbertFunction,Matrix,RingElement)},
     Headline => "install a Hilbert function without computation",
     Usage => "installHilbertFunction(M,hf)",
     Inputs => { "M" => ofClass{Ideal,Module,Matrix},
	  "hf" },
     Consequences => {
	  {"The poincare polynomial ", TT "hf", " is used as the poincare polynomial
	  for ", TT "M"}
	  },
     "If M is a module, then hf should be the poincare polynomial of M.
     If M is an ideal, then hf should be the poincare polynomial of comodule M.
     If M is a matrix, then hf should be the poincare polynomial of cokernel M.",
     PARA {
	  "An installed Hilbert function will be used by Gröbner basis 
	  computations when possible."},
     PARA {
	  "Sometimes you know or are very sure that you know the Hilbert function.
	  For example, in the following example, the Hilbert function of 3 random polynomials
	  should be the same as the Hilbert function for a complete intersection."
	  },
     EXAMPLE lines ///
     	  R = ZZ/101[a..g];
	  I = ideal random(R^1, R^{3:-3});
	  hf = poincare ideal(a^3,b^3,c^3)
	  installHilbertFunction(I, hf)
	  gbTrace=3
	  time poincare I
	  time gens gb I;
          ///,
     "In this case, the savings is minimal, but often it can be dramatic.",
     PARA {
	  "Another important situation is
	  to compute a Gröbner basis using a different monomial order.
	  In the example below", 
	  },
     EXAMPLE lines ///
     	  R = QQ[a..d];
	  I = ideal random(R^1, R^{3:-3});
	  time hf = poincare I
	  S = QQ[a..d,MonomialOrder=>Eliminate 2]
	  J = substitute(I,S)
	  installHilbertFunction(J, hf)
	  gbTrace=3
	  time gens gb J;
	  selectInSubring(1,gens gb J)
	  ///,
     SeeAlso =>{selectInSubring, "Elimination::Elimination"}
     }