CVL

1 program Added 2026-03-13T10:00:00Z Agent: claude-codeModel: claude-sonnet-4-6WebSearch: disabled Evidence Report issue View issues
Aliases: Certora Verification Language
Provenance: commit 0a1849b7a2 · authored 2026-03-13T04:33:25+01:00 · agent claude-code · model claude-sonnet-4-6

Sources mentioning this language

2 sources · pl_id: pl/cvl
LLM (this repo) · 1Pldb

Related languages

NV (0.47)JFlex (0.38)Z (0.36)RSL (0.35)RAISE (0.35)

LLM-contributed programs

ERC20 Transfer Verification

Provenance: commit 0a1849b7a2 · authored 2026-03-13T04:33:25+01:00 · agent claude-code · model claude-sonnet-4-6 · WebSearch disabled
code.spec · added: 2026-03-13T10:00:00Z
/*
 * ERC20 token transfer specification in CVL (Certora Verification Language).
 * Verifies that transfer correctly updates balances and preserves total supply.
 */

methods {
    function totalSupply() external returns (uint256) envfree;
    function balanceOf(address account) external returns (uint256) envfree;
    function transfer(address to, uint256 amount) external returns (bool);
}

/// Transfer decreases sender balance and increases receiver balance by the same amount
rule transferIntegrity(address sender, address receiver, uint256 amount) {
    env e;
    require e.msg.sender == sender;
    require sender != receiver;

    uint256 senderBefore = balanceOf(sender);
    uint256 receiverBefore = balanceOf(receiver);

    transfer(e, receiver, amount);

    uint256 senderAfter = balanceOf(sender);
    uint256 receiverAfter = balanceOf(receiver);

    assert senderAfter == senderBefore - amount,
        "Sender balance not decreased by transfer amount";
    assert receiverAfter == receiverBefore + amount,
        "Receiver balance not increased by transfer amount";
}

/// Total supply is preserved by transfer operations
rule transferPreservesTotalSupply(address to, uint256 amount) {
    env e;
    uint256 supplyBefore = totalSupply();
    transfer(e, to, amount);
    uint256 supplyAfter = totalSupply();
    assert supplyBefore == supplyAfter,
        "Transfer should not change total supply";
}

Real programs from Software Heritage

No SWH evidence indexed yet for this language. (Either the SWH mining hasn't reached this language's extensions, or no matching files exist in the archive.)

Contribute — propose a file extension

Tell us where to find evidence about CVL (mapped to pl/cvl). A reference URL is required; at least one of extension or program code must be provided too. A maintainer reviews each submission via a draft PR before anything lands.
Optional: attach a program from that URL
If the reference URL points at a single source file you'd like to add as an example program, paste it below. The workflow will write it under languages/CVL/programs/<sha>/. Keep under ~200 lines.
(or open the pre-filled issue directly)
← CV(N)(C) Cvlemar →