Skip to content
This repository has been archived by the owner on Jan 30, 2023. It is now read-only.

Commit

Permalink
Correction for BooleanLattice(n) for n=0 and n=1; some checks for input.
Browse files Browse the repository at this point in the history
  • Loading branch information
Jori Mäntysalo committed Nov 3, 2014
1 parent 8b95db3 commit 335c546
Showing 1 changed file with 34 additions and 2 deletions.
36 changes: 34 additions & 2 deletions src/sage/combinat/posets/poset_examples.py
Expand Up @@ -74,6 +74,12 @@ def __classcall__(cls, n = None):
"""
if n is None:
return sage.categories.posets.Posets()
try:
n = Integer(n)
except TypeError:
raise TypeError("Number of elements must be an integer, not {0}.".format(n))
if n < 0:
raise ValueError("Number of elements must be non-negative, not {0}.".format(n))
return FinitePosets_n(n)

@staticmethod
Expand All @@ -86,6 +92,16 @@ def BooleanLattice(n):
sage: Posets.BooleanLattice(5)
Finite lattice containing 32 elements
"""
try:
n = Integer(n)
except TypeError:
raise TypeError("Number of elements must be an integer, not {0}.".format(n))
if n < 0:
raise ValueError("Number of elements must be non-negative, not {0}.".format(n))
if n==0:
return LatticePoset( ([0], []) )
if n==1:
return LatticePoset( ([0,1], [[0,1]]) )
return LatticePoset([[Integer(x|(1<<y)) for y in range(0,n) if x&(1<<y)==0] for
x in range(0,2**n)])

Expand Down Expand Up @@ -120,6 +136,12 @@ def ChainPoset(n):
sage: C.cover_relations()
[[0, 1]]
"""
try:
n = Integer(n)
except TypeError:
raise TypeError("Number of elements must be an integer, not {0}.".format(n))
if n < 0:
raise ValueError("Number of elements must be non-negative, not {0}.".format(n))
return LatticePoset((range(n), [[x,x+1] for x in range(n-1)]))

@staticmethod
Expand Down Expand Up @@ -152,6 +174,12 @@ def AntichainPoset(n):
sage: C.cover_relations()
[]
"""
try:
n = Integer(n)
except TypeError:
raise TypeError("Number of elements must be an integer, not {0}.".format(n))
if n < 0:
raise ValueError("Number of elements must be non-negative, not {0}.".format(n))
return Poset((range(n), []))

@staticmethod
Expand Down Expand Up @@ -209,6 +237,10 @@ def DiamondPoset(n, facade = None):
sage: Posets.DiamondPoset(7)
Finite lattice containing 7 elements
"""
try:
n = Integer(n)
except TypeError:
raise TypeError("Number of elements must be an integer, not {0}.".format(n))
if n <= 2:
raise ValueError("n must be an integer at least 3.")
c = [[n-1] for x in range(n)]
Expand Down Expand Up @@ -370,9 +402,9 @@ def RandomPoset(n,p):
try:
n = Integer(n)
except TypeError:
raise TypeError("number of elements must be an integer, not {0}".format(n))
raise TypeError("Number of elements must be an integer, not {0}.".format(n))
if n < 0:
raise ValueError("number of elements must be non-negative, not {0}".format(n))
raise ValueError("Number of elements must be non-negative, not {0}.".format(n))
try:
p = float(p)
except Exception:
Expand Down

0 comments on commit 335c546

Please sign in to comment.