Shunyaya Symbolic Mathematical Symbols – Operator Canon and Combine Policies (0.2)

Operator canon (portable verbs over SSM numerals)
Let a symbolic numeral be:

x = (m, a)           # magnitude m in R, alignment a in (-1, +1)
phi(m, a) = m        # collapse back to classical value

SSMS supplies collapse-safe operators that act on (m, a) and preserve classical results under phi:

s_add, s_sub, s_mul, s_div, s_pow
s_gt, s_eq           # banded comparisons (details in 0.3)
min, max, abs, round # helpers

Clamp and rapidity path (keep alignment bounded)

sign(z) =  1 if z >= 0 else -1
clamp_a(a, eps_a):
  if abs(a) >= 1 - eps_a: return sign(a) * (1 - eps_a)
  else: return a

u(a) = atanh( clamp_a(a, eps_a) )  # encode to rapidity
a_of(u) = tanh(u)                   # decode back to alignment

Streaming-safe sum (example for two terms; generalizes to N terms)
Weights favor larger magnitudes but keep alignment bounded via rapidity.

# inputs
x1 = (m1, a1)
x2 = (m2, a2)
gamma >= 0
eps_w > 0

# magnitude channel
m_sum = m1 + m2

# alignment channel via rapidity-average
w1 = abs(m1)^gamma
w2 = abs(m2)^gamma
u1 = u(a1)
u2 = u(a2)
u_sum = (w1*u1 + w2*u2) / max(w1 + w2, eps_w)
a_sum = a_of(u_sum)

# output
s_add(x1, x2) = (m_sum, a_sum)
s_sub(x1, x2) = s_add(x1, (m2 * -1, a2))  # classical subtraction in m; same rapidity recipe

Notes:

  • gamma = 1 is a good default.
  • Accumulators (U, W) make sums associative in streaming and batch.

Products and divisions (bounded alignment combine)
Classical magnitude follows usual arithmetic; the alignment channel uses one of two portable laws.

Combine policies:

M1 (simple):        a' = a1 * a2

M2 (rapidity):      u' = u(a1) + u(a2)
                     a' = a_of(u')

Multiplication:

m_mul = m1 * m2
a_mul = M2(a1, a2)   # default
s_mul(x1, x2) = (m_mul, a_mul)

Division (policy around the multiplicative inverse of the magnitude):

# choose one policy for inv_m(m)
# "strict" : forbid 1/0 (error or NaN by policy)
# "meadow" : totalize with 1/0 = 0 (algebraic meadow)
# "soft"   : guard small |m| with a floor before inversion

m_div = m1 / inv_m(m2)            # per chosen policy
a_div = M2(a1, a2_with_sign)      # combine via M2; sign handling follows classical parity
s_div(x1, x2) = (m_div, a_div)

Notes:

  • M2 is associative in rapidity space and keeps |a'| < 1.
  • M1 is simpler and fast; M2 is the safer default for long chains.
  • Division never alters the classical result under phi; the policy only determines how you handle zero or near-zero magnitudes.

Integer powers (k in Z)

m_pow = m^k
a_pow = a_of( k * u(a) )          # a_pow = tanh( k * atanh(a) )
s_pow( (m, a), k ) = (m_pow, a_pow)

Optional environment gate (alignment-only)

a_env = g_t * a_op        # g_t in [0, 1]
# magnitudes remain unchanged; gate applies to the final alignment channel only

Minimal defaults (declare once)

gamma    = 1
eps_a    = 1e-6
eps_w    = 1e-12

Algebraic consistency (collapse safety)

  • For every SSMS operator op, phi( op( (m1,a1), (m2,a2) ) ) = op_classical(m1, m2).
  • Bounds hold by construction: |a| < 1 with clamp_a.

Navigation
Previous: Abstract and Overview (0.1)
Next: Continuity and Micro Examples with Banded Comparisons (0.3)