Source code for frlearn.uncategorised.t_norms

"""
Triangular norms (t-norms): commutative, associative, non-decreasing binary operators on `[0, 1]` with identity 1.
T-norms generalise classical conjunction for fuzzy logic.

Each function aggregates the values of the provided array along the specified axis.
"""

import numpy as np

__all__ = [
    'goguen_t_norm', 'heyting_t_norm', 'lukasiewicz_t_norm',
]


[docs]def goguen_t_norm(a, axis): """ `x * y`; also known as *product* t-norm. Parameters ---------- a: np.array Input array of values. All values should lie in `[0, 1]`. axis : int, default=-1 The axis along which values are aggregated. Returns ------- b: np.array Aggregated values, array with the same shape as `a`, except for the specified axis. """ return np.prod(a, axis=axis)
[docs]def heyting_t_norm(a, axis): """ `min(x, y)`; also known as *Gödel* or *minimum* t-norm. Parameters ---------- a: np.array Input array of values. All values should lie in `[0, 1]`. axis : int, default=-1 The axis along which values are aggregated. Returns ------- b: np.array Aggregated values, array with the same shape as `a`, except for the specified axis. """ return np.min(a, axis=axis)
[docs]def lukasiewicz_t_norm(a, axis): """ `max(x + y - 1, 0)` Parameters ---------- a: np.array Input array of values. All values should lie in `[0, 1]`. axis : int, default=-1 The axis along which values are aggregated. Returns ------- b: np.array Aggregated values, array with the same shape as `a`, except for the specified axis. """ return np.maximum(np.sum(a, axis=axis) - (a.shape[axis] - 1), 0)