Skip to content

Vera — A Language Designed for Machines to Write

Alasdair Allan April 9, 2026 product-announcement low credibility
View source

Referenced in catalog

Vera — A Language Designed for Machines to Write

Source: veralang.dev | Author: Alasdair Allan | Published: ~February 2026 (exact date not stated) Category: product-announcement | Credibility: low

Executive Summary

  • Vera is an experimental programming language (MIT, Python-implemented) that eliminates variable names in favour of typed De Bruijn slot references (@Type.index), mandates explicit algebraic effect declarations, and requires full formal contracts (preconditions, postconditions, termination proofs) on every function — all oriented at reducing LLM hallucination and naming errors during code generation.
  • The language compiles to WebAssembly via Z3-backed three-tier verification: static SMT proof (Tier 1), guided verification with hints (Tier 2), runtime fallback trap (Tier 3). At v0.0.108 with 3,205+ tests and 96% coverage, the reference implementation appears functional.
  • The core thesis — that models generate more reliable code in a language stripped of variable naming flexibility — is supported by one internal 50-problem VeraBench run. No independent reproduction, no pass@k evaluation, and no production deployments are cited; the author explicitly acknowledges the empirical gap.

Critical Analysis

  • Evidence quality: vendor-sponsored (VeraBench is author-created); citation to arxiv.org/abs/2307.12488 is real but tangential
  • Assessment: The cited 2023 paper (“How Does Naming Affect LLMs on Code Analysis Tasks?”) confirms that misleading or nonsense names degrade LLM code-analysis performance — but it studies analysis, not generation, and uses models far older than current frontier. Extrapolating this finding to justify an entire syntactic redesign is a significant inferential leap. The VeraBench results (Kimi K2.5: 100% run_correct vs. Python 86%, TypeScript 91%) are presented without pass@k sampling, without hold-out validation, and at a tiny scale (50 problems, one run per model). Whether models prefer Vera because of its naming system, its structural constraints, or simply better prompt engineering in the benchmark harness is uncontrolled.
  • Counter-argument: Removing variable names trades one class of error (naming incoherence) for another (De Bruijn index confusion). At Tier 1 verification, the solver only covers linear integer arithmetic — the vast majority of real-world code falls into Tier 3 (runtime-checked), meaning the “verified” label is weaker than it first appears. Languages like Dafny have years of use as LLM intermediate targets with documented success rates reaching 89–96% with current frontier models, offering a more established comparison point.
  • References:

Claim: “Kimi K2.5 writes perfect Vera code — 100% run_correct, beating Python (86%) and TypeScript (91%)”

  • Evidence quality: vendor-sponsored (single-run benchmark authored and administered by the language creator)
  • Assessment: The benchmark (VeraBench, available at github.com/aallan/vera-bench) uses 50 problems across 5 difficulty tiers. Comparing a structurally constrained, purely functional language against imperative Python and TypeScript is not an apples-to-apples comparison: the reduced program space that Vera intentionally enforces will naturally raise pass rates on deterministic algorithmic tasks. Flagship models like Kimi K2.5 have publicly documented HumanEval scores of 99.0, making them strong performers on any structured-output task; this is not evidence that Vera specifically causes the improvement.
  • Counter-argument: A single run at n=50 with no confidence intervals is not publishable evidence. Pass@k (k≥5) across multiple model families on a held-out set would be the minimum standard. The author acknowledges this directly: “it is still early days, just 50 problems, and one run per model, and stable rates will require pass@k evaluation with multiple trials.”
  • References:

Claim: “Three-tier verification provides mechanical correctness guarantees for Vera programs”

  • Evidence quality: anecdotal (design claim; no independent audit)
  • Assessment: Tier 1 (Z3 SMT proof) applies only to linear arithmetic, logic, and simple recursion with well-founded measures — a decidable fragment covering a minority of real programs. Tier 3 (runtime WASM trap) is effectively a runtime assertion, not a static proof; calling this “verification” overstates the guarantee. The author’s own documentation notes “no garbage collector; programs use bump allocation and can exhaust heap memory” — a significant operational constraint that limits real-world applicability. The language has no package manager, no standard library beyond built-ins, and no garbage collection at v0.0.108.
  • Counter-argument: Dafny, Lean, and F* all offer stronger, independently validated verification stories and have been battle-tested in production contexts (AWS Firecracker, seL4 components). Vera’s verification is a thin layer over existing Z3 bindings without the proof-engineering toolchain these mature systems provide.
  • References:

Claim: “One canonical form and structural references eliminate stylistic variation, reducing model hallucination opportunities”

  • Evidence quality: anecdotal (theoretical design claim)
  • Assessment: The design principle is coherent: reducing the hypothesis space of valid programs should theoretically improve model accuracy on any constrained-output task. The mandatory formatter (vera fmt) and structural slot references are genuine mechanisms, not just claims. However, the language explicitly sacrifices human readability — the author acknowledges Vera is “not a pleasant experience” to read — which creates a significant maintenance and debugging burden. Any program requiring human review or modification post-generation faces a readability cliff.
  • Counter-argument: Human readability is not merely a convenience feature. When LLM-generated code fails, humans must debug it. A language optimised entirely for generation correctness but hostile to human reading shifts the failure-mode cost rather than eliminating it. The constraint that “there are no variable names” also means that LLMs must correctly compute De Bruijn indices, a non-trivial transformation that introduces its own class of index-off-by-one errors.
  • References:

Credibility Assessment

  • Author background: Alasdair Allan is a technologist, science journalist, and maker with published books on sensor networks and Raspberry Pi projects. He is not a programming language researcher or formal methods specialist. The GitHub handle aallan confirms authorship. His background makes him capable of building a working language implementation but not ideally positioned to make claims about formal verification strength.
  • Publication bias: This is the project’s own landing page (veralang.dev) supplemented by a GitHub repository. There is no peer review, no independent editorial voice, and no third-party benchmarking. The sole independent commentary found is a Negroni Venture Studios blog post that is broadly sympathetic but correctly flags the lack of empirical validation.
  • Verdict: low — The language implementation appears technically real and the design rationale is intellectually coherent, but all performance claims rest on a single author-administered benchmark with acknowledged methodological gaps. No production usage, no independent replication, no peer review.

Entities Extracted

EntityTypeCatalog Entry
Veraopen-source framework/languagelink