Mobile posets#
- class sage.combinat.posets.mobile.MobilePoset(hasse_diagram, elements, category, facade, key, ribbon=None, check=True)#
Bases:
sage.combinat.posets.posets.FinitePoset
A mobile poset.
Mobile posets are an extension of d-complete posets which permit a determinant formula for counting linear extensions. They are formed by having a ribbon poset with d-complete posets ‘hanging’ below it and at most one d-complete poset above it, known as the anchor. See [GGMM2020] for the definition.
EXAMPLES:
sage: P = posets.MobilePoset(posets.RibbonPoset(7, [1,3]), ....: {1: [posets.YoungDiagramPoset([3, 2], dual=True)], ....: 3: [posets.DoubleTailedDiamond(6)]}, ....: anchor=(4, 2, posets.ChainPoset(6))) sage: len(P._ribbon) 8 sage: P._anchor (4, 5)
This example is Example 5.9 in [GGMM2020]:
sage: P1 = posets.MobilePoset(posets.RibbonPoset(8, [2,3,4]), ....: {4: [posets.ChainPoset(1)]}, ....: anchor=(3, 0, posets.ChainPoset(1))) sage: sorted([P1._element_to_vertex(i) for i in P1._ribbon]) [0, 1, 2, 6, 7, 9] sage: P1._anchor (3, 2) sage: P2 = posets.MobilePoset(posets.RibbonPoset(15, [1,3,5,7,9,11,13]), ....: {}, anchor=(8, 0, posets.ChainPoset(1))) sage: sorted(P2._ribbon) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13] sage: P2._anchor (8, (8, 0)) sage: P2.linear_extensions().cardinality() 21399440939 sage: EP = posets.MobilePoset(posets.ChainPoset(0), {}) Traceback (most recent call last): ... ValueError: the empty poset is not a mobile poset
- anchor()#
Return the anchor of the mobile poset.
EXAMPLES:
sage: from sage.combinat.posets.mobile import MobilePoset sage: M2 = MobilePoset(Poset([[0,1,2,3,4,5,6,7,8], ....: [(1,0),(3,0),(2,1),(2,3),(4,3),(5,4),(7,4),(7,8)]])) sage: M2.anchor() (4, 3) sage: M3 = MobilePoset(Posets.RibbonPoset(5, [1,2])) sage: M3.anchor() is None True
- ribbon()#
Return the ribbon of the mobile poset.
EXAMPLES:
sage: from sage.combinat.posets.mobile import MobilePoset sage: M3 = MobilePoset(Posets.RibbonPoset(5, [1,2])) sage: sorted(M3.ribbon()) [1, 2, 3, 4]