Dedekind 0.0.0
A structuralist C++23 Module Library
Loading...
Searching...
No Matches
dedekind::category::LawAlgebra< Op > Struct Template Referenceexport

The law algebra: a leaf is its declared profile, a node the law engine on its legs' profiles (:posetal, arrow_node); any other node certifies nothing (sound). The second algebra for the same cata: BetaReduction lands in a normal form (a free algebra, so it decides equality), LawAlgebra in a finite domain of profiles (an abstract interpretation, so it certifies, sound, not complete). More...

Public Member Functions

template<typename A>
constexpr ArrowLaws operator() (const A &) const
template<typename N, typename R0, typename... R>
constexpr ArrowLaws operator() (const N &, const R0 &, const R &...) const
template<typename F, typename G>
constexpr ArrowLaws operator() (const Compose< F, G > &, const ArrowLaws &f, const ArrowLaws &g) const
template<typename A, typename F, typename B, typename G>
requires (IsPairProjection<A, 1> && IsPairProjection<B, 2>)
constexpr ArrowLaws steer (const Pairing< Compose< A, F >, Compose< B, G > > &t) const
 The defining forms of × and +, recognised before the fold descends (cata's steer): the product (sum) fact on the factors, which the pairing (copairing) rule alone would lose.
template<typename F, typename G, typename X, typename Y>
constexpr ArrowLaws steer (const Copairing< Compose< F, Injection< 1, X, Y > >, Compose< G, Injection< 2, X, Y > > > &t) const
template<typename F, typename G>
constexpr ArrowLaws operator() (const Pairing< F, G > &, const ArrowLaws &f, const ArrowLaws &g) const
template<typename F, typename G>
constexpr ArrowLaws operator() (const Copairing< F, G > &, const ArrowLaws &f, const ArrowLaws &g) const

Detailed Description

template<typename Op = std::less_equal<>>
struct dedekind::category::LawAlgebra< Op >

The law algebra: a leaf is its declared profile, a node the law engine on its legs' profiles (:posetal, arrow_node); any other node certifies nothing (sound). The second algebra for the same cata: BetaReduction lands in a normal form (a free algebra, so it decides equality), LawAlgebra in a finite domain of profiles (an abstract interpretation, so it certifies, sound, not complete).

Template Parameters
Opthe order the variances are read under.

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