Gradually Verifying Unfolding Expressions & Pure Functions

📅 2026-07-16
📈 Citations: 0
Influential: 0
📄 PDF
🤖 AI Summary
This work addresses the lack of formal semantic support for unfolding expressions and pure functions in implicit dynamic frame–based deductive verifiers. It proposes a symbolic execution–based formal semantic framework that, for the first time, provides rigorous semantics for these constructs in the context of gradual verification, while also proving their soundness and maintaining compatibility with static verification settings. The framework not only underpins the theoretical foundation of tools such as Gradual C0 but also demonstrates clear advantages in modularity and generality across both static and gradual verification systems.
📝 Abstract
Unfolding expressions, which temporarily unfold a predicate to leverage its owned fields when evaluating a heap-dependent expression, and pure functions, which are heap-dependent functions that can be used in specifications, are used in deductive program verifiers based on implicit dynamic frames, such as Gradual C0, Gobra, Nagini, and SnaKt, to increase the modularity of specifications involving ownership. In this paper, we present the formal semantics for unfolding expressions and pure functions for a static verifier using symbolic execution, extend it for a gradual verifier, and provide a proof of soundness. To support Gradual C0, our proof is in the setting of gradual verification, a deductive program verification system that combines static and dynamic verification to allow partial specifications. However, because the gradual verifier is a conservative extension of a static verifier, our results also apply to static verifiers that use symbolic execution, such as the Silicon symbolic execution backend for the Viper verification infrastructure used by Gobra, Nagini, and SnaKt.
Problem

Research questions and friction points this paper is trying to address.

unfolding expressions
pure functions
gradual verification
symbolic execution
ownership
Innovation

Methods, ideas, or system contributions that make the work stand out.

unfolding expressions
pure functions
gradual verification
symbolic execution
soundness