Sequoia
Loading...
Searching...
No Matches
Classes | Variables
Properties of Spaces

Tools to reflect on whether types expose other types typically associated with various spaces. More...

Classes

struct  sequoia::maths::commutative_ring_type_of< ConvexSpace >
 Helper to extract the commutative ring type of the free module associated with a convex space. More...
 

Variables

template<class T >
constexpr bool sequoia::maths::has_commutative_ring_type_v
 Compile time constant reflecting whether a type exposes a nested type named commutative_ring_type which satisifes the weak_commutative_ring concept.
 
template<class T >
constexpr bool sequoia::maths::has_field_type_v
 Compile time constant reflecting whether a type exposes a nested type named field_type which satisifes the weak_field concept.
 
template<class T >
constexpr bool sequoia::maths::defines_commutative_ring_v {has_commutative_ring_type_v<T> || has_field_type_v<T>}
 Compile time constant reflecting whether a type exposes a nested type with the properties of a commutative ring.
 
template<class T >
constexpr bool sequoia::maths::defines_field_v
 Reports whether a type exposes a nested type with the properties of a field.
 
template<class T >
constexpr bool sequoia::maths::has_dimension_v
 Compile time constant reflecting whether a type exposes a nested value, dimension, convertible to a std::size_t.
 
template<class T >
constexpr bool sequoia::maths::has_set_type_v
 Compile time constant reflecting whether a type exposes a nested type named set_type.
 
template<class T >
constexpr bool sequoia::maths::has_vector_space_type_v
 Compile time constant reflecting whether a type exposes a nested vector_space_type which satisfies the vector_space concept.
 
template<class T >
constexpr bool sequoia::maths::has_free_module_type_v
 Compile time constant reflecting whether a type exposes a nested free_modul_type which satisfies the vector_space concept.
 
template<convex_space ConvexSpace>
constexpr std::size_t sequoia::maths::dimension_of {free_module_type_of_t<ConvexSpace>::dimension}
 Helper to extract the dimension of the free module associated with a convex space.
 

Detailed Description

Tools to reflect on whether types expose other types typically associated with various spaces.

Variable Documentation

◆ defines_commutative_ring_v

template<class T >
constexpr bool sequoia::maths::defines_commutative_ring_v {has_commutative_ring_type_v<T> || has_field_type_v<T>}
inlineconstexpr

Compile time constant reflecting whether a type exposes a nested type with the properties of a commutative ring.

The point here is that a field is a special case of a ring. Therefore, anything which defines a field is implicitly defining a ring.

◆ defines_field_v

template<class T >
constexpr bool sequoia::maths::defines_field_v
inlineconstexpr
Initial value:
{
has_field_type_v<T>
|| requires {
typename T::commutative_ring_type;
}
}
concept representing reasonable approximations to a field.
Definition: Spaces.hpp:334

Reports whether a type exposes a nested type with the properties of a field.

The point here is to capture the case where a type exposes a nested type commutative_ring_type but the latter satisfies not just the weak_commutative_ring concept but also the strong weak_field concept.

◆ has_commutative_ring_type_v

template<class T >
constexpr bool sequoia::maths::has_commutative_ring_type_v
inlineconstexpr
Initial value:
{
requires {
typename T::commutative_ring_type;
}
}
concept representing reasonable approximations to a commutative ring.
Definition: Spaces.hpp:322

Compile time constant reflecting whether a type exposes a nested type named commutative_ring_type which satisifes the weak_commutative_ring concept.

◆ has_dimension_v

template<class T >
constexpr bool sequoia::maths::has_dimension_v
inlineconstexpr
Initial value:
{
requires { { T::dimension } -> std::convertible_to<std::size_t>; }
}

Compile time constant reflecting whether a type exposes a nested value, dimension, convertible to a std::size_t.

◆ has_field_type_v

template<class T >
constexpr bool sequoia::maths::has_field_type_v
inlineconstexpr
Initial value:
{
requires {
typename T::field_type;
}
}

Compile time constant reflecting whether a type exposes a nested type named field_type which satisifes the weak_field concept.

◆ has_free_module_type_v

template<class T >
constexpr bool sequoia::maths::has_free_module_type_v
inlineconstexpr
Initial value:
{
requires {
typename T::free_module_type;
}
}
concept for a free module, implicitly understood to be over a commutative ring.
Definition: Spaces.hpp:476

Compile time constant reflecting whether a type exposes a nested free_modul_type which satisfies the vector_space concept.

◆ has_set_type_v

template<class T >
constexpr bool sequoia::maths::has_set_type_v
inlineconstexpr
Initial value:
{
requires { typename T::set_type; }
}

Compile time constant reflecting whether a type exposes a nested type named set_type.

◆ has_vector_space_type_v

template<class T >
constexpr bool sequoia::maths::has_vector_space_type_v
inlineconstexpr
Initial value:
{
requires {
typename T::vector_space_type;
}
}
concept for a vector space, which is a special case of a free module
Definition: Spaces.hpp:482

Compile time constant reflecting whether a type exposes a nested vector_space_type which satisfies the vector_space concept.