What this page covers
Additive and multiplicative identities for the symbolic numeral, negation, the multiplicative inverse with strict/meadow/soft policies on magnitudes, collapse-safe identity laws, and the canonical zero-class display for m == 0. Alignment is always bounded and never changes classical magnitudes.
Identities
# additive identity
id_add = (0, +1)
# multiplicative identity
id_mul = (1, +1)
Negation (additive inverse)
Flips magnitude; preserves alignment.
s_neg( (m, a) ) = ( -m, a )
Multiplicative inverse (alignment via rapidity; magnitude by policy)
Utilities:
clamp_a(a, eps_a) = sign(a) * min( abs(a), 1 - eps_a )
u(a) = atanh( clamp_a(a, eps_a) )
Definition:
s_inv_mul( (m, a) ) = ( inv_m(m) , tanh( -u(a) ) )
Magnitude path inv_m(m) by division policy:
# strict (default): domain m != 0
inv_m(m) = 1/m
# meadow (totalized)
inv_m(m) = 0 if m == 0
= 1/m otherwise
# soft (guarded)
inv_m(m) = 1 / ( sign_star(m) * max( abs(m) , denom_soft_min ) )
sign_star(0) = +1
Identity laws (collapse-safe)
s_add( x , id_add ) = x
s_mul( x , id_mul ) = x
s_div( x , id_mul ) = x
# additive inverse (display zero-class)
s_add( x , s_neg(x) ) -> magnitude 0 # display (0, +1)
Right-inverse on magnitudes:
# holds in strict or soft; and in meadow when m_x != 0
s_mul( x , s_inv_mul(x) ) -> id_mul on magnitudes
Meadow zero case:
# if meadow policy and m_x == 0:
s_mul( x , s_inv_mul(x) ) -> magnitude 0 # recommend display (0, +1)
Zero-class display (canonicalization)
Display (0, +1) whenever the output magnitude is zero; this is presentation-only and does not change internal alignment calculations.
if m_out == 0: display (0, +1)
Notes and guards
# bounds (enforced via clamp + tanh)
|a| <= 1 - eps_a
# collapse parity
phi( id_add ) = 0
phi( id_mul ) = 1
# phi respects all identity laws by construction
# division guard
if division_policy == "strict": require m != 0 before s_inv_mul or any denominator
if division_policy in {"meadow","soft"}: magnitude path is totalized/guarded; alignment uses tanh(-u(a))
Gate interaction (optional; alignment-only, post-op)
a_env = clamp_a( g_t * a_op , eps_a )
phi( (m_op, a_env) ) = m_op
# for m_out == 0 the final display remains (0, +1)
Navigation
Previous: Canonical Object and Collapse (1, 1.1, 1.2)
Next: Pooling Weights (1.4)