CohomCalg is software written by Benjamin Jurke and Thorsten Rahn (in collaboration with Ralph Blumenhagen and Helmut Roschy) for computing the cohomology vectors of torus invariant divisors on a (normal) toric variety (see https://github.com/BenjaminJurke/cohomCalg for more information).
CohomCalg is an efficient and careful implementation. One limitation is that the number of rays in the fan and the number of generators of the Stanley-Reisner ideal of the fan must both be no larger than 64.
Here is a sample usage of this package in Macaulay2. Let’s compute the cohomology of some divisors on a smooth Fano toric variety.
i1 : needsPackage "NormalToricVarieties" o1 = NormalToricVarieties o1 : Package |
i2 : X = smoothFanoToricVariety(3,15) o2 = X o2 : NormalToricVariety |
i3 : rays X o3 = {{1, 0, 0}, {0, 1, 0}, {0, 0, 1}, {0, -1, -1}, {0, -1, 0}, {-1, 0, 0}, ------------------------------------------------------------------------ {-1, 1, 0}} o3 : List |
i4 : max X o4 = {{0, 1, 2}, {0, 1, 3}, {0, 2, 4}, {0, 3, 4}, {1, 2, 6}, {1, 3, 6}, {2, ------------------------------------------------------------------------ 4, 5}, {2, 5, 6}, {3, 4, 5}, {3, 5, 6}} o4 : List |
i5 : S = ring X o5 = S o5 : PolynomialRing |
i6 : SR = dual monomialIdeal X o6 = monomialIdeal (x x , x x , x x , x x , x x , x x ) 2 3 1 4 0 5 1 5 0 6 4 6 o6 : MonomialIdeal of S |
i7 : KX = toricDivisor X o7 = - X - X - X - X - X - X - X 0 1 2 3 4 5 6 o7 : ToricDivisor on X |
i8 : assert isVeryAmple (-KX) |
i9 : cohoms1 = for i from 0 to 6 list X_i => cohomCalg X_i cohomCalg v0.32 (compiled for Linux/Unix x86-64 / 64 bit) author: Benjamin Jurke (mail@benjaminjurke.com) Based on the algorithm detailed in arXiv:1003.5217 Usage and generation of intermediate monomial files deactivated. Starting computation of secondary sequences... 0.00% completed (1 sec remaining)... Computation of secondary cohomologies and contributions complete. Computing target cohomology 1 of 1 (0.0% done)... Computation of the target cohomology group dimensions complete. All done. Program run successfully completed. cohomCalg v0.32 (compiled for Linux/Unix x86-64 / 64 bit) author: Benjamin Jurke (mail@benjaminjurke.com) Based on the algorithm detailed in arXiv:1003.5217 Usage and generation of intermediate monomial files deactivated. Starting computation of secondary sequences... 0.00% completed (1 sec remaining)... Computation of secondary cohomologies and contributions complete. Computing target cohomology 1 of 1 (0.0% done)... Computation of the target cohomology group dimensions complete. All done. Program run successfully completed. cohomCalg v0.32 (compiled for Linux/Unix x86-64 / 64 bit) author: Benjamin Jurke (mail@benjaminjurke.com) Based on the algorithm detailed in arXiv:1003.5217 Usage and generation of intermediate monomial files deactivated. Starting computation of secondary sequences... 0.00% completed (1 sec remaining)... Computation of secondary cohomologies and contributions complete. Computing target cohomology 1 of 1 (0.0% done)... Computation of the target cohomology group dimensions complete. All done. Program run successfully completed. cohomCalg v0.32 (compiled for Linux/Unix x86-64 / 64 bit) author: Benjamin Jurke (mail@benjaminjurke.com) Based on the algorithm detailed in arXiv:1003.5217 Usage and generation of intermediate monomial files deactivated. Starting computation of secondary sequences... 0.00% completed (1 sec remaining)... Computation of secondary cohomologies and contributions complete. Computing target cohomology 1 of 1 (0.0% done)... Computation of the target cohomology group dimensions complete. All done. Program run successfully completed. cohomCalg v0.32 (compiled for Linux/Unix x86-64 / 64 bit) author: Benjamin Jurke (mail@benjaminjurke.com) Based on the algorithm detailed in arXiv:1003.5217 Usage and generation of intermediate monomial files deactivated. Starting computation of secondary sequences... 0.00% completed (1 sec remaining)... Computation of secondary cohomologies and contributions complete. Computing target cohomology 1 of 1 (0.0% done)... Computation of the target cohomology group dimensions complete. All done. Program run successfully completed. cohomCalg v0.32 (compiled for Linux/Unix x86-64 / 64 bit) author: Benjamin Jurke (mail@benjaminjurke.com) Based on the algorithm detailed in arXiv:1003.5217 Usage and generation of intermediate monomial files deactivated. Starting computation of secondary sequences... 0.00% completed (1 sec remaining)... Computation of secondary cohomologies and contributions complete. Computing target cohomology 1 of 1 (0.0% done)... Computation of the target cohomology group dimensions complete. All done. Program run successfully completed. o9 = {X => {2, 0, 0, 0}, X => {1, 0, 0, 0}, X => {2, 0, 0, 0}, X => {2, 0 1 2 3 ------------------------------------------------------------------------ 0, 0, 0}, X => {1, 0, 0, 0}, X => {1, 0, 0, 0}, X => {1, 0, 0, 0}} 4 5 6 o9 : List |
i10 : cohoms2 = for i from 0 to 6 list X_i => ( for j from 0 to dim X list rank HH^j(X, OO_X(toSequence degree X_i)) ) o10 = {X => {2, 0, 0, 0}, X => {1, 0, 0, 0}, X => {2, 0, 0, 0}, X => {2, 0 1 2 3 ----------------------------------------------------------------------- 0, 0, 0}, X => {1, 0, 0, 0}, X => {1, 0, 0, 0}, X => {1, 0, 0, 0}} 4 5 6 o10 : List |
i11 : assert(cohoms1 === cohoms2) |
For efficiency reasons, it is better, if this works for your use, to call CohomCalg by batching together several cohomology requests.
i12 : needsPackage "ReflexivePolytopesDB" o12 = ReflexivePolytopesDB o12 : Package |
i13 : topes = kreuzerSkarke(21, Limit => 20); using offline data file: ks21-n100.txt |
i14 : A = matrix topes_10 o14 = | 1 0 0 -1 2 0 0 -3 -2 1 | | 0 1 0 1 -1 1 0 1 0 -1 | | 0 0 1 1 -1 -1 0 4 2 -2 | | 0 0 0 0 0 0 1 -1 -1 1 | 4 10 o14 : Matrix ZZ <--- ZZ |
i15 : P = convexHull A o15 = P o15 : Polyhedron |
i16 : X = normalToricVariety P o16 = X o16 : NormalToricVariety |
i17 : SR = dual monomialIdeal X o17 = monomialIdeal (x x , x x x , x x , x x x , x x x , x x x x , x x x , 1 2 0 1 3 0 4 0 2 6 0 3 6 1 3 5 6 1 3 7 ----------------------------------------------------------------------- x x x , x x x x , x x x , x x x , x x x x , x x x x , x x x , x x x x , 1 4 7 0 3 5 7 2 4 8 2 6 8 3 5 6 8 4 5 6 8 4 7 8 2 5 7 8 ----------------------------------------------------------------------- x x x x , x x x x , x x x , x x x , x x , x x x , x x x , x x x , 3 5 7 8 3 6 7 8 0 1 9 2 4 9 5 9 0 6 9 2 6 9 1 7 9 ----------------------------------------------------------------------- x x x ) 4 7 9 o17 : MonomialIdeal of QQ[x , x , x , x , x , x , x , x , x , x ] 0 1 2 3 4 5 6 7 8 9 |
i18 : D2 = subsets(for i from 0 to #rays X - 1 list (-X_i), 2) o18 = {{- X , - X }, {- X , - X }, {- X , - X }, {- X , - X }, {- X , - X }, 0 1 0 2 1 2 0 3 1 3 ----------------------------------------------------------------------- {- X , - X }, {- X , - X }, {- X , - X }, {- X , - X }, {- X , - X }, 2 3 0 4 1 4 2 4 3 4 ----------------------------------------------------------------------- {- X , - X }, {- X , - X }, {- X , - X }, {- X , - X }, {- X , - X }, 0 5 1 5 2 5 3 5 4 5 ----------------------------------------------------------------------- {- X , - X }, {- X , - X }, {- X , - X }, {- X , - X }, {- X , - X }, 0 6 1 6 2 6 3 6 4 6 ----------------------------------------------------------------------- {- X , - X }, {- X , - X }, {- X , - X }, {- X , - X }, {- X , - X }, 5 6 0 7 1 7 2 7 3 7 ----------------------------------------------------------------------- {- X , - X }, {- X , - X }, {- X , - X }, {- X , - X }, {- X , - X }, 4 7 5 7 6 7 0 8 1 8 ----------------------------------------------------------------------- {- X , - X }, {- X , - X }, {- X , - X }, {- X , - X }, {- X , - X }, 2 8 3 8 4 8 5 8 6 8 ----------------------------------------------------------------------- {- X , - X }, {- X , - X }, {- X , - X }, {- X , - X }, {- X , - X }, 7 8 0 9 1 9 2 9 3 9 ----------------------------------------------------------------------- {- X , - X }, {- X , - X }, {- X , - X }, {- X , - X }, {- X , - X }} 4 9 5 9 6 9 7 9 8 9 o18 : List |
i19 : D2 = D2/sum/degree o19 = {{0, 1, -2, -2, 4, 0}, {0, 1, -1, 1, 0, -2}, {2, 2, 3, 1, -4, -6}, {-1, ----------------------------------------------------------------------- 0, -4, -2, 5, 3}, {1, 1, 0, -2, 1, -1}, {1, 1, 1, 1, -3, -3}, {-2, 0, ----------------------------------------------------------------------- -3, -1, 4, 2}, {0, 1, 1, -1, 0, -2}, {0, 1, 2, 2, -4, -4}, {-1, 0, -1, ----------------------------------------------------------------------- -1, 1, 1}, {-1, -1, -3, -1, 4, 2}, {1, 0, 1, -1, 0, -2}, {1, 0, 2, 2, ----------------------------------------------------------------------- -4, -4}, {0, -1, -1, -1, 1, 1}, {-1, -1, 0, 0, 0, 0}, {-1, 0, -4, -1, ----------------------------------------------------------------------- 4, 2}, {1, 1, 0, -1, 0, -2}, {1, 1, 1, 2, -4, -4}, {0, 0, -2, -1, 1, ----------------------------------------------------------------------- 1}, {-1, 0, -1, 0, 0, 0}, {0, -1, -1, 0, 0, 0}, {-1, 0, -3, -2, 4, 2}, ----------------------------------------------------------------------- {1, 1, 1, -2, 0, -2}, {1, 1, 2, 1, -4, -4}, {0, 0, -1, -2, 1, 1}, {-1, ----------------------------------------------------------------------- 0, 0, -1, 0, 0}, {0, -1, 0, -1, 0, 0}, {0, 0, -1, -1, 0, 0}, {-1, 0, ----------------------------------------------------------------------- -3, -1, 3, 2}, {1, 1, 1, -1, -1, -2}, {1, 1, 2, 2, -5, -4}, {0, 0, -1, ----------------------------------------------------------------------- -1, 0, 1}, {-1, 0, 0, 0, -1, 0}, {0, -1, 0, 0, -1, 0}, {0, 0, -1, 0, ----------------------------------------------------------------------- -1, 0}, {0, 0, 0, -1, -1, 0}, {-1, 0, -3, -1, 4, 1}, {1, 1, 1, -1, 0, ----------------------------------------------------------------------- -3}, {1, 1, 2, 2, -4, -5}, {0, 0, -1, -1, 1, 0}, {-1, 0, 0, 0, 0, -1}, ----------------------------------------------------------------------- {0, -1, 0, 0, 0, -1}, {0, 0, -1, 0, 0, -1}, {0, 0, 0, -1, 0, -1}, {0, ----------------------------------------------------------------------- 0, 0, 0, -1, -1}} o19 : List |
i20 : elapsedTime hvecs = cohomCalg(X, D2) cohomCalg v0.32 (compiled for Linux/Unix x86-64 / 64 bit) author: Benjamin Jurke (mail@benjaminjurke.com) Based on the algorithm detailed in arXiv:1003.5217 Usage and generation of intermediate monomial files deactivated. Starting computation of secondary sequences... 0.00% completed (1 sec remaining)... 18.75% completed (0 secs remaining)... 37.50% completed (0 secs remaining)... 56.25% completed (0 secs remaining)... 75.00% completed (0 secs remaining)... WARNING: The Serre dualization reduction was unable to uniquely resolve 86 of the original 90 ambiguous monoms. Computation of secondary cohomologies and contributions complete. Computing target cohomology 1 of 45 (0.0% done)... Computing target cohomology 2 of 45 (2.2% done)... Computing target cohomology 3 of 45 (4.4% done)... Computing target cohomology 4 of 45 (6.7% done)... Computing target cohomology 5 of 45 (8.9% done)... Computing target cohomology 6 of 45 (11.1% done)... Computing target cohomology 7 of 45 (13.3% done)... Computing target cohomology 8 of 45 (15.6% done)... Computing target cohomology 9 of 45 (17.8% done)... Computing target cohomology 10 of 45 (20.0% done)... Computing target cohomology 11 of 45 (22.2% done)... Computing target cohomology 12 of 45 (24.4% done)... Computing target cohomology 13 of 45 (26.7% done)... Computing target cohomology 14 of 45 (28.9% done)... Computing target cohomology 15 of 45 (31.1% done)... Computing target cohomology 16 of 45 (33.3% done)... Computing target cohomology 17 of 45 (35.6% done)... Computing target cohomology 18 of 45 (37.8% done)... Computing target cohomology 19 of 45 (40.0% done)... Computing target cohomology 20 of 45 (42.2% done)... Computing target cohomology 21 of 45 (44.4% done)... Computing target cohomology 22 of 45 (46.7% done)... Computing target cohomology 23 of 45 (48.9% done)... Computing target cohomology 24 of 45 (51.1% done)... Computing target cohomology 25 of 45 (53.3% done)... Computing target cohomology 26 of 45 (55.6% done)... Computing target cohomology 27 of 45 (57.8% done)... Computing target cohomology 28 of 45 (60.0% done)... Computing target cohomology 29 of 45 (62.2% done)... Computing target cohomology 30 of 45 (64.4% done)... Computing target cohomology 31 of 45 (66.7% done)... Computing target cohomology 32 of 45 (68.9% done)... Computing target cohomology 33 of 45 (71.1% done)... Computing target cohomology 34 of 45 (73.3% done)... Computing target cohomology 35 of 45 (75.6% done)... Computing target cohomology 36 of 45 (77.8% done)... Computing target cohomology 37 of 45 (80.0% done)... Computing target cohomology 38 of 45 (82.2% done)... Computing target cohomology 39 of 45 (84.4% done)... Computing target cohomology 40 of 45 (86.7% done)... Computing target cohomology 41 of 45 (88.9% done)... Computing target cohomology 42 of 45 (91.1% done)... Computing target cohomology 43 of 45 (93.3% done)... Computing target cohomology 44 of 45 (95.6% done)... Computing target cohomology 45 of 45 (97.8% done)... Computation of the target cohomology group dimensions complete. All done. Program run successfully completed. -- 1.90019 seconds elapsed o20 = {{0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 1, 0, 0, 0}, {0, 0, 0, 0, 0}, ----------------------------------------------------------------------- {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 1, 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, 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, ----------------------------------------------------------------------- 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}, {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, 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, 1, 0, 0, ----------------------------------------------------------------------- 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}} o20 : List |
i21 : peek cohomCalg X o21 = MutableHashTable{{-1, -1, -3, -1, 4, 2} => {{0, 0, 0, 0, 0}, {}} } {-1, -1, 0, 0, 0, 0} => {{0, 0, 0, 0, 0}, {}} {-1, 0, -1, -1, 1, 1} => {{0, 0, 0, 0, 0}, {}} {-1, 0, -1, 0, 0, 0} => {{0, 0, 0, 0, 0}, {}} {-1, 0, -3, -1, 3, 2} => {{0, 0, 0, 0, 0}, {}} {-1, 0, -3, -1, 4, 1} => {{0, 0, 0, 0, 0}, {}} {-1, 0, -3, -2, 4, 2} => {{0, 0, 0, 0, 0}, {}} {-1, 0, -4, -1, 4, 2} => {{0, 0, 0, 0, 0}, {}} {-1, 0, -4, -2, 5, 3} => {{0, 0, 0, 0, 0}, {}} {-1, 0, 0, -1, 0, 0} => {{0, 0, 0, 0, 0}, {}} {-1, 0, 0, 0, -1, 0} => {{0, 0, 0, 0, 0}, {}} {-1, 0, 0, 0, 0, -1} => {{0, 0, 0, 0, 0}, {}} {-2, 0, -3, -1, 4, 2} => {{0, 1, 0, 0, 0}, {{1, 1x0*x4}}} {0, -1, -1, -1, 1, 1} => {{0, 0, 0, 0, 0}, {}} {0, -1, -1, 0, 0, 0} => {{0, 0, 0, 0, 0}, {}} {0, -1, 0, -1, 0, 0} => {{0, 0, 0, 0, 0}, {}} {0, -1, 0, 0, -1, 0} => {{0, 0, 0, 0, 0}, {}} {0, -1, 0, 0, 0, -1} => {{0, 1, 0, 0, 0}, {{1, 1x5*x9}}} {0, 0, -1, -1, 0, 0} => {{0, 0, 0, 0, 0}, {}} {0, 0, -1, -1, 0, 1} => {{0, 0, 0, 0, 0}, {}} {0, 0, -1, -1, 1, 0} => {{0, 0, 0, 0, 0}, {}} {0, 0, -1, -2, 1, 1} => {{0, 0, 0, 0, 0}, {}} {0, 0, -1, 0, -1, 0} => {{0, 0, 0, 0, 0}, {}} {0, 0, -1, 0, 0, -1} => {{0, 0, 0, 0, 0}, {}} {0, 0, -2, -1, 1, 1} => {{0, 0, 0, 0, 0}, {}} {0, 0, 0, -1, -1, 0} => {{0, 0, 0, 0, 0}, {}} {0, 0, 0, -1, 0, -1} => {{0, 0, 0, 0, 0}, {}} {0, 0, 0, 0, -1, -1} => {{0, 0, 0, 0, 0}, {}} {0, 1, -1, 1, 0, -2} => {{0, 0, 0, 0, 0}, {}} {0, 1, -2, -2, 4, 0} => {{0, 0, 0, 0, 0}, {}} {0, 1, 1, -1, 0, -2} => {{0, 0, 0, 0, 0}, {}} {0, 1, 2, 2, -4, -4} => {{0, 0, 0, 0, 0}, {}} {1, 0, 1, -1, 0, -2} => {{0, 0, 0, 0, 0}, {}} {1, 0, 2, 2, -4, -4} => {{0, 0, 0, 0, 0}, {}} {1, 1, 0, -1, 0, -2} => {{0, 0, 0, 0, 0}, {}} {1, 1, 0, -2, 1, -1} => {{0, 0, 0, 0, 0}, {}} {1, 1, 1, -1, -1, -2} => {{0, 0, 0, 0, 0}, {}} {1, 1, 1, -1, 0, -3} => {{0, 0, 0, 0, 0}, {}} {1, 1, 1, -2, 0, -2} => {{0, 0, 0, 0, 0}, {}} {1, 1, 1, 1, -3, -3} => {{0, 0, 0, 0, 0}, {}} {1, 1, 1, 2, -4, -4} => {{0, 0, 0, 0, 0}, {}} {1, 1, 2, 1, -4, -4} => {{0, 0, 0, 0, 0}, {}} {1, 1, 2, 2, -4, -5} => {{0, 0, 0, 0, 0}, {}} {1, 1, 2, 2, -5, -4} => {{0, 0, 0, 0, 0}, {}} {2, 2, 3, 1, -4, -6} => {{0, 1, 0, 0, 0}, {{1, 1x1*x2}}} |
i22 : degree(X_3 + X_7 + X_8) o22 = {0, 0, 1, 2, 0, -1} o22 : List |
i23 : elapsedTime cohomvec1 = cohomCalg(X_3 + X_7 + X_8) cohomCalg v0.32 (compiled for Linux/Unix x86-64 / 64 bit) author: Benjamin Jurke (mail@benjaminjurke.com) Based on the algorithm detailed in arXiv:1003.5217 Usage and generation of intermediate monomial files deactivated. Starting computation of secondary sequences... 0.00% completed (1 sec remaining)... 18.75% completed (0 secs remaining)... 37.50% completed (0 secs remaining)... 56.25% completed (0 secs remaining)... 81.25% completed (0 secs remaining)... WARNING: The Serre dualization reduction was unable to uniquely resolve 86 of the original 90 ambiguous monoms. Computation of secondary cohomologies and contributions complete. Computing target cohomology 1 of 1 (0.0% done)... Computation of the target cohomology group dimensions complete. All done. Program run successfully completed. -- 0.567592 seconds elapsed o23 = {1, 0, 0, 0, 0} o23 : List |
i24 : elapsedTime cohomvec2 = for j from 0 to dim X list rank HH^j(X, OO_X(0,0,1,2,0,-1)) -- 10.1259 seconds elapsed o24 = {1, 0, 0, 0, 0} o24 : List |
i25 : assert(cohomvec1 == cohomvec2) |
i26 : degree(X_3 + X_7 - X_8) o26 = {0, 0, 1, 2, -2, -1} o26 : List |
i27 : elapsedTime cohomvec1 = cohomCalg(X_3 + X_7 - X_8) cohomCalg v0.32 (compiled for Linux/Unix x86-64 / 64 bit) author: Benjamin Jurke (mail@benjaminjurke.com) Based on the algorithm detailed in arXiv:1003.5217 Usage and generation of intermediate monomial files deactivated. Starting computation of secondary sequences... 0.00% completed (1 sec remaining)... 12.50% completed (0 secs remaining)... 31.25% completed (0 secs remaining)... 50.00% completed (0 secs remaining)... 68.75% completed (0 secs remaining)... 93.75% completed (0 secs remaining)... WARNING: The Serre dualization reduction was unable to uniquely resolve 86 of the original 90 ambiguous monoms. Computation of secondary cohomologies and contributions complete. Computing target cohomology 1 of 1 (0.0% done)... Computation of the target cohomology group dimensions complete. All done. Program run successfully completed. -- 0.626233 seconds elapsed o27 = {0, 0, 0, 0, 0} o27 : List |
i28 : elapsedTime cohomvec2 = elapsedTime for j from 0 to dim X list rank HH^j(X, OO_X(0,0,1,2,-2,-1)) -- 0.231 seconds elapsed -- 0.231008 seconds elapsed o28 = {0, 0, 0, 0, 0} o28 : List |
i29 : assert(cohomvec1 == cohomvec2) |
cohomCalg computes cohomology vectors by calling CohomCalg. It also stashes it’s results in the toric variety’s cache table, so computations need not be performed twice.
This documentation describes version 0.8 of CohomCalg.
The source code from which this documentation is derived is in the file CohomCalg.m2.