Lattices of sashes - Combinatorics

Skip to content
Back to top
View this page
Edit this page

# Lattices of sashes

These lattices were introduced by S. Law in [Law2014]. They are lattice quotients of the weak order on the symmetric groups. This implies that they are congruence-uniform.

There is a lattice of sashes \(\Sigma_n\) for every integer \(n \geq 1\). The underlying set of \(\Sigma_n\) is the set of words of length \(n\) in the letters `□`, `▨` and `■■` of respective lengths \(1,1\) and \(2\).

The cardinalities of the lattices \(\Sigma_n\) are therefore given by the Pell numbers (OEIS sequence A000129).

The implementation describes sashes as tuples of strings.

This file also implements the polytopes known as pellytopes, and their fans. The skeletons of pellytopes are isomorphic to the undirected Hasse diagrams of the lattices of sashes.

REFERENCES:

- [Law2014]

sage.combinat.posets.sashes.cover_relations(s)

  Iterate over the cover relations of the given sash.

  INPUT:

  - `s` – sash, as a tuple of strings

  EXAMPLES:

  Sage

      sage: from sage.combinat.posets.sashes import cover_relations
      sage: s = ('□', '▨', '▨')
      sage: [''.join(t) for t in cover_relations(s)]
      ['□□▨', '□▨□']
      sage: s = ('□', '■■', '▨')
      sage: [''.join(t) for t in cover_relations(s)]
      ['□□□▨', '□■■□']

  Python

      >>> from sage.all import *
      >>> from sage.combinat.posets.sashes import cover_relations
      >>> s = ('□', '▨', '▨')
      >>> [''.join(t) for t in cover_relations(s)]
      ['□□▨', '□▨□']
      >>> s = ('□', '■■', '▨')
      >>> [''.join(t) for t in cover_relations(s)]
      ['□□□▨', '□■■□']

sage.combinat.posets.sashes.lattice_of_sashes(n)

  Return the lattice of sashes of length `n`.

  INPUT:

  - `n` – positive integer

  EXAMPLES:

  Sage

      sage: L = posets.Sashes(4); L
      Finite lattice containing 29 elements
      sage: L.hasse_diagram().to_undirected().is_regular(4)
      True

  Python

      >>> from sage.all import *
      >>> L = posets.Sashes(Integer(4)); L
      Finite lattice containing 29 elements
      >>> L.hasse_diagram().to_undirected().is_regular(Integer(4))
      True

sage.combinat.posets.sashes.pellytope(n)

  Return the pellytope of dimension `n`.

  This is defined as a Minkowski sum of the unit volume \(n\) dimensional hypercube in the positive orthant and the triangles with vertices \((0, e_i, e_i + e_{i+1})\) for all \(1 \leq i < n\).

  INPUT:

  - `n` – integer

  EXAMPLES:

  Sage

      sage: P3 = polytopes.pellytope(3); P3
      A 3-dimensional polyhedron in ZZ^3 defined as
      the convex hull of 12 vertices
      sage: P3.f_vector()
      (1, 12, 18, 8, 1)

  Python

      >>> from sage.all import *
      >>> P3 = polytopes.pellytope(Integer(3)); P3
      A 3-dimensional polyhedron in ZZ^3 defined as
      the convex hull of 12 vertices
      >>> P3.f_vector()
      (1, 12, 18, 8, 1)

  REFERENCES:

  - [BTTM2024]

sage.combinat.posets.sashes.pellytope_fan()

  Return the fan of the pellytope of dimension `n`.

  This is defined by induction.

  INPUT:

  - `n` – integer

  EXAMPLES:

  Sage

      sage: from sage.combinat.posets.sashes import pellytope_fan
      sage: pellytope_fan(3).f_vector()
      (1, 8, 18, 12)

  Python

      >>> from sage.all import *
      >>> from sage.combinat.posets.sashes import pellytope_fan
      >>> pellytope_fan(Integer(3)).f_vector()
      (1, 8, 18, 12)

  REFERENCES:

  - [BTTM2024]

sage.combinat.posets.sashes.sashes(n)

  Iterate over the sashes of length `n`.

  INPUT:

  - `n` – nonnegative integer

  EXAMPLES:

  Sage

      sage: from sage.combinat.posets.sashes import sashes
      sage: [''.join(s) for s in sashes(2)]
      ['□□', '□▨', '▨□', '▨▨', '■■']

  Python

      >>> from sage.all import *
      >>> from sage.combinat.posets.sashes import sashes
      >>> [''.join(s) for s in sashes(Integer(2))]
      ['□□', '□▨', '▨□', '▨▨', '■■']