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
|
-- -*- coding: utf-8 -*-
--- status: TODO
--- author(s):
--- notes:
document {
Key => kernel,
Headline => "kernel of a ringmap, matrix, or chain complex",
}
document {
Key => (kernel,RingMap),
Headline => "kernel of a ringmap",
Usage => "kernel f",
Inputs => {
"f" => {TT "R", " --> ", TT "S"},
SubringLimit => ZZ => "stop the computation after this many elements of the kernel have been found"
},
Outputs => {
Ideal => {"an ideal of ", TT "R"}
},
EXAMPLE lines ///
R = QQ[a..d];
S = QQ[s,t];
F = map(S,R,{s^3, s^2*t, s*t^2, t^3})
ker F
G = map(S,R,{s^5, s^3*t^2-t, s*t-s, t^5})
ker(G, SubringLimit=>1)
///,
"In the case when everything is homogeneous, Hilbert functions are
used to speed up the computations.",
Caveat => {"It should be possible to interrupt the computation and restart it, but this has
not yet been implemented."},
SeeAlso => {"substitution and maps between rings", "elimination of variables", monomialCurveIdeal}
}
document {
Key => {(kernel,ChainComplexMap),
(kernel, GradedModuleMap)},
Headline => "kernel of a chain complex map",
Usage => "kernel f",
Inputs => {
"f" => {"a map of chain complexes ", TT "C --> D"}
},
Outputs => {
ChainComplex => {"the kernel of f"}
},
"If f is ", ofClass GradedModuleMap, ", then the result will be ", ofClass GradedModule, ".",
PARA{},
EXAMPLE lines ///
R = QQ[a..d]
I = ideal(a^3,b^3,c^3)
C = res coker gens I
D = res coker gens (I + ideal(a*b*c))
F = extend(D,C,map(D_0,C_0,1))
///,
SeeAlso => {syz,
-- Mike wanted this: "kernel, cokernel and image of a map of modules",
genericSkewMatrix}
}
document {
Key => {(kernel,Matrix),
(kernel, RingElement)},
Headline => "kernel of a matrix",
Usage => "kernel f",
Inputs => {
"f" => {"a map of modules ", TT "M --> N"}
},
Outputs => {
Module => {"the kernel of f, a submodule of M"}
},
"If f is ", ofClass RingElement, ", then it will be interpreted as a one by one matrix.",
PARA{},
"The kernel is the submodule of M of all elements mapping to zero under ", TT "f", ".
Over polynomial rings, this is computed using a Gröbner basis computation.",
EXAMPLE lines ///
R = ZZ/32003[vars(0..10)]
M = genericSkewMatrix(R,a,5)
ker M
///,
SeeAlso => {syz,
-- Mike wanted this: "kernel, cokernel and image of a map of modules",
genericSkewMatrix}
}
|