Dedekind 0.0.0
A structuralist C++23 Module Library
Loading...
Searching...
No Matches
dedekind::algebra::IsTotalAlgebra Concept Referenceexport

The universal-algebra (A, F) pattern at the totality tier — every operation closes on the carrier and is total under the carrier's chosen totality path (Periodic / Idempotent / Saturating). More...

Concept definition

template<typename T, typename... Ops>
The universal-algebra (A, F) pattern at the closure tier.
Definition universal.cppm:151
The universal-algebra (A, F) pattern at the totality tier — every operation closes on the carrier and...
Definition universal.cppm:251
The Master Safety Certificate for Level 0: is_total, as a concept.
Definition total.cppm:395

Detailed Description

The universal-algebra (A, F) pattern at the totality tier — every operation closes on the carrier and is total under the carrier's chosen totality path (Periodic / Idempotent / Saturating).

Refines IsAlgebra<T, Ops...> by additionally requiring each operation to satisfy the totality gate from category:species (IsTotal<T, Op>, the IsPeriodic / IsIdempotent / is_saturating_v disjunction — the saturation arm is the variable-template trait directly, with IsSaturating being the mereology-layer concept wrapper around it). This is the structural anchor between the closure tier (this partition) and the laws tier (category:total — IsRing, IsField, etc.): the laws partition's per-axiom hierarchy is built on IsTotal-gated operations, so IsTotalAlgebra names exactly the slice of IsAlgebra that the laws partition can refine.

universal__Closure_tier_vs_totality_tier

The three tiers compose as:

  • IsAlgebra<T, Ops...> — closure tier: each Op closes on T; T is std::semiregular.
  • IsTotalAlgebra<T, Ops...> — totality tier: closure plus each Op satisfies IsTotal<T, Op>. This concept.
  • IsRing<T, Add, Mult>, IsField<T, Add, Mult>, etc. — laws tier: per-axiom refinements in category:total, built on IsTotal-gated operations. Every IsRing model is therefore an IsTotalAlgebra<T, Add, Mult> instance.

The math-wins-over-C++ stance applies at this tier: carriers that don't clear the totality gate (signed-overflow UB on int / long; IEEE rounding non-associativity on double) close at the operator surface (HasRingOperators) but refuse IsTotalAlgebra. The strict laws-tier concepts (IsRing, IsField) refuse them for the same reason — and now the refusal is named at this intermediate tier rather than only inside each laws-tier concept.

Template Parameters
TThe carrier type (std::semiregular).
OpsFamily of operations that close on T and are total under one of the IsTotal paths.
See also
category:total for the declared paths IsPeriodic / is_saturating_v and for IsTotal, and category:species for IsIdempotent.
category:total for the per-axiom laws hierarchy (IsRing, IsField, IsAbelianGroup, etc.) built on IsTotal.
IsAlgebra above (closure tier — the more permissive ancestor).

Filed under the #573 follow-up.