D-complete posets - Combinatorics

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

# D-complete posets

AUTHORS:

- Stefan Grosser (06-2020): initial implementation

class sage.combinat.posets.d_complete.DCompletePoset(hasse_diagram, elements, category, facade, key)

  Bases: `FiniteJoinSemilattice`

  A d-complete poset.

  D-complete posets are a class of posets introduced by Proctor in [Proc1999]. It includes common families such as shapes, shifted shapes, and rooted forests. Proctor showed in [PDynk1999] that d-complete posets have decompositions in irreducible posets, and showed in [Proc2014] that d-complete posets admit a hook-length formula (see Wikipedia article Hook_length_formula). A complete proof of the hook-length formula can be found in [KY2019].

  EXAMPLES:

  Sage

      sage: from sage.combinat.posets.poset_examples import Posets
      sage: P = Posets.DoubleTailedDiamond(2)
      sage: TestSuite(P).run()

  Python

      >>> from sage.all import *
      >>> from sage.combinat.posets.poset_examples import Posets
      >>> P = Posets.DoubleTailedDiamond(Integer(2))
      >>> TestSuite(P).run()

  get_hook(elmt)

    Return the hook length of the element `elmt`.

    EXAMPLES:

    Sage

        sage: from sage.combinat.posets.d_complete import DCompletePoset
        sage: P = DCompletePoset(DiGraph({0: [1], 1: [2]}))
        sage: P.get_hook(1)
        2

    Python

        >>> from sage.all import *
        >>> from sage.combinat.posets.d_complete import DCompletePoset
        >>> P = DCompletePoset(DiGraph({Integer(0): [Integer(1)], Integer(1): [Integer(2)]}))
        >>> P.get_hook(Integer(1))
        2

  get_hooks()

    Return all the hook lengths as a dictionary.

    EXAMPLES:

    Sage

        sage: from sage.combinat.posets.d_complete import DCompletePoset
        sage: P = DCompletePoset(DiGraph({0: [1, 2], 1: [3], 2: [3], 3: []}))
        sage: P.get_hooks()
        {0: 1, 1: 2, 2: 2, 3: 3}
        sage: from sage.combinat.posets.poset_examples import Posets
        sage: YDP321 = Posets.YoungDiagramPoset(Partition([3,2,1]))
        sage: P = DCompletePoset(YDP321._hasse_diagram.reverse())
        sage: P.get_hooks()
        {0: 5, 1: 3, 2: 1, 3: 3, 4: 1, 5: 1}

    Python

        >>> from sage.all import *
        >>> from sage.combinat.posets.d_complete import DCompletePoset
        >>> P = DCompletePoset(DiGraph({Integer(0): [Integer(1), Integer(2)], Integer(1): [Integer(3)], Integer(2): [Integer(3)], Integer(3): []}))
        >>> P.get_hooks()
        {0: 1, 1: 2, 2: 2, 3: 3}
        >>> from sage.combinat.posets.poset_examples import Posets
        >>> YDP321 = Posets.YoungDiagramPoset(Partition([Integer(3),Integer(2),Integer(1)]))
        >>> P = DCompletePoset(YDP321._hasse_diagram.reverse())
        >>> P.get_hooks()
        {0: 5, 1: 3, 2: 1, 3: 3, 4: 1, 5: 1}

  hook_product()

    Return the hook product for the poset.