# Lattices

We include a class called LatticeOfFlats, which is associated with a hyperplane arrangement. This class keeps track of basic information we need to compute the various generating functions associated with a hyperplane arrangement. (For non-central arrangements, this is indeed not a lattice, but a semi-lattice.) All other functions are tied to the LatticeOfFlats class and, thus, are either attributes or methods. Methods are written as .method_name.

## LatticeOfFlats

Input:

• a hyperplane arrangement;
• poset=None : the intersection poset of $\mathcal{A}$;
• flat_labels=None : a dictionary from the elements of the poset to subsets of atoms;
• hyperplane_labels=None : a dictionary from the atoms of the poset to the hyperplanes;
• matroid=None : a matroid.

Output:

• the lattice of flats for the given hyperplane arrangement or matroid.

Unless the poset and labels have been computed before, they should not be given as this function may compute the intersection poset of a hyperplane arrangement faster than the default in SageMath. It is not required to provide a hyperplane arrangement; in particular, one may instead only provide a matroid.

### Attributes

The lattice of flats has four attributes:

• hyperplane_arrangement : the given hyperplane arrangement;
• poset : the intersection poset;
• flat_labels : the dictionary indexed by the elements of poset with values given by subsets of the atoms of poset;
• hyperplane_labels : the dictionary indexed by the atoms of poset with values equal to the hyperplanes of hyperplane_arrangement.

#### Example (Lattice of braid arrangement)

We construct the lattice of flats for the braid arrangement in $\mathbb{R}^4$.

sage: A = hi.CoxeterArrangement("A3")
sage: A
Arrangement of 6 hyperplanes of dimension 4 and rank 3
sage: L = hi.LatticeOfFlats(A)
sage: L
The lattice of flats of:
Arrangement of 6 hyperplanes of dimension 4 and rank 3
given by:
Finite poset containing 15 elements


Now we look at the data stored in the attributes. We display the hyperplanes in the arrangement.

sage: L.hyperplane_arrangement
Arrangement of 6 hyperplanes of dimension 4 and rank 3
sage: L.hyperplane_arrangement.hyperplanes()
(Hyperplane 0*x0 + 0*x1 + x2 - x3 + 0,
Hyperplane 0*x0 + x1 - x2 + 0*x3 + 0,
Hyperplane 0*x0 + x1 + 0*x2 - x3 + 0,
Hyperplane x0 - x1 + 0*x2 + 0*x3 + 0,
Hyperplane x0 + 0*x1 - x2 + 0*x3 + 0,
Hyperplane x0 + 0*x1 + 0*x2 - x3 + 0)


We display the poset as an image.

sage: L.poset
Finite poset containing 15 elements


Instead of showing the entire dictionaries, we will evaluate them at a few points.

sage: L.flat_labels[3]
{3}
sage: L.flat_labels[13]
{3, 5}
sage: L.flat_labels[9]
{1, 5, 6}
sage: L.flat_labels[0]
{}


We see that hyperplanes 1, 5, and 6 intersect in a codimension 2 subspace.

sage: L.hyperplane_labels[1]
Hyperplane 0*x0 + 0*x1 + x2 - x3 + 0
sage: L.hyperplane_labels[5]
Hyperplane x0 + 0*x1 - x2 + 0*x3 + 0
sage: L.hyperplane_labels[6]
Hyperplane x0 + 0*x1 + 0*x2 - x3 + 0


## .atoms

Output:

• the atoms of the underlying poset.

## .deletion

Input:

• a hyperplane $H$.

Output:

• the lattice of flats associated to the arrangement without $H$.

#### Example (Deletion in the braid arrangement)

We continue the $\mathsf{A}_3$ example started above. We will delete the hyperplane labeled by $2$ and display the resulting lattice of flats.

sage: L.deletion(2)
The lattice of flats of:
Arrangement of 5 hyperplanes of dimension 4 and rank 3
given by:
Finite poset containing 13 elements


## .labels_of_flats

Output:

• the list of tuples with first entry an element of the poset and second entry a subset of atoms.

## .labels_of_hyperplanes

Output:

• the list of tuples with first entry an element of the poset and second entry a hyperplane.

## .Poincare_polynomial

Output:

• the Poincaré polynomial of the hyperplane arrangement.

## .proper_part_poset

Output:

• the subposet without $\hat{0}$ and $\hat{1}$.

## .show

No output given. This displays the underlying intersection poset using the default options in SageMath. This is a shortcut for L.poset.show().

## .subarrangement

Input:

• an integer $x$.

Output:

• the lattice of flats of the interval $[\hat{0}, x]$.

#### Example (Subarrangement of the braid arrangement)

We continue from the original $\mathsf{A}_3$ example started above. We will construct the subarrangement from the flat labeled $10$.

sage: L.subarrangement(10)
The lattice of flats of:
Arrangement <x1 - x2 | x0 - x1 | x0 - x2>
given by:
Finite poset containing 5 elements


## .restriction

Input:

• an integer $x$.

Output:

• the lattice of flats of the restriction to $x$ in the poset.

#### Example (Subarrangement of the braid arrangement)

We continue from the original $\mathsf{A}_3$ example started above. We will construct the restriction from the flat labeled $3$.

sage: L.restriction(3)
The lattice of flats of:
Arrangement <-x0 + x1 | x1 | x0>
given by:
Finite poset containing 5 elements