Verification Methods · Engineering Transparency Guide

What Our Formal-Verification Evidence Actually Proves

Five kernels out of the suite's 578 carry formal-verification evidence today, produced by three different methods: exhaustive enumeration, property-based testing, and one machine-checked Dafny proof. This guide states plainly what each method establishes, what it does not, and how it relates to the suite's separate zk execution receipts. No kernel outside the five named here carries a formal claim of any kind.

5 of 578 Kernels 3 Methods 1 Real Finding Zero PII
๐Ÿ”’ All inputs are processed locally in your browser. No data is transmitted. Do not enter real personal data โ€” use synthetic or anonymised inputs only.
The narrow claim is the point: no shipped product chains a complete, human-authored functional spec (proved for all inputs) to a zk proof of faithful execution, for general-purpose business logic. That is the gap this pilot addresses; it does not claim the suite has already closed it. Two prior efforts come close and are cited on that basis below rather than dismissed. Nothing on this page is legal or compliance advice.
Prior Art

Two near-misses, cited factually

The claim above is narrow on purpose. Two projects come close to it from different directions, and both are worth naming rather than waving away.

Pi Squared / FastSetProof-of-Proof

Proves interpreter semantics rather than arbitrary business-logic specs. Its claim-envelope model, evidence attached to a claim rather than a new envelope type, is the pattern this suite's own artifact schema borrows. Canonical Proof-of-Proof documentation was removed after a rebrand; anything sourced only from that removed documentation is marked unverified wherever it is cited.

Horus / NethermindCairo annotation FV

Annotation-scoped formal verification for the Cairo language, alpha-stage, AGPL-licensed. Its clause vocabulary, preconditions and postconditions with a bound result variable, invariants, boundary cases, is cited below for design attribution only. No Horus code is vendored in this repository; AGPL forbids it, and none was read.

The Five Kernels

Which kernels carry a formal claim, and which method proved which thing

578 kernels were classified by input shape (48 exhaustively enumerable, 243 bounded-numeric, 287 unbounded). Five were carried through a verification pilot. The methods are not equivalent to one another, and the table states each one's actual strength rather than a single blended label.

KernelMethodPublic claim
art-157
EMIR lifecycle event validator
Exhaustive enumeration, 24 states (8 action types × 3 prior states), 0 failures Class A
Verified by exhaustive enumeration (all 24 inputs)
art-27
Agentic readiness diagnostic
Exhaustive enumeration, 312 = 531,441 states, 0 failures, 14 boundary states checked separately Class A
Verified by exhaustive enumeration (all 531,441 inputs)
art-335
DTI ratio calculator
Property-based testing, 5 properties × 20,000 trials each, 0 violations, plus 15 forced floating-point boundary cases Class B
Property-tested over stated ranges
art-215
Reg Z Appendix J APR
Dafny 4.11.0 + Z3 machine-checked proof of three obligations, compiled to JS, differential-tested against the shipped kernel Class C / Dafny
Machine-checked proof (Dafny), with a known divergence disclosed below
art-376
Payee name-match score
Hand-proof of loop termination and DP-recurrence correctness (Wagner-Fischer); never run through a proof assistant Hand-proof
Verified against the stated termination and recurrence-correctness properties; never machine-checked

Every other kernel in the suite carries no formal-verification claim of any kind. Its execution can still carry a zk receipt attesting that a specific input produced a specific output under a specific code hash; that is a different evidence type, described in the composition section below.

The One Real Finding

The Reg Z APR proof found a genuine divergence

The Dafny spec for art-215 was written from Reg Z Appendix J directly rather than transliterated from the shipped kernel, and its oracle gate reproduced the regulation's own four worked examples exactly before anything else was trusted. Running the proof against the shipped kernel's behaviour surfaced a real, unfixed divergence: the kernel compounds an odd-days interest fraction where Appendix J (b)(6) and (b)(8) prescribe simple interest, which overstates the calculated APR above roughly 200% APR (0.456 percentage points at 387.9% APR), while still matching all four regulation worked examples at two decimal places.

What this means for the public claim: no page in this suite may state or imply that the Reg Z APR kernel is correct. The accurate sentence is: verified against the Reg Z Appendix J spec under the stated assumptions, with a known divergence above roughly 200% APR. This finding is tracked as a named engineering lead, separate from this guide, and is not something a verification artifact retroactively fixes. A proof that finds nothing is indistinguishable from a proof that was never run; a proof that finds something and says so is the point of running one.
The Claim Ladder

Words we use precisely, and words we never use bare

Each verification word on this page maps to a specific evidentiary strength, following the ISO/IEC/IEEE 24765 (SEVOCAB) split between "verification" ("specified requirements are fulfilled") and "validation" ("fit for intended use"), and the DO-333 framing that formal analysis discharges named, stated verification objectives rather than blessing a kernel wholesale.

What The Proofs Assume

The trusted computing base

Following the disclosure shape used by seL4's own "what the proofs assume" page, every verification artifact in this pilot rests on the same four unproven layers. Naming them is part of the claim rather than a footnote to it.

Spec correctness

Every spec file was authored from a cited clause and independent fixtures, never by reading the kernel and restating its behaviour. A spec that mirrors the implementation would prove only that the implementation matches itself. The clause reading itself is a human act and is not proved.

Spec-to-code correspondence

For art-215, the Dafny model is a port of the shipped kernel's logic rather than the shipped bytes themselves. The proof covers the port; a differential test against the shipped kernel on real fixtures is the evidence connecting the two, and it is where the divergence above was found.

Toolchain

Dafny 4.11.0 compiled against Z3 4.12.1 and 4.14.1. Every verification artifact pins the exact toolchain versions used; a version change invalidates the binding and requires re-verification, the same discipline already applied to kernel-digest changes.

Runtime

The compiled JavaScript runs in the browser's own numeric runtime (IEEE 754 double-precision floating point), which Dafny's real-number arithmetic approximates rather than models bit-for-bit. Boundary and floating-point-sensitive cases are tested separately for exactly this reason.

Frame Conditions & Tool Trust

Two details that are easy to skip and shouldn't be

Frame condition

Every kernel in this suite is a pure function: reads its declared inputs only, modifies nothing, holds no state between calls. That is stated explicitly for each verified kernel rather than left implicit, because an omitted frame condition is a classic audit gap in formal-methods writeups: a reader who never sees the claim "modifies: nothing" has no way to know whether it was checked or simply never considered.

Why Dafny and Z3 are trusted

Dafny and Z3 are not trusted by assertion. The method-soundness argument follows the DO-333 (RTCA) framing for qualifying a formal-methods tool: the prover's soundness is a property of the method, cited by reference rather than re-derived here, and every artifact pins the exact tool versions used (above) so a future soundness issue in a specific release is traceable to the artifacts it affects.

Complementary, Not A Substitute

Formal verification and zk execution receipts answer different questions

This suite separately produces zk execution-hash receipts, attesting that a specific input produced a specific output under a specific, hashed code path. Formal verification and that zk leg are two separate evidence types over the same underlying claim, "this shipped kernel computes what it says," and neither replaces the other.

A zk execution receipt showsFormal-verification evidence shows
This one declared input produced this one declared output, under this exact code hash, without re-running the computation to check it.The kernel behaves correctly across an entire stated domain (a full enumerated space, a property tested over stated ranges, or a machine-checked theorem) rather than only for the input that happened to be run.
Available today for any kernel in the suite that supports it, including ones with no formal-verification evidence at all.Available today for five kernels only. The art-376 payee-match kernel is a documented case of a kernel that current zk tooling cannot reach at all, yet it still carries a hand-proof correctness claim, exactly the complementary shape this section describes.
Related

Read the underlying node pages