Isogenies Do Not Require Continuity

Introduction

One of the most common misunderstandings in elliptic curve cryptography (and even in academic discussions) is that curve points must be continuous for isogeny maps to work. This intuition comes from pictures of elliptic curves over the reals (smooth looping curves) and from the analytic definition of isogenies over the complex numbers, where they are holomorphic maps between tori.

In reality, all modern cryptography (and ECAI’s deterministic encoding) uses elliptic curves over finite fields. In this setting:

  • The curve is not a continuous geometric object.
  • It is simply a finite set of discrete points \((x,y)\) satisfying \(y^2 \equiv x^3 + ax + b \pmod p\).
  • There is no topology and thus no notion of continuity.

What Actually Matters

An isogeny between elliptic curves is not about continuity at all. It is:

  • A non-constant rational map between elliptic curves
  • That also preserves the group law: \[ \varphi(P + Q) = \varphi(P) + \varphi(Q). \]

That is the defining property. Structure preservation, not continuity.

Example: Multiplication-by-m Map

The simplest example of an isogeny is the multiplication-by-\(m\) map: \[ \varphi = [m]: P \mapsto mP. \]

  • This isogeny has degree \(m^2\).
  • It is defined entirely in terms of the elliptic curve group law.
  • It requires no continuity, only algebra.

Python Demo

To illustrate this concretely, here’s a minimal Python demo. It defines a finite-field elliptic curve \(E: y^2 = x^3 + 2x + 3 \pmod{101}\), implements group operations, and verifies that \(\varphi = [3]\) is an isogeny.

from dataclasses import dataclass
import random

p, a, b = 101, 2, 3

@dataclass(frozen=True)
class ECPoint:
    x: int; y: int; infinity: bool=False
O = ECPoint(None,None,True)

def inv_mod(x): return pow(x,p-2,p)

def ec_add(P,Q):
    if P.infinity: return Q
    if Q.infinity: return P
    if P.x == Q.x and (P.y != Q.y or P.y==0): return O
    if P.x == Q.x and P.y == Q.y:
        s=(3*P.x*P.x+a)*inv_mod(2*P.y%p)%p
    else:
        s=((Q.y-P.y)%p)*inv_mod((Q.x-P.x)%p,p)%p
    x_r=(s*s-P.x-Q.x)%p; y_r=(s*(P.x-x_r)-P.y)%p
    return ECPoint(x_r,y_r)

def ec_mul(k,P):
    R,O=O,O;Q=P
    while k>0:
        if k&1: R=ec_add(R,Q)
        Q=ec_add(Q,Q); k>>=1
    return R

points=[]
for x in range(p):
  rhs=(x**3+a*x+b)%p
  for y in range(p):
    if (y*y)%p==rhs: points.append(ECPoint(x,y))

phi=lambda P: ec_mul(3,P)

ok=0
for _ in range(12):
  A,B=random.sample(points,2)
  if phi(ec_add(A,B))==ec_add(phi(A),phi(B)): ok+=1

print("Homomorphism checks passed:", ok, "/12")

Running this prints out confirmation that the multiplication-by-3 map satisfies the homomorphism property across random samples.

Why This Matters for ECAI

For ECAI:

  • Knowledge is encoded deterministically into elliptic curve points.
  • Isogenies provide deterministic retrieval paths between knowledge states.
  • No continuity is required—only rational, algebraic structure.

This eliminates the old probabilistic AI intuition and grounds intelligence in cryptographic truth.

Conclusion

Continuity is irrelevant for isogenies over finite fields. What matters is structure preservation. This distinction clears away a major misconception and aligns perfectly with ECAI’s mission: deterministic, verifiable intelligence.