askill
move-prover

move-proverSafety 95Repository

Move Prover formal verification expert for Aptos smart contracts. Write specifications (MSL), preconditions (requires), postconditions (ensures), invariants, abort conditions (aborts_if), quantifiers, schemas, and pragmas.

28 stars
1.2k downloads
Updated 3/16/2026

Package Files

Loading files...
SKILL.md

Move Prover Expert

Formal verification for Move smart contracts - mathematically prove your code is correct.

When to Use

  • Writing specifications for Move functions
  • Proving correctness properties (invariants, access control)
  • Debugging verification failures or timeouts
  • Understanding MSL (Move Specification Language)

Why Move Prover?

Testing checks specific inputs. Verification proves ALL inputs.

// Testing: Checks one case
#[test]
fun test_transfer() {
    transfer(alice, bob, 100);
}

// Verification: Proves for ALL possible inputs
spec transfer {
    ensures sender_balance == old(sender_balance) - amount;
    ensures recipient_balance == old(recipient_balance) + amount;
}

Core Constructs

Preconditions - requires

Conditions that must be true BEFORE function runs:

spec withdraw {
    requires exists<Balance>(addr);
    requires global<Balance>(addr).coins >= amount;
}

Postconditions - ensures

Conditions that must be true AFTER function runs:

spec transfer {
    ensures global<Balance>(from).coins == old(global<Balance>(from).coins) - amount;
    ensures global<Balance>(to).coins == old(global<Balance>(to).coins) + amount;
}

Abort Conditions - aborts_if

When function should abort:

spec withdraw {
    aborts_if !exists<Balance>(addr) with ERROR_NOT_FOUND;
    aborts_if global<Balance>(addr).coins < amount with ERROR_INSUFFICIENT;
}

Running the Prover

# Verify all modules
aptos move prove

# Verify specific module
aptos move prove --filter MyModule

Resources

Install

Download ZIP
Requires askill CLI v1.0+

AI Quality Score

78/100Analyzed 3/10/2026

Well-structured skill covering Move Prover fundamentals with clear code examples and explanations. Includes "When to Apply" section and proper command examples. Slightly incomplete as it mentions invariants, quantifiers, schemas, and pragmas in description but doesn't cover them in detail. Good technical reference for Aptos/Move developers.

95
80
80
60
75

Metadata

Licenseunknown
Version-
Updated3/16/2026
Publishereric861129

Tags

githubtesting