unicode_fol_kit.semantics.tnorm

Continuous t-norms for the fuzzy (BL / Hájek basic-logic) family.

A t-norm T fixes the semantics of the strong fuzzy connectives over the real interval [0, 1]:

  • strong conjunction is T itself;

  • strong disjunction is the dual t-conorm S(x, y) = 1 T(1−x, 1−y);

  • implication is the residuum R(x, y) = sup {z : T(x, z) y};

  • negation ¬x is R(x, 0);

  • biconditional is min(R(x, y), R(y, x)).

The weak connectives / are always min / max (the lattice meet / join), independent of the t-norm, and so are the quantifiers (infimum) / (supremum). Three continuous t-norms — whose ordinal sums generate every continuous t-norm (the Mostert–Shields theorem) — ship here:

  • Łukasiewicz T(x, y) = max(0, x + y 1) (the default; involutive negation);

  • Gödel T(x, y) = min(x, y) (idempotent; a relative pseudo-complement negation);

  • product T(x, y) = x · y (strict; Goguen residuum y / x).

Public API: TNorm, the instances LUKASIEWICZ, GODEL, PRODUCT, the registry TNORMS, and get_tnorm().

Functions

get_tnorm(name)

Return the TNorm for name ("lukasiewicz" / "godel" / "product").

Classes

TNorm(name, conj, disj, impl, neg)

A t-norm and the strong connective operations it induces over [0, 1].

class unicode_fol_kit.semantics.tnorm.TNorm(name, conj, disj, impl, neg)[source]

Bases: object

A t-norm and the strong connective operations it induces over [0, 1].

conj / disj / impl / neg are the strong ⊗ / ⊕ / → / ¬; equiv is derived as min(x→y, y→x). (The weak ∧/∨ are min/max regardless and live in the evaluator, not here.)

Parameters:
name: str
conj: Callable[[float, float], float]
disj: Callable[[float, float], float]
impl: Callable[[float, float], float]
neg: Callable[[float], float]
equiv(x, y)[source]

Residuated biconditional min(x y, y x).

Parameters:
Return type:

float

unicode_fol_kit.semantics.tnorm.get_tnorm(name)[source]

Return the TNorm for name ("lukasiewicz" / "godel" / "product").

Parameters:

name (str)

Return type:

TNorm