{
  "slug": "sp1-lean",
  "name": "sp1-lean",
  "tagline": "Lean verification of SP1 Hypercube's RISC-V chips, built on Clean",
  "maintainer": "Succinct, with Nethermind",
  "url": "https://github.com/succinctlabs/sp1-lean",
  "repo": "https://github.com/succinctlabs/sp1-lean",
  "category": "zk-circuits",
  "targets": [
    "SP1 Hypercube",
    "RISC-V (RV64) chips",
    "AIR"
  ],
  "approach": "Lean 4 on Clean; chip constraints proved sound against the Sail RISC-V model",
  "license": "Open source (MIT / Apache-2.0)",
  "status": "Active",
  "since": "2025-10-09 (announcement)",
  "summary": "sp1-lean is Succinct's Lean 4 project, developed with Nethermind, that expresses the constraints of SP1 Hypercube's RISC-V chips in Clean and proves them sound against the Sail RISC-V reference model. As of the Ethereum Foundation's May 2026 review, 51 of 62 opcodes were fully proven; completeness is deferred for five chips.",
  "details": [
    "The project is the most visible zkVM verification effort in public. Each RISC-V chip's AIR constraints are restated as a Clean circuit whose specification is the Sail semantics of the instruction, and soundness is proved 'axiom-clean' (no additional axioms beyond Lean's core).",
    "It is also the public case study in specification gaps. In May 2026 the Ethereum Foundation disclosed a JALR bug in SP1 Hypercube whose theorem assumed a 4-byte-aligned jump target, so the proof was valid but excluded legitimate programs. The disclosure and the accompanying audit of sp1-lean are required reading before trusting any zkVM proof claim."
  ],
  "strengths": [
    "Real, deployed zkVM constraints proved against an independent ISA model rather than a hand-written spec.",
    "Built on Clean, so proofs compose with other Clean gadgets and benefit from the Channel work for multi-table soundness.",
    "Openly reviewed by a third party (the EF Formal Verification team), with gaps published."
  ],
  "limits": [
    "Specific to SP1 Hypercube; not a general framework.",
    "Completeness deferred for several chips and some opcodes still unproven at last public review.",
    "Correspondence between the Lean restatement and the Rust constraints is a manual step (a Plonky3 codegen backend for Clean would close it)."
  ],
  "fit": [
    "Read sp1-lean when you deploy on SP1 or want a template for verifying your own zkVM's chips in Clean."
  ],
  "references": [
    [
      "Nethermind and Succinct: Lean verification of SP1 Hypercube core chips (2025-10-09)",
      "https://blog.succinct.xyz/nethermind-lean/"
    ],
    [
      "Ethereum Foundation: SP1 JALR bug and sp1-lean audit (2026-05-20)",
      "https://zkevm.ethereum.foundation/blog/sp1-fv"
    ]
  ],
  "category_name": "ZK circuit verification",
  "page": "https://sorryfree.com/frameworks/sp1-lean/",
  "updated": "2026-09-13"
}