Formal Verification of Imperative First-Class Functions in Move
Wolfgang Grieskamp, Teng Zhang, Vineeth Kashyap, Jake Silverman

TL;DR
This paper presents a formal verification approach for Move smart contracts with higher-order functions, introducing behavioral predicates and state labels to efficiently reason about imperative function effects.
Contribution
It extends the Move Prover to support imperative first-class functions with behavioral predicates, enabling more precise and efficient verification of higher-order Move code.
Findings
Supports imperative first-class functions in Move verification.
Introduces behavioral predicates for function effects.
Enhances MVP's specification inference for higher-order code.
Abstract
The Move Prover (MVP) is a formal verifier for smart contracts written in the Move programming language. Recently, Move on Aptos was extended with higher-order functions: imperative functions as first-class values that can be passed around, stored in data structs, and kept in persistent storage, enabling dynamic dispatch. This paper describes the representation of function values in the Move specification language and their implementation in MVP. We introduce behavioral predicates which characterize Move functions (aborts and pre/post conditions) by single-state or two-state predicates. We also introduce state labels for naming intermediate memory states in which expressions are evaluated and which allow to compose behavioral predicates to describe sequences of state transitions. On SMT level, function values are encoded by discriminating over the possible function values reaching a…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
