# Working with Chow rings of matroids

This documentation page contains various tips for effectively working with Chow rings of matroids within this package. We take the graphic matroid of the complete graph on 4 vertices as the running example:

 i1 : M = matroid completeGraph 4 o1 = a matroid of rank 3 on 6 elements o1 : Matroid i2 : I = idealChowRing M; o2 : Ideal of QQ[x , x , x , x , x , x , x , x , x , x , x , x , x ] {5} {4} {3} {2} {1} {0} {0, 5} {1, 4} {2, 3} {3, 4, 5} {1, 2, 5} {0, 2, 4} {0, 1, 3}

As seen from above, the output of idealChowRing is an Ideal, rather than a Ring. One can get the ambient polynomial ring, as well as the associated quotient ring:

 i3 : R = ring I o3 = R o3 : PolynomialRing i4 : S = R/I o4 = S o4 : QuotientRing

Next, one often wants to access and perform computations with elements in the quotient ring. The variables in the ambient ring of the ideal of the Chow ring are indexed by flats of the matroid, which retains useful information but makes the variables themselves difficult to access. However, as with any ring in Macaulay2, one can always access variables using subscripts:

 i5 : R_0 o5 = x {5} o5 : R i6 : S_1 o6 = x + x - x - x + x {0} {0, 5} {1, 4} {3, 4, 5} {0, 1, 3} o6 : S i7 : S_5*S_6 2 o7 = -x {0, 1, 3} o7 : S

Notice that elements of $S$ are already rewritten in the normal form modulo the ideal of the Chow ring.

One can access the flat corresponding to a given variable as follows:

 i8 : R_7 o8 = x {1, 4} o8 : R i9 : last baseName R_7 o9 = {1, 4} o9 : List

It is also possible to access variables via their flats by creating an auxiliary HashTable:

 i10 : chowVars = hashTable apply(#gens R, i -> last baseName R_i => S_i) o10 = HashTable{{0, 1, 3} => x } {0, 1, 3} {0, 2, 4} => x {0, 2, 4} {0, 5} => x {0, 5} {0} => x {0} {1, 2, 5} => x {1, 2, 5} {1, 4} => x {1, 4} {1} => x + x - x - x + x {0} {0, 5} {1, 4} {1, 2, 5} {0, 2, 4} {2, 3} => x {2, 3} {2} => x + x - x - x + x {0} {0, 5} {2, 3} {1, 2, 5} {0, 1, 3} {3, 4, 5} => x {3, 4, 5} {3} => x + x - x - x + x {0} {0, 5} {2, 3} {3, 4, 5} {0, 2, 4} {4} => x + x - x - x + x {0} {0, 5} {1, 4} {3, 4, 5} {0, 1, 3} {5} => x - x - x + x + x {0} {3, 4, 5} {1, 2, 5} {0, 2, 4} {0, 1, 3} o10 : HashTable i11 : chowVars#{5} * chowVars#{0,5} 2 o11 = -x {0, 1, 3} o11 : S