This command computes the deviations of a Ring, a ChainComplex, or a power series in the form of a RingElement. The deviations are the same as the degrees of the generators of the acyclic closure of R, or the degrees of the generators of the Tor algebra of R. This function takes an option called Limit (default value 3) that specifies the largest deviation to compute.
i1 : R = ZZ/101[a,b,c,d]/ideal {a^3,b^3,c^3,d^3}
o1 = R
o1 : QuotientRing
|
i2 : deviations(R)
o2 = HashTable{(1, {1}) => 4}
(2, {3}) => 4
o2 : HashTable
|
i3 : deviations(R,DegreeLimit=>4)
o3 = HashTable{(1, {1}) => 4}
(2, {3}) => 4
o3 : HashTable
|
i4 : S = R/ideal{a^2*b^2*c^2*d^2}
o4 = S
o4 : QuotientRing
|
i5 : deviations(S,DegreeLimit=>4)
o5 = HashTable{(1, {1}) => 4 }
(2, {3}) => 4
(2, {8}) => 1
(3, {9}) => 4
(4, {10}) => 6
(4, {11}) => 4
o5 : HashTable
|
i6 : T = ZZ/101[a,b]/ideal {a^2-b^3}
o6 = T
o6 : QuotientRing
|
i7 : deviations(T,DegreeLimit=>4)
warning: clearing value of symbol T to allow access to subscripted variables based on it
: debug with expression debug 6944 or with command line option --debug 6944
o7 = HashTable{1 => 2}
2 => 1
o7 : HashTable
|
Note that the deviations of T are not graded, since T is not graded. When calling deviations on a ChainComplex, the zeroth free module must be cyclic, and this is checked. The same goes for the case of a RingElement.
i8 : R = ZZ/101[a,b,c,d]/ideal {a^3,b^3,c^3,d^3}
o8 = R
o8 : QuotientRing
|
i9 : A = degreesRing R
o9 = A
o9 : PolynomialRing
|
i10 : kRes = res coker vars R
1 4 10 20 35 56
o10 = R <-- R <-- R <-- R <-- R <-- R
0 1 2 3 4 5
o10 : ChainComplex
|
i11 : pSeries = poincareN kRes
warning: clearing value of symbol T to allow access to subscripted variables based on it
: debug with expression debug 6944 or with command line option --debug 6944
2 2 2 3 3 3 3 4 4 4 4 5 4 6
o11 = 1 + 4S*T + 6S T + 4S T + 4S T + 16S T + S T + 24S T + 10S T +
0 0 0 0 0 0 0 0
-----------------------------------------------------------------------
5 6 5 7
16S T + 40S T
0 0
o11 : ZZ[S, T ]
0
|
i12 : devA = deviations(R,DegreeLimit=>5)
o12 = HashTable{(1, {1}) => 4}
(2, {3}) => 4
o12 : HashTable
|
i13 : devB = deviations(kRes,DegreeLimit=>5)
o13 = HashTable{(1, {1}) => 4}
(2, {3}) => 4
o13 : HashTable
|
i14 : devC = deviations(pSeries,degrees R, DegreeLimit=>5)
o14 = HashTable{(1, {1}) => 4}
(2, {3}) => 4
o14 : HashTable
|
i15 : devA === devB and devB === devC
o15 = true
|