File: Hom-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 (430 lines) | stat: -rw-r--r-- 10,585 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
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
--- status: Draft
--- author(s): MES
--- notes: 

doc ///
Node
  Key
    Hom
   (Hom, Ring, Ring)
   (Hom, Ring, Ideal)
   (Hom, Ring, Module)
   (Hom, Ideal, Ring)
   (Hom, Ideal, Ideal)
   (Hom, Ideal, Module)
   (Hom, Module, Ring)
   (Hom, Module, Ideal)
   (Hom, Module, Module)
   [Hom, DegreeLimit]
   [Hom, MinimalGenerators]
   [Hom, Strategy]
  Headline
    module of homomorphisms
  Usage
    Hom(M, N)
  Inputs
    M:{Ring,Ideal,Module}
    N:{Ring,Ideal,Module}
    DegreeLimit => {ZZ,List}
      if set, stop after homomorphisms in this degree have been computed
    MinimalGenerators => Boolean
      whether to @TO trim@ the resulting module
    Strategy => Thing
  Outputs
    :Module
      isomorphic to $\mathrm{Hom}_R(M,N), where $M$ and $N$ are both $R$-modules
  Description
    Text
      If $M$ or $N$ is an ideal or ring, it is regarded as a module in the evident way.
    Example
      R = QQ[x,y]/(y^2 - x^3);
      M = image matrix{{x, y}}
      H = Hom(M, M, MinimalGenerators => true)
    Text
      To recover the modules used to create a Hom-module, use the function @TO formation@.
    Example
      formation H
    Text
      Specific homomorphisms may be obtained using @TO homomorphism@, as follows.
    Example
      f0 = homomorphism H_{0}
      f1 = homomorphism H_{1}
    Text
      In the example above, @TT "f0"@ is the identity map, and @TT "f1"@ maps $x$ to $y$ and $y$ to $x^2$.
    Example
      M_0, M_1
      f0 M_0, f0 M_1
      f1 M_0, f1 M_1
  Contributors
    Devlin Mallory implemented the strategy which accepts a degree limit.
  SeeAlso
    Ext
    formation
  Subnodes
    adjoint
    compose
    homomorphism
    homomorphism'
    (Hom, Module, Matrix)
    "OldChainComplexes :: Hom(Module,ChainComplex)"

Node
  Key
   (Hom, Module, Matrix)
   (Hom, Matrix, Module)
   (Hom, Matrix, Matrix)
  Headline
    induced map on Hom
  Synopsis
    Usage
      Hom(f,g)
    Inputs
      f:Matrix
      g:Matrix
      DegreeLimit => {ZZ,List}
        see @TO [Hom, DegreeLimit]@
      MinimalGenerators => Boolean
        see @TO [Hom, MinimalGenerators]@
      Strategy => Thing
        see @TO [Hom, Strategy]@
    Outputs
       :Matrix
        the map on Hom induced by the maps $f$ and $g$
  Synopsis
    Usage
      Hom(f,M)
      Hom(M,f)
    Inputs
      f:Matrix
      M:Module
      DegreeLimit => {ZZ,List}
        see @TO [Hom, DegreeLimit]@
      MinimalGenerators => Boolean
        see @TO [Hom, MinimalGenerators]@
      Strategy => Thing
        see @TO [Hom, Strategy]@
    Outputs
       :Matrix
        the map on Hom induced by the map $f$
    Description
      Example
        R = QQ[x]
	f = vars R
	M = image f
	g = Hom(f,M)
	target g
	source g
      Example
        R = QQ[x]
	f = vars R
	M = image f
	g = Hom(M,f)
	target g
	source g
  SeeAlso
    inducedMap
///

-----------------------------------------------------------------------------

doc ///
Node
  Key
    End
   [End, DegreeLimit]
   [End, MinimalGenerators]
   [End, Strategy]
  Headline
    module of endomorphisms
  Usage
    End M
  Inputs
    M:{Ring,Ideal,Module}
    DegreeLimit => {ZZ,List}
      see @TO [Hom, DegreeLimit]@
    MinimalGenerators => Boolean
      see @TO [Hom, MinimalGenerators]@
    Strategy => Thing
      see @TO [Hom, Strategy]@
  Description
    Text
      Constructs the module of endomorphisms of $M$.
    Example
      R = QQ[a,b,c];
      M = coker koszul_2 vars R
      End M
  SourceCode
    End
///

-----------------------------------------------------------------------------

doc ///
Node
  Key
    reshape
   (reshape, Module, Module, Matrix)
  Headline
    reshape a matrix
  Usage
    reshape(F, G, f)
  Inputs
    F:Module -- a free module
    G:Module -- a free module
    f:Matrix
  Outputs
     :Matrix
       @TT "F <-- G"@ obtained from @TT "f"@ by taking elements from the first column of @TT "f"@,
       then the second, and so on, filling them into the result column by column.
  Description
    Text
      Currently, it is assumed that @TT "f"@ and the result both have the same number of entries.
      The resulting map has the same degree that @TT "f"@ has, but it is easy to spoil homogeneity
      by giving incorrect free modules.
    Example
      f = matrix{{1,3,5,7,9,11},{2,4,6,8,10,12}}
      reshape(ZZ^3,ZZ^4,f)
///

-----------------------------------------------------------------------------

undocumented {
    [adjoint, Strategy],
    [adjoint, DegreeLimit],
    [adjoint, MinimalGenerators],
}

doc ///
Node
  Key
    adjoint
   (adjoint, Matrix, Module, Module)
    adjoint'
   (adjoint', Matrix, Module, Module)
  Headline
    the tensor-Hom adjunction maps
  Description
    Text
      Recall that @TO (tensor, Module, Module)@ and @TO (Hom, Module, Module)@ form an adjoint pair,
      meaning that there is a natural isomorphism
      $$ \mathrm{Hom}(F\otimes G,H) \cong \mathrm{Hom}(F,\mathrm{Hom}(G,H)). $$
  Synopsis
    Usage
      adjoint(f, F, G)
    Inputs
      f:Matrix
        a homomorphism $F \otimes G \to H$
      F:Module -- a free module
      G:Module -- a free module
    Outputs
       :Matrix
         the adjoint homomorphism $F \to \mathrm{Hom}(G,H)$
    Description
      Example
        R = QQ[x_1 .. x_24];
	f = genericMatrix(R, 2, 4*3)
	isHomogeneous f
	g = adjoint(f, R^4, R^3)
      Text
        If @TT "f"@ is homogeneous, and @TT "source f === F ** G"@ (including the grading),
	then the resulting matrix will be homogeneous.
      Example
        g = adjoint(f, R^4, R^{-1,-1,-1})
	isHomogeneous g
        f === adjoint'(g, R^{-1,-1,-1}, R^2)
  Synopsis
    Usage
      adjoint'(g, G, H)
    Inputs
      g:Matrix
        a homomorphism $F \to \mathrm{Hom}(G,H)$ between modules
      G:Module -- a free module
      H:Module -- a free module
    Outputs
       :Matrix
         the adjoint homomorphism $F \otimes G \to H$
    Description
      Text
        If @TT "g"@ is homogeneous, and @TT "target g === Hom(G,H)"@ (including the grading),
	then the resulting matrix will be homogeneous.
      Example
        R = QQ[x_1 .. x_12];
        g = genericMatrix(R, 6, 2)
        f = adjoint'(g, R^2, R^3)
        isHomogeneous f
        g === adjoint(f, R^{-1,-1}, R^2)
  SeeAlso
    dual
    flip
    compose
    reshape
    (Hom, Module, Module)
    (tensor, Module, Module)
///

-----------------------------------------------------------------------------

undocumented {
    [(dual, Matrix), Strategy],
    [(dual, Matrix), DegreeLimit],
    [(dual, Matrix), MinimalGenerators],
}
document {
    Key => dual,
    Headline => "dual module or map",
}
document {
    Key => (dual, Module),
    Headline => "dual module",
    TT "dual M", " -- the dual of a module."
}
document {
    Key => (dual, Matrix),
    Headline => "dual of a map",
    TT "dual f", " -- the dual (transpose) of a homomorphism."
}

-----------------------------------------------------------------------------

doc ///
Node
  Key
    homomorphism
   (homomorphism, Vector)
   (homomorphism, Matrix)
  Headline
    get the homomorphism from element of Hom
  Usage
    homomorphism f
  Inputs
    f:{Vector,Matrix}
      corresponding to an element in $\mathrm{Hom}(M,N)$ or a map $R^1 \to \mathrm{Hom}(M,N)$
  Outputs
    :Matrix
      the map $M \to N$, corresponding to the element $f \in \mathrm{Hom}(M,N)$
  Description
    Text
      When @TT "H = Hom(M,N)"@ is computed, information about computing the morphisms
      corresponding to its elements is stored in @TT "H"@.
    Example
      R = QQ[x,y,z, Degrees => {2,3,1}]/(y^2 - x^3)
      H = Hom(ideal(x,y), R^1)
      f = H_{1}
      g = homomorphism f
    Text
      The source and target are what they should be.
    Example
      source g === module ideal(x,y)
      target g === R^1
    Text
      Except for a possible redistribution of degrees between the map and modules,
      we can undo the process with @TO "homomorphism'"@.
    Example
      f' = homomorphism' g
      f === f'
      f - f'
      degree f, degree f'
      degrees f, degrees f'
    Text
      After @TO2((minimalPresentation, Module), "pruning")@ a Hom module,
      one cannot use homomorphism directly. Instead, first apply the pruning map:
    Example
      H1 = prune H
      homomorphism(H1.cache.pruningMap * H1_{1})
  SeeAlso
    Hom
    homomorphism'

Node
  Key
    homomorphism'
   (homomorphism', Matrix)
   [homomorphism', DegreeLimit]
   [homomorphism', MinimalGenerators]
   [homomorphism', Strategy]
  Headline
    get the element of Hom from a homomorphism
  Usage
    homomorphism' f
  Inputs
    f:Matrix
      of the form $M \to N$
    DegreeLimit => {ZZ,List}
      see @TO [Hom, DegreeLimit]@
    MinimalGenerators => Boolean
      see @TO [Hom, MinimalGenerators]@
    Strategy => Thing
      see @TO [Hom, Strategy]@
  Outputs
     :Matrix
       the map $R^1 \to \mathrm{Hom}(M,N)$, corresponding to the map $f \in \mathrm{Hom}(M,N)$
  Description
    Example
      R = QQ[x,y,z]
      f = vars R ++ vars R
      g = homomorphism' f
      target g === Hom(source f, target f)
    Text
      We can undo the process with @TO homomorphism@.
    Example
      f' = homomorphism g
      f === f'
  SourceCode
    (homomorphism', Matrix)
  SeeAlso
    Hom
    homomorphism
    adjoint
///

-----------------------------------------------------------------------------

doc ///
Node
  Key
     compose
    (compose, Module, Module, Module)
   [(compose, Module, Module, Module), DegreeLimit]
   [(compose, Module, Module, Module), MinimalGenerators]
   [(compose, Module, Module, Module), Strategy]
  Headline
    composition as a pairing on Hom-modules
  Usage
    compose(M, N, P)
  Inputs
    M:Module
    N:Module
    P:Module
--    DegreeLimit => {ZZ,List}
--      see @TO [Hom, DegreeLimit]@
--    MinimalGenerators => Boolean
--      see @TO [Hom, MinimalGenerators]@
--    Strategy => Thing
--      see @TO [Hom, Strategy]@
  Outputs
    :Matrix
      the composition map of homomorphism modules $\mathrm{Hom}(M,N)$ and $\mathrm{Hom}(N,P)$
  Description
    Text
      In the following example we check that the map does implement the composition map
      $$ \mathrm{Hom}(M,N) \otimes \mathrm{Hom}(N,P) \to \mathrm{Hom}(M,P). $$
    Example
      R = QQ[x,y]
      M = image vars R ++ R^2
      f = compose(M,M,M);
      H = Hom(M,M);
      g = H_{0}
      h = homomorphism g
      f * (g ** g)
      h' = homomorphism oo
      h' === h * h
      assert oo
    Text
      The modules should be defined over the same ring.
  SeeAlso
    Hom
    homomorphism
    homomorphism'
    adjoint
    flip
///