monero_memes
Monero Memes Saki 11 months ago 94%

ℍappy ℍamilton Day! (Sorry, a nerdy math joke)

ℍappy ℍamilton Day! (Sorry, a nerdy math joke)

Hamilton was an Irish mathematician, who discovered quaternions on the 16th of October, 1843. When he discovered them, he was so happy that he carved his fundamental equations i² = j² = k² = ijk = −1 into the stone of a bridge (apparently he was walking near it).

“That is to say, I then and there felt the galvanic circuit of thought close; and the sparks which fell from it were the fundamental equations between i, j, k; exactly such as I have used them ever since.”

If you think this is not fun, please, just ignore it. While I’ll write this like talking to a 14-year-old teen, the following is nerdy (mathematical) and lengthy 😅

Today a hundred and four score years ago, Hamilton discovered “quaternions”. To commemorate this, allow me to use (Monero-flavored) quaternions to prove Euler’s identity: If N is a sum of four squares and n is a sum of four squares too, then Nn is also a sum of four squares.

Example: 8 = 2² + 2² + 0² + 0² and 127 = 9² + 6² + 3² + 1² are sums of four squares. So 8*127 = 1016 must be somehow a sum of four squares too.

Proof: Given N = A² + B² + C² + D² and n = a² + b² + c² + d² with some intergers A, B, C, D, a, b, c, d, we need to show Nn = E² + F² + G² + H² with some integers E, F, G, H. Since we’re Monero fans, let us use X, M, R instead of Hamilton’s i, j, k. Things work in a “cyclic“ way like this:

X² = M² = R² = −1 ... Eq.(1)

XM = R, but MX = −R ... Eq.(2)

MR = X, but RM = −X ... Eq.(3)

RX = M, but XR = −M ... Eq.(4)

If we define XMR = −1 imitating Hamilton’s ijk = −1, (2)(3)(4) follow. X, M, R are a bit unusual: the order of multiplication matters (e.g. XM and MX are different). On the other hand, regular numbers (say: e, f, g, h) can “move” freely, as in hXM = XhM = XMh. A quaternion is a “number” of the form e + fX + gM + hR.

Assume we have two quaternions, Q = A + BX + CM + DR and q = a + bX + cM + dR. Multiply Q by q, and things become a bit messy:

Qq = (A + BX + CM + DR)(a + bX + cM + dR)

= Aa + Ab(X) + Ac(M) + Ad(R)

 + Ba(X) + Bb(X²) + Bc(XM) + Bd(XR)

 + Ca(M) + Cb(MX) + Cc(M²) + Cd(MR)

 + Da(R) + Db(RX) + Dc(RM) + Dd(R²)

= Aa + Ab(X) + Ac(M) + Ad(R)

 + Ba(X) + Bb(−1) + Bc(R) + Bd(−M) ← using (1)(2)(4)

 + Ca(M) + Cb(−R) + Cc(−1) + Cd(X) ← using (2)(1)(3)

 + Da(R) + Db(M) + Dc(−X) + Dd(−1) ← using (4)(3)(1)

= (Aa − Bb − Cc − Dd)

 + (Ab + Ba + Cd − Dc)X

 + (Ac − Bd + Ca + Db)M

 + (Ad + Bc − Cb + Da)R

If we write

E = Aa − Bb − Cc − Dd,

F = Ab + Ba + Cd − Dc,

G = Ac − Bd + Ca + Db,

H = Ad + Bc − Cb + Da,

then above mess becomes tidy:

Qq = E + FX + GM + HR ... Eq.(5)

Now, consider a function swap() that converts a given quaternion u = e + fX + gM + hR into a quaternion e − fX − gM − hR. By messy calculation like above, you can show: swap(Q) * swap(q) = E − FX − GM − HR which is = swap(Qq) according (5). Generally, for any two quaternions u, v:

swap(uv) = swap(v) * swap(u) ... Eq.(6)

We define the hash of u = e + fX + gM + hR as hash(u) = e² + f² + g² + h². Since e, f, g, h are regular numbers, a hash is a regular number. Just like above, do some math and you get:

hash(u) = u * swap(u) ... Eq.(7)

Using (7) with u = Qq,

hash(Qq) = (Qq) * swap(Qq) = Q * q * (swap(q) * swap(Q)) ← using (6) with u=Q, v=q

= Q * (q * swap(q)) * swap(Q) = Q * hash(q) * swap(Q) ← using (7)

= Q * swap(Q) * hash(q) ← hash is a regular number; can “move” freely

Again using (7), we conclude hash(Qq) = hash(Q) * hash(q) ... Eq.(8)

Recall the definition of “hash”. Given Q = A + BX + CM + DR and q = a + bX + cM + dR,

hash(Q) * hash(q) = (A² + B² + C² + D²)(a² + b² + c² + d²) ... Eq.(9)

We know Qq = E + FX + GM + HR as in (5), so

hash(Qq) = E² + F² + G² + H² ... Eq.(10)

(8) says (9) = (10), meaning

(A² + B² + C² + D²)(a² + b² + c² + d²) = E² + F² + G² + H² as required.

Example (cont.): With 8 = 2² + 2² + 0² + 0² and 127 = 9² + 6² + 3² + 1²,

E = Aa − Bb − Cc − Dd = 2×9 − 2×6 − 0×3 − 0×1 = 6

F = Ab + Ba + Cd − Dc = 2×6 + 2×9 + 0×1 − 0×3 = 30

G = Ac − Bd + Ca + Db = 2×3 − 2×1 + 0×9 + 0×6 = 4

H = Ad + Bc − Cb + Da = 2×1 + 2×3 − 0×6 + 0×9 = 8

Sure enough, 6² + 30² + 4² + 8² = 1016 = 8*127 😃

Notes: We implicitly assumed that multiplication of quaternions is associative. This assumption is correct as you can see (ij)k = (k)k = −1 and i(jk) = i(i) = −1 are identical, etc. Euler originally used −B, −C, −D, instead of our B, C, D. Both versions are essentially the same.

Monero-themed names ~ Standard names:

X, M, R ~ i, j, k

swap ~ conjugate

hash ~ norm (or norm squared, depending on how you define it)

15
5
Comments 5