Dedekind 0.0.0
A structuralist C++23 Module Library
Loading...
Searching...
No Matches
dedekind::relational::GraphPredicate< F > Struct Template Referenceexport

The membership predicate of a functional graph \(\Gamma_f\): \((a,b)\mapsto b = f(a)\). More...

Public Types

using ArrowType = std::remove_cvref_t<F>
using Pair

Public Member Functions

constexpr bool operator() (const Pair &p) const

Public Attributes

ArrowType arrow

Detailed Description

template<typename F>
struct dedekind::relational::GraphPredicate< F >

The membership predicate of a functional graph \(\Gamma_f\): \((a,b)\mapsto b = f(a)\).

Named (not a lambda) so it carries its arrow f. That is what lets two graphs compose by the relative product without enumerating the shared intermediate (operator>> below): GraphPredicate recovers the arrow, so \(\Gamma_f;\Gamma_g = \Gamma_{f;g}\) is available on any carrier. Membership delegates to arrow_as_relation (one source of truth for \(b=f(a)\)).

Member Typedef Documentation

◆ Pair

template<typename F>
using dedekind::relational::GraphPredicate< F >::Pair
Initial value:
std::pair<typename ArrowType::Domain, typename ArrowType::Codomain>

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