def get_rights(mclan: 'P(P(M x M) x N)', _checked=True) -> 'P( M )': r"""Return the set of the right components of all couplets in all relations in ``mclan``. :return: The :term:`union` of the :term:`right set`\s of all :term:`relation`\s in ``mclan`` or `Undef()` if ``mclan`` is not a :term:`multiclan`. """ if _checked: if not is_member(mclan): return _undef.make_or_raise_undef2(mclan) else: assert is_member_or_undef(mclan) if mclan is _undef.Undef(): return _undef.make_or_raise_undef(2) if mclan.is_empty: # The right set of an empty set is the empty set return mclan clan_itr = iter(mclan) right_set = _relations.get_rights(next(clan_itr), _checked=False) for rel in clan_itr: right_set = _sets.union(_relations.get_rights(rel, _checked=False), right_set, _checked=False) if not right_set.is_empty: if mclan.cached_is_absolute: right_set.cache_absolute(_mo.CacheStatus.IS) return right_set
def get_rights(mclan: 'P(P(M x M) x N)', _checked=True) -> 'P( M )': r"""Return the set of the right components of all couplets in all relations in ``mclan``. :return: The :term:`union` of the :term:`right set`\s of all :term:`relation`\s in ``mclan`` or `Undef()` if ``mclan`` is not a :term:`multiclan`. """ if _checked: if not is_member(mclan): return _undef.make_or_raise_undef2(mclan) else: assert is_member_or_undef(mclan) if mclan is _undef.Undef(): return _undef.make_or_raise_undef(2) if mclan.is_empty: # The right set of an empty set is the empty set return mclan clan_itr = iter(mclan) right_set = _relations.get_rights(next(clan_itr), _checked=False) for rel in clan_itr: right_set = _sets.union( _relations.get_rights(rel, _checked=False), right_set, _checked=False) if not right_set.is_empty: if mclan.cached_is_absolute: right_set.cache_absolute(_mo.CacheStatus.IS) return right_set
def get_rights(clan: 'PP(M x M)', _checked=True) -> "P( M )": r"""Return the :term:`right set` of this :term:`clan`. :return: The :term:`union` of the :term:`right set`\s of all :term:`relation`\s in the :term:`clan` or `Undef()` if ``clan`` is not a clan. """ if _checked: if not is_member(clan): return _make_or_raise_undef() else: assert is_member(clan) if clan.is_empty: # The right set of an empty set is the empty set return clan clan_itr = iter(clan) right_set = _relations.get_rights(next(clan_itr), _checked=False) for rel in clan_itr: right_set = _sets.union( _relations.get_rights(rel, _checked=False), right_set, _checked=False) if not right_set.is_empty: right_set.cache_is_relation(False).cache_is_clan(False) return right_set