Numerics · The bridge nobody crosses

The bridge nobody crosses

The two columns of the 2x2 still cite each other zero times. But they are not two islands -- they rest on the same seabed. Three papers are cited by both, and all three are MPC numerics primitives. The traffic runs one way, and it does not pass through the middle of either literature.

For most of this SoK's life the headline finding was stated as an absolute: no paper in the verifiability column cites any paper in the privacy column, or the reverse. Not once.

On 2026-07-13 that stopped being true, and the way it stopped being true is better than the finding it replaced.

We finally read the two papers the finding had always rested on, SIRNN and Cheetah, which had been sitting in the graph as external: stubs, unread, for the entire life of the project. (That is its own indictment and it is dealt with below.) Promoting them to real papers created exactly two crossing edges, and the validator's tripwire fired, as it was built to.

Neither edge is a cryptographic citation. Both are about numerics, which is what this page has been arguing all along, and now it is arguing it with evidence instead of with an absence.

Crossing edge Direction What it actually is
Hao et al.Cheetah verify → privacy Bibliography only. Cheetah is reference [30] and appears zero times in hao-et-al's body. (Contrast SIRNN, reference [47]: five body citations, load-bearing.) And hao-et-al is the one verifiability paper that proves operators rather than models — already flagged here as an edge case.
DelphiSafetyNets privacy → verify The interesting one. A privacy paper citing a verifiability paper — twice, in the body — and not for verifiability. It cites SafetyNets as prior evidence about whether quadratic activations train well. Delphi's body contains zero occurrences of "verifiable", "integrity", "zero-knowledge" or "proof of correctness".

Read that second row again. Delphi does not know it is citing a verifiability paper. It is citing an ML result about activation functions, and the fact that the result happens to live inside a zkML paper is invisible to it.

So the finding does not die. It sharpens, into something you can actually defend:

The two literatures do not read each other as cryptography. Where they touch, and they do touch, they touch at the numerics, and they touch without noticing.

citations acorn ACORN eiffel EIFFeL acorn->eiffel prio Prio / Prio+ acorn->prio rofl RoFL acorn->rofl archer-ieee Archer et al. (IEEE cost) artemis Artemis / Apollo bionetta Bionetta deepprove DeepProve bionetta->deepprove ezkl ezkl bionetta->ezkl gkr GKR bionetta->gkr lasso Lasso bionetta->lasso zkcnn zkCNN bionetta->zkcnn zkgpt zkGPT bionetta->zkgpt zkml-kang ZKML bionetta->zkml-kang zkpytorch zkPyTorch bionetta->zkpytorch bolt BOLT cheetah Cheetah bolt->cheetah iron Iron bolt->iron secfloat SecFloat bolt->secfloat sirnn SIRNN bolt->sirnn the-x THE-X bolt->the-x bootstrapping-fhe Bootstrapping is All You Need bootstrapping-fhe->bolt bumblebee BumbleBee bootstrapping-fhe->bumblebee bootstrapping-fhe->cheetah ciphergpt CipherGPT bootstrapping-fhe->ciphergpt bootstrapping-fhe->iron nimbus Nimbus bootstrapping-fhe->nimbus bootstrapping-fhe->the-x delphi Delphi cheetah->delphi cheetah->sirnn ciphergpt->bolt ciphergpt->bumblebee ciphergpt->cheetah ciphergpt->iron ciphergpt->sirnn deepprove->ezkl deepprove->gkr jolt Jolt (zkVM) deepprove->jolt deepprove->lasso mystique Mystique deepprove->mystique vcnn vCNN deepprove->vcnn deepprove->zkcnn deepprove->zkgpt zkllm zkLLM deepprove->zkllm deepprove->zkpytorch zktorch ZKTorch deepprove->zktorch safetynets SafetyNets delphi->safetynets eiffel->prio eiffel->rofl expander Expander garg-fp Garg et al. (FP) garg-fp->archer-ieee garg-fp->mystique hao-et-al Hao et al. hao-et-al->cheetah hao-et-al->lasso hao-et-al->mystique hao-et-al->safetynets hao-et-al->sirnn hao-et-al->vcnn hao-et-al->zkcnn iron->cheetah iron->sirnn iron->the-x jolt-atlas Jolt Atlas jolt-atlas->deepprove jolt-atlas->ezkl jolt-atlas->gkr jolt-atlas->jolt twist-shout Twist & Shout jolt-atlas->twist-shout modulus-cost-of-intelligence The Cost of Intelligence modulus-cost-of-intelligence->gkr modulus-cost-of-intelligence->mystique modulus-cost-of-intelligence->safetynets modulus-cost-of-intelligence->vcnn modulus-cost-of-intelligence->zkcnn mosformer Mosformer mosformer->bolt mosformer->bumblebee mosformer->ciphergpt mosformer->iron mosformer->nimbus puma PUMA mosformer->puma sigma Sigma mosformer->sigma mosformer->the-x nimbus->bolt nimbus->bumblebee nimbus->cheetah nimbus->ciphergpt nimbus->iron nimbus->sirnn nimbus->the-x opml opML pol Proof-of-Learning pol->safetynets pol-adversarial PoL Adversarial Examples pol-adversarial->pol pol-broken PoL is More Broken Than You Think pol-broken->pol prob-truncation Probabilistic truncation in PPML prob-truncation->cheetah proof-of-quality Proof of Quality proof-of-quality->ezkl proof-of-quality->mystique proof-of-quality->opml proof-of-quality->zkml-kang puma->cheetah puma->delphi puma->iron pvcnn pvCNN range-arithmetic Range-Arithmetic range-arithmetic->artemis range-arithmetic->ezkl range-arithmetic->garg-fp range-arithmetic->hao-et-al range-arithmetic->jolt-atlas range-arithmetic->mystique range-arithmetic->pvcnn range-arithmetic->safetynets spagkr SpaGKR range-arithmetic->spagkr zip ZIP range-arithmetic->zip zkml-survey ZKP-VML Survey range-arithmetic->zkml-survey zkpot-garg zkPoT (Garg et al.) range-arithmetic->zkpot-garg remainder Remainder remainder->gkr remainder->modulus-cost-of-intelligence remainder->vcnn remainder->zkcnn safetynets->gkr secfloat->archer-ieee secfloat->sirnn sigma->cheetah sigma->delphi sigma->iron sigma->secfloat sigma->sirnn sigma->the-x twist-shout->gkr twist-shout->lasso zator Zator zator->ezkl zator->zkml-kang zen ZEN zen->safetynets zen->vcnn zkdt zkDT zen->zkdt zip->archer-ieee zip->garg-fp zip->mystique zip->safetynets zip->vcnn zip->zkcnn zip->zkllm zklp ZKLP zip->zklp zkgpt->gkr zkgpt->jolt zkgpt->lasso zkgpt->mystique zkgpt->vcnn zkgpt->zkcnn zkgpt->zkllm zkllm->gkr zkllm->mystique zkllm->safetynets zkllm->vcnn zkllm->zkcnn zklp->archer-ieee zklp->garg-fp zklp->mystique zklp->secfloat zkml-kang->vcnn zkml-kang->zkcnn zkml-survey->artemis zkml-survey->ezkl zkml-survey->gkr zkml-survey->lasso zkml-survey->mystique zkml-survey->safetynets zkml-survey->spagkr zkml-survey->vcnn zkml-survey->zkcnn zkml-survey->zkgpt zkml-survey->zkllm zkpot-garg->mystique zkpot-garg->secfloat zkpot-garg->sirnn zkpot-garg->vcnn zkpot-garg->zkcnn zkpytorch->expander zkpytorch->gkr zkpytorch->mystique zkpytorch->zkcnn zkpytorch->zkllm zktorch->ezkl zktorch->mystique zktorch->vcnn zktorch->zkcnn zktorch->zkllm

176 edges across the corpus. 2 of them join the verifiability literature to the privacy literature. Neither is a cryptographic citation — both are about arithmetic, and one of them does not know what it is citing. Full graph: the citation graph.

Three nodes are cited by both columns

Rebuild the graph and ask a different question, not "does A cite B", but "is there any node that both columns point at?" There are exactly three, and they are all from the MPC world:

Shared node What it is Cited by (privacy) Cited by (verifiability)
SIRNN (S&P '21) an OT-based math library for secure inference: digit decomposition, exponential, reciprocal, reciprocal square root Iron, BOLT, CipherGPT, Nimbus Hao et al., zkPoT (Garg et al.)
Cheetah (USENIX '22) the lean 2PC matmul that the whole private-inference line improves on Iron, BOLT, CipherGPT, Nimbus, Bootstrapping is All You Need Hao et al.
SecFloat (S&P '22) accurate IEEE-754 floating point under 2PC BOLT zkPoT (Garg et al.), ZKLP
gap
We argued from three papers for a year and had read one of them

Until July 2026, SIRNN and Cheetah were external: nodes, names in a YAML file, with no PDF, no entry, and no page. The single most-quoted claim in this repo rested on three papers, and we had read exactly one of them (SecFloat).

It is worth being blunt about what that means. The finding turned out to be right, and reading the papers made it sharper rather than weaker. But it was right by luck, and the external: mechanism, which exists so you can name a building block without studying it, had quietly become a way of holding load-bearing evidence at arm's length. A node your headline depends on is not a building block. It is a paper you owe a reading.

Add the fourth-order case and the picture completes: Garg et al. (FP), a zero-knowledge paper, CCS '22, takes its floating-point cost baseline from Archer et al. (IEEE cost), which is an MPC paper, and uses it in the body, not the bibliography. ZKLP does the same thing, from the same source.

So the real shape is not "two communities that never talk." It is:

They never read each other's systems. They both reach down to the same numerics substrate. And the reaching is one-directional.

Both columns have to turn a real number into a finite-field element, multiply, and then squeeze a wide accumulator back down. Both have to do it without a division. The MPC world solved a large part of that problem first, SecFloat, SIRNN and the Catrina–Saxena fixed-point line go back to 2010, and the ZK world has been quietly drawing on it while ignoring everything the same authors built on top.

ACM CCS 2022

Garg et al. (FP)

relaxed-semantics

primary
LATINCRYPT 2021

Archer et al. (IEEE cost)

exact-ieee754

primary
arXiv 2404.14983

ZKLP

exact-ieee754

primary
IEEE S&P 2021

SIRNN

2PC, semi-honest -- LUT + Goldschmidt iteration for math functions, mixed bit-widths, digit decomposition

primary
IEEE S&P 2022

SecFloat

exact-ieee754

primary
AAAI 2025

Probabilistic truncation in PPML

fixed-point-truncation

primary

What "crossing" actually looks like

These are not incidental bibliography entries. In the papers that cross, the MPC primitive is load-bearing.

Hao et al. (USENIX Security '24) is a zero-knowledge paper built on an MPC math library. It proves softmax, GELU, division and reciprocal square root in ZK, the exact operator set the rest of this repo is fighting. Its exponential protocol is inspired by SIRNN's digit-decomposition idea, its reciprocal-square-root initial approximation cites SIRNN, and it inherits SIRNN's hyperparameters, but the digit-decomposition building block is its own, and it explicitly rejects SIRNN's Msnzb construction as too costly before re-deriving one. (The Goldschmidt iteration it uses is attributed to Goldschmidt's 1964 thesis and to the MPC line generally, not to SIRNN.) The borrowing is real but selective, and the paper says so:

This function is currently explored in secure multi-party computation (MPC) works [47]. In their protocol, the input x is decomposed into several digits x0 , . . . , xk−1 , and the Msnzb is computed on each xi of these digits. Finally, the output corresponds to y = Msnzb(xi ) + i · d if xi ≠ 0 and x j > 0 for all j > i, where d is the bitlength of each digit. Although this method can be directly migrated to the ZK-based evaluation, utilizing our digital decomposition and table lookup protocols, the cost is significantly high due to the requirement of multiple Msnzb, comparison, and multiplication operations.

Hao et al. · §2.2, Novel table lookup-based protocols — reference [47] is SIRNN

The hyperparameter inheritance is the most literal part of it:

In our protocols, we set the parameters following prior work [47], i.e., the number of iterations I = 0 for division and I = 1 for reciprocal square root, and the lookup bitlength m = 5 for division and m = 6 for reciprocal square root.

Hao et al. · §7.2, Results of mathematical functions

zkPoT (Garg et al.) (CCS '23) crosses because its proof system is an MPC protocol. It is MPC-in-the-head, so it needs a fixed-point MPC protocol as its engine, and it takes one, the Catrina–Saxena secure-truncation construction. The consequence lands in the place this section cares about most: the numerics substrate chooses its field.

All arithmetic is implemented over a 128-bit ($p = 2^{128} − 45 * 2^{40} + 1$) prime field. The larger field size is required by the secure truncation protocol for fixed-point arithmetic (see Section 2.4). We expect that finding a way to avoid this and instead using a 64-bit field would further speed up the protocol and reduce proof size.

zkPoT (Garg et al.) · §7, Implementation and Evaluation

That is the same causal chain the index page draws for zkML, numeric format → field size → prover cost, arriving in a ZK paper by way of an MPC truncation protocol. And the bridge here is not even a citation. It is a person:

We thank Deevashwer Rathee for useful discussions on fixed point arithmetic.

zkPoT (Garg et al.) · Acknowledgements

Deevashwer Rathee is the first author of both SIRNN and SecFloat. The one place the two literatures genuinely touch, they touch through the acknowledgements section.

ZKLP is the only paper in this repo that reads both float literatures on purpose. Its related work walks the MPC line, Aliasgari, Kamm, Archer et al. (IEEE cost), Pullonen–Siim, SecFloat, and then turns to the ZK one, treating them as two lines on one problem:

In [25], Rathee et. al construct standard compliant functionalities for 2PC with dedicated optimizations. While providing better efficiency, they can only achieve partial compliance with IEEE 754, but subnormal values and NaNs are not considered. Another line of research focuses on proving floating-point computations using ZKPs.

ZKLP (Ernstberger et al.) · §6, Related Works — Floating-Point Secure Computing

And it states the asymmetry outright, without seeming to notice it is stating it:

Efficient algorithms for emulating accurate trigonometric functions are known for Two-Party-Computation [25]. However, we are not aware of any optimizations that lead to accurate and efficient in-circuit trigonometric approximations for SNARKs.

ZKLP (Ernstberger et al.) · §4, Zero Knowledge Location Privacy — Representing the Transformation as Constraints; reference [25] is SecFloat

MPC has this; SNARKs do not. That sentence is the entire finding of this page, written by someone who was looking at both shelves at once, and it appears in a paper about location privacy, which is why nobody in zkML has read it.

The bridge does not pass through the middle of either column

Here is the part that matters most, and it corrects the tempting version of this story.

It is not true that "the ZK side reaches into the MPC toolbox." Four papers do. None of them is a mainstream zkML prover. I checked every flagship system in the verifiability column for any mention, body or bibliography, of the three shared nodes:

Paper What it is Mentions Cheetah / SIRNN / SecFloat
DeepProve GPT-2 / Gemma prover none
zkGPT GPT-2 prover none
zkLLM LLaMA-2 prover none
zkPyTorch compiler, Llama-3 none
Jolt Atlas ONNX prover none
ZIP high-precision inference none
Bionetta client-side CNN prover none
Hao et al. proves operators, not models SIRNN (body, load-bearing)
zkPoT (Garg et al.) uses MPC as its engine SecFloat, SIRNN (body)
ZKLP is about floating point SecFloat, Archer (body)
Garg et al. (FP) is about floating point Archer (body)

The four that cross are the four that sit at the edge of the ZK column: two are about arithmetic itself, one proves operators rather than models, and one is a ZK system whose engine is literally an MPC protocol. Every paper at the centre of the verifiability column reaches into nothing. They rediscover digit decomposition, piecewise approximation and range-checked truncation from first principles, in a field where a math library for exactly those operations has existed since 2021.

Bionetta is the newest entry in that table and the cleanest demonstration of the pattern, because it does not merely fail to cite the numerics literature, it redoes it. Appendix C of a December 2025 technical report derives, from scratch, the error bound for multiplying two fixed-point numbers:

$$\varepsilon_\rho := \left|D_{2\rho}\big(\hat{x}\hat{y}\big) - xy\right| \;\le\; 2^{-\rho}\beta + 2^{-2\rho}$$

That is a foundational result in the SecFloat / Probabilistic truncation in PPML line. The paper contains zero occurrences of "MPC", "homomorphic", "SIRNN", "Cheetah" or "SecFloat". Four years after a library shipped that does exactly this, a team building a deployed system proved it again by hand, and, on the evidence of the bibliography, did not know there was anything to look up.

Is the one-way traffic real, or an artifact of our corpus?

This is the question the finding lives or dies on, and it deserves a hostile reading. Our graph holds several times more verifiability papers than privacy papers (the live counts are on the citation-graph page). An imbalance that large will manufacture a directional result from pure chance: more ZK papers means more chances for a ZK→MPC edge, and fewer MPC papers means fewer chances for the reverse. Counting edges cannot settle this.

So I did not count edges. I ran a test that is immune to corpus size, because it is a property of each document on its own: does this paper contain the word "zero-knowledge", or "SNARK", or "GKR", or "sum-check", anywhere at all, body or bibliography?

MPC-side paper Any ZK vocabulary, anywhere
Iron none
Nimbus none
Bootstrapping is All You Need none
SecFloat none
Probabilistic truncation in PPML none
Archer et al. (IEEE cost) none
CipherGPT twice, in passing
BOLT once ("zero-knowledge proofs for HE", about MUSE)

Six of the eight MPC-side PDFs we hold never use the word. Not in the related work, not in the references, not once. That is not something a small sample can fake, it is eight independent documents, and six of them are silent. The asymmetry is real for these papers.

gap
What the asymmetry does not establish

Three caveats, and I would not want the finding cited without them.

Chronology explains part of it. SIRNN (2021), Archer et al. (IEEE cost) (2021), Cheetah (2022) and SecFloat (2022) mostly predate the zkML transformer systems. Iron (2022) could not have cited DeepProve (2026). A "recent ZK cites older MPC" pattern is partly just the arrow of time. What survives that objection is the recent end: BOLT (S&P '24) and Nimbus (NeurIPS '24) are contemporaneous with zkLLM (CCS '24) and do not cite it, and Bootstrapping is All You Need (2026) is contemporaneous with DeepProve and cites nothing in the zkML line. And Probabilistic truncation in PPML (AAAI '25) is an analysis of truncation, the shared problem, at the shared layer, published late, and it does not contain the word "zero-knowledge".

Selection explains part of it. All five privacy papers that appear in the graph are private transformer inference systems, we hold no PDF for the private-training entries, so they contribute no edges. That is a genre with no reason to cite a prover. An MPC paper on verifiable or maliciously-secure computation would plausibly cite ZK work heavily, and we hold none. The honest scope of the claim is therefore narrow: private-transformer-inference papers do not read zkML. It is not "MPC does not read ZK", and we have no evidence for the broader statement.

The proxy is coarse. An edge in this graph means "A's text mentions B", body or reference list. Two of the edges the graph draws turn out to be bibliography-only on inspection (Hao et al. lists Cheetah but never uses it), and one real edge is missing, ZKLP cites Archer et al. (IEEE cost) as its reference [21], in the body, and the extractor does not catch it. Every edge this page leans on has been checked by hand against the PDF; the graph itself has not.

Why it matters that they share a substrate and not a literature

If the two columns were solving unrelated problems, the disconnection would be unremarkable. They are not. Strip away the cryptography and both are doing the same thing: representing a real number in a domain that has no reals, multiplying, and then rescaling a wide accumulator back down without a division. Both answer it with piecewise approximation selected by a lookup on the high bits. Both discover that the cost is not the arithmetic but the rounding. Both find that the calibrated range is where the soundness or the accuracy actually lives.

And where a technique genuinely cannot transfer, the reason is the threat model, not ignorance, which is worth stating precisely, because it is the one place the disconnection is justified. MPC's probabilistic truncation is cheap because it accepts a small per-operation failure probability, and when it fails it fails with a large error. On a random input that is an accuracy cost you can bound. In ZK the prover chooses the input, so a rare failure is not rare at all, and an accuracy cost becomes a soundness hole. Probabilistic truncation in PPML is the analysis of that failure mode; it is an MPC paper; and no ZK paper cites it.

That is the correct summary of this whole section. The two columns can share the numerics, and they do, but they cannot share the guarantees built on top of it, and they have never sat down together to work out which is which. Nobody is doing that work. The shared seabed is uninhabited.

What would settle it

Two experiments, neither expensive:

  1. Point Hao et al. at the private-inference operators. It proves exponential, reciprocal and reciprocal-square-root in ZK using digit decomposition and table lookups. Nimbus approximates exactly those functions in 2PC using a distribution-aware fit. Neither has looked at the other's error analysis, and they are approximating the same curves on the same models.
  2. Ask whether ZKLP's result changes the 2PC picture too. ZKLP shows that lookup arguments make bit-exact IEEE floats affordable in a circuit, and finds fixed point losing to floats on its workload. The 2PC line quantizes for the same reason zkML does, fixed point is what the primitives support. If the "floats are infeasible" premise is retired on one side of the table, somebody should check whether it survives on the other.