2017
DOI: 10.1145/3158141
|View full text |Cite
|
Sign up to set email alerts
|

Refinement reflection: complete verification with SMT

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 e.g. using pattern-matching and recursion to … Show more

Help me understand this report
View preprint versions

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1
1
1

Citation Types

0
44
0

Year Published

2018
2018
2024
2024

Publication Types

Select...
5
4

Relationship

2
7

Authors

Journals

citations
Cited by 51 publications
(44 citation statements)
references
References 62 publications
0
44
0
Order By: Relevance
“…[Giesl et al 2011[Giesl et al , 2006[Giesl et al , 2004) can be used instead or in complement to our approach. The use of type checking in verification appears in program verifiers such as F* [Ahman et al 2017;Swamy et al 2016Swamy et al , 2013 and Liquid Haskell [Vazou et al 2013[Vazou et al , 2014[Vazou et al , 2018. Like Dafny [Leino 2010] and Stainless, these systems rely on SMT solvers to automatically discharge verification conditions.…”
Section: Related Workmentioning
confidence: 99%
“…[Giesl et al 2011[Giesl et al , 2006[Giesl et al , 2004) can be used instead or in complement to our approach. The use of type checking in verification appears in program verifiers such as F* [Ahman et al 2017;Swamy et al 2016Swamy et al , 2013 and Liquid Haskell [Vazou et al 2013[Vazou et al , 2014[Vazou et al , 2018. Like Dafny [Leino 2010] and Stainless, these systems rely on SMT solvers to automatically discharge verification conditions.…”
Section: Related Workmentioning
confidence: 99%
“…We present them the same way in this paper, rather than reformatting them as mathematical inference rules. Metatheoretic properties are expressed as refinement types, following Vazou et al [2017Vazou et al [ , 2018, and proofs are Haskell functions with these types (checked by the SMT solver). We assess our experience using Liquid Haskell for metatheory in comparison to related approaches in § 5.…”
Section: Mechanizing Noninterference Of Lio In Liquid Haskellmentioning
confidence: 99%
“…We define a Haskell (executable) function evalPredicate and use an axiom to connect it with the synonymous logical uninterpreted function [Vazou et al 2018]: Primitive queries. It is straightforward to define primitive operators that manipulate the database but do not perform IFC checks.…”
Section: Querying the Databasementioning
confidence: 99%
“…In such cases, Liquid Haskell can lift arbitrary Haskell functions into the refinement type level via the notion of reflection [Vazou et al 2018]. Rather than using the straightforward translation available for measures, which completely describes the function to the SMT solver, reflection gives the SMT solver only the value of the function for the arguments on which it is actually called.…”
Section: Deep Reasoningmentioning
confidence: 99%