def JoinSemilattice(data, *args, **options): r""" Construct a join semi-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 join semilattice. .. seealso:: :func:`Poset`, :func:`MeetSemilattice`, :func:`LatticePoset` EXAMPLES: Using data that defines a poset:: sage: JoinSemilattice([[1,2],[3],[3]]) Finite join-semilattice containing 4 elements sage: JoinSemilattice([[1,2],[3],[3]], cover_relations = True) Finite join-semilattice containing 4 elements Using a previously constructed poset:: sage: P = Poset([[1,2],[3],[3]]) sage: J = JoinSemilattice(P); J Finite join-semilattice containing 4 elements sage: type(J) <class 'sage.combinat.posets.lattices.FiniteJoinSemilattice_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: JoinSemilattice((elms, rels)) Traceback (most recent call last): ... ValueError: Not a join semilattice. """ if isinstance( data, FiniteJoinSemilattice) and len(args) == 0 and len(options) == 0: return data P = Poset(data, *args, **options) if not P.is_join_semilattice(): raise ValueError, "Not a join semilattice." return FiniteJoinSemilattice(P)
def JoinSemilattice(data, *args, **options): r""" Construct a join semi-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 join semilattice. .. seealso:: :func:`Poset`, :func:`MeetSemilattice`, :func:`LatticePoset` EXAMPLES: Using data that defines a poset:: sage: JoinSemilattice([[1,2],[3],[3]]) Finite join-semilattice containing 4 elements sage: JoinSemilattice([[1,2],[3],[3]], cover_relations = True) Finite join-semilattice containing 4 elements Using a previously constructed poset:: sage: P = Poset([[1,2],[3],[3]]) sage: J = JoinSemilattice(P); J Finite join-semilattice containing 4 elements sage: type(J) <class 'sage.combinat.posets.lattices.FiniteJoinSemilattice_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: JoinSemilattice((elms, rels)) Traceback (most recent call last): ... ValueError: Not a join semilattice. """ if isinstance(data,FiniteJoinSemilattice) and len(args) == 0 and len(options) == 0: return data P = Poset(data, *args, **options) if not P.is_join_semilattice(): raise ValueError, "Not a join semilattice." return FiniteJoinSemilattice(P)