|
Dedekind 0.0.0
A structuralist C++23 Module Library
|
A truth-object: a type that can serve as the classifier Ω for a logical species. More...
A truth-object: a type that can serve as the classifier Ω for a logical species.
Satisfied when T either carries the closed logical operators (&& / || / ! all returning T, as for bool, Ternary, and the Truth<L> wrappers now that the meet/join register has landed), or is a registered logic wrapper declaring a valid logic_species. Truth<L> now qualifies by both branches; the logic_species branch remains the fallback for any wrapper that does not overload the operators. int and std::string satisfy neither (int's && yields bool, and neither declares a logic_species), so IsΩ does not over-accept them. This is deliberately decoupled from GetLogic, whose permissive default maps any type to Boole and would otherwise let IsΩ accept arbitrary types.
bool and Ternary are peer inhabitants: neither is a privileged "the Ω". bool is distinguished only at the dominance layer (as the decided core \(\mathbb{B}\) that decidable maps factor through; see lift_logic), not as a logic. Register a new species (say a fuzzy logic) and its truth-type joins as another peer. The non-trivial inhabitants shipped are Ternary (Kleene \(K_3\)), Percentage (the Percent chain) and each Chain<T>'s T, read as truth values only through their species.