This is AInfinity.info, produced by Macaulay2, version 1.21

AInfinity -- A-infinity algebra and module structures on free resolutions
*************************************************************************

Description
===========

Following Jesse Burke's paper "Higher Homotopies and Golod Rings", given a
polynomial ring S and a factor ring R = S/I and an R-module X, we compute
(finite) A-infinity algebra structure mR on an S-free resolution of R and the
A-infinity mR-module structure on an S-free resolution of X, and use them to
give a finite computation of the maps in an R-free resolution of X that we call
the Burke resolution. Here is an example with the simplest Golod
non-hypersurface in 3 variables

+----------------------------------+
|i1 : S = ZZ/101[a,b,c]            |
|                                  |
|o1 = S                            |
|                                  |
|o1 : PolynomialRing               |
+----------------------------------+
|i2 : R = S/(ideal(a)*ideal(a,b,c))|
|                                  |
|o2 = R                            |
|                                  |
|o2 : QuotientRing                 |
+----------------------------------+
|i3 : mR = aInfinity R;            |
+----------------------------------+
|i4 : res coker presentation R     |
|                                  |
|      1      3      3      1      |
|o4 = S  <-- S  <-- S  <-- S  <-- 0|
|                                  |
|     0      1      2      3      4|
|                                  |
|o4 : ChainComplex                 |
+----------------------------------+
|i5 : mR#{2,2}                     |
|                                  |
|o5 = {3} | 0 -a 0  a 0 0  0 -c 0 ||
|     {3} | 0 0  -a 0 0 0  a b  0 ||
|     {3} | 0 0  0  0 0 -a 0 0  0 ||
|                                  |
|             3       9            |
|o5 : Matrix S  <--- S             |
+----------------------------------+

Given a module X over R, Jesse Burke constructed a possibly non-minimal R-free
resolution of any length from the finite data mR and mX:

+---------------------------------------+
|i6 : X = coker vars R                  |
|                                       |
|o6 = cokernel | a b c |                |
|                                       |
|                            1          |
|o6 : R-module, quotient of R           |
+---------------------------------------+
|i7 : A = betti burkeResolution(X,8)    |
|                                       |
|            0 1 2  3  4  5   6   7   8 |
|o7 = total: 1 3 6 13 28 60 129 277 595 |
|         0: 1 3 6 13 28 60 129 277 595 |
|                                       |
|o7 : BettiTally                        |
+---------------------------------------+
|i8 : B = betti res(X, LengthLimit => 8)|
|                                       |
|            0 1 2  3  4  5   6   7   8 |
|o8 = total: 1 3 6 13 28 60 129 277 595 |
|         0: 1 3 6 13 28 60 129 277 595 |
|                                       |
|o8 : BettiTally                        |
+---------------------------------------+
|i9 : A == B                            |
|                                       |
|o9 = true                              |
+---------------------------------------+

See also
========

  * aInfinity -- aInfinity algebra and module structures on
    free resolutions

Authors
=======

  * David Eisenbud (see http://www.msri.org/~de ) <de@msri.org>
  * Mike Stillman (see http://pi.math.cornell.edu/~mike )
    <mike@math.cornell.edu>

Version
=======

This documentation describes version 0.1 of AInfinity.

Source code
===========

The source code from which this documentation is derived is in the file
AInfinity.m2 (see common/share/Macaulay2/AInfinity.m2 ).

Exports
=======

  * Functions and commands
      * aInfinity -- aInfinity algebra and module structures
        on free resolutions
      * burkeResolution -- compute a resolution from
        A-infinity structures
      * displayBlocks -- prints a matrix showing the
        source and target decomposition
      * extractBlocks -- displays components of a map in
        a labeled complex
      * golodBetti -- list the ranks of the free modules in
        the resolution of a Golod module
      * picture -- displays information about the blocks of a
        map or maps between direct sum modules
  * Methods
      * "aInfinity(HashTable,Module)" -- see aInfinity, --
        aInfinity algebra and module structures on free resolutions
      * "aInfinity(Module)" -- see aInfinity, -- aInfinity
        algebra and module structures on free resolutions
      * "aInfinity(Ring)" -- see aInfinity, -- aInfinity
        algebra and module structures on free resolutions
      * "burkeResolution(Module,ZZ)" -- see burkeResolution,
        -- compute a resolution from A-infinity structures
      * "displayBlocks(Matrix)" -- see displayBlocks, --
        prints a matrix showing the source and target decomposition
      * "extractBlocks(Matrix,List)" -- see extractBlocks,
        -- displays components of a map in a labeled complex
      * "extractBlocks(Matrix,List,List)" -- see extractBlocks,
        -- displays components of a map in a labeled complex
      * "golodBetti(Module,ZZ)" -- see golodBetti, -- list
        the ranks of the free modules in the resolution of a Golod module
      * "picture(ChainComplex)" -- see picture, -- displays
        information about the blocks of a map or maps between direct sum
        modules
      * "picture(Complex)" -- see picture, -- displays
        information about the blocks of a map or maps between direct sum
        modules
      * "picture(Matrix)" -- see picture, -- displays
        information about the blocks of a map or maps between direct sum
        modules
      * "picture(Module)" -- see picture, -- displays
        information about the blocks of a map or maps between direct sum
        modules
  * Symbols
      * Check -- Option for burkeResolution

For the programmer
==================

The object AInfinity, is a package (Macaulay2Doc).

aInfinity -- aInfinity algebra and module structures on free resolutions
************************************************************************

Synopsis
========

  * Usage:
        mR = aInfinity R
        mX = aInfinity(mR, X)
  * Inputs:
      * R, a ring (Macaulay2Doc), of the form S/I, where S is a
        polynomial ring
      * mR, a hash table (Macaulay2Doc), output of aInfinity R
  * Optional inputs (Macaulay2Doc),:
      * LengthLimit => an integer (Macaulay2Doc), default value null
      * Check => a Boolean value (Macaulay2Doc), default value
        true
  * Outputs:
      * mR, a hash table (Macaulay2Doc), A-infinity algebra
        structure on res coker presentation R
      * mX, a hash table (Macaulay2Doc), A-infinity module
        structure over mR on res pushForward(map(R,S),M)

Description
===========

Given an S-free resolution of  R = S/I, set B = A_+[1] (so that B_m = A_(m-1)
for m >= 2, B_i = 0 for i<2), and differentials have changed sign.

The A-infinity algebra structure is a sequence of degree -1 maps

mR#u: B_(u_1)**..**B_(u_t) -> B_(sum u -1), for sum u <= 2 + (pd_S R), and
thus, since each u_i>= 2, for t <= 1 + (pd_S R)//2.

where u is a List of integers \geq 2, such that

mR#{v}: B_v -> B_(v-1) is the differential of B,

mR#{v_1,v_2} is the multiplication (which is a homotopy B**B \to B lifting the
degree -2 map d**1 - 1**d: B_2**B_2 \to B_1 (which induces 0 in homology)

mR#u for n>2 is a homotopy for the negative of the sum of degree -2 maps of the
form (+/-) mR(1**...** 1 ** mR ** 1 **..**), inserting m into each possible
(consecutive) sub product, and i = 2...n-1. Here m_1 represents the
differential both of B and of B^(**n).

Given mR, a similar description holds for the A-infinity module structure mX on
the S-free resolution of an R-module X.

With the optional argument LengthLimit => n, only those A-infinity maps are
constructed that would be used to compute the resolution of a module of
projective dimension n-1.

+--------------------------------------------------------------------------+
|i1 : S = ZZ/101[a,b,c]                                                    |
|                                                                          |
|o1 = S                                                                    |
|                                                                          |
|o1 : PolynomialRing                                                       |
+--------------------------------------------------------------------------+
|i2 : R = S/(ideal(a)*ideal(a,b,c))                                        |
|                                                                          |
|o2 = R                                                                    |
|                                                                          |
|o2 : QuotientRing                                                         |
+--------------------------------------------------------------------------+
|i3 : mR = aInfinity R;                                                    |
+--------------------------------------------------------------------------+
|i4 : keys mR                                                              |
|                                                                          |
|o4 = {ring, {3, 2}, {2}, {3}, {2, 2}, resolution, {4}, {2, 3}}            |
|                                                                          |
|o4 : List                                                                 |
+--------------------------------------------------------------------------+
|i5 : res coker presentation R                                             |
|                                                                          |
|      1      3      3      1                                              |
|o5 = S  <-- S  <-- S  <-- S  <-- 0                                        |
|                                                                          |
|     0      1      2      3      4                                        |
|                                                                          |
|o5 : ChainComplex                                                         |
+--------------------------------------------------------------------------+
|i6 : mR#"resolution"                                                      |
|                                                                          |
|      3      3      1                                                     |
|o6 = S  <-- S  <-- S                                                      |
|                                                                          |
|     2      3      4                                                      |
|                                                                          |
|o6 : Complex                                                              |
+--------------------------------------------------------------------------+
|i7 : mR#{2,2}                                                             |
|                                                                          |
|o7 = {3} | 0 -a 0  a 0 0  0 -c 0 |                                        |
|     {3} | 0 0  -a 0 0 0  a b  0 |                                        |
|     {3} | 0 0  0  0 0 -a 0 0  0 |                                        |
|                                                                          |
|             3       9                                                    |
|o7 : Matrix S  <--- S                                                     |
+--------------------------------------------------------------------------+
|i8 : X = coker map(R^2,R^{2:-1},matrix{{a,b},{b,c}})                      |
|                                                                          |
|o8 = cokernel | a b |                                                     |
|              | b c |                                                     |
|                                                                          |
|                            2                                             |
|o8 : R-module, quotient of R                                              |
+--------------------------------------------------------------------------+
|i9 : mX = aInfinity(mR,X)                                                 |
|                                                                          |
|o9 = HashTable{{1} => | a b 0  0  0  0  |                                }|
|                      | b c a2 ab ac bc |                                 |
|               {2, 0} => {1} | a  0 0  0 c  0 |                           |
|                         {1} | 0  0 a  0 0  0 |                           |
|                         {2} | 0  1 0  0 0  0 |                           |
|                         {2} | -1 0 0  1 0  0 |                           |
|                         {2} | 0  0 -1 0 0  1 |                           |
|                         {2} | 0  0 0  0 -1 0 |                           |
|               {2, 1} => {3} | 1 0  0 a 0 c 0 0 -a 0 0 0 0 0 0  c  0 0 |  |
|                         {3} | 0 -1 0 0 0 0 1 0 0  0 0 0 0 0 0  0  0 0 |  |
|                         {3} | 0 0  0 0 a 0 1 0 0  0 0 0 0 0 -a -b 0 0 |  |
|                         {3} | 0 0  0 0 0 a 0 1 0  0 a b 0 0 0  0  0 0 |  |
|                         {3} | 0 0  0 0 0 a 0 0 0  0 0 b 1 0 0  0  0 c |  |
|                         {3} | 0 0  0 0 0 0 0 0 0  0 0 0 0 1 0  0  0 0 |  |
|               {2, 2, 0} => {4} | 0 0 0 0 0 0 0 0 0 0 0  0 1 0 0  0 0 0 | |
|                            {4} | 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 -1 0 0 0 | |
|               {2, 2, 1} => 0                                             |
|               {2, 2} => {4} | 0 0 0 a -a 0 0 a -a 0 0 0 0 b 0 c 0 0 |    |
|                         {4} | 0 0 0 0 0  a 0 0 0  0 0 b 0 a 0 0 0 0 |    |
|               {2, 3, 0} => 0                                             |
|               {2} => {1} | 0  ab  0  0  0  -bc |                         |
|                      {1} | 0  -a2 0  0  0  ac  |                         |
|                      {2} | -b c   -c 0  0  0   |                         |
|                      {2} | a  -b  0  -c 0  0   |                         |
|                      {2} | 0  0   a  b  -b -c  |                         |
|                      {2} | 0  0   0  0  a  b   |                         |
|               {3, 0} => {3} | 0  1 0  0 0  0 |                           |
|                         {3} | -1 0 0  0 0  0 |                           |
|                         {3} | -1 0 0  1 0  0 |                           |
|                         {3} | 0  0 -1 0 0  1 |                           |
|                         {3} | 0  0 -1 0 0  0 |                           |
|                         {3} | 0  0 0  0 -1 0 |                           |
|               {3, 1} => {4} | 0 1 0 0 a 0 -1 0 0 0 0 -c 0  0 a b 0 0 |   |
|                         {4} | 0 0 0 0 0 0 0  1 0 0 0 0  -1 0 0 0 0 0 |   |
|               {3, 2, 0} => 0                                             |
|               {3} => {3} | c  0  |                                       |
|                      {3} | 0  c  |                                       |
|                      {3} | -b c  |                                       |
|                      {3} | a  -b |                                       |
|                      {3} | 0  -b |                                       |
|                      {3} | 0  a  |                                       |
|               {4, 0} => {4} | 0  1 |                                     |
|                         {4} | -1 0 |                                     |
|               module => cokernel | a b |                                 |
|                                  | b c |                                 |
|                              2      6      6      2                      |
|               resolution => S  <-- S  <-- S  <-- S                       |
|                                                                          |
|                             0      1      2      3                       |
|                                                                          |
|o9 : HashTable                                                            |
+--------------------------------------------------------------------------+

Jesse Burke showed how to use mR,mX to make an R-free resolution

+-------------------------------------------------------------------------+
|i10 : betti burkeResolution(X,8)                                         |
|                                                                         |
|             0 1  2  3  4   5   6   7    8                               |
|o10 = total: 2 6 12 26 56 120 258 554 1190                               |
|          0: 2 2  6 12 26  56 120 258  554                               |
|          1: . 4  6 14 30  64 138 296  636                               |
|                                                                         |
|o10 : BettiTally                                                         |
+-------------------------------------------------------------------------+
|i11 : betti res(X, LengthLimit =>8)                                      |
|                                                                         |
|             0 1 2 3  4  5  6   7   8                                    |
|o11 = total: 2 2 2 6 12 26 56 120 258                                    |
|          0: 2 2 2 6 12 26 56 120 258                                    |
|                                                                         |
|o11 : BettiTally                                                         |
+-------------------------------------------------------------------------+
|i12 : Y = image presentation X                                           |
|                                                                         |
|o12 = image | a b |                                                      |
|            | b c |                                                      |
|                                                                         |
|                              2                                          |
|o12 : R-module, submodule of R                                           |
+-------------------------------------------------------------------------+
|i13 : burkeResolution(Y,8)                                               |
|                                                                         |
|       2      2      6      12      26      56      120      258      554|
|o13 = R  <-- R  <-- R  <-- R   <-- R   <-- R   <-- R    <-- R    <-- R   |
|                                                                         |
|      0      1      2      3       4       5       6        7        8   |
|                                                                         |
|o13 : Complex                                                            |
+-------------------------------------------------------------------------+

References
==========

Jesse Burke, Higher Homotopies and Golod Rings. arXiv:1508.03782v2, October
2015.

Caveat
======

Requires standard graded ring, module. Something to fix in a future version

See also
========

  * aInfinity -- aInfinity algebra and module structures on
    free resolutions

Ways to use aInfinity :
=======================

  * "aInfinity(HashTable,Module)"
  * "aInfinity(Module)"
  * "aInfinity(Ring)"

For the programmer
==================

The object aInfinity, is a method function with options (Macaulay2Doc).

burkeResolution -- compute a resolution from A-infinity structures
******************************************************************

Synopsis
========

  * Usage:
        F = burkeResolution(M,len)
  * Inputs:
      * M, a module (Macaulay2Doc), over a factor ring R/I
      * len, an integer (Macaulay2Doc), length of resolution desired
  * Optional inputs (Macaulay2Doc),:
      * Check => a Boolean value (Macaulay2Doc), default value
        false
  * Outputs:
      * F, a complex (Complexes), resolution of M over R, of
        length len

Description
===========

The construction follows the recipe in Jesse Burke's paper. The resolution
produced is minimal iff M is a Golod module. if the optional argument Check =>
true then the program checks that the differential produced squares to 0 and
that the complex is acyclic. The default is Check => false.

+--------------------------------------------+
|i1 : S = ZZ/101[x_1..x_4]                   |
|                                            |
|o1 = S                                      |
|                                            |
|o1 : PolynomialRing                         |
+--------------------------------------------+
|i2 : I = x_1^2*ideal(vars S)                |
|                                            |
|             3   2     2     2              |
|o2 = ideal (x , x x , x x , x x )           |
|             1   1 2   1 3   1 4            |
|                                            |
|o2 : Ideal of S                             |
+--------------------------------------------+
|i3 : R = S/I                                |
|                                            |
|o3 = R                                      |
|                                            |
|o3 : QuotientRing                           |
+--------------------------------------------+
|i4 : M = R^1/ideal(x_1..x_3)                |
|                                            |
|o4 = cokernel | x_1 x_2 x_3 |               |
|                                            |
|                            1               |
|o4 : R-module, quotient of R                |
+--------------------------------------------+
|i5 : F = burkeResolution(M, 4, Check =>true)|
|                                            |
|      1      3      7      19      50       |
|o5 = R  <-- R  <-- R  <-- R   <-- R         |
|                                            |
|     0      1      2      3       4         |
|                                            |
|o5 : Complex                                |
+--------------------------------------------+

the function golodBetti displays the Betti table of the resolution that would
be constructed by burkeResolution, without actually making the construction.

+----------------------------------------------------------------+
|i6 : golodBetti (M,12)                                          |
|                                                                |
|            0 1 2  3  4   5   6   7    8    9    10    11     12|
|o6 = total: 1 3 7 19 50 131 345 907 2385 6272 16493 43371 114051|
|         0: 1 3 3  1  .   .   .   .    .    .     .     .      .|
|         1: . . 4 18 34  35  21   7    1    .     .     .      .|
|         2: . . .  . 16  96 260 420  448  328   165    55     11|
|         3: . . .  .  .   .  64 480 1680 3640  5448  5940   4840|
|         4: . . .  .  .   .   .   .  256 2304  9856 26624  50832|
|         5: . . .  .  .   .   .   .    .    .  1024 10752  54272|
|         6: . . .  .  .   .   .   .    .    .     .     .   4096|
|                                                                |
|o6 : BettiTally                                                 |
+----------------------------------------------------------------+
|i7 : betti F                                                    |
|                                                                |
|            0 1 2  3  4                                         |
|o7 = total: 1 3 7 19 50                                         |
|         0: 1 3 3  1  .                                         |
|         1: . . 4 18 34                                         |
|         2: . . .  . 16                                         |
|                                                                |
|o7 : BettiTally                                                 |
+----------------------------------------------------------------+

The advantage of resolutions computed from A-infinity structures is the
decomposition of the differential into blocks corresponding to tensor products
of the modules in the finite resolutions. In the following display, the symbol
{u_1..u_n} denotes B_(u_1)**..**B_(u_(n-1))**G_(u_n), where G is the S-free
resolution of M and B is the truncated shift of the S-free resolution A of R^1:
that is, B_i = A_(i-1), i = 2...length A.

+----------------------------------------------+
|i8 : picture F                                |
|                                              |
|     +---------------------------------------+|
|     |+---+---+                              ||
|o8 = ||   |{1}|                              ||
|     |+---+---+                              ||
|     ||{0}| * |                              ||
|     |+---+---+                              ||
|     +---------------------------------------+|
|     |+---+---+------+                       ||
|     ||   |{2}|{2, 0}|                       ||
|     |+---+---+------+                       ||
|     ||{1}| * |   *  |                       ||
|     |+---+---+------+                       ||
|     +---------------------------------------+|
|     |+------+---+------+------+             ||
|     ||      |{3}|{3, 0}|{2, 1}|             ||
|     |+------+---+------+------+             ||
|     ||  {2} | * |   .  |   *  |             ||
|     |+------+---+------+------+             ||
|     ||{2, 0}| . |   *  |   *  |             ||
|     |+------+---+------+------+             ||
|     +---------------------------------------+|
|     |+------+------+------+------+---------+||
|     ||      |{4, 0}|{3, 1}|{2, 2}|{2, 2, 0}|||
|     |+------+------+------+------+---------+||
|     ||  {3} |   .  |   *  |   *  |    .    |||
|     |+------+------+------+------+---------+||
|     ||{3, 0}|   *  |   *  |   .  |    *    |||
|     |+------+------+------+------+---------+||
|     ||{2, 1}|   .  |   *  |   *  |    *    |||
|     |+------+------+------+------+---------+||
|     +---------------------------------------+|
+----------------------------------------------+

the functions displayBlocks and extractBlocks allow the examination of these
submatrices.

+-----------------------------------------------------------------------------+
|i9 : displayBlocks F.dd_2                                                    |
|                                                                             |
|     +---+----------------------+----------------------------------+         |
|o9 = |   |          {2}         |              {2, 0}              |         |
|     +---+----------------------+----------------------------------+         |
|     |{1}|{1} | -x_2 -x_3 0    ||{1} | x_1^2 x_1x_2 x_1x_3 x_1x_4 ||         |
|     |   |{1} | x_1  0    -x_3 ||{1} | 0     0      0      0      ||         |
|     |   |{1} | 0    x_1  x_2  ||{1} | 0     0      0      0      ||         |
|     +---+----------------------+----------------------------------+         |
+-----------------------------------------------------------------------------+
|i10 : extractBlocks(F.dd_4, {{2,1}},{{3,1},{2,2}})                           |
|                                                                             |
|o10 = {4} | x_2  0    0    x_3  0    0    0    0    0    x_4  0    0    0    |
|      {4} | 0    x_2  0    0    x_3  0    0    0    0    0    x_4  0    0    |
|      {4} | 0    0    x_2  0    0    x_3  0    0    0    0    0    x_4  0    |
|      {4} | -x_1 0    0    0    0    0    x_3  0    0    0    0    0    x_4  |
|      {4} | 0    -x_1 0    0    0    0    0    x_3  0    0    0    0    0    |
|      {4} | 0    0    -x_1 0    0    0    0    0    x_3  0    0    0    0    |
|      {4} | 0    0    0    -x_1 0    0    -x_2 0    0    0    0    0    0    |
|      {4} | 0    0    0    0    -x_1 0    0    -x_2 0    0    0    0    0    |
|      {4} | 0    0    0    0    0    -x_1 0    0    -x_2 0    0    0    0    |
|      {4} | 0    0    0    0    0    0    0    0    0    -x_1 0    0    -x_2 |
|      {4} | 0    0    0    0    0    0    0    0    0    0    -x_1 0    0    |
|      {4} | 0    0    0    0    0    0    0    0    0    0    0    -x_1 0    |
|      -----------------------------------------------------------------------|
|      0    0    0    0    0    -x_2 -x_3 0    0    0    0    0    0    0     |
|      0    0    0    0    0    x_1  0    -x_3 0    0    0    0    0    0     |
|      0    0    0    0    0    0    x_1  x_2  0    0    0    0    0    0     |
|      0    0    0    0    0    0    0    0    -x_2 -x_3 0    0    0    0     |
|      x_4  0    0    0    0    0    0    0    x_1  0    -x_3 0    0    0     |
|      0    x_4  0    0    0    0    0    0    0    x_1  x_2  0    0    0     |
|      0    0    x_4  0    0    0    0    0    0    0    0    -x_2 -x_3 0     |
|      0    0    0    x_4  0    0    0    0    0    0    0    x_1  0    -x_3  |
|      0    0    0    0    x_4  0    0    0    0    0    0    0    x_1  x_2   |
|      0    0    -x_3 0    0    0    0    0    0    0    0    0    0    0     |
|      -x_2 0    0    -x_3 0    0    0    0    0    0    0    0    0    0     |
|      0    -x_2 0    0    -x_3 0    0    0    0    0    0    0    0    0     |
|      -----------------------------------------------------------------------|
|      0    0    0    |                                                       |
|      0    0    0    |                                                       |
|      0    0    0    |                                                       |
|      0    0    0    |                                                       |
|      0    0    0    |                                                       |
|      0    0    0    |                                                       |
|      0    0    0    |                                                       |
|      0    0    0    |                                                       |
|      0    0    0    |                                                       |
|      -x_2 -x_3 0    |                                                       |
|      x_1  0    -x_3 |                                                       |
|      0    x_1  x_2  |                                                       |
|                                                                             |
|              12       30                                                    |
|o10 : Matrix R   <--- R                                                      |
+-----------------------------------------------------------------------------+

References
==========

Jesse Burke, Higher Homotopies and Golod Rings. arXiv:1508.03782v2, October
2015.

Caveat
======

Requires standard graded ring, module. Something to fix in a future version

See also
========

  * aInfinity -- aInfinity algebra and module structures on
    free resolutions
  * golodBetti -- list the ranks of the free modules in the
    resolution of a Golod module
  * picture -- displays information about the blocks of a map
    or maps between direct sum modules
  * extractBlocks -- displays components of a map in a
    labeled complex
  * displayBlocks -- prints a matrix showing the source
    and target decomposition

Ways to use burkeResolution :
=============================

  * "burkeResolution(Module,ZZ)"

For the programmer
==================

The object burkeResolution, is a method function with options (Macaulay2Doc).

Check -- Option for burkeResolution
***********************************

Synopsis
========

  * Usage:
        F := burkeResolution(M, Check => true)
  * Inputs:
      * M, a module (Macaulay2Doc),
      * Check, a Boolean value (Macaulay2Doc),
  * Outputs:
      * F, a complex (Complexes),

Description
===========

with Check => true, burkeResolution includes lines that check F.dd^2 == 0 and
also that F is acyclic (as far as it has been computed). The default value is
true.

+-----------------------------------------------------------------+
|i1 : R = ZZ/101[a,b,c]/(ideal(a,b,c))^2                          |
|                                                                 |
|o1 = R                                                           |
|                                                                 |
|o1 : QuotientRing                                                |
+-----------------------------------------------------------------+
|i2 : M = coker vars R                                            |
|                                                                 |
|o2 = cokernel | a b c |                                          |
|                                                                 |
|                            1                                    |
|o2 : R-module, quotient of R                                     |
+-----------------------------------------------------------------+
|i3 : elapsedTime burkeResolution(M, 7, Check => false)           |
| -- 2.96821 seconds elapsed                                      |
|                                                                 |
|      1      3      9      27      81      243      729      2187|
|o3 = R  <-- R  <-- R  <-- R   <-- R   <-- R    <-- R    <-- R    |
|                                                                 |
|     0      1      2      3       4       5        6        7    |
|                                                                 |
|o3 : Complex                                                     |
+-----------------------------------------------------------------+
|i4 : elapsedTime burkeResolution(M, 7, Check => true)            |
| -- 4.11182 seconds elapsed                                      |
|                                                                 |
|      1      3      9      27      81      243      729      2187|
|o4 = R  <-- R  <-- R  <-- R   <-- R   <-- R    <-- R    <-- R    |
|                                                                 |
|     0      1      2      3       4       5        6        7    |
|                                                                 |
|o4 : Complex                                                     |
+-----------------------------------------------------------------+

Caveat
======

The Check takes time.

See also
========

  * burkeResolution -- compute a resolution from
    A-infinity structures

Functions with optional argument named Check :
==============================================

  * "aInfinity(...,Check=>...)" -- see aInfinity, -- aInfinity
    algebra and module structures on free resolutions
  * "burkeResolution(...,Check=>...)" -- see burkeResolution,
    -- compute a resolution from A-infinity structures

For the programmer
==================

The object Check, is a symbol (Macaulay2Doc).

picture -- displays information about the blocks of a map or maps between direct sum modules
********************************************************************************************

Synopsis
========

  * Usage:
        picture F
        picture m
        picture M
  * Inputs:
      * F, a complex (Complexes),
      * F, a chain complex (Macaulay2Doc),
      * m, a matrix (Macaulay2Doc), of map between labeled direct
        sum modules
      * M, a module (Macaulay2Doc), a labeled directSum module

Description
===========

The sources and targets of the differentials in F = burkeResolution(M,n), where
M is an R = S/I-module, are direct sums whose summands are labeled, each by a
List of ZZ corresponding to a tensor product of components of the S-free
resolutions of R and M.

The maps in the AInfinity structures are similarly labeled (each one has a
source that has just one summand.)

When applied to such a map, picture prints it as a table, with columns labeled
with the symbols associated to the source and rows labeled with the symbols
associated to the target. When applied to a complex, the output is a "netList"
display of the pictures of each of the maps.

+--------------------------------------------------+
|i1 : R = ZZ/101[a,b,c,d]/ideal"a3,a2b2,b4,c4,d2"  |
|                                                  |
|o1 = R                                            |
|                                                  |
|o1 : QuotientRing                                 |
+--------------------------------------------------+
|i2 : F = burkeResolution(coker vars R, 4)         |
|                                                  |
|      1      4      11      33      99            |
|o2 = R  <-- R  <-- R   <-- R   <-- R              |
|                                                  |
|     0      1      2       3       4              |
|                                                  |
|o2 : Complex                                      |
+--------------------------------------------------+
|i3 : picture F.dd_3                               |
|                                                  |
|     +------+---+------+------+                   |
|o3 = |      |{3}|{3, 0}|{2, 1}|                   |
|     +------+---+------+------+                   |
|     |  {2} | * |   *  |   *  |                   |
|     +------+---+------+------+                   |
|     |{2, 0}| . |   *  |   *  |                   |
|     +------+---+------+------+                   |
+--------------------------------------------------+
|i4 : picture F                                    |
|                                                  |
|     +-------------------------------------------+|
|     |+---+---+                                  ||
|o4 = ||   |{1}|                                  ||
|     |+---+---+                                  ||
|     ||{0}| * |                                  ||
|     |+---+---+                                  ||
|     +-------------------------------------------+|
|     |+---+---+------+                           ||
|     ||   |{2}|{2, 0}|                           ||
|     |+---+---+------+                           ||
|     ||{1}| * |   *  |                           ||
|     |+---+---+------+                           ||
|     +-------------------------------------------+|
|     |+------+---+------+------+                 ||
|     ||      |{3}|{3, 0}|{2, 1}|                 ||
|     |+------+---+------+------+                 ||
|     ||  {2} | * |   *  |   *  |                 ||
|     |+------+---+------+------+                 ||
|     ||{2, 0}| . |   *  |   *  |                 ||
|     |+------+---+------+------+                 ||
|     +-------------------------------------------+|
|     |+------+---+------+------+------+---------+||
|     ||      |{4}|{4, 0}|{3, 1}|{2, 2}|{2, 2, 0}|||
|     |+------+---+------+------+------+---------+||
|     ||  {3} | * |   *  |   *  |   *  |    *    |||
|     |+------+---+------+------+------+---------+||
|     ||{3, 0}| . |   *  |   *  |   .  |    u    |||
|     |+------+---+------+------+------+---------+||
|     ||{2, 1}| . |   .  |   *  |   *  |    *    |||
|     |+------+---+------+------+------+---------+||
|     +-------------------------------------------+|
+--------------------------------------------------+

The possible symbols in the table produced by picture are:

. if the corresponding matrix is zero * if the corresponding matrix is nonzero
u if the entries of the corresponding matrix contain a unit.

See also
========

  * burkeResolution -- compute a resolution from
    A-infinity structures
  * aInfinity -- aInfinity algebra and module structures on
    free resolutions

Ways to use picture :
=====================

  * "picture(ChainComplex)"
  * "picture(Complex)"
  * "picture(Matrix)"
  * "picture(Module)"

For the programmer
==================

The object picture, is a method function (Macaulay2Doc).

displayBlocks -- prints a matrix showing the source and target decomposition
****************************************************************************

Synopsis
========

  * Usage:
        displayBlocks M
  * Inputs:
      * M, a matrix (Macaulay2Doc), with source and target
        labeled direct sums of free modules

Description
===========

The maps produced by burkeResolution, and
aInfinity, have direct sums of labeled modules as sources and
targets; the label corresponds to the tensor factors.

displayBlocks M shows this data

+-----------------------------------------------------------------------------+
|i1 : R = ZZ/101[a,b,c]/(ideal(a,b,c^2))^2                                    |
|                                                                             |
|o1 = R                                                                       |
|                                                                             |
|o1 : QuotientRing                                                            |
+-----------------------------------------------------------------------------+
|i2 : F = burkeResolution (coker vars R, 4)                                   |
|                                                                             |
|      1      3      9      27      81                                        |
|o2 = R  <-- R  <-- R  <-- R   <-- R                                          |
|                                                                             |
|     0      1      2      3       4                                          |
|                                                                             |
|o2 : Complex                                                                 |
+-----------------------------------------------------------------------------+
|i3 : picture F                                                               |
|                                                                             |
|     +---------------------------------------+                               |
|     |+---+---+                              |                               |
|o3 = ||   |{1}|                              |                               |
|     |+---+---+                              |                               |
|     ||{0}| * |                              |                               |
|     |+---+---+                              |                               |
|     +---------------------------------------+                               |
|     |+---+---+------+                       |                               |
|     ||   |{2}|{2, 0}|                       |                               |
|     |+---+---+------+                       |                               |
|     ||{1}| * |   *  |                       |                               |
|     |+---+---+------+                       |                               |
|     +---------------------------------------+                               |
|     |+------+---+------+------+             |                               |
|     ||      |{3}|{3, 0}|{2, 1}|             |                               |
|     |+------+---+------+------+             |                               |
|     ||  {2} | * |   *  |   *  |             |                               |
|     |+------+---+------+------+             |                               |
|     ||{2, 0}| . |   *  |   *  |             |                               |
|     |+------+---+------+------+             |                               |
|     +---------------------------------------+                               |
|     |+------+------+------+------+---------+|                               |
|     ||      |{4, 0}|{3, 1}|{2, 2}|{2, 2, 0}||                               |
|     |+------+------+------+------+---------+|                               |
|     ||  {3} |   *  |   *  |   *  |    *    ||                               |
|     |+------+------+------+------+---------+|                               |
|     ||{3, 0}|   *  |   *  |   .  |    *    ||                               |
|     |+------+------+------+------+---------+|                               |
|     ||{2, 1}|   .  |   *  |   *  |    *    ||                               |
|     |+------+------+------+------+---------+|                               |
|     +---------------------------------------+                               |
+-----------------------------------------------------------------------------+
|i4 : displayBlocks F.dd_3                                                    |
|                                                                             |
|     +------+----------+-------------------------------+---------------------|
|o4 = |      |    {3}   |             {3, 0}            |                     |
|     +------+----------+-------------------------------+---------------------|
|     |  {2} |{2} | c  ||   {2} | 0 b 0  0  0 0  0 0 |  |{2} | 0 a 0 0 b c -b |
|     |      |{2} | -b ||   {2} | 0 0 ac bc 0 0  0 0 |  |{2} | 0 0 a 0 0 0 0  |
|     |      |{2} | a  ||   {2} | 0 0 0  0  0 bc 0 0 |  |{2} | 0 0 0 0 0 a 0  |
|     +------+----------+-------------------------------+---------------------|
|     |{2, 0}|     .    |{2} | b  0  c2 0  0  0  0  0  ||       {2} | a b c 0 |
|     |      |          |{2} | -a b  0  c2 0  0  0  0  ||       {2} | 0 0 0 a |
|     |      |          |{2} | 0  -a 0  0  0  c2 0  0  ||       {2} | 0 0 0 0 |
|     |      |          |{3} | 0  0  -a -b b  0  c2 0  ||       {3} | 0 0 0 0 |
|     |      |          |{3} | 0  0  0  0  -a -b 0  c2 ||       {3} | 0 0 0 0 |
|     |      |          |{4} | 0  0  0  0  0  0  -a -b ||       {4} | 0 0 0 0 |
|     +------+----------+-------------------------------+---------------------|
|-----------------------------------------------------------------------------|
|-----------------------------------+                                         |
|    {2, 1}                         |                                         |
|-----------------------------------+                                         |
|0 0 0   c2  0 -c2 0   0 0   0   0 ||                                         |
|0 0 -ac -bc 0 0   0   0 -c3 0   0 ||                                         |
|0 b 0   0   0 -ac -bc 0 0   -c3 0 ||                                         |
|-----------------------------------+                                         |
|0 0 0 0 0 0 0 0 0 0 0 0 0 0 |      |                                         |
|b c 0 0 0 0 0 0 0 0 0 0 0 0 |      |                                         |
|0 0 a b c 0 0 0 0 0 0 0 0 0 |      |                                         |
|0 0 0 0 0 a b c 0 0 0 0 0 0 |      |                                         |
|0 0 0 0 0 0 0 0 a b c 0 0 0 |      |                                         |
|0 0 0 0 0 0 0 0 0 0 0 a b c |      |                                         |
|-----------------------------------+                                         |
+-----------------------------------------------------------------------------+

See also
========

  * picture -- displays information about the blocks of a map
    or maps between direct sum modules
  * burkeResolution -- compute a resolution from
    A-infinity structures
  * extractBlocks -- displays components of a map in a
    labeled complex

Ways to use displayBlocks :
===========================

  * "displayBlocks(Matrix)"

For the programmer
==================

The object displayBlocks, is a method function (Macaulay2Doc).

extractBlocks -- displays components of a map in a labeled complex
******************************************************************

Synopsis
========

  * Usage:
        M = extractBlocks(f, sour)
        M = extractBlocks(f, tar, sour)
  * Inputs:
      * sour, a list (Macaulay2Doc), list of ZZ, the label of a
        summand of the source of f
      * sour, a list (Macaulay2Doc), list of ZZ, the label of a
        summand of the source of f OR list of lists of ZZ, specifying multiple
        summands
      * tar, a list (Macaulay2Doc), same as sour, but for the
        target of f
  * Outputs:
      * M, a matrix (Macaulay2Doc), the submatrix specified by
        tar and sour

Description
===========

The terms of the burkeResolution, resolution are direct
sums of labeled modules. the function picture, shows the symbols
associated to the summands, while the function extractBlocks provides the
submatrix associated with the summands specified.

+-----------------------------------------------------------------------------+
|i1 : R = ZZ/101[a,b,c,d]/ideal(a^2, b^2, c^3, d^4)                           |
|                                                                             |
|o1 = R                                                                       |
|                                                                             |
|o1 : QuotientRing                                                            |
+-----------------------------------------------------------------------------+
|i2 : M = R^1/ideal(a*b,c*d)                                                  |
|                                                                             |
|o2 = cokernel | ab cd |                                                      |
|                                                                             |
|                            1                                                |
|o2 : R-module, quotient of R                                                 |
+-----------------------------------------------------------------------------+
|i3 : F = burkeResolution(M,5)                                                |
|                                                                             |
|      1      6      17      42      112      295                             |
|o3 = R  <-- R  <-- R   <-- R   <-- R    <-- R                                |
|                                                                             |
|     0      1      2       3       4        5                                |
|                                                                             |
|o3 : Complex                                                                 |
+-----------------------------------------------------------------------------+
|i4 : picture F.dd_3                                                          |
|                                                                             |
|     +------+---+------+------+                                              |
|o4 = |      |{3}|{3, 0}|{2, 1}|                                              |
|     +------+---+------+------+                                              |
|     |  {2} | * |   u  |   u  |                                              |
|     +------+---+------+------+                                              |
|     |{2, 0}| . |   .  |   *  |                                              |
|     +------+---+------+------+                                              |
+-----------------------------------------------------------------------------+
|i5 : extractBlocks(F.dd_3, {2,1})                                            |
|                                                                             |
|o5 = {3} | 0 a  b 0  0 0 -b 0  0 0  0 0 0  0  0  0  0 0   0  0  0  0  0   0 ||
|     {3} | 0 0  a 0  0 0 -a -b 0 0  0 0 0  0  0  0  0 0   0  0  0  0  0   0 ||
|     {4} | 0 0  0 1  0 0 0  0  0 0  0 0 0  0  0  0  0 0   0  0  0  0  0   0 ||
|     {4} | 0 0  0 0  0 0 0  0  0 0  0 0 0  0  0  0  0 0   0  0  0  0  0   0 ||
|     {4} | 0 0  0 0  0 0 0  0  0 1  0 0 0  0  0  0  0 0   0  0  0  0  0   0 ||
|     {4} | 0 0  0 0  0 0 0  0  0 0  0 0 0  0  0  -c 0 -d3 0  0  0  0  d3  0 ||
|     {5} | 0 0  0 0  1 0 0  0  0 0  0 0 -1 0  0  0  0 0   0  0  0  0  0   0 ||
|     {5} | 0 0  0 0  0 0 0  0  0 0  0 0 0  -1 0  0  0 0   0  0  0  0  0   0 ||
|     {5} | 0 0  0 0  0 0 0  0  0 0  1 0 0  0  -1 0  0 0   0  0  0  0  0   0 ||
|     {5} | 0 0  0 0  0 0 0  0  0 0  0 0 0  0  0  0  0 c2  0  0  0  -d -c2 0 ||
|     {6} | 0 0  0 0  0 1 0  0  0 0  0 0 0  0  0  0  0 0   -1 0  0  0  0   0 ||
|     {6} | 0 0  0 0  0 0 0  0  0 0  0 0 0  0  0  0  0 0   0  -1 0  0  0   0 ||
|     {6} | 0 0  0 0  0 0 0  0  0 0  0 1 0  0  0  0  0 0   0  0  -1 0  0   0 ||
|     {2} | 0 ab 0 cd 0 0 0  0  0 0  0 0 0  0  0  0  0 0   0  0  0  0  0   0 ||
|     {2} | 0 0  0 0  0 0 0  ab 0 cd 0 0 0  0  0  0  0 0   0  0  0  0  0   0 ||
|     {3} | 0 0  0 0  0 0 0  0  0 0  0 0 0  ab 0  cd 0 0   0  0  0  0  0   0 ||
|     {4} | 0 0  0 0  0 0 0  0  0 0  0 0 0  0  0  0  0 0   0  ab 0  cd 0   0 ||
|                                                                             |
|             17       24                                                     |
|o5 : Matrix R   <--- R                                                       |
+-----------------------------------------------------------------------------+
|i6 : extractBlocks(F.dd_3,{2,0}, {2,1})                                      |
|                                                                             |
|o6 = {2} | 0 ab 0 cd 0 0 0 0  0 0  0 0 0 0  0 0  0 0 0 0  0 0  0 0 |         |
|     {2} | 0 0  0 0  0 0 0 ab 0 cd 0 0 0 0  0 0  0 0 0 0  0 0  0 0 |         |
|     {3} | 0 0  0 0  0 0 0 0  0 0  0 0 0 ab 0 cd 0 0 0 0  0 0  0 0 |         |
|     {4} | 0 0  0 0  0 0 0 0  0 0  0 0 0 0  0 0  0 0 0 ab 0 cd 0 0 |         |
|                                                                             |
|             4       24                                                      |
|o6 : Matrix R  <--- R                                                        |
+-----------------------------------------------------------------------------+
|i7 : extractBlocks(F.dd_3,{2,0}, {{3,0},{2,1}})                              |
|                                                                             |
|o7 = {2} | 0 0 0 0 0 0 0 ab 0 cd 0 0 0 0  0 0  0 0 0 0  0 0  0 0 0 0  0 0  0 |
|     {2} | 0 0 0 0 0 0 0 0  0 0  0 0 0 ab 0 cd 0 0 0 0  0 0  0 0 0 0  0 0  0 |
|     {3} | 0 0 0 0 0 0 0 0  0 0  0 0 0 0  0 0  0 0 0 ab 0 cd 0 0 0 0  0 0  0 |
|     {4} | 0 0 0 0 0 0 0 0  0 0  0 0 0 0  0 0  0 0 0 0  0 0  0 0 0 ab 0 cd 0 |
|     ------------------------------------------------------------------------|
|     0 |                                                                     |
|     0 |                                                                     |
|     0 |                                                                     |
|     0 |                                                                     |
|                                                                             |
|             4       30                                                      |
|o7 : Matrix R  <--- R                                                        |
+-----------------------------------------------------------------------------+

See also
========

  * burkeResolution -- compute a resolution from
    A-infinity structures
  * picture -- displays information about the blocks of a map
    or maps between direct sum modules

Ways to use extractBlocks :
===========================

  * "extractBlocks(Matrix,List)"
  * "extractBlocks(Matrix,List,List)"

For the programmer
==================

The object extractBlocks, is a method function (Macaulay2Doc).

golodBetti -- list the ranks of the free modules in the resolution of a Golod module
************************************************************************************

Synopsis
========

  * Usage:
        B = golodBetti(M,b)
  * Inputs:
      * M, a module (Macaulay2Doc), R-module
      * b, an integer (Macaulay2Doc), homological degree to which to
        carry the computation
  * Outputs:
      * B, a Betti tally (Macaulay2Doc), This would be betti
        table of the free res of M over R, if M were a Golod module over R

Description
===========

Let S be a standard graded polynomial ring. A module M over R = S/I is Golod if
the resolution H of M has maximal betti numbers given the betti numbers of the
S-free resolutions F of R and K of M. This resolution, H, has underlying graded
module H = R**K**T(B), where B is the truncated resolution F_1 <- F_2... and
T(B) is the tensor algebra.

Since the component modules of H are given, the computation only requires the
computation of the minimal S-free resolution of M, and then is purely numeric;
the differentials in the R-free resolution of M are not computed.

In case M = coker vars R, the result is the Betti table of the
Golod-Shamash-Eagon resolution of the residue field.

We say that M is a Golod module (over R) if the ranks of the free modules in a
minimal R-free resolution of M are equal to the numbers produced by golodBetti.
Theorems of Levin and Lescot assert that if R has a Golod module, then R is a
Golod ring; and that if R is Golod, then the d-th syzygy of any R-module M is
Golod for all d greater than or equal to the projective dimension of M as an
S-module (more generally, the co-depth of M) (Avramov, 6 lectures, 5.3.2).

+-------------------------------------------------------+
|i1 : S = ZZ/101[a,b,c]                                 |
|                                                       |
|o1 = S                                                 |
|                                                       |
|o1 : PolynomialRing                                    |
+-------------------------------------------------------+
|i2 : I = (ideal(a,b,c^2))^2                            |
|                                                       |
|             2          2   2     2   4                |
|o2 = ideal (a , a*b, a*c , b , b*c , c )               |
|                                                       |
|o2 : Ideal of S                                        |
+-------------------------------------------------------+
|i3 : F = res(S^1/I)                                    |
|                                                       |
|      1      6      8      3                           |
|o3 = S  <-- S  <-- S  <-- S  <-- 0                     |
|                                                       |
|     0      1      2      3      4                     |
|                                                       |
|o3 : ChainComplex                                      |
+-------------------------------------------------------+
|i4 : R = S/I                                           |
|                                                       |
|o4 = R                                                 |
|                                                       |
|o4 : QuotientRing                                      |
+-------------------------------------------------------+
|i5 : F = burkeResolution (coker vars R, 6)             |
|                                                       |
|      1      3      9      27      81      243      729|
|o5 = R  <-- R  <-- R  <-- R   <-- R   <-- R    <-- R   |
|                                                       |
|     0      1      2      3       4       5        6   |
|                                                       |
|o5 : Complex                                           |
+-------------------------------------------------------+
|i6 : golodBetti(coker vars R,6)                        |
|                                                       |
|            0 1 2  3  4   5   6                        |
|o6 = total: 1 3 9 27 81 243 729                        |
|         0: 1 3 6 12 24  48  96                        |
|         1: . . 2 10 32  88 224                        |
|         2: . . 1  5 20  72 232                        |
|         3: . . .  .  4  28 128                        |
|         4: . . .  .  1   7  42                        |
|         5: . . .  .  .   .   6                        |
|         6: . . .  .  .   .   1                        |
|                                                       |
|o6 : BettiTally                                        |
+-------------------------------------------------------+
|i7 : betti res (coker vars R, LengthLimit => 6)        |
|                                                       |
|            0 1 2  3  4   5   6                        |
|o7 = total: 1 3 9 27 81 243 729                        |
|         0: 1 3 6 12 24  48  96                        |
|         1: . . 2 10 32  88 224                        |
|         2: . . 1  5 20  72 232                        |
|         3: . . .  .  4  28 128                        |
|         4: . . .  .  1   7  42                        |
|         5: . . .  .  .   .   6                        |
|         6: . . .  .  .   .   1                        |
|                                                       |
|o7 : BettiTally                                        |
+-------------------------------------------------------+
|i8 : betti F                                           |
|                                                       |
|            0 1 2  3  4   5   6                        |
|o8 = total: 1 3 9 27 81 243 729                        |
|         0: 1 3 6 12 24  48  96                        |
|         1: . . 2 10 32  88 224                        |
|         2: . . 1  5 20  72 232                        |
|         3: . . .  .  4  28 128                        |
|         4: . . .  .  1   7  42                        |
|         5: . . .  .  .   .   6                        |
|         6: . . .  .  .   .   1                        |
|                                                       |
|o8 : BettiTally                                        |
+-------------------------------------------------------+

See also
========

  * burkeResolution -- compute a resolution from
    A-infinity structures

Ways to use golodBetti :
========================

  * "golodBetti(Module,ZZ)"

For the programmer
==================

The object golodBetti, is a method function (Macaulay2Doc).