|
Dedekind 0.0.0
A structuralist C++23 Module Library
|
Core Mandelbrot recurrence helpers over complex carriers. More...
#include <concepts>#include <cstddef>#include <functional>#include <optional>#include <type_traits>#include <utility>import dedekind.numbers:rational;import dedekind.sets;import dedekind.sequences;import dedekind.geometry;import dedekind.category;
Classes | |
| 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. More... | |
Namespaces | |
| namespace | dedekind::numbers |
Concepts | |
| concept | dedekind::numbers::IsEscapeCriterion |
| Escape predicate: ComplexType → bool. | |
Typedefs | |
| template<IsComplexScalar R> | |
| using | dedekind::numbers::OrbitPath = Path<Complex<R>> |
Enumerations | |
| enum class | dedekind::numbers::KleenePolicy { Inclusive , Exclusive } |
Functions | |
| template<IsComplexScalar R> | |
| constexpr auto | dedekind::numbers::euclidean_escape_radius_squared (R escape_radius_squared=R{4}) |
| template<IsComplexScalar R> | |
| constexpr auto | dedekind::numbers::mandelbrot_step (const Complex< R > &c) |
| template<IsComplexScalar R> | |
| constexpr auto | dedekind::numbers::mandelbrot_orbit (const Complex< R > &c) |
| template<IsComplexScalar R, typename EscapeCriterion> requires IsEscapeCriterion<EscapeCriterion, Complex<R>> | |
| constexpr auto | dedekind::numbers::orbit_divergence_path (const OrbitPath< R > &orbit, EscapeCriterion criterion) -> DivergencePath< R > |
| template<IsComplexScalar R, typename EscapeCriterion> requires IsEscapeCriterion<EscapeCriterion, Complex<R>> | |
| constexpr std::optional< std::size_t > | dedekind::numbers::orbit_escape_time (const OrbitPath< R > &orbit, std::size_t max_iter, const EscapeCriterion &criterion) |
| template<IsComplexScalar R> | |
| constexpr std::optional< std::size_t > | dedekind::numbers::orbit_escape_time (const OrbitPath< R > &orbit, std::size_t max_iter, R escape_radius_squared=R{4}) |
| constexpr bool | dedekind::numbers::collapse_ternary (Ternary t, KleenePolicy policy) noexcept |
| template<IsComplexScalar R, typename EscapeCriterion> requires IsEscapeCriterion<EscapeCriterion, Complex<R>> | |
| constexpr auto | dedekind::numbers::M_kleene_N (std::size_t max_iter, EscapeCriterion criterion) |
| template<IsComplexScalar R, typename EscapeCriterion> requires IsEscapeCriterion<EscapeCriterion, Complex<R>> | |
| constexpr auto | dedekind::numbers::M_N (std::size_t max_iter, EscapeCriterion criterion, KleenePolicy policy=KleenePolicy::Inclusive) |
| template<IsComplexScalar R, typename EscapeCriterion> requires IsEscapeCriterion<EscapeCriterion, Complex<R>> | |
| constexpr auto | dedekind::numbers::M_tower (EscapeCriterion criterion, KleenePolicy policy=KleenePolicy::Inclusive) |
Variables | |
| template<dedekind::numbers::IsComplexScalar R> | |
| constexpr bool | dedekind::sequences::is_absorptive_sequence_v< dedekind::numbers::DivergencePath< R > > = true |
Opt-in: every DivergencePath<R> is absorptive (eventually constant — True after escape, or the degenerate constant Unknown when bounded). The eventual-constancy is structural, holding for all c, so it is a sound type-level registration. See dedekind::numbers::DivergencePath. | |
Core Mandelbrot recurrence helpers over complex carriers.
@partition :mandelbrot
Architecture — three layers of the "intensional first" strategy:
Layer 1 (intensional, Kleene, infinite): orbit_divergence_path(orbit(c), criterion) : Path<Ternary> The exact epistemic state at each depth — not fully computable for in-set points, but expressible as a lazy infinite sequence.
Layer 2 (N-step Kleene approximation, computable): M_kleene_N(max_iter, criterion)(c) : Ternary True = escape witnessed within max_iter steps (c is outside M) Unknown = no escape yet (open question: c might be in M or escape later) False = provably bounded (unreachable by finite computation alone)
Layer 3 (Boolean collapse, classical set): M_N(max_iter, criterion, policy)(c) : Set<..., Bool> KleenePolicy::Inclusive => Unknown → in M (outer approx, M_N ⊇ M_true) KleenePolicy::Exclusive => Unknown → not in M (inner approx, M_N ⊆ M_true; ≡ ∅ under finite computation)