File: forceGB-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 (100 lines) | stat: -rw-r--r-- 3,409 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
-- -*- coding: utf-8 -*-
--- status: TODO
--- author(s): 
--- notes: 

document { 
     Key => {forceGB, (forceGB,Matrix)},
     Headline => "declare that the columns of a matrix are a Gröbner basis",
     Usage => "forceGB f",
     Inputs => { 
	  "f" => Matrix 
	  },
     Outputs => { GroebnerBasis },
     "Declares that the columns of the matrix ", TT "f", "
     constitute a Gröbner basis, autoreduces it, minimizes it, sorts it, and returns a Gröbner basis object
     declaring itself complete, without computing any S-pairs.",
     PARA{},
     "Sometimes one knows that a set of polynomials (or columns of such)
     form a Gröbner basis, but ", EM "Macaulay2", " doesn't.  This is the
     way to inform the system of this fact.",
     EXAMPLE {
	  "gbTrace = 3;",
	  "R = ZZ[x,y,z];",
	  "f = matrix{{x^2-3, y^3-1, z^4-2}};",
	  "g = forceGB f"},
     "This Gröbner basis object is stored with the matrix and can be
     obtained as usual:",
     EXAMPLE {
	  "g === gb(f, StopBeforeComputation=>true)"
	  },
     "Requesting a Gröbner basis for ", TT "f", " requires no computation.",
     EXAMPLE {
	  "gens gb f"
	  },
     PARA {
	  "If an autoreduced Gröbner basis is desired, replace ", TT "f", " by ", TT "gens forceGB f", " first."
	  },
     Caveat => {"If the columns do not form a Gröbner basis, nonsensical answers may result"},
     SeeAlso => {"Gröbner bases"},
     Subnodes => {
	 TO [forceGB, ChangeMatrix],
	 TO [forceGB, MinimalMatrix],
	 TO [forceGB, SyzygyMatrix],
         },
     }
document { 
     Key => [forceGB, ChangeMatrix],
     Headline => "specify the change of basis matrix from a Gröbner basis to the generators of a module",
     Usage => "forceGB(...,ChangeMatrix=>m)",
     Inputs => { "m" => Matrix },
     Consequences => {
	  "Set the change of basis matrix from the Gröbner basis
	  to the original generators"
	  },     
     "The matrix ", TT "m", " should have size a by b, where a is the
     number of columns of the original matrix, and b is the number
     of columns of f.",
     EXAMPLE {
	  "gbTrace = 3",
	  "R = ZZ[x,y,z];",
	  "f = matrix{{x^2-3, y^3-1, z^4-2}};",
	  "g = forceGB(f, ChangeMatrix=>id_(source f));",
	  "x^2*y^3 // g"
	  },
     Caveat => {},
     SeeAlso => {}
     }
document { 
     Key => [forceGB, MinimalMatrix],
     Headline => "specify the minimal generator matrix"
     }
document { 
     Key => [forceGB, SyzygyMatrix],
     Headline => "specify the syzygy matrix",
     Usage => "forceGB(f,SyzygyMatrix=>z,...)",
     Inputs => { "z" => Matrix },
     Consequences => {
	  {"A request for the syzygy matrix of ", 
	  TT "f", " will return ", TT "z"}
	  },
     "In the following example, the only computation being performed
     when asked to compute the ", TO kernel, " or ", TO syz, " of ", 
     TT "f", " is the minimal generator matrix of ", TT "z", ".",
     EXAMPLE {
	  "gbTrace = 3",
	  "R = ZZ[x,y,z];",
	  "f = matrix{{x^2-3, y^3-1, z^4-2}};",
	  "z = koszul(2,f)",
	  "g = forceGB(f, SyzygyMatrix=>z);",
	  "syz g -- no extra computation",
	  "syz f",
	  "kernel f",
	  },
     "If you know that the columns of z already form a set of minimal
     generators, then one may use ", TO forceGB, " once again.",
     Caveat => {"If the columns of ", TT "z", " do not generate the 
	  syzygy module of ", TT "f", ",
	  nonsensical answers may result"},
     SeeAlso => {"Gröbner bases"}
     }