Affiliation:
1. University of Maryland, USA
2. University of California at San Diego, USA
3. Indiana University, USA
4. University of Edinburgh, UK / Input Output HK, UK
Abstract
We introduce
Refinement Reflection
, a new framework for building SMT-based deductive verifiers. The key idea is to reflect the code implementing a user-defined function into the function’s (output) refinement type. As a consequence, at
uses
of the function, the function definition is instantiated in the SMT logic in a precise fashion that permits decidable verification. Reflection allows the user to write
equational proofs
of programs just by writing other programs using pattern-matching and recursion to perform case-splitting and induction. Thus, via the propositions-as-types principle, we show that reflection permits the
specification
of arbitrary functional correctness properties. Finally, we introduce a proof-search algorithm called
Proof by Logical Evaluation
that uses techniques from model checking and abstract interpretation, to completely automate equational reasoning. We have implemented reflection in Liquid Haskell and used it to verify that the widely used instances of the Monoid, Applicative, Functor, and Monad typeclasses actually satisfy key algebraic laws required to make the clients safe, and have used reflection to build the first library that actually verifies assumptions about associativity and ordering that are crucial for safe deterministic parallelism.
Publisher
Association for Computing Machinery (ACM)
Subject
Safety, Risk, Reliability and Quality,Software
Cited by
43 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Free Facts: An Alternative to Inefficient Axioms in Dafny;Lecture Notes in Computer Science;2024-09-11
2. Liquid Amortization: Proving Amortized Complexity with LiquidHaskell (Functional Pearl);Proceedings of the 17th ACM SIGPLAN International Haskell Symposium;2024-08-28
3. Towards a Dynabook for verified VM construction;Journal of Computer Languages;2024-08
4. Automated Verification of Fundamental Algebraic Laws;Proceedings of the ACM on Programming Languages;2024-06-20
5. Tinyrossa: A Compiler Framework for Vertical, Verified Construction of Smalltalk VMs;Companion Proceedings of the 8th International Conference on the Art, Science, and Engineering of Programming;2024-03-11