π€ AI Summary
Program verification is inherently undecidable, and existing tools either lack sufficient user interaction capabilities or operate at an abstraction level too low to enable users to effectively comprehend proof states and correct errors. This work proposes a novel interactive verification approach that, for the first time, enables direct visualization of and intervention in proof states at the source code and specification levels, thereby bridging the cognitive gap between high-level semantics and low-level logical reasoning. A prototype system built upon the Java verification engine KeY integrates automated and interactive techniques to allow users to guide proof exploration at a high semantic level. User studies demonstrate that this method significantly enhances usersβ understanding of the verification process and enables more efficient identification of flaws in either code or specifications.
π Abstract
Fully functional program verification is an undecidable$\unicode{x2014}$and, hence, inherently difficult$\unicode{x2014}$task, that is not automatically solvable but typically requires user interaction and guidance. Existing verifiers either work autoactively, requiring the user to write annotations in source code, without the possibility to inspect the proof state or intervene in case of an unsuccessful attempt, or allow interactions on a logical encoding that is on a lower level than the user-provided specifications. We present a novel interaction concept which allows the user to inspect and interact with the proof state on source code and specification level. This minimizes the mental gap between the representations. We provide an implementation of the concept as a plugin for the Java verification engine KeY, and show with a user study that this prototype can be beneficial for users to understand the proof state and find defects in source code or specifications.