Macaulay2 » Documentation
Packages » DGAlgebras :: minimalModel
next | previous | forward | backward | up | index | toc

minimalModel -- Build the minimal DG algebra resolution of a quotient ring

Description

Given an ideal I in a polynomial ring Q, minimalModel I is a shorthand for

acyclicClosure(koszulComplexDGA I) .

The Koszul DG algebra on a generating set of I has H_0 = Q/I, and acyclicClosure adjoins divided-power variables in successively higher hom-degrees to kill all positive homology, following Tate's construction. The result is a semifree DG algebra resolution of Q/I over Q in the sense of Avramov, minimal in each hom-degree. When R = Q/I is passed, the defining ideal of R inside its ambient polynomial ring is used.

For a complete intersection, the Koszul complex on a minimal generating set is already acyclic in positive degrees, so minimalModel returns just that Koszul DG algebra:

i1 : Q = ZZ/101[x, y]

o1 = Q

o1 : PolynomialRing
i2 : I = ideal(x^2, y^2)

             2   2
o2 = ideal (x , y )

o2 : Ideal of Q
i3 : A = minimalModel(I, EndDegree => 3)

o3 = {Ring => Q                          }
      Underlying algebra => Q[T   ..T   ]
                               1,1   1,2
                        2   2
      Differential => {x , y }

o3 : DGAlgebra
i4 : apply(0..3, n -> numcols getBasis(n, A))

o4 = (1, 2, 1, 0)

o4 : Sequence

The QuotientRing form is equivalent:

i5 : R = Q / I

o5 = R

o5 : QuotientRing
i6 : A' = minimalModel(R, EndDegree => 3)

o6 = {Ring => Q                          }
      Underlying algebra => Q[T   ..T   ]
                               1,1   1,2
                        2   2
      Differential => {x , y }

o6 : DGAlgebra
i7 : numgens A.natural == numgens A'.natural

o7 = true

For a non-complete-intersection ideal the acyclic closure genuinely adjoins higher divided-power generators:

i8 : J = ideal(x^2, x*y, y^2)

             2        2
o8 = ideal (x , x*y, y )

o8 : Ideal of Q
i9 : B = minimalModel(J, EndDegree => 3)

o9 = {Ring => Q                                                                                                                                                                                                                                                                                      }
      Underlying algebra => Q[T   ..T   , T   ..T   , T   ..T   , T   ..T   ]
                               1,1   1,3   2,1   2,2   3,1   3,3   4,1   4,6
                        2        2
      Differential => {x , x*y, y , - y*T    + x*T   , - y*T    + x*T   , - T   T    + x*T   , - T   T    + y*T   , - T   T    + y*T    + x*T   , - T   T    + y*T   , - T   T    + x*T   , - T   T    + y*T   , - T   T    + x*T   , - T   T    - T   T    + y*T   , - T   T    - T   T    + x*T   }
                                         1,1      1,2       1,2      1,3     1,1 1,2      2,1     1,2 1,3      2,2     1,1 1,3      2,1      2,2     1,2 2,1      3,1     1,1 2,1      3,1     1,3 2,2      3,2     1,2 2,2      3,2     1,3 2,1    1,2 2,2      3,3     1,2 2,1    1,1 2,2      3,3

o9 : DGAlgebra
i10 : apply(0..3, n -> numcols getBasis(n, B))

o10 = (1, 3, 5, 10)

o10 : Sequence

As with acyclicClosure, EndDegree truncates the construction and Variable renames the adjoined generators:

i11 : C = minimalModel(I, EndDegree => 2, Variable => "S")

o11 = {Ring => Q                          }
       Underlying algebra => Q[S   ..S   ]
                                1,1   1,2
                         2   2
       Differential => {x , y }

o11 : DGAlgebra
i12 : gens C.natural

o12 = {S   , S   }
        1,1   1,2

o12 : List

Deviations and Gulliksen's theorem. The rank of A in hom-degree n is the n-th deviation of Q/I, a classical invariant which vanishes for n >= 2 if and only if Q/I is a complete intersection (Gulliksen-Avramov). Compare the two shapes:

i13 : A1 = minimalModel(ideal(x^2, y^2), EndDegree => 4);
i14 : apply(0..4, n -> numcols getBasis(n, A1))

o14 = (1, 2, 1, 0, 0)

o14 : Sequence
i15 : A2 = minimalModel(ideal(x^2, x*y, y^2), EndDegree => 4);
i16 : apply(0..4, n -> numcols getBasis(n, A2))

o16 = (1, 3, 5, 10, 24)

o16 : Sequence

A1 concentrates in hom-degrees 0, 1 (the hallmark of a c.i.), while A2 keeps acquiring divided-power generators, showing that Q/(x^2, xy, y^2) is not a c.i. Running minimalSemifreeResolution on the residue field over the minimal model then gives a test of Gulliksen's theorem, which states that over a codimension-c complete intersection the Betti numbers of any finitely generated module are eventually polynomial in the hom-degree, of degree at most c - 1:

i17 : A = minimalModel(ideal(x^2, y^2), EndDegree => 8);
i18 : k = Q^1 / ideal(x, y);
i19 : Mdg = minimalSemifreeResolution(A, k, EndDegree => 8);
i20 : b = apply(0..8, n -> numcols moduleDifferential(n, Mdg))

o20 = (1, 4, 8, 12, 16, 20, 24, 28, 32)

o20 : Sequence
i21 : apply(0..7, n -> b#(n+1) - b#n)

o21 = (3, 4, 4, 4, 4, 4, 4, 4)

o21 : Sequence
i22 : apply(0..6, n -> b#(n+2) - 2*b#(n+1) + b#n)

o22 = (1, 0, 0, 0, 0, 0, 0)

o22 : Sequence

The Betti sequence is (1, 4, 8, 12, 16, 20, 24, 28, 32); first differences stabilize to a constant and second differences are eventually 0, so the numbers are eventually linear -- a degree-1 polynomial, matching codimension 2. A codimension-3 c.i. such as (x^2, y^2, z^2) would instead show second differences stabilizing nonzero and third differences vanishing.

Caveat

The ring of A is always the polynomial ring containing the relations -- that is, ring I or ambient R, not the quotient itself. This matches the standard convention that the minimal DG algebra resolution of Q/I lives over Q.

See also

Ways to use minimalModel:

  • minimalModel(Ideal)
  • minimalModel(QuotientRing)

For the programmer

The object minimalModel is a method function with options.


The source of this document is in /build/reproducible-path/macaulay2-1.26.05+ds/M2/Macaulay2/packages/DGAlgebras/doc.m2:1653:0.