|
Dedekind 0.0.0
A structuralist C++23 Module Library
|
Opt-in trait: is (T, Op) a \emph{cyclic} abelian group?
More...


Opt-in trait: is (T, Op) a \emph{cyclic} abelian group?
Closes #378. A cyclic group is an abelian group generated by a single element. Every cyclic group is isomorphic to \(\mathbb{Z}/n\mathbb{Z}\) for some \(n \ge 1\) (finite cyclic) or to \(\mathbb{Z}\) itself (infinite cyclic). In this library, all finite cyclic carriers that matter — unsigned int / unsigned long / size_t under std::plus (wrapping at \(2^w\)), ExtensionalCardinal<W> under std::plus, SignedExtensionalCardinal under std::plus, morphologies::Modular<N> under std::plus — are cyclic specialisations of the abelian-group case.
The trait is struct-backed (is_cyclic_group<T, Op>) so SpeciesTraits-based discovery works across module boundaries. Default false; carrier author declares finiteness / cyclicity (C++ concepts cannot derive it from a type signature).