|
Dedekind 0.0.0
A structuralist C++23 Module Library
|
An arrow \(f : A \to B\) between two algebras that carries each operation of the signature S on \(A\) to the one in the same place of T on \(B\): \(f(x \odot y) = f(x) \circledast f(y)\) and \(f(e) = e'\) for each (Burris and Sankappanavar, A Course in Universal Algebra, §II.6).
More...
An arrow \(f : A \to B\) between two algebras that carries each operation of the signature S on \(A\) to the one in the same place of T on \(B\): \(f(x \odot y) = f(x) \circledast f(y)\) and \(f(e) = e'\) for each (Burris and Sankappanavar, A Course in Universal Algebra, §II.6).
Per operation the law is the declared certificate category::is_homomorphism, keyed by the arrow, its domain and the pair of operations, of any arity, and where the operation has a unit, the law at the unit is computed, category::PreservesUnit. The signatures default to the semiring operations each carrier registers, semiring_ops, so a ring embedding is named by its arrow alone; an empty signature asserts nothing and is refused, and so is a type that is no arrow. The honest discipline is to pin each declaration with computed witnesses at its site.
| Arrow | the arrow. |
| S | |
| T | the signatures of its domain and codomain. |