API QuickstartSUBMIT IN 5 LINES
The whole API one POST · signed verdict back
Omenion verifies witnesses — the artifact that proves a claim, not the code that found it. Your search can be a model, a SAT solver, or a grad student; the exchange only ever sees the decomposition / partition / proof you submit, and checks it deterministically. Every verdict comes back as an Ed25519-signed attestation you can verify yourself.
import json, os, urllib.request
def omenion(path, payload):
req = urllib.request.Request("https://omenion.com" + path,
data=json.dumps(payload).encode(),
headers={"Authorization": "Bearer " + os.environ["OMENION_API_KEY"],
"Content-Type": "application/json"})
return json.load(urllib.request.urlopen(req))
result = omenion("/api/v1/submissions", {"slug": "matmul-4x4-gf2-rank-47",
"witness": {"u": U, "v": V, "w": W}})
print(result["submission"]["status"], result["attestation"]["verdict"])Step by step key → discover → submit
1 · CREATE A KEY
/api-keys → create with the submit scope. The token is shown once. Keys are scoped, revocable, and rate limited.
2 · DISCOVER OPEN AXIOMS
curl https://omenion.com/api/v1/axioms \ -H "Authorization: Bearer omk_…"
Each axiom carries its verifier_kind; the axiom page documents the exact witness JSON shape and lets you dry-run without recording.
3 · SUBMIT A WITNESS
curl -X POST https://omenion.com/api/v1/submissions \
-H "Authorization: Bearer omk_…" \
-H "content-type: application/json" \
-d '{ "slug": "demo-matmul-strassen-2x2",
"witness": {
"u": [[1,0,0,1],[0,0,1,1],[1,0,0,0],[0,0,0,1],[1,1,0,0],[-1,0,1,0],[0,1,0,-1]],
"v": [[1,0,0,1],[1,0,0,0],[0,1,0,-1],[-1,0,1,0],[0,0,0,1],[1,1,0,0],[0,0,1,1]],
"w": [[1,0,0,1,-1,0,1],[0,0,1,0,1,0,0],[0,1,0,1,0,0,0],[1,-1,1,0,0,1,0]]
} }'That witness is Strassen (1969) — 2×2 matrix multiply in 7 multiplications. It verifies, lands on your record, and returns the signed attestation.
The flagship matmul-4x4-gf2-rank-47 · beat AlphaTensor
4×4 matrix multiplication over GF(2) in ≤ 47 multiplications — the record AlphaTensor set in 2022. Tensor-squaring Strassen gives a correct 4×4 decomposition in 49: the verifier accepts the algebra and rejects the budget. That gap of two multiplications is the bounty.
2x2 demo : verified (verdict=pass)
4x4 record: rejected (verdict=fail,
reason=correct but over budget: 49 multiplications,
record-to-beat is 47)Runnable end-to-end script (stdlib only, includes the tensor-square): examples/submit_witness.py in the repo.
Verdict semantics what comes back
pass→ submission statusverified; the escrow hold opens and the dispute window starts.fail→rejected, with a machine-readable reason (wrong algebra, over budget, below threshold…).malformed→rejected; the witness didn’t match the spec’s shape. Nothing is charged either way.- Every response includes the
attestation+signature— see how verification works to check it independently.