The class of all faces of Complexes or CoComplexes.
Creating faces:
Faces can be created by face by specifying a List or Set of variables of a PolynomialRing and some more optional data.
Usually faces are accessed as faces of a complex C using the ScriptedFunctor C.fc with the subscripts "dimension of the face" and "index of the face".
The data stored in a face F:
F.vert, a list with the vertices of F, which are variables of a PolynomialRing R. We use a list to prevent Macaulay from reordering sets or monomials.
F.ofComplex, a list with the Complexes and CoComplexes of which F is a face (optional).
{}it F.indices}, a list with the indices of the face in its complexes. An index is a list {dim F, index of F in C.fc_(dim F)}.
F.dualFace, the dual face of F (optional, is stored for later use when computed by dualize). Note that also the dual face dF of F then has dF.dualFace=F.
This data can also be accessed by the methods listed below.
Note that the lattice data of the vertices is stored in R.grading via addCokerGrading. If no coker grading is present then many functions, like simplex, idealToComplex, idealToCoComplex add the standard projective space grading raysPPn.
Notes on the implementation:
In order to save memory identical faces are not created several times, e.g., if subComplexes are created from given ones any face of the subcomplex is identical to a face of the given one.
So far the list F.ofComplex is only used for the complex which created F, but later we will perhaps append also all other complexes F is a face of. As we will append to the list this will be backwards compatible.









The object Face is a type, with ancestor classes MutableHashTable < HashTable < Thing.