Shunyaya Symbolic Mathematical Chemistry — Environment Coupling & Structural Constraints (4.9–4.10)

Why this page. Two levers that affect realization without breaking direction or stoichiometry:
(1) qualitative environment coupling via the calm gate and bounded priors, and
(2) classical constraints (charges, radicals, valence) enforced on the skeleton under collapse.


4.9 Temperature and environment (qualitative coupling)

Principle (observation-only). The direction signal still comes from e. Environment affects magnitude/realization via small rapidity priors (local) and the calm gate g_t (global). Never bake environment into e.

Design notes.

  • Do not change e with environment. Keep the lens fixed; encode effects with g_t or bounded priors.
  • Stay bounded. Enforce 0 <= f_T <= 1, 0 <= g_t <= 1, and clamp alignments with the same eps_a.
  • Pick one lane recipe for Z_t / A_t (see §2.8). Temperature can move stress (Z_t) or memory (Q_t)—publish the recipe.

Interpretation.

  • Higher f_T strengthens only the nudged term (prior).
  • Lower Z_t or higher Q_t raises g_t, globally lifting realization toward ground outcomes.
  • In both cases, sign(RSI) remains governed by e; only magnitude/realization changes, and stays bounded.

4.10 Radicals, charges, and constraints

Charge balance (collapse-level).

  • Enforce on the reaction skeleton using phi(m,a)=m.
  • For redox, either include e⁻ explicitly or ensure your redox lens uses an n matching net electrons transferred.

Radicals (policy).

  • Represent each radical as its own species (m,a); direction still comes from e and the symmetric map (§4.2).
  • Program policy chooses whether radicals are allowed and caps unpaired e⁻ counts (per-species and/or route-level).
  • Optional parity check: require an even total of unpaired electrons at end of a step/route.

Valence caps (enumeration).

  • Enforce element-wise valence limits during candidate generation (orthogonal to alignment math).
  • Publish the cap table and any charge-dependent overrides in the manifest.

Notes.

  • These constraints act on the classical skeleton; they do not alter e, a, or RSI computation.
  • Boundedness and direction remain intact: |a| < 1 with clamp; for fixed stoichiometry, sign(RSI) = sign(e).

Plain ASCII formulas & snippets (copy-ready)

# 4.9 TEMPERATURE & ENVIRONMENT (qualitative coupling)

# temperature-scaled prior (bounded factor)
alpha(T) = alpha_0 * f_T              # 0 <= f_T <= 1

# environment-gated preference
RSI_env(T, mixing, light, ...) = g_t(T, mixing, light, ...) * RSI

# Example 1: bounded temperature factor for a prior
f_T    = clip( (T - T_lo) / (T_hi - T_lo), 0, 1 )
delta_u = alpha_0 * f_T * Index        # Index in [0,1]

# Example 2: gate lane lowered by better mixing at higher T
Z_t = clip( Z_base - k_mix * f_T , 0, 1 )
g_t = ( 1 / (1 + Z_t + kappa * |Z_t - A_t|) ) * ( 1 - exp(-mu * Q_t) )   # §2.8

# 4.10 RADICALS, CHARGES, CONSTRAINTS

# formal-charge balance (net ionic if spectators omitted), collapse-level:
sum_over_reactants( m_i * z_i ) = sum_over_products( m_j * z_j )

# policy toggles (examples)
allow_radicals in {false, true}
max_radicals_per_species >= 0
max_total_unpaired_electrons >= 0     # optional route-level cap

# valence caps during enumeration (independent of alignment math)
for each candidate species s:
  for each element E in s:
    require sum_bond_orders(E in s) <= V_cap(E, formal_charge_of_E_in_s)

# minimal constraint checks
check_charge_balance(reaction):
  L = sum_i( m_i * z_i )   # reactants, collapsed
  R = sum_j( m_j * z_j )   # products, collapsed
  assert L == R

check_radicals(species, policy):
  if not policy.allow_radicals:
    assert unpaired_e_count(species) == 0
  assert unpaired_e_count(species) <= policy.max_radicals_per_species

check_valence(species, V_cap):
  for each element E in species:
    assert sum_bond_orders(E) <= V_cap(E, formal_charge(E))


Navigation
Previous – M1/M2 Consistency & Priors (4.7–4.8)
Next – Worked Micro-Example (4.11)