Shunyaya Symbolic Mathematics — Composition & monotone maps (2.38)

Abstract
We lift real functions f: R -> R to symbolic numerals (m, a) by acting on the magnitude and carrying the alignment. On domains where f is monotone (and where branch/guard rules are declared), the lift preserves classical order on the magnitude channel and composes cleanly. Continuity and Lipschitz properties pass to the lift under product metrics. Under collapse phi(m,a) = m, all statements reduce to the classical theory.


Function lift (definition and guards)

For a unary real function f and a symbolic input x = (m, a):

f*(m, a) = ( f(m) , a )        # alignment carry

Domain D. Use the classical domain of f (possibly restricted to a monotone sub-interval).
Guard policy (manifest):

domain_guard = "error" | "clamp" | "nan"
branch = <principal | named branch>       # for multivalued f (e.g., roots, inverse trig)

Collapse check. phi( f*(m,a) ) = f(m).


Composition law

For functions f and g where g∘f is defined on D:

(g ∘ f)*(m, a) = ( g(f(m)) , a ) = g*( f*(m, a) )

Composition is associative and respects guards/branches inherited from the classical composition.


Monotonicity and order

Let <=_m denote magnitude order (compare magnitudes only).

Magnitude order (base rule).
If f is increasing on D:

(m1,a1) <=_m (m2,a2)   and  m1,m2 in D  ⇒  f*(m1,a1) <=_m f*(m2,a2)

If f is decreasing on D, the inequality reverses.

Strength order (S_beta) — sufficient conditions.
Let <=_beta be the preorder induced by S_beta(m,a) = m*(1 - beta*(1 - a)), beta in [0,1]. Because the alignment factor depends on a, global preservation is not guaranteed without assumptions. Two useful sufficient conditions:

  1. Alignment-slice preservation. If you compare points with the same alignment (a1 = a2) and f is increasing on D, then f* preserves <=_beta; if f is decreasing, it reverses <=_beta.
  2. Magnitude-only bounding. When using selectors like clamp (2.37) with order_metric="magnitude", monotone lifts preserve the chosen order by construction.

When monotonicity changes (e.g., even powers, cosh), make order claims branchwise (see 2.31, 2.34).


Continuity, limits, and Lipschitz

Work in rapidity for alignment: u = atanh( clamp(a, -1+eps, +1-eps) ), eps = 1e-6.

Continuity. If f is continuous at m, then for any sequence (m_n, a_n) with

m_n -> m   and   u_n = atanh(a_n) -> u = atanh(a),

we have

f*(m_n, a_n) -> ( f(m), a )      # alignment carried; see 2.16 for limits/continuity

Uniform continuity / interchange. On a compact D, if f is uniformly continuous, then the lift is uniformly continuous under any product metric such as

d( (m1,u1), (m2,u2) ) = |m1 - m2| + c * |u1 - u2|   (c > 0)

Lipschitz transfer. If |f(m1) - f(m2)| <= L * |m1 - m2| on D, then under the product metric above,

d( f*(x1), f*(x2) ) <= max(L, 1) * d(x1, x2)

(the magnitude part contracts by L, the alignment part is 1-Lipschitz because it is carried).


Piecewise-monotone functions

If f is only piecewise monotone, decompose D into monotone components {D_k} and lift with piecewise selectors (2.35). Order and continuity statements apply within each D_k. Cross-branch comparisons should use your declared selector policy and symbolic preorder.


Worked examples

A) Increasing map with composition.
f(m) = exp(m) on D = [-1, 1], g(m) = log(m) on g’s domain m > 0.

x1 = (-0.5, +0.2)  →  f*(x1) = ( exp(-0.5), +0.2 ) ≈ (0.6065, +0.2)
x2 = ( 0.4, -0.6)  →  f*(x2) = ( exp( 0.4), -0.6 ) ≈ (1.4918, -0.6)

Magnitude order: -0.5 < 0.4exp(-0.5) < exp(0.4) ⇒ preserved.
Composition:

(g ∘ f)*(x) = g*( f*(x) ) = ( log( exp(m) ), a ) = ( m , a )   for m in D

B) Decreasing map (reciprocal).
f(m) = 1/m on D = (0, +inf) (guard out m <= 0).

x1 = ( 2.0,  0.3 ) → f*(x1) = ( 0.5 , 0.3 )
x2 = ( 0.5, -0.4 ) → f*(x2) = ( 2.0 ,-0.4 )

Since f is decreasing, the magnitude order is reversed: 2.0 > 0.5 but 0.5 < 2.0.

C) Piecewise-monotone (square).
f(m) = m^2 is decreasing on (-inf,0] and increasing on [0,+inf).

xL = (-3, 0.1) → f*(xL) = ( 9, 0.1 )
xR = (  2, 0.9) → f*(xR) = ( 4, 0.9 )

Order claims are branchwise; cross-branch comparisons should use selector/preorder rules (2.31, 2.37).


Implementation notes (manifest)

  • domain = D (list intervals); branch = <name> if multi-valued.
  • domain_guard = "error" (default) | "clamp" | "nan".
  • order_metric = "magnitude" (default for lift statements) or "S_beta" (declare beta).
  • continuity_metric = |Δm| + c|Δu| with chosen c; record L if using Lipschitz bounds.
  • Use u = atanh(a) internally where any algorithm needs linear alignment; report a = tanh(u).

Takeaway

The lift f*(m,a) = (f(m), a) is the canonical way to apply real functions to symbolic numerals. It composes exactly, preserves or reverses magnitude order according to the monotonicity of f, and inherits continuity/Lipschitz properties under product metrics. Branchwise reasoning and clear guard policies keep the lift collapse-safe; under collapse, everything is classical.


Navigation
Previous → Min/Max/Clamp (formalized) (2.37)
Next → Series & analytic functions (2.39)


Disclaimer
Observation only. Results reproduce mathematically; domain claims require independent peer review. Defaults: mult_mode = M2, clamp_eps = 1e-6, |a| < 1. All formulas are presented in plain text. Collapse uses phi(m,a) = m.