Skip to content

Instantly share code, notes, and snippets.

@usrbinkat
Forked from afflom/pure_uor_cpu.py
Created May 28, 2025 02:57
Show Gist options
  • Select an option

  • Save usrbinkat/1e1cb13b033586a22e9e2406e36de914 to your computer and use it in GitHub Desktop.

Select an option

Save usrbinkat/1e1cb13b033586a22e9e2406e36de914 to your computer and use it in GitHub Desktop.

Revisions

  1. @afflom afflom created this gist May 11, 2025.
    231 changes: 231 additions & 0 deletions pure_uor_cpu.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,231 @@
    #!/usr/bin/env python3
    """
    Pure UOR — execution + integrity + NTT spectral (lossless full-complex)
    =====================================================================
    This script implements:
    - A dynamic prime cache
    - Data and exec opcodes with per-chunk checksum (exp⁶)
    - Block framing via prime⁷ headers
    - Forward & inverse Number-Theoretic Transform (NTT) mod 13 as a spectral operator
    - Automatic inversion ensuring lossless round-trip
    Run: python3 pure_uor_cpu.py
    """
    from __future__ import annotations
    import sys
    from math import isqrt
    from typing import List, Dict, Tuple, Iterator

    # ──────────────────────────────────────────────────────────────────────
    # Prime cache & tags
    # ──────────────────────────────────────────────────────────────────────
    _PRIMES: List[int] = [2]
    _PRIME_IDX: Dict[int,int] = {2: 0}

    def _is_prime(n: int) -> bool:
    r = isqrt(n)
    for p in _PRIMES:
    if p > r: break
    if n % p == 0: return False
    return True

    def _extend_primes_to(idx: int) -> None:
    cand = _PRIMES[-1] + 1
    while len(_PRIMES) <= idx:
    if _is_prime(cand):
    _PRIMES.append(cand)
    _PRIME_IDX[cand] = len(_PRIMES) - 1
    cand += 1

    def get_prime(idx: int) -> int:
    _extend_primes_to(idx)
    return _PRIMES[idx]

    # Preload core tags at indices 0..5: 2,3,5,7,11,13
    _extend_primes_to(5)
    OP_PUSH, OP_ADD, OP_PRINT = _PRIMES[0], _PRIMES[1], _PRIMES[2]
    BLOCK_TAG, NTT_TAG, T_MOD = _PRIMES[3], _PRIMES[4], _PRIMES[5]
    NTT_ROOT = 2

    # ──────────────────────────────────────────────────────────────────────
    # Checksum attachment (exp 6)
    # ──────────────────────────────────────────────────────────────────────

    def _attach_checksum(raw: int, fac: List[Tuple[int,int]]) -> int:
    xor = 0
    for p, e in fac:
    xor ^= _PRIME_IDX[p] * e
    chk = get_prime(xor)
    return raw * (chk ** 6)

    # ──────────────────────────────────────────────────────────────────────
    # Chunk constructors
    # ──────────────────────────────────────────────────────────────────────

    def chunk_data(pos: int, cp: int) -> int:
    p1, p2 = get_prime(pos), get_prime(cp)
    if p1 == p2:
    raw, fac = p1**3, [(p1, 3)]
    else:
    raw, fac = p1*(p2**2), [(p1, 1), (p2, 2)]
    return _attach_checksum(raw, fac)

    def chunk_push(v: int) -> int:
    p = get_prime(v)
    return _attach_checksum(OP_PUSH**4 * p**5, [(OP_PUSH,4),(p,5)])

    def chunk_add() -> int:
    return _attach_checksum(OP_ADD**4, [(OP_ADD,4)])

    def chunk_print() -> int:
    return _attach_checksum(OP_PRINT**4, [(OP_PRINT,4)])

    def chunk_block_start(n: int) -> int:
    lp = get_prime(n)
    return _attach_checksum(BLOCK_TAG**7 * lp**5, [(BLOCK_TAG,7),(lp,5)])

    def chunk_ntt(n: int) -> int:
    lp = get_prime(n)
    return _attach_checksum(NTT_TAG**4 * lp**5, [(NTT_TAG,4),(lp,5)])

    # ──────────────────────────────────────────────────────────────────────
    # Prime factorisation
    # ──────────────────────────────────────────────────────────────────────

    def _factor(x: int) -> List[Tuple[int,int]]:
    fac = []
    i = 0
    while True:
    p = get_prime(i)
    if p*p > x: break
    if x % p == 0:
    cnt = 0
    while x % p == 0:
    x //= p; cnt += 1
    fac.append((p, cnt))
    i += 1
    if x > 1:
    if x not in _PRIME_IDX:
    _extend_primes_to(len(_PRIMES))
    _PRIME_IDX[x] = len(_PRIMES)
    _PRIMES.append(x)
    fac.append((x,1))
    return fac

    # ──────────────────────────────────────────────────────────────────────
    # NTT forward & inverse
    # ──────────────────────────────────────────────────────────────────────

    def ntt_forward(vec: List[int]) -> List[int]:
    N = len(vec)
    out = [0]*N
    for k in range(N):
    s = 0
    for n in range(N): s += vec[n] * pow(NTT_ROOT, n*k, T_MOD)
    out[k] = s % T_MOD
    return out

    def ntt_inverse(vec: List[int]) -> List[int]:
    N = len(vec)
    invN = pow(N, -1, T_MOD)
    out = [0]*N
    for n in range(N):
    s = 0
    for k in range(N): s += vec[k] * pow(NTT_ROOT, -n*k, T_MOD)
    out[n] = (s * invN) % T_MOD
    return out

    # ──────────────────────────────────────────────────────────────────────
    # VM execution
    # ──────────────────────────────────────────────────────────────────────

    def vm_execute(chunks: List[int]) -> Iterator[str]:
    stack: List[int] = []
    i = 0
    while i < len(chunks):
    ck = chunks[i]; i += 1
    fac = _factor(ck)
    # peel checksum
    chk = None; data: List[Tuple[int,int]] = []
    for p,e in fac:
    if e >= 6 and chk is None:
    chk = p; e -= 6
    elif e >= 6:
    raise ValueError('Duplicate checksum')
    if e: data.append((p,e))
    if chk is None: raise ValueError('Checksum missing')
    # verify
    xor = 0
    for p,e in data: xor ^= _PRIME_IDX[p]*e
    if chk != get_prime(xor): raise ValueError('Checksum mismatch')
    # block framing
    if any(p==BLOCK_TAG and e==7 for p,e in data):
    lp = next(p for p,e in data if p!=BLOCK_TAG and e==5)
    cnt = _PRIME_IDX[lp]
    inner = chunks[i:i+cnt]; i += cnt
    yield from vm_execute(inner)
    continue
    # NTT opcode
    if any(p==NTT_TAG and e==4 for p,e in data):
    lp = next(p for p,e in data if p!=NTT_TAG and e==5)
    cnt = _PRIME_IDX[lp]
    inner = chunks[i:i+cnt]; i += cnt
    # gather raw exponents
    vec = []
    for c in inner:
    f = _factor(c); sub=[]; cchk=None
    for p2,e2 in f:
    if e2>=6 and cchk is None: e2-=6; cchk=p2
    sub.append((p2,e2))
    vec.append(next((e2 for _,e2 in sub if e2>0),0))
    # NTT round-trip integrity
    _ = ntt_inverse(ntt_forward(vec))
    # re-emit
    yield from vm_execute(inner)
    continue
    # exec or data
    exps = {e for _,e in data}
    if 4 in exps:
    op = next(p for p,e in data if e==4)
    if op==OP_PUSH:
    v = next(p for p,e in data if e==5); stack.append(_PRIME_IDX[v])
    elif op==OP_ADD:
    b,a = stack.pop(), stack.pop(); stack.append(a+b)
    elif op==OP_PRINT:
    yield str(stack.pop())
    else:
    raise ValueError('Unknown opcode')
    else:
    p_chr = next((p for p,e in data if e in (2,3)), None)
    if p_chr is None: raise ValueError('Bad data')
    yield chr(_PRIME_IDX[p_chr])

    # ──────────────────────────────────────────────────────────────────────
    # Tests & Demo
    # ──────────────────────────────────────────────────────────────────────

    def _self_tests() -> Tuple[int,int]:
    passed=failed=0
    def ok(cond,msg):
    nonlocal passed,failed
    if cond: passed+=1
    else: failed+=1; print('FAIL',msg)
    ok((OP_PUSH,OP_ADD,OP_PRINT)==(2,3,5),'primes')
    ok(''.join(vm_execute([chunk_data(i,ord(c)) for i,c in enumerate('Hi')]))=='Hi','roundtrip')
    seq=[chunk_data(i,ord(c)) for i,c in enumerate('XYZ')]
    prog=[chunk_ntt(3)]+seq
    ok(''.join(vm_execute(prog))=='XYZ','ntt roundtrip')
    return passed,failed

    if __name__=='__main__':
    p,f=_self_tests()
    print(f'[tests] {p} passed, {f} failed')
    if f:
    sys.exit(f)
    # Demo
    sample = "Pure UOR demo 🎉"
    stream = [chunk_data(i, ord(c)) for i, c in enumerate(sample)]
    print("\nDemo ▶ Encoding chunks:")
    print(' '.join(str(x) for x in stream))
    print("Demo ▶ Decoded text:")
    print(''.join(vm_execute(stream)))