# $$\nu$$-Tamari lattice#

A class of the $$\nu$$-Tamari lattice, and $$(\delta,\nu)$$-Tamari lattice (or alt $$\nu$$-Tamari lattices), see [PRV2017] and [CC2023] for details.

These lattices depend on a parameter $$\nu$$ where $$\nu$$ is a path of North and East steps. The alt $$\nu$$-Tamari lattice depends on an additional parameter $$\delta$$, which is an increment vector with respect to $$\nu$$.

The elements are nu-Dyck paths which are weakly above $$\nu$$.

To use the provided functionality, you should import $$\nu$$-Tamari lattices by typing:

sage: from sage.combinat.nu_tamari_lattice import NuTamariLattice, AltNuTamariLattice


Then,

sage: NuTamariLattice([1,1,1,0,0,1,1,0])
Finite lattice containing 6 elements
sage: NuTamariLattice([0,0,0,1,1,0,0,1])
Finite lattice containing 40 elements
sage: AltNuTamariLattice([0,0,0,1,1,0,0,1])
Finite lattice containing 40 elements
sage: AltNuTamariLattice([0,0,0,1,1,0,0,1], [0,1,0])
Finite lattice containing 40 elements


The classical Tamari lattices and the Generalized Tamari lattices are special cases of this construction and are also available with this poset:

sage: NuTamariLattice([1,0,1,0,1,0])
Finite lattice containing 5 elements

sage: NuTamariLattice([1,0,0,1,0,0,1,0,0])
Finite lattice containing 12 elements


AUTHORS:

• Aram Dermenjian (2020-09-26): initial version

• Clément Chenevière (2024-02-01): added the alt $$\nu$$-Tamari lattices

sage.combinat.nu_tamari_lattice.AltNuTamariLattice(nu, delta=None)#

Return the $$(\delta,\nu)$$-Tamari lattice (or alt $$\nu$$-Tamari lattice).

The path $$\nu$$ is a path of North steps (represented as $$1$$ s) and East steps (represented as $$0$$ s).

The vector $$\delta = (\delta_1, \dots, \delta_n)$$ is an increment vector with respect to the path $$\nu$$, that is to say $$\delta_i \leq \nu_i$$, where $$\nu_i$$ is the number of $$0$$ s following the $$i$$-th $$1$$ of $$\nu$$. If not provided, $$\delta$$ is set by default to produce the classical $$\nu$$-Tamari lattice.

INPUT:

• $$\nu$$ – a list of 0s and 1s or a string of 0s and 1s.

• $$\delta$$ – a list of nonnegative integers.

OUTPUT:

• a finite lattice

EXAMPLES:

sage: from sage.combinat.nu_tamari_lattice import AltNuTamariLattice, NuTamariLattice
sage: AltNuTamariLattice('01001', [0, 0])
Finite lattice containing 7 elements
sage: AltNuTamariLattice('01001', [1, 0])
Finite lattice containing 7 elements
sage: AltNuTamariLattice('01001') == AltNuTamariLattice('01001', [2, 0])
True
sage: nu = '00100100101'; P = AltNuTamariLattice(nu); Q = NuTamariLattice(nu); P == Q
True


REFERENCES:

sage.combinat.nu_tamari_lattice.NuTamariLattice(nu)#

Return the $$\nu$$-Tamari lattice.

INPUT:

• $$\nu$$ – a list of 0s and 1s or a string of 0s and 1s.

OUTPUT:

a finite lattice

The elements of the lattice are nu-Dyck paths weakly above $$\nu$$.

The usual Tamari lattice is the special case where $$\nu = (NE)^h$$ where $$h$$ is the height.

Other special cases give the $$m$$-Tamari lattices studied in [BMFPR].

EXAMPLES:

sage: from sage.combinat.nu_tamari_lattice import NuTamariLattice
sage: NuTamariLattice([1,0,1,0,0,1,0])
Finite lattice containing 7 elements
sage: NuTamariLattice([1,0,1,0,1,0])
Finite lattice containing 5 elements
sage: NuTamariLattice([1,0,1,0,1,0,1,0])
Finite lattice containing 14 elements
sage: NuTamariLattice([1,0,1,0,1,0,0,0,1])
Finite lattice containing 24 elements

sage.combinat.nu_tamari_lattice.delta_swap(p, k, delta)#

Perform a covering move in the $$(\delta,\nu)$$-Tamari lattice (or alt $$\nu$$-Tamari lattice, see [CC2023]).

The letter at position $$k$$ is a North step of the $$\nu$$-Dyck word $$p$$, and must be preceded by an East step.

The vector $$\delta = (\delta_1, \dots, \delta_n)$$ is an increment vector with respect to the path $$\nu$$, that is to say $$\delta_i \leq \nu_i$$, where $$\nu_i$$ is the number of East steps following the $$i$$-th North step of $$\nu$$.

INPUT:

• p – a $$\nu$$-Dyck word

• k – an integer between $$0$$ and p.length()-1

• delta – a list of nonnegative integers of length p.height()

OUTPUT:

• a $$\nu$$-Dyck word

EXAMPLES:

sage: from sage.combinat.nu_tamari_lattice import delta_swap
sage: delta_swap(NuDyckWord('0101', '0101'), 3, delta = [1, 0])
[0, 1, 1, 0]
sage: delta_swap(NuDyckWord('1001110100', '0100010111'), 3, [3, 1, 0, 0, 0])
[1, 0, 1, 1, 1, 0, 0, 1, 0, 0]
sage: delta_swap(NuDyckWord('10100101000', '01001000110'), 2, [2, 3, 0, 1])
[1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0]
sage: delta_swap(NuDyckWord('10100101000', '01001000110'), 2, [1, 1, 0, 0])
[1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0]