Dedekind 0.0.0
A structuralist C++23 Module Library
Loading...
Searching...
No Matches
dedekind::numbers::DivergencePath< R > Class Template Referenceexport

The escape signal of a Mandelbrot orbit, tagged as a sequence-shape witness: a monotone {Unknown,True}-valued Path<Ternary> that is structurally absorptive for every parameter c. More...

Inheritance diagram for dedekind::numbers::DivergencePath< R >:
Collaboration diagram for dedekind::numbers::DivergencePath< R >:

Friends

template<IsComplexScalar R2, typename EscapeCriterion>
requires IsEscapeCriterion<EscapeCriterion, Complex<R2>>
constexpr auto orbit_divergence_path (const OrbitPath< R2 > &orbit, EscapeCriterion criterion) -> DivergencePath< R2 >

Additional Inherited Members

Public Types inherited from dedekind::sequences::Path< Ternary >
using Domain
using Codomain
using cardinality_type
using index_type
Public Member Functions inherited from dedekind::sequences::Path< Ternary >
constexpr Codomain operator() (std::size_t i) const
constexpr Ternary at (std::size_t i) const
constexpr std::size_t size () const noexcept
constexpr auto begin () const noexcept
constexpr auto end () const noexcept
constexpr auto cardinality () const noexcept
 The Path is generally viewed as a mapping from N.
Public Attributes inherited from dedekind::sequences::Path< Ternary >
std::function< Ternary(std::size_t)> generator
 The underlying mapping f(n).
std::size_t extent

Detailed Description

template<IsComplexScalar R>
class dedekind::numbers::DivergencePath< R >

The escape signal of a Mandelbrot orbit, tagged as a sequence-shape witness: a monotone {Unknown,True}-valued Path<Ternary> that is structurally absorptive for every parameter c.

The divergence path of orbit_divergence_path is eventually constant regardless of c:

  • Escaping c (outside \(M\)): the path is Unknown until the escape index, then True forever (True is the absorbing element of Kleene OR — the IsAbsorptiveSequence tail factors through a singleton \(\{z\}\) with \(z\) = True).
  • Bounded c (inside \(M\)): the path is the constant Unknown sequence — eventually-constant from index 0, the degenerate absorptive case ( \(z = @c Unknown\)).

So the IsAbsorptiveSequence shape holds at the type level for the carrier as a whole, independently of the (value-level, undecidable) membership question for any individual c. This is the honest leverage the sequence API affords Mandelbrot: per-c boundedness (IsBoundedSequence ⟺ \(c \in M\)) is value-dependent and cannot be type-witnessed, but "the escape indicator is an absorptive sequence" is.

Note
Construction is restricted to orbit_divergence_path (the only friend): the absorptive invariant is enforced by construction, not merely promised by the trait opt-in. No public constructor from an arbitrary Path<Ternary> exists, so a DivergencePath can only arise from the factory that guarantees eventual-constancy. (The .generator / .extent members inherited from Path remain writable — preserving eventual-constancy under in-place mutation is the residual honesty obligation, as for every tagged Path.)
See also
dedekind::sequences::IsAbsorptiveSequence

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