Why this page. Two building blocks that keep alignment math honest and auditable:
(1) how to combine alignments for covalent vs ionic structure (M2 vs M1), and
(2) how to apply small, transparent rapidity priors without touching the energetic contrast.
M1/M2 consistency (ionic vs covalent)
Quick rules (intuition first).
- Covalent substructures → M2 (rapidity-additive). Combine local alignments by adding rapidities and mapping back with
tanh. - Ionic pairs → M1 (alignment product). Multiply alignments directly, then clamp to keep bounds.
How to apply (hierarchy & hybrids).
- Partition each molecule/complex into covalent substructures and ionic interactions.
- Combine within covalent parts using M2.
- Combine ionic interactions (e.g., A^+ … B^–) using M1.
- If multiple substructures/pairs exist in a step, pool in rapidity space with positive weights.
Guards (bounded by construction).
- Clamp every input/output to keep
|a| <= 1 - eps_a. - M2 is commutative/associative via rapidity addition; M1 via multiplication.
- Use
eps_w > 0when pooling to avoid divide-by-zero.
Policy note (precipitation/solvation).
Stabilization of a non-aqueous phase (e.g., precipitate) should be a bounded rapidity prior on that phase, not on the aqueous ion pair. Publish name, value, and rationale.
Manifest note.
Publish which bonds/interactions use M2 vs M1, values for eps_a and eps_w, and any priors applied to phases/substructures.
Priors in rapidity (transparent, bounded)
What a prior is.
A small, named shift delta_u in rapidity applied to a specific term (species, phase, or step) before pooling. Direction is chosen by where you apply it (e.g., to a product term to favor that branch). Never modify the energetic contrast e.
Examples (named indices).
- LPI (lattice/precipitation) – favors low-solubility solids.
- CPI (catalyst/site-match) – favors catalyst-matched pathways.
- SPI (solid polymorph) – favors a targeted crystalline form.
Normalize each Index to [0,1] from auditable measurements/rules; keep alpha small.
Properties (why this is safe).
- Boundedness preserved: atanh → +delta_u → tanh, with reclamp.
- Idempotent: Index = 0 leaves the baseline unchanged.
- Local & transparent: every prior is named, scoped, and published.
- Orthogonal: priors tweak selected terms; the calm gate
g_tscales the whole reaction. - Cumulative cap (recommended): enforce
|Σ alpha_k * Index_k| <= alpha_maxper term.
Policy (publish).
Name each prior, state scope (which term/phase), alpha, Index recipe ([0,1]), alpha_max, and show with/without results to illustrate effect and sign stability.
Plain ASCII formulas & snippets (copy-ready)
# 4.7 M1/M2 CONSISTENCY
# Covalent substructures (M2, rapidity-additive)
a_prime = tanh( atanh(a1) + atanh(a2) )
# extend to n terms by summing rapidities before outer tanh
# Ionic pairs (M1, alignment-product)
a_prime = a1 * a2
# Pooling multiple substructures/pairs in a step (weights w_k > 0)
U_total = sum_k( w_k * atanh(a_k) )
W_total = sum_k( w_k )
a_step = tanh( U_total / max(W_total, eps_w) )
# Guards
# - Clamp every a: |a| <= 1 - eps_a (eps_a > 0)
# - M2: commutative/associative via rapidity addition
# - M1: commutative/associative via multiplication
# - Use eps_w > 0 for pooling safety
# 4.8 PRIORS IN RAPIDITY (transparent, bounded)
# Single prior (Index in [0,1], alpha > 0 small)
delta_u = alpha * Index
u_term = atanh( clamp_a(a_term, eps_a) )
a_term = clamp_a( tanh( u_term + delta_u ), eps_a )
# Multiple priors with cumulative cap alpha_max
# priors_list = [ (alpha_k, Index_k), ... ], enforce |sum alpha_k*Index_k| <= alpha_max
apply_priors(a_term, priors_list, eps_a=1e-6, alpha_max=0.5):
a = clamp_a(a_term, eps_a)
u0 = atanh(a)
du = 0.0
for (alpha, Index) in priors_list:
du = du + alpha * max(0, min(1, Index))
if abs(du) > alpha_max:
du = (1 if du >= 0 else -1) * alpha_max
return clamp_a( tanh(u0 + du), eps_a )
Navigation
Previous – Data Modes & Multi-Step Policy (4.5–4.6)
Next – Temperature & Environment + Constraints (4.9–4.10)