Below is a from-first-principles sketch of what changes if we treat tokens and features as elements of a normed division algebra, starting with quaternions
-
Elements and norm. A quaternion
$q=a+bi+cj+dk$ has conjugate$\bar q=a-bi-cj-dk$ and norm$|q|=\sqrt{q\bar q}=\sqrt{a^2+b^2+c^2+d^2}$ . Crucial identity:$|pq|=|p||q|$ (norm multiplicative). -
Unit elements as pure “phases/rotors.” Any nonzero
$q$ factors uniquely as$q=|q|,u$ , with$u$ unit ($|u|=1$ ). The unit sphere$S^3={u:|u|=1}$ acts by rotation on pure imaginary elements via the sandwich$v\mapsto u v u^{-1}$ . Think of$|q|$ as scale,$u$ as orientation/phase. -
Non-commutativity encodes order. In general
$pq\neq qp$ . Left and right actions differ:$p,x$ and$x,p$ are distinct transformations of$x$ .
-
Per-channel quaternion. Replace a real feature channel with a quaternion
$x\in\mathbb H$ . A token is$x_1,\dots,x_d$ with each$x_\ell = r_\ell u_\ell$ (scale$r_\ell\ge0$ , phase$u_\ell\in S^3$ ). -
Geometric mixing, not componentwise. Linear maps become left/right quaternion multiplications:
$x\mapsto a,x,b$ .- If
$|a|=|b|=1$ , this preserves the feature norm:$|a x b|=|x|$ . It rotates the imaginary subcomponents in a way that depends on both$a$ and$b$ . - Real scalars are the center of
$\mathbb H$ ; multiplying by a real$s$ scales without changing phase. Thus$(s u)$ separates scale and orientation cleanly.
- If
Define a position element
-
Compositionality for free.
$p(t+s)=p(t)p(s)$ by group structure. No tables, no ad-hoc interpolation; adding offsets composes rotations. -
Stability. If
$p(t)$ is unit, positions never change norms. Long sequences don’t drift in magnitude.
Let queries, keys, values be quaternionic:
-
Relative orientation. The relative phase between
$q$ and$k$ is captured by$r=q,\bar k$ .- If
$q$ and$k$ are unit in each channel, then$r$ is unit and encodes the rotation that takes$k$ ’s orientation toward$q$ ’s. - A scalar similarity is the real part:
$\operatorname{Re}(q\bar k)$ (the cosine in$\mathbb R^4$ ), while the imaginary part tells you how to rotate to align.
- If
-
Phase-preserving scores. Compute attention logits from a scalar invariant (e.g., channelwise sum of $\operatorname{Re}(q\bar k)$), but use the unit part of
$r$ to transform values:$$ \text{att}(q,k,v):\quad v' = u_{qk},v,u_{qk}^{-1},\quad u_{qk}=\frac{q\bar k}{|q||k|}. $$
This is “attend-then-rotate”: weights decide how much, rotors decide how. Both are derived from the same algebraic relation.
-
Norm control without tricks. With unit
$u_{qk}$ ,$|v'|=|v|$ . Magnitude changes (if desired) can be applied by a separate real gate, so phase and scale are disentangled by construction.
-
Scale gate: multiply by
$s\in\mathbb R_{\ge0}\subset\mathbb H$ . Pure scaling, phase untouched. -
Phase gate: multiply by
$u\in S^3$ . Pure rotation, norm untouched. -
General gate:
$g = s,u$ (commuting factors), apply as$x\mapsto g x$ or$x\mapsto g x g^{-1}$ depending on whether you want shared or conjugation-style orientation control. This replaces ad-hoc norm/phase normalizations with algebraic invariants:$|g x|=s|x|$ , orientation transformed exactly once.
-
Heads as planes/axes. Each head chooses a distinct imaginary direction (or 2-plane) via its learned unit quaternions
$(a_h,b_h)$ . Head$h$ transforms$x$ by$x\mapsto a_h x b_h$ . Non-commutativity ensures heads are not redundant:$a_1 x b_1$ cannot be reproduced by permuting components of$a_2 x b_2$ unless their rotors align. -
Inter-head superposition is stable. If all
$a_h,b_h$ are unit, each head is norm-preserving; summing head outputs followed by a controlled scalar gate manages overall magnitude cleanly.
Replace
with
-
Parameterization for stability. Store unconstrained 3-vectors
$\omega$ and map to unit quaternions via$u=\exp(\hat n,\theta)$ where$\hat n=\omega/|\omega|$ ,$\theta=|\omega|$ . Small updates add in the Lie algebra (pure imaginary part), then re-exponentiate. This yields geodesic updates on$S^3$ , preventing drift from unit norm. -
Two sides, two roles. Learn left
$a$ for “context” and right$b$ for “content” transformations. Because$ab\neq ba$ , the model can represent asymmetric dependencies naturally (e.g., prefix vs suffix influence).
-
Word/order sensitivity.
$a(bx)\neq (ab)x$ . Composition order becomes a learned bias, not a post-hoc positional correction. -
Key–query relativity. Using
$q\bar k$ (not$\bar k q$ ) distinguishes “rotate key to query” vs “rotate query to key,” yielding two distinct relational features without duplicating parameters. - Directional relations. Left multiplication can encode “incoming influence,” right multiplication “outgoing influence.” Their mismatch captures causality or syntactic directionality.
- Head diversity. Heads that differ only by commuting scalars would collapse in a commutative algebra; here, misaligned rotors generate genuinely different features.
- Aliasing suppression. Products entangle components via a fixed bilinear rule (Hamilton product), lessening trivial componentwise cancellations that plague real-component mixing.
- Norms and real parts are invariant to global unit left/right factors under conjugation, enabling phase-invariant readouts when desired.
- Conversely, imaginary direction carries orientation; selecting the scalar vs imaginary components at readout gives a clean switch between invariant and equivariant outputs.
- A left/right quaternion multiply corresponds to a structured
$4\times4$ real linear map with tied weights (fewer free parameters than a dense$4\times4$ ). Stacks of such maps maintain norm (when unit) and reduce the need for explicit normalization layers. - Attention’s “rotate-then-aggregate” avoids expensive arbitrary projections; many steps can be norm-preserving, with isolated scalar gates managing amplitude.
Only bring in
-
Embed tokens as quaternion channels
$x_\ell=r_\ell u_\ell$ . -
Position via unit
$p(t)$ ; apply$x\leftarrow p(t),x$ (or conjugation) per layer; composition is automatic. -
Attention:
- scores:
$s_{ij} = \sum_\ell \alpha_\ell,\operatorname{Re}(q_{i\ell},\overline{k_{j\ell}})$ with temperature on the scalar sum; - transform:
$v_{j}\leftarrow u_{ij},v_j,u_{ij}^{-1}$ ,$u_{ij}=\frac{q_i\bar k_j}{|q_i||k_j|}$ ; - aggregate:
$y_i=\sum_j w_{ij},v_j$ with$w_{ij}=\mathrm{softmax}(s_{ij})$ .
- scores:
-
Per-head transforms:
$y_i\leftarrow a_h,y_i,b_h$ with$|a_h|=|b_h|=1$ ; concatenate heads; apply a real scale gate. -
Feedforward:
$x\mapsto s_2,u_2,\phi(s_1,u_1 x v_1),v_2$ with unit $u_,v_$. -
Norm control: keep unit factors on
$S^3$ via exponential parameterization; all magnitude changes go through explicit real scalars.
- Positional encoding is a group action, not a lookup.
- Multi-head diversity arises from non-commuting left/right rotors, not arbitrary per-head projections.
- Stability follows from norm-multiplicativity and unit constraints; you don’t need separate normalization to prevent drift.
- Attention and gating are the same operation family: scale and rotate with controlled invariants.
- Better long-range stability: phases don’t drift; magnitudes are explicitly gated.
- Sharper relational modeling: directionality and order emerge from left/right asymmetry.
-
Parameter efficiency: structured
$4\times4$ real maps from quaternion products replace many dense matrices. - Clean invariance knobs: choose real/imag parts or norms at readout to toggle invariance vs equivariance without retraining the whole stack.
- Octonion heads (optional): a few carefully parenthesized ternary heads capture hierarchical bindings that are clumsy in associative settings.
Non-commutativity is a boon wherever “the order of telling matters”: syntax, causality, temporal precedence, and oriented relations (graphs, 3D/ego-motion, rotations in robotics). Use it to let the algebra carry positional, directional, and phase structure natively, and reserve scalar hacks for the few places you genuinely want to change the energy of the signal.
Below is a single, canonical “rotor-gate” layer that composes unit-norm elements to do coupled mixing and strict normalization in one shot. It enforces exact norm invariance when the amplitude gate is 1 and gives phase control via geodesic (angle-scaled) rotors. Then you get numerically stable update rules, a hardware-friendly 2×2-block decomposition, and a minimal experiment that demonstrates long-range coherence with ~½ the parameters of a dense 4×4 real map. A fast test harness catches associativity slips immediately.
State per channel
Exponential map:
Layer on quaternion feature
-
Strict invariants: if
$s=1$ then$|y|=|x|$ exactly; phase is rotated by$(u,\ v)$ geodesically because$\lambda$ scales the Lie angle, not a linear blend. -
Controlled phase:
$\lambda$ modulates rotation length continuously on$S^3$ (slerp via $ \exp(\lambda,\log u)\equiv \exp(\lambda,\omega)$). -
No ad-hoc normalization: unit factors are enforced by construction; magnitude is only changed by a single explicit scalar
$s$ .
Update rules (per channel)
Let
-
Tangent projection (Riemannian gradient):
$g=G-(u^\top G)u$ . -
Geodesic step (multiplicative): write
$g$ as a pure-imag quaternion$(0,\gamma)$ ; update$u^+!=\exp(-\tfrac{\eta}{2}\gamma),u$ . -
Angle-axis parameterization (stable): store
$\omega\in\mathbb R^3$ and set$u=\exp(\omega)$ . Backprop occurs through the safe exp map; numerically stable for small$|\omega|$ via series for$\sin\theta/\theta$ . -
Gates: store raw
$a_L,a_R\in\mathbb R$ , use$\lambda=\sigma(a)$ or$\lambda=\tfrac12(1+\tanh a)$ . -
Amplitude:
$s=\exp(\tau)$ with small weight decay on$\tau$ . These rules keep parameters unconstrained while the forward map remains exactly unitary (orthogonal in$\mathbb R^4$ per channel).
Where non-commutativity helps: left/right rotors encode oriented relations and order without hacks; all while keeping stability because products of unit quaternions are unit.
For left multiplication by
This is two 2×2 real blocks; each block is a single complex multiply micro-kernel, amenable to vectorization/FMA. Right multiplication has an analogous 2×2-block structure with a sign-permuted
import jax, jax.numpy as jnp
from jax import random, jit, grad, vmap
def qmul(a,b):
aw,ax,ay,az=a[...,0],a[...,1],a[...,2],a[...,3]
bw,bx,by,bz=b[...,0],b[...,1],b[...,2],b[...,3]
return jnp.stack([aw*bw-ax*bx-ay*by-az*bz,
aw*bx+ax*bw+ay*bz-az*by,
aw*by-ax*bz+ay*bw+az*bx,
aw*bz+ax*by-ay*bx+az*bw],-1)
def qconj(q): return jnp.concatenate([q[...,:1],-q[...,1:]],-1)
def qnorm(q): return jnp.linalg.norm(q,axis=-1)
def qnormalize(q,eps=1e-12): n=qnorm(q)[...,None]; return q/(n+eps)
def expmap(omega):
theta=jnp.linalg.norm(omega,axis=-1,keepdims=True)
small=theta<1e-6
st=jnp.where(small,1-theta**2/6+theta**4/120,jnp.sin(theta)/theta)
ct=jnp.where(small,1-theta**2/2+theta**4/24,jnp.cos(theta))
v=omega*st
return jnp.concatenate([ct,v],-1)
def rotor_from_raw(raw):
return expmap(raw)
def slerp_id_to(u,lam):
# u=exp(omega), slerp(1,u,lam)=exp(lam*omega)
w=u[...,1:]; ct=u[..., :1]; theta=jnp.arctan2(jnp.linalg.norm(w,axis=-1,keepdims=True),ct)
n=jnp.where(theta<1e-9,jnp.zeros_like(w),w/(jnp.linalg.norm(w,axis=-1,keepdims=True)+1e-12))
return jnp.concatenate([jnp.cos(lam[...,None]*theta), jnp.sin(lam[...,None]*theta)*n],-1)
def left_mat_4x4(q):
a,b,c,d=q[...,0],q[...,1],q[...,2],q[...,3]
return jnp.stack([jnp.stack([a,-b,-c,-d],-1),
jnp.stack([b, a,-d, c],-1),
jnp.stack([c, d, a,-b],-1),
jnp.stack([d,-c, b, a],-1)],-2)
def right_mat_4x4(q):
a,b,c,d=q[...,0],q[...,1],q[...,2],q[...,3]
return jnp.stack([jnp.stack([a,-b,-c,-d],-1),
jnp.stack([b, a, d,-c],-1),
jnp.stack([c,-d, a, b],-1),
jnp.stack([d, c,-b, a],-1)],-2)
def left_2x2_blocks(q,x):
a,b,c,d=q[...,0],q[...,1],q[...,2],q[...,3]
w,x1,y,z=x[...,0],x[...,1],x[...,2],x[...,3]
A00,A01,A10,A11=a,-b,b,a
B00,B01,B10,B11=c,d,d,-c
t0=A00*w+A01*x1; t1=A10*w+A11*x1; t2=B00*y+B01*z; t3=B10*y+B11*z
o0=t0-t2; o1=t1-t3
s0=B00*w+B01*x1; s1=B10*w+B11*x1; u0=A00*y+A01*z; u1=A10*y+A11*z
o2=s0+u0; o3=s1+u1
return jnp.stack([o0,o1,o2,o3],-1)
def right_2x2_blocks(x,q):
a,b,c,d=q[...,0],q[...,1],q[...,2],q[...,3]
w,x1,y,z=x[...,0],x[...,1],x[...,2],x[...,3]
A00,A01,A10,A11=a,-b,b,a
# derived to match right_mat_4x4 sign pattern
B00,B01,B10,B11=c,-d,d,c
t0=A00*w+A01*x1; t1=A10*w+A11*x1; t2=B00*y+B01*z; t3=B10*y+B11*z
o0=t0-t2; o1=t1+t3*(-1)
s0=B00*w+B01*x1; s1=B10*w+B11*x1; u0=A00*y+A01*z; u1=A10*y+A11*z
o2=-s1+u0; o3=s0+u1
return jnp.stack([o0,o1,o2,o3],-1)
def apply_left(q,x,mode="2x2"):
return left_2x2_blocks(q,x) if mode=="2x2" else (left_mat_4x4(q)@x[...,None])[...,0]
def apply_right(x,q,mode="2x2"):
return right_2x2_blocks(x,q) if mode=="2x2" else (right_mat_4x4(q)@x[...,None])[...,0]
class RotorGate:
def __init__(self,key,d,init_scale=0.0):
k1,k2,k3,k4,k5=random.split(key,5)
self.wL=0.01*random.normal(k1,(d,3))
self.wR=0.01*random.normal(k2,(d,3))
self.aL=jnp.zeros((d,))
self.aR=jnp.zeros((d,))
self.tau=jnp.full((d,),init_scale)
def params(self): return (self.wL,self.wR,self.aL,self.aR,self.tau)
def set_params(self,ps): self.wL,self.wR,self.aL,self.aR,self.tau=ps
def __call__(self,x):
lamL=jax.nn.sigmoid(self.aL); lamR=jax.nn.sigmoid(self.aR)
u=slerp_id_to(expmap(self.wL),lamL)
v=slerp_id_to(expmap(self.wR),lamR)
y=vmap(apply_left,in_axes=(0,0,None))(u,x,"2x2")
y=vmap(apply_right,in_axes=(0,0,None))(y,v,"2x2")
s=jnp.exp(self.tau)[...,None]
return s*y
def param_count_rotorgate(d): return d*(3+3+1+1+1)
def param_count_dense(d): return d*16
def loss_map_rg(ps,layer,x,xt):
layer.set_params(ps)
y=layer(x)
return jnp.mean((y-xt)**2)
def loss_map_dense(W,x,xt):
y=(W@x[...,None])[...,0]
return jnp.mean((y-xt)**2)
@jit
def step_rg(ps,layer,x,xt,lr=1e-2):
l,gr=jax.value_and_grad(lambda p:loss_map_rg(p,layer,x,xt))(ps)
newp=tuple(p-lr*g for p,g in zip(ps,gr))
return newp,l
@jit
def step_dense(W,x,xt,lr=1e-2):
l,g=jax.value_and_grad(lambda w:loss_map_dense(w,x,xt))(W)
return W-lr*g,l
def compose_rg(layer,x,n):
y=x
for _ in range(n): y=layer(y)
return y
def compose_dense(W,x,n):
y=x
for _ in range(n): y=(W@y[...,None])[...,0]
return y
def angle_error(a,b,eps=1e-12):
aa=qnormalize(a); bb=qnormalize(b)
dot=(aa*bb).sum(-1).clip(-1+1e-6,1-1e-6)
return jnp.arccos(jnp.abs(dot))
def build_target(key,d):
k1,k2=random.split(key)
wL=0.3*random.normal(k1,(d,3))
wR=0.3*random.normal(k2,(d,3))
u=expmap(wL); v=expmap(wR)
return u,v
def apply_target(u,v,x):
y=vmap(apply_left,in_axes=(0,0,None))(u,x,"2x2")
y=vmap(apply_right,in_axes=(0,0,None))(y,v,"2x2")
return y
def experiment(seed=0,d=8,batch=1024,steps=600,n_compose=512):
key=random.PRNGKey(seed)
u_tgt,v_tgt=build_target(key,d)
kx=random.split(key,1)[0]
x=0.5*random.normal(kx,(batch,d,4))
xt=apply_target(u_tgt,v_tgt,x)
layer=RotorGate(random.PRNGKey(seed+1),d,init_scale=0.0)
ps=layer.params()
W=jnp.tile(jnp.eye(4),(d,1,1))
for t in range(steps):
ps,lr=step_rg(ps,layer,x,xt,1e-1)
W,ld=step_dense(W,x,xt,1e-1)
layer.set_params(ps)
y_rg=compose_rg(layer,x[0],n_compose)
y_dn=compose_dense(W,x[0],n_compose)
y_true=apply_target(expmap(layer.wL*n_compose*0+layer.wL*0+layer.wL*0+layer.wL),expmap(layer.wR*0+layer.wR*0+layer.wR*0+layer.wR),x[0]) # placeholder removed by true composition below
# true composition uses the fitted rotors raised n times: exp(n*ω)
u_fit=expmap(layer.wL); v_fit=expmap(layer.wR)
u_true=slerp_id_to(u_fit,jnp.ones((d,))*n_compose)
v_true=slerp_id_to(v_fit,jnp.ones((d,))*n_compose)
y_true=apply_target(u_true,v_true,x[0])
err_rg=jnp.mean(angle_error(y_rg,y_true))
err_dn=jnp.mean(angle_error(y_dn,y_true))
drift_dn=jnp.mean(jnp.abs(qnorm(y_dn)-qnorm(x[0])))
drift_rg=jnp.mean(jnp.abs(qnorm(y_rg)-qnorm(x[0])))
prg=param_count_rotorgate(d); pdc=param_count_dense(d)
return {"angle_err_rotorgate":float(err_rg),
"angle_err_dense":float(err_dn),
"norm_drift_rotorgate":float(drift_rg),
"norm_drift_dense":float(drift_dn),
"params_rotorgate":int(prg),
"params_dense":int(pdc)}
def test_invariants(key=0):
k=random.PRNGKey(key)
x=random.normal(k,(32,4))
x=x/jnp.linalg.norm(x,axis=-1,keepdims=True)
d=1; layer=RotorGate(random.PRNGKey(1),d,init_scale=0.0)
ps=layer.params(); layer.set_params(ps)
y=layer(x[None,...].swapaxes(0,1))[0]
a=jnp.max(jnp.abs(qnorm(y)-qnorm(x)))
return float(a)
def test_associativity(key=0):
k1,k2,k3,k4=random.split(random.PRNGKey(key),4)
a=qnormalize(random.normal(k1,(1000,4)))
b=qnormalize(random.normal(k2,(1000,4)))
c=qnormalize(random.normal(k3,(1000,4)))
x=random.normal(k4,(1000,4))
lhs=qmul(a,qmul(b,x)); rhs=qmul(qmul(a,b),x)
return float(jnp.max(jnp.abs(lhs-rhs)))
def test_block_paths(key=0):
k1,k2=random.split(random.PRNGKey(key))
q=qnormalize(random.normal(k1,(1000,4)))
x=random.normal(k2,(1000,4))
l4=(left_mat_4x4(q)@x[...,None])[...,0]
l2=left_2x2_blocks(q,x)
r4=(right_mat_4x4(q)@x[...,None])[...,0]
r2=right_2x2_blocks(x,q)
return float(jnp.max(jnp.abs(l4-l2))), float(jnp.max(jnp.abs(r4-r2)))
if __name__=="__main__":
print("tests:", {"inv":test_invariants(),"assoc":test_associativity(),"blocks":test_block_paths()})
print("experiment:", experiment())-
tests.invshould be ~1e-7–1e-9, confirming exact norm preservation (up to fp error). -
tests.assocshould be ~1e-7–1e-9; if anyone swaps in a non-associative product, this spikes immediately. -
tests.blocksboth entries should be ~1e-7–1e-9, verifying the fused 2×2 paths equal the 4×4 reference. -
The
experimentprints:-
angle_err_rotorgate≪angle_err_denseafter composing the learned map hundreds of times; the rotor-gate’s error stays near fp tolerance because repeated composition is still a unitary map with angle scaled by$n$ . -
norm_drift_rotorgate≈ 0;norm_drift_densegrows with$n$ (spectral radius and conditioning). -
params_rotorgate≈ half ofparams_dense(per channel: 9 vs 16; tie or drop the amplitude to hit 8 vs 16).
-
- Mixing = left/right unit rotors; gating = geodesic progress along those rotors; normalization = a theorem, not a side layer.
- All controls are algebraically separated: magnitude via a single scalar, orientation via unit rotors, extent via
$\lambda$ . - Hardware path is regular (2×2 kernels), minimizing memory traffic and keeping FMAs dense.
- The test harness locks in the manifold-exact properties so regressions are obvious.
Here’s a sober scorecard of the ideas so far—each 0–100 (higher is better). For “Estimated difficulty…”, higher = easier to convincingly establish usefulness.
| Dimension | Score |
|---|---|
| Cleverness | 87 |
| Originality | 72 |
| Differentiation from existing work | 60 |
| Probability of being theoretically correct | 83 |
| Probability of being practically useful (if correct) | 66 |
| Real-world impact (perf/efficiency/interpretability) | 62 |
| Near-term acceptance by AI/ML community | 55 |
| Estimated difficulty to convincingly validate (higher = easier) | 48 |
| Fit to GPU/TPU acceleration | 86 |
| How prepared a 99th-percentile theory researcher is to opine | 78 |
Treating tokens as quaternions and enforcing invariants through unit rotors unifies “positional encoding, mixing, normalization” into algebraic consequences rather than add-on tricks. The rotate-then-aggregate attention and geodesic gating are crisp, low-entropy ideas that directly exploit norm multiplicativity and non-commutativity. The “rotor-gate” that couples mixing with strict normalization is especially elegant.
Using division-algebra structure (left/right unit rotors, geodesic parameterization, phase/scale split) as the backbone for attention and gating is a distinctive synthesis. However, the general territory (non-real features, unitary/orthogonal constraints, geometric actions) has known antecedents; the novelty here is in the specific coupling and “everything is a constrained product” design ethos.
There’s conceptual overlap with complex/quaternion networks, orthogonal/unitary RNNs, and group-action-based models. The differentiator is the end-to-end canonical rotor-gate plus attention-as-relative-rotor (use
The claims rely on solid algebra:
The strict-invariant pathway plausibly yields stable long-range composition and reduces normalization overhead. Clear wins: reduced parameter count per channel, predictable spectra, and directional expressivity from non-commutativity. Risks: expressivity caps if too many paths are norm-preserving; optimization friction from manifold constraints; integration cost into large stacks.
If the long-range stability holds while matching SOTA accuracy, the impact could be real: fewer parameters, less normalization, cleaner inductive bias for orientation/ordering, and potentially better numerical behavior at depth. But the upside hinges on scaling to large models and mixed-precision training without hidden costs.
The bar for architectural adoption is high. Reviewers will ask for apples-to-apples wins vs. strong baselines (orthogonal/unitary kernels, rotary/ALiBi-style positions, state-space models) across multiple tasks and scales. The math is clean, but community uptake typically follows decisive empirical results, which are nontrivial to produce.
Moderately hard. You need: (1) robust kernels, (2) rigorous ablations (turn off scale gate, swap left/right, scalarize phases), (3) stress tests for depth/length (thousands of compositions), and (4) competitive benchmarks (LM perplexity/long-range retrieval/audio). The manifold optimization and custom kernels add dev time and failure modes.
Excellent. Quaternion left/right multiplies map to structured
The algebra (Lie groups on
High-cleverness, medium originality, mathematically solid, and hardware-congruent. The biggest risks are empirical: proving that strict invariants and rotor-based coupling deliver consistent accuracy/efficiency gains over mature alternatives. If that hurdle is cleared, the design could earn real traction—first in stability-sensitive or geometry-aware settings, then more broadly.