Shunyaya Symbolic Mathematics — Implicit & inverse functions (2.45)

Abstract
We treat inverses and implicit solutions in symbolic space. For monotone f: R -> R, the inverse lift is f^{-1}*(y,a) = ( f^{-1}(y) , a ) on the appropriate range—alignment is carried from the target. For general implicit equations F(m, p)=0, the magnitude channel follows the classical Implicit Function Theorem, while the alignment of the solved quantity aggregates from inputs using sensitivity weights. Newton-style solvers update the magnitude; alignment is unchanged. Collapse phi(m,a)=m restores the classical theory.


Monotone inverse (unary)

Let f be continuous and strictly monotone on a domain D ⊂ R, with range R_f = f(D) and classical inverse f^{-1}: R_f -> D. Define the inverse lift

inv_f*((y, a)) = ( f^{-1}(y) , a )      for y in R_f

  • Alignment propagation. The inverse reports the stability of the target value y; hence we carry a.
  • Order. If f is increasing, magnitude order is preserved; if decreasing, it is reversed.
  • Collapse. phi( inv_f*((y,a)) ) = f^{-1}(y).

Guards & branches (nonmonotone f).
If f is not globally monotone (e.g., f(m)=m^2), choose a branch:

branch = "principal" (e.g., m >= 0) | "negative" | "nearest_to_seed" | "alignment_sign"
domain_guard = "error" | "nan"


Newton inversion (practical solver)

To solve f(m) = y* for m:

Given y* and seed m0 in D:
repeat until convergence:
    m_{k+1} = m_k - ( f(m_k) - y* ) / f'(m_k)      # line-search/bracketing optional
Return ( m*, a_y )

  • Alignment: output (m*, a_y) carries the target’s alignment.
  • Guards: stop if |f'(m_k)| is too small; enforce domain D; optionally maintain a bracket.
  • Convergence: standard local quadratic convergence when f' is nonzero and continuous near the root.

Manifest knobs

newton.tol = 1e-12
newton.max_iter = 50
newton.bracket = optional [L,U]
newton.deriv = "analytic" | "secant"
inverse.branch = <as above>


Implicit functions (multivariate)

Consider F(m, p) = 0, solving for m as a function of parameters p = (p_1,…,p_k) near a point where ∂F/∂m ≠ 0. Classical IFT gives a differentiable solution m = g(p).

Symbolic lift.

  • Inputs: p_i = (m_i, a_i).
  • Output magnitude: phi( g*(p) ) = g(m_1,…,m_k) (classical).
  • Output alignment (sensitivity-weighted rapidity mean): u_i = atanh( clamp(a_i, -1+eps, +1-eps) ), eps = 1e-6 s_i = | ∂g/∂p_i | = | (∂F/∂p_i) / (∂F/∂m) | by IFT a_out = tanh( ( Σ_i s_i * u_i ) / ( Σ_i s_i ) ) if Σ s_i > 0 Fallback if all s_i = 0: use a_out = tanh( mean(u_i) ) or +1 (declare).
  • Collapse: with all a_i = +1 the alignment is +1 and g*(p) collapses to g.

Root-finding form (no parameters).
For F(m)=0, the default tag is that of the target constant (usually (0, +1)), hence (m*, +1) unless you explicitly tag the target.


Worked examples

A) Inverting the exponential (increasing).
Solve exp(m) = 3 with target (y, a_y) = (3, 0.6).

  • Inverse lift (closed form):
    inv_exp*((3, 0.6)) = ( log(3) , 0.6 ) ≈ ( 1.098612 , 0.6 ).
  • Newton (seed m0 = 1): m1 = 1 - (e^1 - 3)/e^1 ≈ 1.103638 m2 = m1 - (e^{m1} - 3)/e^{m1} ≈ 1.098663 Return (1.09866…, 0.6).

B) Square-root branches (nonmonotone f(m)=m^2).
Target (y, a_y) = (9, -0.3); choose a policy.

  • branch = "principal" (m >= 0): inv_{square}*((9, -0.3)) = ( +3 , -0.3 ).
  • branch = "alignment_sign" (pick sign by a_y): since a_y < 0, choose negative branch ⇒ ( -3 , -0.3 ).

C) Two-parameter implicit example.
F(m, p1, p2) = m^2 - p1 * p2 = 0 ⇒ m = sqrt( p1 * p2 ) on p1>0, p2>0, principal branch.

Parameters: p1 = (4, 0.5), p2 = (9, 0.1).

  • Magnitude: m = sqrt(36) = 6.
  • Sensitivities: ∂g/∂p1 = p2 / (2 m) = 9/12 = 0.75, ∂g/∂p2 = p1 / (2 m) = 4/12 ≈ 0.3333.
  • Alignment: u1 = atanh(0.5)=0.5493, u2 = atanh(0.1)=0.1003 u_out = (0.75*0.5493 + 0.3333*0.1003) / (0.75 + 0.3333) ≈ 0.411 a_out = tanh(0.411) ≈ 0.389 Result: ( 6 , 0.389 ).

Ordering and continuity

  • Order via monotonicity. If f is increasing on D, then y1 <= y2 implies f^{-1}(y1) <= f^{-1}(y2) on magnitudes; decreasing reverses order.
  • Continuity. Inverse and implicit lifts are continuous where the classical maps are continuous and ∂F/∂m ≠ 0.
  • Composition identities. f*( inv_f*((y,a)) ) = ( y , a ) inv_f*( f*(m,a) ) = ( m , a ) when m in D

Implementation notes (manifest)

inverse.domain = D
inverse.range  = R_f
inverse.branch = "principal" | "negative" | "nearest_to_seed" | "alignment_sign"
domain_guard   = "error" | "nan"

newton.tol = 1e-12
newton.max_iter = 50
newton.line_search = on/off
newton.bracket = optional [L,U]
derivative.mode = "analytic" | "secant"
derivative.safeguard = eps_fprime = 1e-12

implicit.alignment.policy = "sensitivity_mean"
implicit.sensitivity = s_i = |(∂F/∂p_i)/(∂F/∂m)|
fallback_alignment = "mean_u"     # if Σ s_i = 0
zero_policy = "canonical_zero"    # (0,+1) for exact zeros


Takeaway

Inverse and implicit operations in SSM act on magnitudes exactly as in classical analysis, while alignment is (i) carried from the target for unary inverses and (ii) aggregated from parameters via IFT sensitivities for implicit maps. Newton updates modify only m; a is preserved. Under collapse, every construction is classical.


Navigation
Previous → Multivariate lifts & aggregators (2.44)
Next → Inequalities through functions (2.46)


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.