Dedekind 0.0.0
A structuralist C++23 Module Library
Loading...
Searching...
No Matches
dedekind::algebra::is_scaling_invariant_ordered< T > Struct Template Referenceexport

The MULTIPLICATIVE order-compatibility axiom marker (O2): the positive cone is closed under *, i.e. 0≤a ∧ 0≤b ⟹ 0≤a·b — equivalently, scaling by a positive preserves the order. The multiplicative sibling of is_translation_invariant_ordered (O1, scaling ↔ translation). More...

Inheritance diagram for dedekind::algebra::is_scaling_invariant_ordered< T >:
Collaboration diagram for dedekind::algebra::is_scaling_invariant_ordered< T >:

Detailed Description

template<typename T>
struct dedekind::algebra::is_scaling_invariant_ordered< T >

The MULTIPLICATIVE order-compatibility axiom marker (O2): the positive cone is closed under *, i.e. 0≤a ∧ 0≤b ⟹ 0≤a·b — equivalently, scaling by a positive preserves the order. The multiplicative sibling of is_translation_invariant_ordered (O1, scaling ↔ translation).

Defaults false_type; a carrier opts in only when its order is genuinely compatible with * (an ordered field). This cannot be a concept check: O2 is a \(\forall\)-law over VALUES, and a concept inspects only types / operation signatures — the same wall that makes is_invertible_v / is_associative_v opt-in traits, not concept checks.

Warning
An earlier design leaned on order::IsTotallyOrdered<T> to stand in for this axiom ("a separate marker would only re-state what the upstream concepts prove"). That is FALSE: std::totally_ordered is mere syntactic comparability and does NOT prove O2. \(\mathbb{F}_5\) orders its representatives 0<1<2<3<4 (so it is std::totally_ordered) yet 1·3=3 > 2·3=1 flips the order and −1=2² is a square — it is a field that is NOT formally real, and Complex <𝔽₅> splits into zero divisors. The structural <=> check belongs at this opt-in site (per carrier), not in the concept — exactly as for the additive marker.

The documentation for this struct was generated from the following file: