resolutionMap -- map from a free resolution to the given complex

Synopsis

• Usage:
resolutionMap C
• Inputs:
• C, ,
• Optional inputs:
• LengthLimit => an integer, default value infinity, this is used to limit somehow the computation where resolutions might be too long or infinite
• DegreeLimit => ..., default value null, unused
• FastNonminimal => ..., default value false, unused
• HardDegreeLimit => ..., default value {}, unused
• PairLimit => ..., default value infinity, unused
• SortStrategy => ..., default value 0, unused
• StopBeforeComputation => ..., default value false, unused
• Strategy => ..., default value null, unused
• SyzygyLimit => ..., default value infinity, unused
• Outputs:
• , a quasi-isomorphism whose source is a free resolution and whose target is $C$

Description

Given a complex $C$, this method produces the natural quasi-isomorphism from a complex $F$ all of whose terms are free modules to the complex $C$. The algorithm used minimizes the ranks of the free modules in $F$.

 i1 : R = ZZ/101[a,b,c]; i2 : I = ideal(a^2, a*b, b*c) 2 o2 = ideal (a , a*b, b*c) o2 : Ideal of R i3 : C = Hom(freeResolution I, R^1/I) o3 = cokernel {-3} | bc ab a2 0 0 0 | <-- cokernel {-2} | bc ab a2 0 0 0 0 0 0 | <-- cokernel | bc ab a2 | {-3} | 0 0 0 bc ab a2 | {-2} | 0 0 0 bc ab a2 0 0 0 | {-2} | 0 0 0 0 0 0 bc ab a2 | 0 -2 -1 o3 : Complex i4 : assert all(min C .. max C, i -> not isFreeModule C_i) i5 : fC = resolutionMap C 2 o5 = -2 : cokernel {-3} | bc ab a2 0 0 0 | <------------------ R : -2 {-3} | 0 0 0 bc ab a2 | {-3} | -1 0 | {-3} | 0 -1 | 9 -1 : cokernel {-2} | bc ab a2 0 0 0 0 0 0 | <-------------------------------------- R : -1 {-2} | 0 0 0 bc ab a2 0 0 0 | {-2} | 1 0 0 -c -a 0 0 0 0 | {-2} | 0 0 0 0 0 0 bc ab a2 | {-2} | 0 -1 0 0 0 -b -a 0 0 | {-2} | 0 0 -1 0 0 0 -c -b -a | 14 0 : cokernel | bc ab a2 | <------------------------------------ R : 0 | 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 | o5 : ComplexMap i6 : FC = resolution C 2 9 14 9 2 o6 = R <-- R <-- R <-- R <-- R -2 -1 0 1 2 o6 : Complex i7 : prune HH FC o7 = cokernel {-3} | b a 0 | <-- cokernel {-1} | b a 0 0 0 0 0 0 0 0 0 0 | <-- cokernel | bc ab a2 | {-3} | 0 -c a | {-1} | 0 -c b a 0 0 0 0 0 0 0 0 | {-1} | 0 0 0 0 c a 0 0 0 0 0 0 | 0 -2 {-1} | 0 0 0 0 0 0 b 0 0 a 0 0 | {-1} | 0 0 0 0 0 0 0 c a 0 0 0 | {-1} | 0 0 0 0 0 0 0 0 0 -c b a | -1 o7 : Complex i8 : assert isQuasiIsomorphism fC i9 : assert isFree FC i10 : assert isWellDefined fC i11 : assert(0 == coker fC) -- showing that fC is surjective.

The resolution of a short exact sequence is simply the zero complex.

 i12 : J = ideal(a,b) o12 = ideal (a, b) o12 : Ideal of R i13 : K = ideal(b^2,c) 2 o13 = ideal (b , c) o13 : Ideal of R i14 : g1 = map(R^1/(J+K), R^1/J ++ R^1/K, {{1,-1}}) o14 = | 1 -1 | o14 : Matrix i15 : g2 = map(R^1/J ++ R^1/K, R^1/(intersect(J,K)), {{1},{1}}) o15 = | 1 | | 1 | o15 : Matrix i16 : D = complex{g1, g2} o16 = cokernel | a b b2 c | <-- cokernel | a b 0 0 | <-- cokernel | bc ac b2 | | 0 0 b2 c | 0 2 1 o16 : Complex i17 : assert isWellDefined D i18 : assert isShortExactSequence(g1,g2) i19 : fD = resolutionMap D o19 = 0 o19 : ComplexMap i20 : assert isWellDefined fD i21 : assert isQuasiIsomorphism fD i22 : assert(0 == source fD) -- so fD is certainly not surjective!

To avoid recomputation, this method caches its value.