Source code for calcpy._po

"""Partial order."""


[docs] def minimal(values, *, lt): """Returns the minimal elements of a poset. Parameters: values (iterable): Values to find the minimal elements. lt (Callable[[Any, Any], bool]): Less-than checker. Returns: list: Minimal elements. Examples: >>> def isproperfactor(a, b): ... return (b % a == 0) and (a != b) >>> minimal([2, 3, 4, 5, 6, 7, 8, 9], lt=isproperfactor) [2, 3, 5, 7] """ results = [] for result in values: for value in values: if lt(value, result): break else: results.append(result) return results
[docs] def maximal(values, *, lt): """Returns the maximal elements of a poset. Parameters: values (iterable): Values to find the maximal elements. lt (Callable[[Any, Any], bool]): Less-than checker. Returns: list: Maximal elements. Examples: >>> def isproperfactor(a, b): ... return (b % a == 0) and (a != b) >>> maximal([2, 3, 4, 5, 6, 7, 8, 9], lt=isproperfactor) [5, 6, 7, 8, 9] """ results = [] for result in values: for value in values: if lt(result, value): break else: results.append(result) return results