File: minimalPresentation-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 (208 lines) | stat: -rw-r--r-- 8,117 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
198
199
200
201
202
203
204
205
206
207
208
--- status: Draft
--- author(s): Amelia Taylor
--- notes: This is a new file bringing together both prune and minPres as a 
---        complete minimal presentation collection.  trim is inherently 
---        different as it minimizes to the extent possible while preserving
---        the ambient module.

document { 
     Key => minimalPresentation,
     Headline => "compute a minimal presentation",
     SeeAlso => {trim}
     }

document { 
     Key => prune,
     Headline => "prune, e.g., compute a minimal presentation",
     SeeAlso => { minimalPresentation },
     Subnodes => {
	 TO "pruningMap",
         },
     }

document { 
     Key => {(minimalPresentation,Ring),(prune,Ring),minimalPresentationMap, minimalPresentationMapInv, [minimalPresentation,Exclude], [prune,Exclude]},
     Headline => "compute a minimal presentation of a quotient ring",
     Usage => "S = minimalPresentation R\nS = prune R",
     Inputs => { "R" => { "a quotient ring" }},
     Outputs => { "S" => { "a quotient ring, minimally presented if ", TT "R", " is homogeneous, isomorphic to ", TT "R" } },
     Consequences => {
	  { "the isomorphism from ", TT "R", " to ", TT "S", " is stored as ", TT "R.minimalPresentationMap", 
	       " and the inverse of this map is stored as ", TT "R.minimalPresentationMapInv"}
	  },
     "The computation is accomplished by considering the relations of ", TT "R", ". If 
     a variable occurs as a term of a relation of ", TT "R", " and in no 
     other terms of the same polynomial, then  the variable is replaced 
     by the remaining terms and removed from the ring.  A minimal generating 
     set for the resulting defining ideal is then computed and the new quotient ring is returned.
     If ", TT "R", " is not homogeneous, then an attempt is made to improve the
     presentation.",
     EXAMPLE lines ///
	  R = ZZ/101[x,y,z,u,w]/ideal(x-x^2-y,z+x*y,w^2-u^2);
	  minimalPresentation(R)
	  R.minimalPresentationMap
	  R.minimalPresentationMapInv
	  ///,
     "If the Exclude option is present, then those variables with the given indices are not simplified away
     (remember that ring variable indices start at 0).",
     EXAMPLE lines ///
	  R = ZZ/101[x,y,z,u,w]/ideal(x-x^2-y,z+x*y,w^2-u^2);
	  minimalPresentation(R, Exclude=>{1})
          ///,
     SeeAlso => {(minimalPresentation, Ideal), (prune, Ideal), (trim, Ring), (trim, QuotientRing)}     
     }
document { 
     Key => {(minimalPresentation,Ideal), (prune,Ideal)},
     Headline => "compute a minimal presentation of the quotient ring 
     defined by an ideal",
     Usage => "J = minimalPresentation I",
     Inputs => {
	  "I" => {"in a ring ", TT "S"}
	  },
     Outputs => { "J" => Ideal => {" in a new ring ", TT "Q", " with ", TT "S/I", " isomorphic to ", TT "Q/J"} },
     Consequences => {
     	  {TT "minimalPresentation", " stores the isomorphism  from ", TT "S/I", " to ", 
	       TT "Q/J", " as ", TT "I.cache.minimalPresentationMap", " , where ", 
	       TT "I", " is the input ideal and the inverse of this map 
	       as ", TT "I.cache.minimalPresentationMapInv"}
	  },  
      "If the ideal ", TT "I", " is homogeneous, then the ideal ", TT "J", ", 
      in a new ring ", TT "Q", " is the defining ideal 
      for a minimal presentation of the ring ", TT "S/I", " where ", TT "S", 
      " is the ring of ", TT "I", ". This is accomplished as follows. If 
      a variable occurs as a term of a generator 
      of ", TT "I", " and in no other terms of the same polynomial, then the 
      variable is replaced 
      by the remaining terms and removed from the ring. A minimal generating 
      set for the resulting ideal is then computed. If ", TT "I", " is 
      not homogeneous, then an attempt is made to improve the presentation 
      of ", TT "S/I", ".",  
      EXAMPLE {
	  "C = ZZ/101[x,y,z,u,w];",
	  "I = ideal(x-x^2-y,z+x*y,w^2-u^2);",
	  "minPres I",
	  "I.cache.minimalPresentationMap",
	  "I.cache.minimalPresentationMapInv"
	  },
     "If the Exclude option is present, then those variables with the given indices are not simplified away
     (remember that ring variable indices start at 0).",
     EXAMPLE lines ///
	  R = ZZ/101[x,y,z,u,w];
	  I = ideal(x-x^2-y,z+x*y,w^2-u^2);
	  minimalPresentation(I, Exclude=>{1})
          ///,
     SeeAlso => {(minimalPresentation,Ring), (trim, Ideal)}
     }

document { 
     Key => {(minimalPresentation,Matrix),(prune,Matrix)},
     Headline => "minimally present source and target of a matrix",
     Usage => "minimalPresentation f",
     Inputs => {
	  "f"
	  },
     Outputs => {
	  "g" => Matrix
	  },
     "If the source and target of ", TT "f", " are graded, then minimal 
     presentations of the source and target modules for ", TT "f", " are 
     computed using ", TO (minimalPresentation, Module), " and ", TT "g", " is the matrix 
     corresponding to ", TT "f", " with source and target the minimally 
     presented source and target. If either the source or target of ", TT "f", 
     " is not graded then an attempt is made to improve their presentations 
     and ", TT "g", "is the matrix with resulting source and target. An 
     example follows.",
     EXAMPLE {
	  "R = ZZ/32003[a..d];",
	  "f = inducedMap(coker matrix {{a,1,b},{c,3,b+d}},R^2)",
	  "g = prune f",
	  "source g",
	  "target g"
	  },
     PARA "This function does not remove elements from the base field 
	  from the matrix, but rather minimally presents the source and target 
	  and gives the corresponding new map. For example:",
     EXAMPLE{
	  "m = matrix{{a,1,b},{c,3,b+d}}",
	  "prune m",
	  },
     "Unlike above, nothing changes.",
     Caveat => {"Check out the example just above."},
     SeeAlso => {(minimalPresentation, Module)}
     }

document { Key => pruningMap,
     "This symbol is used as a key for storing results in modules, by ", TO "minimalPresentation", "."
     }
document { 
    Key => {
	(minimalPresentation,Module),
	(prune,Module),
    },
     Headline => "minimal presentation of a module",
     Usage => "N = minimalPresentation M",
     Inputs => {
	  "M"
	  },
     Outputs => {
	  "N" => Module => {"isomorphic to ", TT "M"}
	  },
     Consequences => {
	  {TT "The isomorphism from ", TT "N", " to ", TT "M", 
	       " as ", TT "g = N.cache.pruningMap", " unless ", 
	       TT "M.cache.pruningMap", " already exists, in which case ", 
	       TT "N", " is the same as ", TT "M", ".  The inverse 
	       isomorphism can be obtained as ", TT "g^-1"}
	       },   	      
     "If the Module ", TT "M", " is graded then the module ", TT "N", " 
     is a minimal presentation of ", TT "M", ".  If not, then an 
     attempt is made to improve the presentation of ", TT "M", ".  An 
     example follows.", 
     EXAMPLE lines ///
	  R = ZZ/32003[a..d];
	  M = coker matrix {{a,1,b},{c,3,b+d}}
	  N = minimalPresentation M
 	  peek N.cache
	  g = N.cache.pruningMap
	  g^-1
     ///,
     SeeAlso => {(minimalPresentation, Matrix), (trim, Module), (mingens,Module)}
     }

-- document { 
--      Key => {[minimalPresentation, Variable],[prune, Variable]},
--      Headline => "specify the variable for the new isomorphic ring",
--      Usage => "minimalPresentation(..., Variable => u)",
--      Inputs => {
-- 	  "u" => Symbol
-- 	  },
--      Consequences => {
-- 	  {"variables in the resulting ring are ", TT "u_0, u_1, ..."}
-- 	  },     
--      EXAMPLE {
-- 	  "C = ZZ/101[x,y,z,u,w]/ideal(x-x^2-y,z+x*y,w^2-u^2);",
-- 	  "minimalPresentation(C,Variable => a)",
-- 	  },
--      Caveat => {"If the symbol, ", TT "u", " is used as a variable in 
-- 	  the original ring an error is returned."}
--      }
--  
--  ///
--  I = ideal(x*y, u^2-y^2, x+y+z, v^2-u^2-x^2) 
--  -- trim returns x+y+z, y^2+yz, u^2+yz, v^2-z^2
--  -- minpres returns y^2+yz, u^2+yz, v^2-z^2
--  -- prune does nothing - as a module this is 
--  -- minimal.
--  
--  R = ZZ/101[a,b,w,x,y,z]
--  I = ideal(a*w, a*x, a*y, a*z, b*w, b*x, b*y, b*z)
--  M = koszul(2,gens I)
--  M = matrix{{a*w, a*x, 3, x+w},{a*z, a*w, 2, z+w}}
--  C = chainComplex M
--  C.dd
--  prune oo
--  prune coker M
--  
--  ///
--  
--