@@ -57,12 +57,24 @@ csgrs = CSG objects, modeling operations, topology, metadata, IO, and us
5757
5858- exact rationals
5959- symbolic and computable reals
60+ - shared reduced expression machinery with symbolic leaves
61+ - standard-real solver variables and formal infinitesimal perturbation leaves
6062- lazy approximation
6163- sign, zero, magnitude, and structural facts
6264- refinement and conservative comparison support
6365
6466It should not own CSG, polygon, mesh, or CAD-specific geometry types.
6567
68+ The machinery needed for the feature that gives ` hyperreal ` its name should be
69+ developed together with the machinery needed to map a SolveSpace-style solver
70+ onto ` hyperreal ` , but the semantics should remain distinct. Both need reduced
71+ expression graphs, symbolic leaves, dependency sets, structural facts,
72+ derivative hooks, and cached evaluation. Solver variables are unknown standard
73+ reals that are bound by an evaluation context during iterative solving.
74+ Infinitesimal perturbations are ordered formal terms used for exact
75+ lexicographic signs, tie-breaking, degeneracy handling, and simulation of
76+ simplicity; they are not ordinary variables to solve for numerically.
77+
6678### ` hyperlattice `
6779
6880` hyperlattice ` should own the general linear algebra layer:
@@ -344,6 +356,41 @@ At this point, the semantic boundary should already be correct:
344356The hyperreal port should therefore focus on backend behavior, performance, and
345357additional certificates rather than rewriting ` csgrs ` modeling logic again.
346358
359+ This phase should align with the ` hypersolve ` / SolveSpace-style symbolic
360+ variable work in ` hyperreal ` . The shared substrate should support:
361+
362+ - expression nodes with symbolic leaves
363+ - dependency and independence facts
364+ - structural sign, zero, magnitude, and domain facts before full evaluation
365+ - reduced-expression caching across repeated queries
366+ - derivative hooks for solver residuals and, where useful, perturbation
367+ propagation
368+ - bounded simplification so solver equations and infinitesimal series do not
369+ grow without control
370+
371+ The first infinitesimal target should be CAD-useful ordered perturbations, not a
372+ general nonstandard-analysis universe. A practical model is a finite
373+ lexicographic perturbation tower:
374+
375+ ``` text
376+ standard Real + a1*eps + a2*eps^2 + ...
377+ ```
378+
379+ or an equivalent ordered perturbation-term representation. ` hyperlimit ` should
380+ be able to use these terms to decide predicate signs in degenerate cases without
381+ inventing ad hoc epsilon constants. ` hypersolve ` should use the same expression
382+ and fact infrastructure for standard-real variables, residuals, Jacobians, and
383+ rank diagnostics. The two paths should share representation, reduction,
384+ caching, and derivative infrastructure while keeping their policy layers
385+ separate:
386+
387+ - solver symbols are bound by an evaluation context and participate in numeric
388+ iteration
389+ - infinitesimal symbols are ordered formal perturbations and participate in
390+ lexicographic comparison
391+ - ` csgrs ` consumes the resulting classifications and certificates, but still
392+ owns CSG topology, metadata, and modeling policy
393+
347394### Phase 10: Public API cleanup
348395
349396After internals are stable:
0 commit comments