algebraixlib.mathobjects.multiset module¶
Provide the class Multiset
; it represents a multiset.
-
class
algebraixlib.mathobjects.multiset.
Multiset
(*args, direct_load=False)[source]¶ Bases:
algebraixlib.mathobjects.mathobject.MathObject
A multiset consisting of zero or more different
MathObject
instances.Parameters: - args – Zero or more unnamed arguments that are placed into the created
Multiset
. If you want to pass in an iterable, you need to prefix it with an asterisk*
. If no argument is given or the given iterable is empty, an empty multiset is created. (A Python string of typestr
is an iterable, but it is considered a single, non-iterable argument.) Arguments of typeCounter
are loaded directly, and arguments of typedict
must map values or instances ofMathObject
to integers; the integers are interpreted as multiplicity values for the given keys. (In order to create aMultiset
that contains aCounter
ordict
, put theCounter
ordict
in anAtom
or an array first.) - direct_load – (Optional) Set to
True
if you know that all arguments (or all elements of the iterable) are instances ofMathObject
.
-
data
¶ Read-only; return the elements of this instance as a
Counter
ofMathObject
instances.Note
Even though the returned data is a
dict
and can be modified, this should be avoided if at all possible, and if needed, it should be done with care. It may only be done as long as the instance has not been read by code other than the modifying code, and as long as the hash has not yet been calculated. Modifying the data must follow the ‘as-if’ rule: the modification must be done in a way as if the instance were immutable (for all relevant purposes).
-
has_element
(elem: algebraixlib.mathobjects.mathobject.MathObject) → bool[source]¶ Return whether
elem
is an element of this multiset.elem
must be aMathObject
.For a more relaxed version (that auto-converts non-
MathObject
arguments into instances ofAtom
) see__contains__
and the constructelem in Multiset
.
-
get_multiplicity
(elem: algebraixlib.mathobjects.mathobject.MathObject) → int[source]¶ Return
int
ifelem
is an element of thisMultiset
where the value is the number of multiples forelem
.elem
must be aMathObject
.
-
get_ground_set
() → algebraixlib.structure.Structure[source]¶ Return the ground set of the lowest-level algebra of this
Multiset
.
-
get_left_set
()[source]¶ Get the left set for this
Multiset
. ReturnUndef()
if not applicable.Todo
Once multipowersets are fully implemented, see
get_left_set()
.
-
get_right_set
()[source]¶ Get the right set for this
Multiset
. ReturnUndef()
if not applicable.Todo
Once multipowersets are fully implemented, see
get_right_set()
.
-
__contains__
(item)[source]¶ Return
True
ifitem
is a member of this multiset. Ifitem
is not aMathObject
, it is converted into anAtom
.This allows Boolean expressions of the form
element in Multiset
.
-
__le__
(other, NotImplemented=NotImplemented)¶ Return a <= b. Computed by @total_ordering from (a < b) or (a == b).
-
__getitem__
(left)[source]¶ With the syntax
mo[left]
, return a set of rights associated withleft
.Parameters: left – The left component of the couplet(s) of which the right component(s) are returned. Returns: If self
is a multi-relation, return a multiset that contains the right(s) of the couplet(s) that have a left component that matchesleft
. (The returned multiset may be empty if no couplet with the given left exists.) ReturnUndef()
ifself
is not a multi-relation.
- args – Zero or more unnamed arguments that are placed into the created