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 type str is an iterable, but it is considered a single, non-iterable argument.) Arguments of type Counter are loaded directly, and arguments of type dict must map values or instances of MathObject to integers; the integers are interpreted as multiplicity values for the given keys. (In order to create a Multiset that contains a Counter or dict, put the Counter or dict in an Atom or an array first.)
  • direct_load – (Optional) Set to True if you know that all arguments (or all elements of the iterable) are instances of MathObject.
data

Read-only; return the elements of this instance as a Counter of MathObject instances.

cardinality

Read-only; return the number of elements in the multiset.

is_empty

Return True if this multiset is empty, False if not.

has_element(elem: algebraixlib.mathobjects.mathobject.MathObject) → bool[source]

Return whether elem is an element of this multiset. elem must be a MathObject.

For a more relaxed version (that auto-converts non-MathObject arguments into instances of Atom) see __contains__ and the construct elem in Multiset.

get_multiplicity(elem: algebraixlib.mathobjects.mathobject.MathObject) → int[source]

Return int if elem is an element of this Multiset where the value is the number of multiples for elem. elem must be a MathObject.

get_ground_set() → algebraixlib.structure.Structure[source]

Return the ground set of the lowest-level algebra of this Multiset.

__eq__(other)[source]

Implement value-based equality. Return True if type and data match.

__ne__(other)[source]

Implement value-based inequality. Return True if type or data don’t match.

__contains__(item)[source]

Return True if item is a member of this multiset. If item is not a MathObject, it is converted into an Atom.

This allows Boolean expressions of the form element in Multiset.

__hash__()[source]

Return a hash based on the value that is calculated on demand and cached.

__repr__()[source]

Return the instance’s code representation.

__str__()[source]

Return the instance’s string representation.

__getitem__(left)[source]

With the syntax mo[left], return a set of rights associated with left.

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 matches left. (The returned multiset may be empty if no couplet with the given left exists.) Return Undef() if self is not a multi-relation.