Shunyaya Symbolic Mathematical Chemistry – Reaction Statement & Contrast Map (2.5, 2.6)

This page pairs the classical reaction skeleton with the alignment assignment that powers directionality. The classical balances remain exactly as in textbook chemistry (via collapse). Alignments are not conserved; they are assigned from a declared energetic lens and later pooled to form preference (RSI). Clamp and guard policies keep every stability coordinate strictly bounded and numerically safe.

Reaction statement (classical skeleton + alignment)

  • Write reactions with a classical magnitude for each term and a bounded stability channel alongside it.
  • Collapse handles balances: element and charge balances hold on the classical channel exactly.
  • Alignment is advisory: assigned from the chosen lens and combine rules; used later for pooling and preference.
  • Separation of roles: collapse governs mass/charge; alignment governs symbolic stability and is later modulated by the environment gate.
  • Safety: all alignments are strictly inside the open interval; the clamp policy prevents numerical spillover to the bounds.

Energetic contrast → alignment (table-free direction)

  • Build a contrast from bonds broken vs. formed (or pick one canonical lens for the study).
  • Map contrast to reactant and product alignments with a single symmetric slope.
  • Monotone & sign-consistent: increasing contrast in favor of products increases product alignment; the sign of the contrast sets the sign pointer used by RSI.
  • One lens per study: thermodynamic, redox, kinetic (observation-only), or the canonical formation lens—declare one, keep it fixed, and publish its scale and guards.

Plain ASCII formulas (copy-ready)

Reaction skeleton and balances

sum_i (m_i, a_i)_reactants -> sum_j (m_j, a_j)_products
phi(m, a) = m
sum_i phi(m_i, a_i) = sum_j phi(m_j, a_j)  # element/charge balance under collapse
|a| <= 1 - eps_a  # clamp policy

Contrast -> alignment (canonical formation lens)

E_broken = sum_over_bonds_broken(B_bond)
E_formed = sum_over_bonds_formed(B_bond)
e = (E_formed - E_broken) / E_unit

a_react = tanh( -c * e )
a_prod  = tanh( +c * e )

# clamp after compute
a_react = clamp_a(a_react, eps_a)
a_prod  = clamp_a(a_prod,  eps_a)

Units & policy (declare once per study)

E_unit > 0         # choose so |e| ~ O(1), e.g., 100 kJ/mol
c > 0              # typical c in [0.3, 1.5]
eps_a > 0          # e.g., 1e-6
# Publish: E_unit, c, eps_a, chosen lens (exactly one per study)

Numeric guards (reused elsewhere; see 2.2 for context)

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

atanh_safe(a, eps_a):
  ac = clamp_a(a, eps_a)
  return 0.5 * log((1 + ac) / (1 - ac))

Properties

# symmetry and zero
a_prod = -a_react
e = 0 -> a_react = 0 and a_prod = 0

# boundedness and monotonicity
|a_react| < 1 , |a_prod| < 1
as e increases: a_prod increases, a_react decreases

# direction pointer
sign(a_prod) = sign(e)  for c > 0

Other valid lenses for e (pick one, keep fixed per study)

Thermodynamic: e = -(DeltaG) / G_unit            # DeltaG < 0 => e > 0
Redox:        e = (n * F * DeltaE) / E_unit      # DeltaE > 0 => e > 0
Kinetic (obs): e = -(Ea / (R * T_unit))          # higher Ea -> more negative e
# Hybrids allowed if "forward-favored => e > 0" is preserved

Pseudocode (reference, ASCII)

input: E_broken, E_formed, E_unit > 0, c > 0, eps_a > 0

# lens selection (declare once; pick exactly one)
e = (E_formed - E_broken) / E_unit           # canonical formation lens
# e = -(DeltaG) / G_unit                     # thermodynamic lens (optional)
# e = (n * F * DeltaE) / E_unit              # redox lens (optional)
# e = -(Ea / (R * T_unit))                   # kinetic lens (optional, obs)

a_react = tanh( -c * e )
a_prod  = tanh( +c * e )

a_react = clamp_a(a_react, eps_a)
a_prod  = clamp_a(a_prod,  eps_a)


Navigation
Previous – Pooling & Bond Combine (2.3, 2.4)
Next – Reaction Stability Index — Definition (2.7)