Keyboard shortcuts

Press ← or β†’ to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Formal verification techniques, by paper

(authored by agents unless marked πŸ§‘)

432 techniques from 74 audited full-text paper studies, as of 2026-10-13. Studies not yet audited against their paper are left out until they are. Each line is the one-sentence summary a study gives; the study has the steps, the Verus form, the evidence and the limits. This page is generated by a script from the studies. Pages that merge the same technique across papers: by stage of work.

DafnyBench: A Benchmark for Formal Software Verification

study

  • verified-source corpus: assemble independently replayed programs from multiple sources, deduplicate them, and retain contracts as ground truth
  • fill-hints benchmark: remove body assertions and invariants while freezing requires/ensures and rejecting verifier escape hatches
  • bounded diagnostic retries: rerun a failed proof with the exact verifier error for a fixed number of attempts
  • difficulty stratification: report proof success by source size and removed-hint volume, not only one aggregate
  • contamination control: quarantine training repositories and document source overlap before comparing models

DafnyPro: LLM-Assisted Automated Verification for Dafny Programs

study

  • annotation-only diff checking β€” strip generated annotations and require identical base code before verification
  • greedy invariant pruning β€” remove verifier-reported non-inductive clauses and retry proof
  • reusable hint retrieval β€” give the LLM a fixed set of eight manual structural proof tactics, selected per attempt, for later generations
  • verifier-feedback fine-tuning β€” train on successful and failed attempts paired with verifier errors

VERINA: Benchmarking Verifiable Code Generation

study

  • compositional verifiable-code benchmark β€” represent description, code, pre/postconditions, proof, and tests as independently composable tasks
  • coverage and mutation assurance β€” require full reference coverage and categorized mutated negatives before scoring models
  • proof-plus-testing specification evaluator β€” prove soundness/completeness implications, then use tests and property-based generation with explicit unknown status
  • modular task pipelines β€” score CodeGen, SpecGen, ProofGen separately and in specification-guided, inference, and end-to-end compositions
  • iterative verifier-feedback repair β€” feed Lean compiler errors back into repeated proof generation and report pass@k against direct generation

P^3: Joint Program-and-Proof Planning for Verified Code Generation

study

  • joint plan ρ β€” enumerate contract, decomposition, library support, bridging invariant, proof cases, and auxiliary lemmas before implementation; reject plans that cannot entail the postcondition
  • plan-gated elaboration β€” emit code and proof scaffold from the same plan, repair localized verifier goals, and replan when an unplanned invariant or algorithm is required
  • proof-friendly decomposition β€” compare structural recursion and folds by the invariants they induce; generalize accumulator predicates before coding when needed
  • relational specification QA β€” require reference satisfaction, mutation rejection, and non-vacuity review, with a quantitative admission threshold before benchmarking
  • explicit phase gates β€” require read-only specifications, PASS-PLAN, mechanical checks, and instruction compliance before delivery
  • restart-aware evaluation β€” report solve rates, costs, times, and full-restart frequencies with task denominators and single-run limitations

AlgoVeri: An Aligned Benchmark for Verified Code Generation on Classical Algorithms

study

  • aligned cross-language contracts: encode one algorithm’s global predicates and witnesses in Dafny, Verus, and Lean so scores isolate toolchain effects
  • satisfiability and degeneracy audit: prove each specification clause is satisfiable and show that removing it permits an unintended behavior
  • compiler-in-the-loop prove-and-repair: iterate complete implementation/proof outputs using verifier diagnostics, then apply a separate semantic validator
  • iso-compute depth/width evaluation: compare sequential repair chains with parallel samples under equal inference budget
  • syntax/search barrier diagnosis: classify parser, type, VC, and tactic-search failures to target language-specific interventions

AlphaVerus: Bootstrapping Formally Verified Code Generation through Self-Improving Translation and Treefinement

study

  • cross-language verified bootstrapping β€” translate verified Dafny programs into Verus to create scarce training exemplars
  • Treefinement β€” verifier-error-guided branching repair over complete programs
  • critique filtering β€” neural alignment and exploit checks reject specifications or implementations that game verification
  • iterative prompt self-improvement β€” accumulate verified pairs and error trajectories across rounds without fine-tuning

Automatically Building Machine-Checked Assurance Cases from C Codebases to Requirements

study

  • specification–proof co-evolution β€” iteratively revise VST contracts and proofs together using proof failures as semantic feedback
  • resource-aware interface protocol β€” model legal open-library call sequences with states, guards, branches, ownership, and edge subsumption
  • input-aware protocol soundness β€” obtain conditional safety for realized runs under implementation satisfaction and caller obligations
  • evidence-producing verification gates β€” freeze inputs, audit proofs/axioms, and require human conformance review before delivery
  • covering witness β€” require one satisfiable run exercising every interface to block vacuous protocol proofs

VeruSAGE: A Study of Agent-Based Verification for Rust Systems

study

  • standalone dependency extraction β€” use Verus log-all to build a single task with dependency signatures, preserved contracts, and proof bodies removed
  • hands-off verifier loop β€” let a coding CLI repeatedly edit Rust, run Verus, inspect vstd, and run a cheat checker under container isolation
  • plan-then-act proof agents β€” choose specialized logical, arithmetic, quantifier, or context actions from static resources and failure history
  • strategy-specific candidate acceptance β€” permit temporary new errors for valid case splits but require strict decreases for local solver repairs
  • solver and lemma selection β€” apply bit_vector, nonlinear or integer-ring reasoning, vstd lemmas, broadcast use, and choose according to obligation shape
  • invariant and opacity handling β€” strengthen state-machine invariants inductively and use lemmas about closed spec functions instead of exposing their bodies
  • verifier-grounded evaluation β€” report task-level numerator and denominator, reruns, cost, time, syntax errors, cheating, and trusted assumptions separately

What’s in a Proof? Analyzing Expert Proof-Writing Processes in F* and Verus

study

  • proof-process telemetry: record edits, verifier calls, diagnostics, pauses, lookups, and comments as annotated states
  • specification-first decomposition: draft contracts, split subgoals, and replace temporary assumptions incrementally
  • clean-error frontier: keep active verifier errors bounded and interpret each changed obligation before retrying
  • representation-aware specification: choose data structures and quantifier forms that match implementation and solver behavior
  • library retrieval: retrieve and adapt existing lemmas and documentation for the current proof state
  • planner/syntax agent split: have one agent design specifications and another produce language-correct proof code under verifier feedback

WybeCoder: Verified Imperative Code Generation

study

  • hybrid SMT plus interactive proof repair β€” generate imperative verification conditions, discharge routine goals automatically, and use interactive theorem agents for residual goals
  • contract-directed loop invariant synthesis β€” express prefix/state relations, bounds, preservation, exit, and termination for mutable loops
  • sequential compiler-feedback agent β€” alternate complete code generation with verifier diagnostics until success or budget exhaustion
  • subgoal decomposition and proof transfer β€” solve named obligations in parallel, reconstruct proofs, and preserve unchanged proofs across goal-directed edits
  • imperativeness and leakage control β€” allow functional ghost specifications while screening executable code for reference-function wrappers
  • unsatisfiable-contract disproof β€” prove a preconditioned counterexample theorem when no implementation can satisfy the postcondition
  • frame-aware specification engineering β€” state permutation, untouched regions, and decomposition contracts before asking agents to prove algorithms

Reducing the Costs of Proof Synthesis on Rust Systems by Scaling Up a Seed Training Set

study

  • checker-filtered self-synthesis β€” repeatedly generate Rust/spec/proof triples, deduplicate, verify, debug, and retrain
  • tutorial curriculum synthesis β€” seed every verifier knowledge point and oversample weak feature coverage
  • trajectory CoT distillation β€” train on complete agent actions and verifier-feedback reasoning from real system proofs
  • accuracy-at-k cost evaluation β€” report probability of at least one verified proof among K samples with dollars per task

Toward Practical Deductive Verification: Insights from a Qualitative Survey in Industry and Academia

study

  • critical-component targeting β€” rank criticality, adoption, requirement clarity, stability, and realizability, then prove high-value components and use lighter checks elsewhere
  • incremental verification β€” co-develop contracts and code from early design through CI while stabilizing interfaces
  • modular proof decomposition β€” split by code, property, or refinement and restrict solver context with lemmas and abstractions
  • specification validation β€” check formal contracts against intent, documentation, and concrete tests; proof success alone is insufficient
  • guided automation β€” combine default automation with user-controlled context, diagnostics, counterexamples, and intermediate states
  • proof maintenance β€” keep proofs small, repair against prior versions, and monitor assumptions at unverified boundaries
  • hybrid assurance β€” combine deductive verification with testing, static analysis, model checking, runtime monitoring, reviews, and CI

Unfolding Iterators: Specification and Verification of Higher-Order Iterators in OCaml

study

  • permitted/complete iterator contracts β€” specify visited values and termination independently of implementation
  • cursor reduction β€” translate higher-order calls into first-order loops with convergence and client invariants
  • effectful iterator invariants β€” relate mutable state such as stacks to the visited prefix
  • nested-history propagation β€” carry outer accumulator/visited state into inner iterator invariants
  • graph-set iteration contracts β€” use subset, distinctness, and cardinality for vertex/successor traversals
  • fold basis for adapters β€” express iter, map, and filter as degenerate folds with one translation schema

Tunable Automation in Automated Program Verification

study

  • broadcast quantified facts β€” mark proved lemmas as reusable quantified context and group them for import
  • scope and trim automation β€” develop with broad groups, inspect likely UNSAT-core usage, then narrow imports
  • assertion minimization β€” remove hints one at a time and rerun verification to estimate automation gain
  • trigger-guided instantiation β€” choose syntactic patterns that occur at the proof obligation and avoid matching loops
  • selective all-triggers mode β€” broaden trigger sets for user quantifiers only after measuring proof and runtime effects

VeriStruct: AI-assisted Automated Verification of Data-Structure Modules in Verus

study

  • planner decomposition β€” schedule View, invariant, contracts, and proofs as separate generation tasks
  • View abstraction β€” map concrete data structures to logical sequences/maps used in contracts
  • type invariants β€” attach and invoke representation invariants across methods
  • verifier-diagnostic repair β€” classify Verus errors and apply targeted annotation patches
  • syntax-guided prompting β€” include Verus tutorial/library rules and examples in prompts

Synthesizing Proofs Using Proof Sharding and Exploration

study

  • proof sharding β€” split disjunctive preconditions and conjunctive postconditions into independently checked lemmas while reusing existing proofs
  • bounded expression synthesis β€” enumerate typed annotation expressions by a recursive complexity budget
  • trigger synthesis and covering β€” generate E-matching terms and check singles/pairs in covering batches
  • helper-lemma invocation β€” call existing acyclic lemmas with synthesized arguments
  • opaque-definition reveal β€” locally unfold hidden definitions only when a candidate changes verification
  • quantifier elimination β€” expose quantified variables so later trigger and lemma searches can use them
  • parallel proof backend β€” distribute candidate obligations across prover instances with round-robin scheduling

Towards Large Language Model Aided Program Refinement

study

  • law-guided generation: make the model choose a small refinement law and check its logical proviso before accepting code
  • flexible termination rule: require invariant preservation, decreasing progress, and a no-fixed-point assertion for real-valued loops
  • traversal refinement: express list recurrence as an indexed invariant and prove one-step preservation before incrementing
  • active/passive verifier loop: synthesize prompts from the current specification and feed Coq/ATP failures back into bounded search
  • refinement-tree reuse: persist successful specification/code paths and retrieve them for later tasks with matching contracts

Verifying the Rust Standard Library

study

  • rewarded verification challenges β€” publish scoped targets, assumptions, acceptance tests, and reviewable pull requests so a changing library can be verified by a distributed community
  • MIR nondeterministic harness synthesis β€” enumerate eligible monomorphic functions, call them with symbolic any values, and check contracts or supported UB on all explored paths
  • invariant-aware input generation β€” distinguish bit-valid representations from semantic safety invariants and assume only explicit is_safe predicates
  • bounded versus inductive loop proofs β€” use unwinding assertions for finite bounds or loop contracts for invariant-based proofs independent of the bound
  • separation-logic ownership predicates β€” recursively own linked heap nodes with separating conjunction and transfer resources through pre/postconditions
  • multi-tool continuous verification β€” combine model checking, refinement types, and separation logic in CI because each covers different Rust behaviors
  • proof-pipeline performance engineering β€” benchmark compilation, then apply parallelism, caching, ordering, and stubbing while recording the resulting trust boundary

Teaching Code LLMs to Reason with Intermediate Formal Specifications

study

  • executable checkpoint specifications β€” place Boolean obligations at internal states so traces expose algorithmic commitments before final output
  • mutant-guided supervision β€” retain syntax-preserving mutants that pass some tests and fail others, then train on assertions that reject them
  • Explore–Submit refinement β€” iteratively execute candidate assertions on references and mutants, using localized feedback before acceptance
  • dual specification/code training β€” fine-tune separate insertion and complete-program tasks over accepted annotated programs
  • four-way specification evaluation β€” measure executable validity, reference correctness, eligible-mutant completeness, and downstream repair separately
  • evidence-driven repair β€” feed violated checkpoint assertions to correctness checkers and repair agents as machine-checkable local evidence

The Secrets Must Not Flow: Scaling Security Verification to Large Codebases

study

  • Core/Application decomposition β€” isolate a protocol implementation and expose an invariant-bearing API
  • I/O independence taint analysis β€” reject secret-dependent protocol-irrelevant I/O across the whole codebase
  • Core refinement with I/O permissions β€” prove protocol-relevant operations are trace-included in a verified model
  • static Application discharge β€” use alias, escape, pass-through, locality, and memory-access analyses to satisfy Core assumptions
  • virtual I/O boundaries β€” model callbacks and module transfers as protocol events with permissions
  • ghost permission instrumentation β€” track local, invariant, and global shared heaps to compose Core proofs with Application code

VerifyThisBench: Generating Code, Specifications, and Proofs All at Once

study

  • end-to-end verification benchmark construction β€” turn natural-language, competition-vetted challenges into tasks requiring specification, implementation, and machine-checked proof
  • unified verifier execution β€” pin tools, prompts, hardware, timeout, and pass criterion so results are comparable across frameworks
  • diagnostic iterative refinement β€” feed compiler and verifier errors plus prior attempts back to the model for bounded repair rounds
  • artifact deletion ablations β€” remove code, specifications, or loop invariants separately to measure the corresponding model skill
  • outcome taxonomy β€” distinguish no generation, compilation failure, timeout, partial proof, and complete success
  • independent coherence checking β€” assess whether a passed formal specification matches the original natural-language intent
  • per-tool/per-model evaluation β€” retain framework-specific rates because model strengths and syntax compatibility differ

Refactoring and Equivalence in Rust: Expanding the REM Toolchain with a Novel Approach to Automated Equivalence Proofs

study

  • rust-analyzer semantic extraction β€” delegate Extract Method to RA’s inferred types, lifetimes, generics, and control-flow semantics
  • persistent semantic workspace β€” merge a cached standard-library graph with a minimal single-file graph for fast complete inference
  • compiler-guided lifetime repair β€” iterate signature and call-site edits from borrow-checker diagnostics and lifetime-elision rules
  • translation-based equivalence proof β€” translate original and refactored Rust through CHARON/AENEAS and prove equality in Coq

Sound Borrow-Checking for Rust via Symbolic Semantics

study

  • local-and-hybrid simulation proofs β€” replace a global state relation with local rewrites, prove preservation in a hybrid union language, and recover endpoint simulation through stability
  • heap bridge for valued borrows β€” relate borrow/loan states to pointers and locations, then connect locations to an explicit heap with a global address invariant
  • step-indexed divergence β€” add fuel to big-step semantics so safe divergence is represented and simulated across languages
  • symbolic region borrow checking β€” instantiate function signatures with fresh symbols and region abstractions, then accept only states related to the signature’s final state
  • directional region merging β€” use a one-way merge of loan/borrow pairs to abstract lifetimes without allowing cyclic ownership states to pass
  • join-collapse analysis β€” pointwise-join branch environments with origin markers, collapse duplicates, and require an unmarked result before continuing
  • alpha-equivalent loop fixpoints β€” normalize anonymous mappings and compare ownership shapes up to fresh loan/region identifier substitution
  • deterministic-backend bisimulation β€” compose forward simulations with deterministic PL execution to obtain a backward direction for programs that pass the checker

Quantifying SMT Solver Instability for Formal Verification

study

  • mutant-family stability testing: generate semantics-preserving query variants and measure runtime spread
  • coefficient-of-variation reporting: normalize spread by baseline difficulty and expose timeout censoring
  • runtime-guided query normalization: search equivalent lemma and trigger structures for faster, more stable solving
  • proof-quality separation: report truth, acceptance, cost, and stability as distinct measurements

Surveying the Rust Verification Landscape

study

  • property-and-dependency prioritization: classify safety, functional, and domain properties, then start at foundational libraries
  • bounded exploration with explicit residual bounds: use model checking for finite behavior and report what remains unbounded
  • intrinsic contract extraction: translate documentation into reviewed machine-readable assumptions and track implementation guarantees separately
  • verifier choice by trust and annotation budget: match automation, unsafe support, proof strength, and human effort to the target

PropertyGPT: LLM-driven Formal Verification of Smart Contracts through Retrieval-Augmented Property Generation

study

  • intermediate property language β€” constrain generated invariants, pre/postconditions, and rules in a compiler-checked grammar
  • code-keyed retrieval augmentation β€” embed critical code, retrieve similar audited examples, and use their properties as one-shot context
  • type-specific prompting β€” use separate strict templates for rules and function contracts with symbol and name restrictions
  • compiler-feedback repair β€” iterate on compiler diagnostics with a bounded retry loop, then statically check target-function coverage
  • weighted candidate ranking β€” combine raw and summary similarities to choose a prover budget while retaining auditability
  • strongest-postcondition verification β€” symbolically execute source semantics, prove modular obligations, and investigate BMC counterexamples
  • conservative semantic modeling β€” represent external calls and nonlinear operations explicitly, recording assumptions and bounds

Resource Specifications for Resource-Manipulating Programs

study

  • first-class resources β€” represent conserved assets directly in specifications with explicit operations
  • coupling invariants β€” two-state invariants tying resource state changes to program state changes, enforced as postconditions
  • default conservation obligations β€” make create/destroy/transfer semantics enforce conservation automatically
  • concise contract comparison β€” compare specification lines, AST size/depth and verification time against a state-based baseline

ProofWright: Towards Agentic Formal Verification of CUDA

study

  • permission contracts: use quantified and conditional ownership permissions, index helpers, and loop invariants to prove memory safety and race freedom
  • persistent annotation guide: accumulate checked examples and verifier error repairs into a reviewed, domain-specific proof recipe
  • graph-to-library specification: turn a high-level program into a typed operation graph and reusable formal operator definitions
  • theorem-based semantic lowering: prove an optimized implementation equivalent in a theorem prover, then lower the theorem to executable-code postconditions

Sound Borrow-Checking for Rust via Symbolic Semantics (Long Version)

study

  • simulation-chain soundness β€” prove abstract-to-concrete forward simulation and, for accepted programs, concrete-to-abstract backward simulation
  • borrow-centric LLBC modeling β€” represent loans, borrows, reborrows, moves, and invalidation explicitly
  • heap refinement β€” relate borrow-centric states to pointer/location semantics through local transformations
  • symbolic function checking β€” initialize fresh values and region abstractions from signatures, then check the body against expected outputs
  • partial-state framing β€” compose local symbolic states with unchanged disjoint caller frames
  • join and collapse β€” merge branch environments conservatively, track origins, and normalize marked duplicate borrows
  • identifier-renamed loop fixpoints β€” iterate joins while comparing borrow graphs up to fresh loan/region renaming
  • heuristic-failure accounting β€” require mark-free collapse and bounded convergence, treating failures as incompleteness

Place Capability Graphs: A General-Purpose Model of Rust’s Ownership and Borrowing Guarantees

study

  • compiler-connected place capability graphs β€” represent every MIR program point with capability-bearing places and lifetime projections derived from Rust’s own analyses
  • unpack and pack ownership transitions β€” split composite capabilities to check field moves/borrows and merge them only when all fields are available
  • lifetime-projection borrow tracking β€” summarize stored borrow sets and connect lenders, references, dereferences, and expirations with typed edges
  • future projections for nested reborrows β€” defer updates to inaccessible nested borrow sets and materialize them when the owner becomes available
  • path-labelled graph joins β€” retain branch-specific borrow flow while sharing common graph structure at CFG joins
  • abstraction edges for calls β€” summarize returned and mutated borrows from function signatures without inlining callees
  • compiler-guided loop invariants β€” derive blocker/blocked places and replace loop subgraphs with a borrow-preserving invariant graph
  • PCG-driven verifier annotations β€” turn pack/unpack, loop, and abstraction transitions into Prusti-style separation-logic proof obligations

SaltBench: A Referee-Gated Protocol for Measuring Method Effects in Machine-Checked Software Work

study

  • referee isolation and world freeze: pin toolchain, hide references, fence network, and freeze predictions before scoring
  • AST anti-weakening gates: reject admits, assumptions, external bodies, and unauthorized changes before invoking Verus
  • budget-stop semantics: distinguish halt, failure, inexpressible, and pass in the result schema
  • external adjudication records: keep runner, parser, referee output, cost, and trust-boundary facts outside agent control

Reasoning about Interior Mutability in Rust using Library-Defined Capabilities

study

  • library-defined implicit capabilities: annotate interiorly mutable APIs with conditional or unconditional facts such as local, immutable, unique, and deny-reference properties, then derive client framing and aliasing
  • capability implication and framing: propagate capabilities through fields and pointees, weaken them, use incompatibility for non-aliasing, and carry immutable or unique facts across statements
  • conditional capabilities: guard a capability with a runtime predicate such as Arc::strong_count(self) == 1 so proofs follow the state actually established by a branch
  • purity footprints: classify methods as pure, pure-memory, or pure-unstable and add postconditions for unstable reads to control framing
  • conversion-method validation: justify shared-reference immutability by an observationally equivalent rewrite that keeps a converted reference alive across an unknown call
  • first-order capability encoding: model versioned memory, root places, snapshots, and capability axioms in Viper/Boogie for automated verification

StateSync-GKR: Machine-Checking the Trust Chain from Sparse-Merkle State Transitions to GKR Verification

study

  • semantic transition model β€” define operations, states, witnesses, and validity before compiling or proving protocol properties
  • residual circuit compiler proof β€” encode constraints as zero residuals and prove circuit acceptance iff a canonical valid witness exists
  • layered GKR assembly β€” combine multilinear layer identities, imported sumcheck, two-point carries, and induction into a chain-event bound
  • semantic-to-protocol composition β€” transfer invalid transition semantics through compiler equivalence to a bounded bad-chain event
  • nonvacuity activation β€” register concrete premise witnesses and fire every theorem’s assumptions so vacuous proofs are detected
  • partial refinement ledger β€” anchor Rust clauses to model facts while naming open obligations, black boxes, and undischarged correspondence premises

Schwarz: Solver-Aware Agentic Program Verification

study

  • SMT-local lemma repair: decompose a timeout or unknown into a checked, program-point obligation and lift successful lemmas back into source
  • theory-aware policy: choose ghost summaries, arithmetic, bit-vector, memory, or quantified encodings according to the obligation’s semantics
  • proof snapshots: cache validated boundaries for local repair, then regenerate and check the entire proof from original source
  • short diagnostic timeouts: fail local hypotheses quickly so the agent can test context and theory alternatives
  • trust-boundary harness: keep lowering, solving, and concrete replay deterministic while the LLM searches untrusted artifacts

Scaling Verification of Cryptographic Software with Aeneas, Rust, and Lean

study

  • Aeneas extraction: translate ownership-safe Rust MIR into pure Lean values and explicit failure results
  • monadic step automation: advance extracted code one operation at a time while discharging preconditions and postconditions
  • proof-only decomposition: fold large extracted functions with kernel-checked equality rewrites
  • theory-specific tactics: combine scalar/list simplification, arithmetic-domain conversion, and bitvector decision procedures
  • multi-target extraction: merge per-architecture MIR while preserving target-specific branches
  • intrinsic shims and axioms: model vendor instructions over lane arrays or reviewed standard-linked axioms
  • ghost streaming state: relate incremental runtime APIs to one-shot standards through absorbed and emitted histories
  • specification-level termination: prove finite-state permutation or bound properties before lifting termination to code

OSVBench: Benchmarking LLMs on Specification Generation Tasks for Operating System Verification

study

  • fixed declarative invariants β€” freeze safety predicates while generating state-machine transitions so verification cannot pass by weakening the property
  • typed state-machine synthesis β€” constrain generated specifications with an explicit AST, extracted constants, and utility functions
  • long-context syscall prompting β€” combine assumptions, programming model, oracle examples, and a target description in a structured prompt
  • realistic vulnerability injection β€” test specifications against pointer, privilege, leak, overflow, and bounds mutations while holding intent fixed
  • oracle-equivalence evaluation β€” compare generated and oracle verifier results across implementations, separating syntax from semantic errors
  • verifier-guided self-repair β€” feed generated specifications and kernel diagnostics back for bounded repair rounds

Large Language Models and Language Server Protocol: a match made in context

study

  • context-indexed generation β€” index project symbols and contracts, then give only legal, relevant context to a parser-gated model request
  • model-based contract synthesis β€” generate candidate preconditions and postconditions, filter names and calls, and retain additions only after the paper’s stated validity checks
  • isolated body repair β€” test a generated body in a temporary override or harness and copy it back only after verification
  • verifier-feedback transactions β€” feed diagnostics into bounded retries while restoring the last stable source on failure
  • granularity and ablation measurement β€” compare feature versus class repair and full versus minimal prompts with explicit success denominators, attempts, time, and cost

A Hybrid Approach to Semi-automated Rust Verification

study

  • safety-boundary hybrid: send safe Rust to Creusot and unsafe modules to Gillian-Rust through shared contracts
  • ownable representation predicates: connect concrete pointer heaps to abstract sequences with Ownable and separation logic
  • guarded mutable-borrow automation: unfold, mutate, fold, and resolve RustBelt-style lifetime guards automatically
  • prophecy-based functional correctness: specify mutable-reference final values with ^ and parametric prophecy observations
  • dual contract compilation: elaborate Pearlite hybrid attributes into Creusot and Gilsonite specifications
  • symbolic unsafe execution: use layout-independent heap objects, pointer arithmetic, path conditions, and predicate unfolding

Lemur: Integrating Large Language Models in Automated Program Verification

study

  • assumption-trail decomposition β€” represent a hard invariant as verifier-checked implications through a trail of smaller predicates
  • sound propose/decide/repair/backtrack calculus β€” search with explicit transitions while proving LLM suggestions before accepting them
  • stable case split β€” prove both q and not q implications when q is stable, even if q itself is not invariant
  • bounded terminating search β€” cap proposals and require a decreasing subgoal rank to return SUCCESS, FAIL, or UNKNOWN
  • verifier-facing prompt grammar β€” use named program markers, strict assertion output, repeated sampling, and AST deduplication
  • backend cooperation β€” combine LLM high-level predicates with BMC, k-induction, abstraction, or Verus SMT checking

Neuro-Symbolic Software Verification: Hyper-charging Local Language Models with Symbolic Reasoning at Scale

study

  • ESBMC invariant oracle β€” classify atomic and whole-program invariant obligations as provable, disprovable, or unknown, accepting only successful checks
  • Phase 0 baseline β€” run the verifier on the unannotated program and synthesize only after an unknown result
  • symbolic atom enumeration β€” instantiate variable/constant relations, verify each atom, and conjoin the provable store
  • verifier-feedback refinement β€” prompt a local LLM with P/D/U, decompose failed formulas, and recombine verified atoms
  • CoT prompt families β€” guide proposals with inductive, Hoare, or Horn-clause few-shot examples while retaining verifier gating
  • ToT verifier scoring β€” scout four prompt strategies, score by verified atoms, and refine the top two with bounded rounds
  • dual-LLM correction β€” pass one model’s proposal and verifier stores to a second model, then independently verify and recombine outputs

Interactive Safety Verification of Distributed Protocols by Inductive Proof Decomposition

study

  • inductive proof graph β€” represent lemma dependencies and one action node per transition branch
  • relative induction supports β€” prove each lemma from a small support subset instead of the full conjunction
  • CTI-guided backward development β€” choose a failed node and add a lemma that excludes its localized counterexample
  • local variable slicing β€” restrict candidate support predicates to precondition, lemma, and update cone variables
  • node-local proof status β€” track discharged action nodes and graph structure as an interpretable progress measure
  • bounded CTI plus final proof β€” use TLC/Apalache for finite counterexamples and TLAPS for unbounded validation
  • guarded-action modeling β€” expose named transition branches and deterministic update expressions for decomposition
  • induction-cycle analysis β€” inspect strongly connected lemma dependencies to understand distributed proof structure

Lessons Learned So Far From a Community Effort to Verify the Rust Standard Library (work-in-progress)

study

  • symbolic Kani harness β€” use kani::any() plus assertions and loop invariants for bounded safety proofs
  • property-specific verifier selection β€” combine Kani, VeriFast, Flux, and deductive tools by code property
  • shadow-memory dataflow β€” track initialization or pointer provenance as finite-state client obligations
  • generic instantiation harnesses β€” run concrete monomorphizations to approximate generic-function coverage
  • concurrency decomposition β€” justify sequential proofs via ownership or use concurrency-capable verification
  • challenge traceability β€” tie unsafe functions to peer-reviewed CI-checked verification challenges

Leveraging Large Language Models for Automated Proof Synthesis in Rust

study

  • segment-interface synthesis β€” split long functions and use GPT-generated postconditions as the next segment’s preconditions
  • verifier-checked invariant generation β€” ask GPT-4 for Verus invariants and retain only code that Verus accepts
  • read/write invariant propagation β€” copy incoming predicates that read but do not write loop variables into loop invariants
  • bounded error-feedback repair β€” retry with exact Verus diagnostics and accept only a subsequent verified proof

KaPilot: LLM-Assisted Generation of Kani Specifications for Unsafe Rust Verification

study

  • documentation-derived safety requirements β€” extract atomic, source-traceable memory and panic properties before writing contracts
  • harness and metadata preparation β€” build symbolic-input Kani entry points and store type/API context for generation
  • implementation-blind contract generation β€” generate Kani preconditions, postconditions, and invariants from requirements, metadata, API knowledge, and few-shot examples
  • semantic precheck β€” reject uncovered or badly strengthened/weakened contracts before verifier execution
  • contextual repair and vacuity testing β€” feed counterexamples and failure classes back, then append an impossible postcondition to expose unreachable assumptions
  • shuffle-and-implication selection β€” combine weakest preconditions, strongest postconditions, and compatible loop invariants across verified candidates

Kani: A Model Checker for Rust

study

  • bounded proof harnesses β€” use kani::any, checked assumptions, assertions, and a complete unwind bound to exhaustively check finite executions and Rust safety properties
  • function and loop contracts β€” prove preconditions, postconditions, frame conditions, invariants, and integer decreases measures, then reuse verified behavior compositionally
  • quantified specifications β€” express forall and exists over finite or SMT ranges, selecting a backend while checking instantiation and range cost
  • verified and environmental stubs β€” replace a proved callee by its contract, or model FFI and clocks with explicit trusted nondeterministic abstractions

study

  • trace-linked specification context: connect requirements, code locations, assumptions, obligations, and evidence in a queryable graph
  • evidence-separated repair loops: handle syntax, counterexamples, and coverage as distinct workflows
  • coverage-directed specification growth: use uncovered behavior to generate and track additional obligations
  • provenance-preserving retrieval: retain links across edits so repairs remain tied to original intent

Executable JavaScript as a Checkable Specification Language: A JS-SAM Case Study on SysMoBench

study

  • trace-window conformance: instrument the real system and replay (pre, action, post) windows against a generated transition model
  • observable-state projection: compare only implementation-visible keys while allowing private model bookkeeping
  • executable transition contract: require a deterministic self-contained module with init, actions, state projection, reset, and finite intents
  • sandboxed specification execution: run untrusted generated code in a resource-limited no-network container
  • counterexample repair: regenerate from complete transition failures, then test held-out domains and inspect for memorization
  • semantic-state accounting: distinguish checker step counts from unique reachable states

Can LLMs Reason Like Automated Theorem Provers for Rust Verification? VCoT-Bench: Evaluating via Verification Chain of Thought

study

  • VCoT lifting: transform a complete Z3 trace into mapped Verus assertions, invariants, and lemmas using global context
  • rule-specialized completeness checking: aggregate high-level proof segments, filter trivial/redundant facts, and require explicit Z3-to-Verus mappings
  • transformer–checker iteration: regenerate the whole lifted proof when targeted checkers find missing essential steps
  • proof pruning: remove justified trivial, normalization, reassertion, and definition-expansion steps, then recheck
  • verifier-in-the-loop repair: feed Verus syntax/semantic diagnostics to a repair agent until compilation and verification succeed
  • semantic-block benchmark construction: remove lemma, invariant, or assertion blocks at ratio, type, and location strata
  • dual scoring: separate Verus syntax checks, semantic judging, and weighted overall accuracy

Can LLMs Enable Verification in Mainstream Programming?

study

  • staged information modes β€” vary whether the model receives code, contracts, specifications, or natural language to isolate automation difficulty
  • verifier-in-the-loop repair β€” pass verifier diagnostics back for bounded candidate refinement
  • specification implication validation β€” prove generated contracts imply a human- or benchmark-owned reference contract
  • deterministic syntax cleanup β€” repair recurring language syntax before another model call while preserving semantics
  • error taxonomy routing β€” map type, invariant, assertion, timeout, and arithmetic failures to targeted repair strategies

ExVerus: Verus Proof Repair via Counterexample Reasoning

study

  • source-level SMT counterexample synthesis β€” translate a failing Verus obligation into readable Z3Py over source variables and solve for concrete violating states
  • loop-based counterexample validation β€” execute injected states against loop-start/end assertions in Verus to filter invariant examples
  • triage-directed mutation β€” classify examples as reachable or spurious and select replace or strengthen mutators
  • blocked-counterexample ranking β€” rank candidate proof mutations by validated examples they eliminate, then re-verify with Verus

Flux: Liquid Types for Rust

study

  • indexed refinement APIs β€” index values and collection measures in types so safety preconditions become ordinary typed calls
  • ownership-aware strong updates β€” use Rust ownership and strong references to track mutation that changes a refinement index
  • polymorphic quantified invariants β€” encode universal container properties in refined element types and infer them with quantifier-free Horn constraints
  • liquid loop inference β€” spatial mapping, Horn generation, and fixpoint solving synthesize loop invariants without user annotations

Enchanting Program Specification Synthesis by Large Language Models Using Static Analysis and Program Verification

study

  • loop-aware call graph: represent functions and loops as proof nodes and generate contracts from callees upward
  • hierarchical specification rounds: ask for local candidates, validate them, retain them, and revisit nodes until adequacy or a fixed bound
  • satisfiability/adequacy filter: reject illegal or inconsistent clauses, then separately test whether the target assertion is proved
  • few-shot local prompting: give the LLM only the component, relevant callees, a placeholder, and matching specification examples
  • deletion simplification: remove clauses one at a time and replay the target proof to obtain a smaller checked specification

Corten - Foundational Verification of Rust Programs

study

  • THIR source-near embedding β€” transpile Rust THIR with hax2rocq into Rocq so proof goals pretty-print to source-level syntax
  • fractional ownership forest β€” represent values as recursive points-to facts with rational permissions and abstract layout
  • move and reborrow WP β€” exchange initialized ownership for uninitialized ownership and return exclusive borrows through separating implications
  • control-flow WP monad β€” model return, break, continue, match failure, and normal sequencing with tagged outcomes and guards
  • syntax-directed expression WPs β€” separate place/value contexts and structurally account for moves, temporaries, overflow, tuples, ADTs, and calls
  • modular function contracts β€” prove persistent fn_item_ok specifications and reuse them at every call site
  • ITree adequacy β€” derive event-aware WPs from interaction-tree denotations and prove semantic rules incrementally
  • definition sealing β€” expose one-step block lemmas while keeping recursive WPs opaque
  • independent WP reordering β€” evaluate side-effect-free pattern constants before scrutinees under a sealed continuation
  • join-point reasoning β€” discharge branches or loop iterations against one shared intermediate postcondition and prove the continuation once
  • defunctionalized continuations β€” replace closure trees with sealed first-order sequential and handler stacks
  • deterministic WP automation β€” normalize, dispatch by syntax, sequentialize control flow, and solve separation side obligations with fallback manual proof
  • hand-oracle construct testing β€” validate axioms against documented Rust behavior separately from ITree adequacy
  • invariant-driven allocator proof β€” preserve abstract free-list representation and ownership through &mut self calls while hiding concrete state

Dissect-and-Restore: AI-based Code Verification with Transient Refactoring

study

  • transient loop lifting β€” extract nested loops into one-loop helpers, verify, then restore original structure
  • proof-tree decomposition β€” recursively split complex obligations into helper lemma nodes with tracked code and contracts
  • feedback-driven repair β€” regenerate annotations using verifier diagnostics and bounded retries
  • rollback with annealing β€” DFS search with parent rollback and decreasing model temperature after failures
  • proof-outline guidance β€” use optional natural-language strategy to steer generated induction and helper lemmas
  • restoration verification β€” recompose verified fragments and rerun the verifier on the original shape

Combining Mechanical and Agentic Specification Inference for Move

study

  • mechanical WP baseline β€” lower contracts to a reference-free, instrumented form and derive aborts, frames, and postconditions by backward propagation
  • agent loop-invariant synthesis β€” infer inductive counter, sequence, arithmetic, and resource facts, then let the prover reject invalid proposals
  • contract simplification β€” replace vacuous or solver-hostile WP formulas with bounded, readable equivalents and checked triggers
  • timeout escalation β€” strengthen invariants, add helpers, add lemmas, and use proof scripts without weakening properties
  • state-transition resource specs β€” use frames, old-state values, and intermediate snapshots to specify multi-address global updates
  • enforceable agent plugin β€” combine ordered skills, inferred markers, edit hooks, cached MCP tools, and prover feedback in an idempotent workflow

Baldur: Whole-Proof Generation and Repair with Large Language Models

study

  • whole-proof generation β€” fine-tune on theorem-to-complete-proof pairs, sample many scripts, and accept only prover-checked candidates
  • error-conditioned repair β€” provide a failed proof and exact verifier diagnostic to a repair model, then reverify its replacement
  • theory-file context β€” prefix a theorem with nearby definitions and proofs so generation can copy or adapt local patterns
  • repeated repair search β€” chain generation and repair attempts under a fixed inference budget, checking every result
  • verified ensembles β€” combine independent model samples or complementary provers and count the union of accepted proofs

Borrowable Fractional Ownership Types for Verification

study

  • borrowable fractional ownership β€” combine permission fractions with ordered borrow lifetimes to type dynamic aliases
  • ownership-splitting rules β€” use share/borrow addition, full-permission assignment, alias redistribution, and lifetime end
  • prophecy-pair reduction β€” replace each reference with current and future values in a heap-free target
  • TXZ/PFZ invariants β€” connect positive ownership to current values and zero ownership to prophecy values
  • alias and prophecy chains β€” preserve values across reborrowing with a sequence of linked prophecy equalities
  • simulation soundness β€” prove target safety implies source safety through a step-indexed relation

Beyond Postconditions: Can Large Language Models infer Formal Contracts for Automatic Software Verification?

study

  • NL2Contract inference β€” translate code-local natural language into typed preconditions plus postconditions and verify the result
  • verification-guided soundness β€” conjoin the trusted reference precondition with inferred postconditions and check the reference in one verifier call
  • mutation completeness β€” generate valid-input mutants and require verifier-found violations to measure discriminative power
  • exception contract encoding β€” wrap precondition assertions as invalid-input exceptions and postconditions as executable assertions
  • context-built prompting β€” include signatures, docs, imports, globals, class members, and called APIs to reduce hallucinated contracts
  • verifier plus testing β€” reuse executable contracts as CrossHair assertions and Pynguin test oracles while preserving valid-input domains

Crux, a Precise Verifier for Rust and Other Languages

study

  • symbolic unit tests β€” instantiate symbolic Rust values, constrain them with crucible_assume!, assert properties with crucible_assert!, and search exhaustively for counterexamples
  • executable extensional equality β€” compare bit-precise implementation outputs and panic behavior with Cryptol, hacspec, or Rust reference functions
  • compositional specifications β€” prove a helper once with #[crux_spec_for], enable it in callers, and replace expensive calls with its simpler model
  • MIR-to-SMT symbolic execution β€” extract MIR, translate to Crucible, merge branch states, and discharge negated assertions with an SMT solver
  • bounded memory modeling β€” represent typed allocations and reference paths while rejecting most raw-layout casts and pointer arithmetic
  • factorized loop verification β€” prove one-iteration helper equivalences and compose them to make large cryptographic loops tractable

Compositional Reasoning for Side-effectful Iterators and Iterator Adapters

study

  • four-component iterator contracts β€” define produced, completed, step, and transitive leadsto, then enforce Q1–Q5 on next
  • closure call descriptions β€” connect generic adapter steps to closure arguments, results, and captured-state transitions
  • compositional ghost histories β€” store intermediate iterator/closure states and use prefix plus quantified call relations for unbounded chains
  • snapshot-based two-state specs β€” compare whole data-structure states as mathematical values suitable for SMT
  • out-of-band conditional contracts β€” attach iterator postconditions through an extension trait and type-dependent external specification

Assured Automatic Programming via Large Language Models

study

  • hard/soft intent extraction β€” partition verification conditions into preserved facts and repairable disagreements
  • prioritized co-evolution repair β€” synthesize and validate multiple patches for one failing trace while preserving hard facts
  • artifact conformance β€” iteratively align program and specification with verifier checks
  • test-as-intent refinement β€” translate tests into specifications and use trusted tests to reject vacuous contracts
  • postcondition completeness β€” score contracts by the fraction of output mutations they reject
  • formal-to-natural intent summary β€” summarize trusted contracts and test whether regenerated code verifies

An Empirical Study of LLM-Generated Specifications for VeriFast

study

  • separation-logic heap contracts β€” use recursive predicates, points-to ownership, loop footprints, folds/unfolds, and inductive lemmas to verify heap behavior
  • staged retrieval prompting β€” select a verifier-aware prompt and model on pilots, retrieve examples, and split context at function boundaries
  • behavior-drift auditing β€” compare generated code and contracts semantically before treating verifier acceptance as success
  • diagnostic repair taxonomy β€” classify compiler, heap, lemma, invariant, source, and logical failures and repair the smallest missing obligation
  • symbolic-heap feedback β€” expose verifier ownership state and combine automatic open/close inference with LLM repairs

AutoVerus: Automated Proof Generation for Rust Code

study

  • invariant candidate generation and linear merging β€” generate five loop-invariant programs, filter and rank by (V,E), then merge complementary annotations under Verus checks
  • monotonic generic refinement β€” sequentially add propagated preconditions, lengths, quantifier fixes, and conditional invariants while never reducing verified-function count
  • error-directed repair agents β€” map Verus diagnostics to specialized repair prompts and iterate with verifier acceptance as the gate
  • Houdini annotation minimization β€” test subsets of generated annotations to retain a sufficient proof

AxDafny: Agentic Verified Code Generation in Dafny

study

  • verifier-guided repair loop β€” generate complete annotated code, run preservation/anti-bypass checks and Dafny, then repair from diagnostics with bounded memory
  • contract-preservation filter β€” require original requires/ensures to remain a subset of the candidate
  • anti-bypass static and LLM review β€” reject assume, {:axiom}, {:verify false}, {:extern}, and semantic tautologies
  • counterexample feedback β€” enable Dafny counterexamples to expose invalid proof obligations concretely
  • dual verification/runtime evaluation β€” report machine verification and compiled test performance as separate metrics
  • curated verified-code benchmark β€” validate fixed specifications with parsing, type resolution, mutation, LLM, and manual checks before use

Auto-active Verification of Graph Algorithms, Written in OCaml

study

  • contract plus variant β€” attach preconditions, postconditions, and a decreasing termination measure to existing recursive code
  • modular model signatures β€” specify graph operations against an abstract finite-domain and successor model
  • representation invariants β€” encode closure and edge symmetry on graph records and preserve them through mutators
  • boundary axioms β€” assume algebraic properties of generic comparison operations at module interfaces
  • certificate validation β€” prove a small witness checker and separately establish producer safety
  • path predicate correspondence β€” relate executable list checks to a quantified sequence path definition
  • BFS soundness and completeness β€” use queue reachability and frontier invariants to prove both true and false results
  • ghost boundary extraction β€” find a predicate-crossing edge along a path to discharge existential completeness claims
  • proof-oriented data-structure change β€” add marking state and ghost sets to make queue invariants disjoint and simpler
  • prover-guided splitting β€” split verification conditions and add small lemmas when SMT automation cannot infer them

study

  • iterative replacement with compiler feedback β€” fill fixed formal holes, run the verifier, and retry from the original source using diagnostics while rejecting bypass constructs
  • persistent verifier agent with library search β€” keep one context, search lemmas through a Lean/Verus service, submit code through a schema-checked tool, and scale the call budget
  • state-based parent/subagent tree β€” branch short proof-state explorations, commit or undo partial states, and let a parent choose the next strategy
  • context endpoint tree search β€” save full subagent transcripts, resume promising endpoints, and fork new advice from retained evidence to avoid repeated searches
  • verifier-gated anti-cheating harness β€” count success only after kernel verification and explicit rejection of incomplete, axiomatic, unsafe, or native-code escapes

Automated Proof Generation for Rust Code via Self-Evolution

study

  • Verus-compatibility translation β€” translate unsupported Rust constructs, compile with Verus, and discard non-compiling programs
  • Specification score filtering β€” retain candidates with at least 80% correctness and 60% mutation completeness, up to three per function
  • Verifier-filtered self-evolution β€” fine-tune on proofs that Verus verifies and iterate rounds until gains plateau
  • Error-conditioned whole-proof repair β€” train on rejected proof, Verus diagnostics, and later verified proof, then reverify repairs

APOLLO: Automated LLM and Lean Collaboration for Advanced Formal Reasoning

study

  • compiler-guided staged repair β€” feed verifier diagnostics into syntax cleanup, placeholder extraction, solver attempts, recursive repair, and final reverification
  • sorrifier obligation extraction β€” turn invalid nested proofs into compilable placeholders that expose local sub-lemmas without accepting them as proved
  • solver-first local closure β€” try deterministic arithmetic and rewriting automation on each obligation before invoking an LLM
  • recursive sub-lemma proving β€” recurse on unresolved local contexts, then assemble and reject any proof containing placeholders

Automatic Generation of Formal Specification and Verification Annotations Using LLMs and Test Oracles

study

  • static test oracles: retain statically checked output assertions so contracts must imply concrete intended results
  • negative specification tests: uncomment assertions that should fail to expose weak preconditions or overly strong postconditions
  • staged verifier-feedback repair: generate annotations, run the verifier, and iteratively repair the complete program from exact diagnostics
  • proof-helper pattern catalogue: supply sequence, recursion, quantifier, and test-helper templates for recurring SMT failures
  • dependency-aware minimization: delete generated declarations and clauses only when a short verifier run still succeeds
  • multimodel candidate selection: rank parallel model outputs by syntax, verification, size, and verification time

Automated Lemma Discovery in Agentic Program Verification

study

  • semantic versus proof-targeted VCs β€” derive an agent-readable source-level obligation but prove the actual generated VC through the trusted verifier
  • offline obligation-aligned lemma synthesis β€” compare both VC representations and emit machine-checked helper lemmas plus an application plan
  • verified dynamic lemma library β€” retain only compiled lemmas and their dependencies for retrieval during later proof states
  • feedback-guided lemma adaptation β€” refine types, definitions, or statements from proof-assistant errors, then prove each refinement separately
  • helper-role taxonomy β€” classify lemmas as bridge, reduce, rewrite, or strengthen to guide retrieval and measure utility
  • program slicing for semantic analysis β€” send only code/specification portions relevant to the target obligation to control context size
  • ablation-based proof-agent evaluation β€” disable offline, online, or semantic-analysis components and compare denominatored VC success
  • trust-boundary preservation β€” keep the LLM outside the trusted base by importing no statement that the proof assistant has not checked

Agentic Proving for Program Verification

study

  • staged specification certification β€” generate a contract, then separately prove its relation to a reference while classifying mismatches and defects
  • implementation certification β€” generate executable code under a fixed contract and prove the top-level correctness theorem
  • issue-aware agent diagnosis β€” require counterexamples and component-level classifications for failures instead of binary pass/fail
  • guided multi-interpretation synthesis β€” use examples, boundary policies, and multiple candidate contracts to expose ambiguity

A Complete, Formal Semantics for Rust Source Code

study

  • four-layer LAGC construction β€” separate local evaluation, trace well-formedness, global trace composition, and initial/final program semantics
  • symbolic trace concretization β€” use symbolic states and events locally, then concretize and chop them into shining traces under a well-formedness predicate
  • context-sensitive next with holes β€” compute the next sub-expression under value/place context and rebuild the enclosing expression through a single hole
  • modular Rust expression rules β€” model arithmetic overflow, references, assignments, calls, returns, loops, and panic as independent local rules with explicit events
  • continuation-stack composition β€” compose local traces with call-stack rules and define finite maximal or infinite-limit program traces
  • maximally permissive async semantics β€” represent futures, handles, await suspension, and arbitrary task selection as event-constrained task-stack transitions
  • queue-and-tick Tokio model β€” add schedule events, local/global queues, ticks, and mutually exclusive composition rules for current-thread Tokio
  • quiescent fairness by distance β€” prove that an enabled task executes or decreases a well-founded scheduling-distance measure at quiescent states
  • bounded Tokio fairness β€” derive a finite scheduling bound from task-count and poll-time bounds
  • trace-suffix soundness for dynamic logic β€” prove symbolic-execution calculus rules by showing transformed programs’ traces share a finite prefix and suffix
  • loop-scope invariant proof β€” encode break/continue with a loop-scope flag and use anonymizing updates plus induction to preserve invariants

ANCORA: Learning to Question via Manifold-Anchored Self-Play

study

  • manifold-first verified SFT β€” bootstrap format/proof coverage by distilling only Verus-verified rollouts before RL
  • MLRL mean-normalized GRPO β€” weight rare successful attempts by inverse success count using centered binary rewards
  • frontier-targeting proposer reward β€” reward specs whose solver outcomes are hard but nonzero, especially exactly one success in K
  • solved-only UCB curriculum DAG β€” compose novel specs as seeds only after verifier success, novelty, and vacuity gates

study

  • compiler-gated proof loop β€” alternate LLM edits with Lean/Verus compilation and accept only hole-free proofs
  • independent Ralph episodes β€” run stateless multi-turn subagents and carry forward compile-checked sketches
  • helper-lemma decomposition β€” split monolithic goals into smaller lemmas and recheck every nested proof
  • specialized prover calls β€” invoke a stronger proof engine on one subgoal and feed failures back to the loop
  • evolutionary sketch population β€” rank validated candidates with ratings and sample them using P-UCB search
  • formalization test lemmas β€” prove finite sanity cases before attempting autoformalized conjectures
  • parameter-and-proof search β€” expose construction values for joint synthesis while protecting the theorem
  • protected statement validation β€” prevent agents from changing specifications and reject residual placeholders
  • failure-artifact collaboration β€” retain unresolved formal goals as precise inputs for human reformulation

Last edited: