def LatticePoset(data, *args, **options): r""" Construct a lattice from various forms of input data. INPUT: - ``data``, ``*args``, ``**options`` -- data and options that will be passed down to :func:`Poset` to construct a poset that is also a lattice. OUTPUT: FiniteLatticePoset -- an instance of :class:`FiniteLatticePoset` .. seealso:: :class:`Posets`, :class:`FiniteLatticePosets`, :func:`JoinSemiLattice`, :func:`MeetSemiLattice` EXAMPLES: Using data that defines a poset:: sage: LatticePoset([[1,2],[3],[3]]) Finite lattice containing 4 elements sage: LatticePoset([[1,2],[3],[3]], cover_relations = True) Finite lattice containing 4 elements Using a previously constructed poset:: sage: P = Poset([[1,2],[3],[3]]) sage: L = LatticePoset(P); L Finite lattice containing 4 elements sage: type(L) <class 'sage.combinat.posets.lattices.FiniteLatticePoset_with_category'> If the data is not a lattice, then an error is raised:: sage: elms = [1,2,3,4,5,6,7] sage: rels = [[1,2],[3,4],[4,5],[2,5]] sage: LatticePoset((elms, rels)) Traceback (most recent call last): ... ValueError: Not a lattice. Creating a facade lattice:: sage: L = LatticePoset([[1,2],[3],[3]], facade = True) sage: L.category() Category of facade finite lattice posets sage: parent(L[0]) Integer Ring sage: TestSuite(L).run(skip = ['_test_an_element']) # is_parent_of is not yet implemented """ if isinstance(data,FiniteLatticePoset) and len(args) == 0 and len(options) == 0: return data P = Poset(data, *args, **options) if not P.is_lattice(): raise ValueError, "Not a lattice." return FiniteLatticePoset(P, category = FiniteLatticePosets(), facade = P._is_facade)
def LatticePoset(data, *args, **options): r""" Construct a lattice from various forms of input data. INPUT: - ``data``, ``*args``, ``**options`` -- data and options that will be passed down to :func:`Poset` to construct a poset that is also a lattice. OUTPUT: FiniteLatticePoset -- an instance of :class:`FiniteLatticePoset` .. seealso:: :class:`Posets`, :class:`FiniteLatticePosets`, :func:`JoinSemiLattice`, :func:`MeetSemiLattice` EXAMPLES: Using data that defines a poset:: sage: LatticePoset([[1,2],[3],[3]]) Finite lattice containing 4 elements sage: LatticePoset([[1,2],[3],[3]], cover_relations = True) Finite lattice containing 4 elements Using a previously constructed poset:: sage: P = Poset([[1,2],[3],[3]]) sage: L = LatticePoset(P); L Finite lattice containing 4 elements sage: type(L) <class 'sage.combinat.posets.lattices.FiniteLatticePoset_with_category'> If the data is not a lattice, then an error is raised:: sage: elms = [1,2,3,4,5,6,7] sage: rels = [[1,2],[3,4],[4,5],[2,5]] sage: LatticePoset((elms, rels)) Traceback (most recent call last): ... ValueError: Not a lattice. Creating a facade lattice:: sage: L = LatticePoset([[1,2],[3],[3]], facade = True) sage: L.category() Join of Category of finite lattice posets and Category of finite enumerated sets and Category of facade sets sage: parent(L[0]) Integer Ring sage: TestSuite(L).run(skip = ['_test_an_element']) # is_parent_of is not yet implemented """ if isinstance(data,FiniteLatticePoset) and len(args) == 0 and len(options) == 0: return data P = Poset(data, *args, **options) if not P.is_lattice(): raise ValueError("Not a lattice.") return FiniteLatticePoset(P, category = FiniteLatticePosets(), facade = P._is_facade)