Skip to main content

Showing 1–20 of 20 results for author: Vazou, N

Searching in archive cs. Search in all archives.
.
  1. arXiv:2207.05617  [pdf, ps, other

    cs.PL

    Mechanizing Refinement Types (extended)

    Authors: Michael Borkowski, Niki Vazou, Ranjit Jhala

    Abstract: Practical checkers based on refinement types use the combination of implicit semantic sub-ty** and parametric polymorphism to simplify the specification and automate the verification of sophisticated properties of programs. However, a formal meta-theoretic accounting of the soundness of refinement type systems using this combination has proved elusive. We present λ_RF a core refinement calculus… ▽ More

    Submitted 12 July, 2022; originally announced July 2022.

    Comments: 32 pages, under review

    ACM Class: F.3.1; D.3.1

  2. arXiv:2207.04034  [pdf, ps, other

    cs.PL

    Flux: Liquid Types for Rust

    Authors: Nico Lehmann, Adam Geller, Niki Vazou, Ranjit Jhala

    Abstract: We introduce Flux, which shows how logical refinements can work hand in glove with Rust's ownership mechanisms to yield ergonomic type-based verification of low-level pointer manipulating programs. First, we design a novel refined type system for Rust that indexes mutable locations, with pure (immutable) values that can appear in refinements, and then exploits Rust's ownership mechanisms to abstra… ▽ More

    Submitted 14 November, 2022; v1 submitted 8 July, 2022; originally announced July 2022.

    ACM Class: F.3.1; D.2.4

  3. Verified Causal Broadcast with Liquid Haskell

    Authors: Patrick Redmond, Gan Shen, Niki Vazou, Lindsey Kuper

    Abstract: Protocols to ensure that messages are delivered in causal order are a ubiquitous building block of distributed systems. For instance, distributed data storage systems can use causally ordered message delivery to ensure causal consistency, and CRDTs can rely on the existence of an underlying causally-ordered messaging layer to simplify their implementation. A causal delivery protocol ensures that w… ▽ More

    Submitted 15 March, 2023; v1 submitted 29 June, 2022; originally announced June 2022.

    Comments: Appeared at IFL 2022

  4. arXiv:2203.12069  [pdf, other

    cs.PL cs.CR

    ANOSY: Approximated Knowledge Synthesis with Refinement Types for Declassification

    Authors: Sankha Narayan Guria, Niki Vazou, Marco Guarnieri, James Parker

    Abstract: Non-interference is a popular way to enforce confidentiality of sensitive data. However, declassification of sensitive information is often needed in realistic applications but breaks non-interference. We present ANOSY, an approximate knowledge synthesizer for quantitative declassification policies. ANOSY uses refinement types to automatically construct machine checked over- and under-approximatio… ▽ More

    Submitted 22 March, 2022; originally announced March 2022.

    Comments: 16 pages, 6 figures, this is a preprint of a paper to appear in Programming Language Design and Implementation (PLDI) 2022

  5. arXiv:2202.05872  [pdf, other

    cs.PL

    REST: Integrating Term Rewriting with Program Verification (Extended Version)

    Authors: Zachary Grannan, Niki Vazou, Eva Darulova, Alexander J. Summers

    Abstract: We introduce REST, a novel term rewriting technique for theorem proving that uses online termination checking and can be integrated with existing program verifiers. REST enables flexible but terminating term rewriting for theorem proving by: (1) exploiting newly-introduced term orderings that are more permissive than standard rewrite simplification orderings; (2) dynamically and iteratively select… ▽ More

    Submitted 16 February, 2022; v1 submitted 11 February, 2022; originally announced February 2022.

  6. arXiv:2103.02177  [pdf, other

    cs.PL

    How to Safely Use Extensionality in Liquid Haskell

    Authors: Niki Vazou, Michael Greenberg

    Abstract: Refinement type checkers are a powerful way to reason about functional programs. For example, one can prove properties of a slow, specification implementation, porting the proofs to an optimized implementation that behaves the same. Without functional extensionality, proofs must relate functions that are fully applied. When data itself has a higher-order representation, fully applied proofs face s… ▽ More

    Submitted 19 July, 2022; v1 submitted 2 March, 2021; originally announced March 2021.

    Comments: This is the extended version of the Haskell Symposium 2022 paper with the same title

  7. arXiv:2010.07763  [pdf, ps, other

    cs.PL cs.LO cs.SE

    Refinement Types: A Tutorial

    Authors: Ranjit Jhala, Niki Vazou

    Abstract: Refinement types enrich a language's type system with logical predicates that circumscribe the set of values described by the type, thereby providing software developers a tunable knob with which to inform the type system about what invariants and correctness properties should be checked on their code. In this article, we distill the ideas developed in the substantial literature on refinement type… ▽ More

    Submitted 15 October, 2020; originally announced October 2020.

  8. arXiv:2004.12885  [pdf, other

    cs.CR cs.PL

    LIO*: Low Level Information Flow Control in F*

    Authors: Jean-Joseph Marty, Lucas Franceschino, Jean-Pierre Talpin, Niki Vazou

    Abstract: We present Labeled Input Output in F* (LIO*), a verified framework that enforces information flow control (IFC) policies developed in F* and automatically extracted to C. Inspired by LIO, we encapsulated IFC policies into effects, but using F* we derived efficient, low level, and provably correct code. Concretely, runtime checks are lifted to static proof obligations, the developed code is automat… ▽ More

    Submitted 27 April, 2020; originally announced April 2020.

    Comments: Submitted to ICFP

  9. arXiv:1904.03521  [pdf, other

    cs.PL

    Type-Level Computations for Ruby Libraries

    Authors: Milod Kazerounian, Sankha Narayan Guria, Niki Vazou, Jeffrey S. Foster, David Van Horn

    Abstract: Many researchers have explored ways to bring static ty** to dynamic languages. However, to date, such systems are not precise enough when types depend on values, which often arises when using certain Ruby libraries. For example, the type safety of a database query in Ruby on Rails depends on the table and column names used in the query. To address this issue, we introduce CompRDL, a type system… ▽ More

    Submitted 6 April, 2019; originally announced April 2019.

    Comments: 22 pages, this is a technical report (with appendix) of a paper to appear in Programming Language Design and Implementation (PLDI 2019)

  10. arXiv:1901.07665  [pdf, other

    cs.PL cs.CR

    LWeb: Information Flow Security for Multi-tier Web Applications

    Authors: James Parker, Niki Vazou, Michael Hicks

    Abstract: This paper presents LWeb, a framework for enforcing label-based, information flow policies in database-using web applications. In a nutshell, LWeb marries the LIO Haskell IFC enforcement library with the Yesod web programming framework. The implementation has two parts. First, we extract the core of LIO into a monad transformer (LMonad) and then apply it to Yesod's core monad. Second, we extend Ye… ▽ More

    Submitted 22 January, 2019; originally announced January 2019.

    Journal ref: Proc. ACM Program. Lang., Vol. 3, No. POPL, Article 75 (January 2019)

  11. Gradual Liquid Type Inference

    Authors: Niki Vazou, Éric Tanter, David Van Horn

    Abstract: Liquid ty** provides a decidable refinement inference mechanism that is convenient but subject to two major issues: (1) inference is global and requires top-level annotations, making it unsuitable for inference of modular code components and prohibiting its applicability to library code, and (2) inference failure results in obscure error messages. These difficulties seriously hamper the migratio… ▽ More

    Submitted 30 October, 2019; v1 submitted 5 July, 2018; originally announced July 2018.

    Comments: To appear at OOPSLA 2018

  12. arXiv:1806.03541  [pdf, other

    cs.PL

    Functional Pearl: Theorem Proving for All (Equational Reasoning in Liquid Haskell)

    Authors: Niki Vazou, Joachim Breitner, Will Kunkel, David Van Horn, Graham Hutton

    Abstract: Equational reasoning is one of the key features of pure functional languages such as Haskell. To date, however, such reasoning always took place externally to Haskell, either manually on paper, or mechanised in a theorem prover. This article shows how equational reasoning can be performed directly and seamlessly within Haskell itself, and be checked using Liquid Haskell. In particular, language le… ▽ More

    Submitted 9 June, 2018; originally announced June 2018.

    Comments: Submitted to Haskell'18

  13. arXiv:1711.09281  [pdf, ps, other

    cs.PL

    Refinement Types for Ruby

    Authors: Milod Kazerounian, Niki Vazou, Austin Bourgerie, Jeffrey S. Foster, Emina Torlak

    Abstract: Refinement types are a popular way to specify and reason about key program properties. In this paper, we introduce RTR, a new system that adds refinement types to Ruby. RTR is built on top of RDL, a Ruby type checker that provides basic type information for the verification process. RTR works by encoding its verification problems into Rosette, a solver-aided host language. RTR handles mixins throu… ▽ More

    Submitted 25 November, 2017; originally announced November 2017.

  14. arXiv:1711.03842  [pdf, other

    cs.PL cs.LO

    Refinement Reflection: Complete Verification with SMT

    Authors: Niki Vazou, Anish Tondwalkar, Vikraman Choudhury, Ryan G. Scott, Ryan R. Newton, Philip Wadler, Ranjit Jhala

    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… ▽ More

    Submitted 9 November, 2017; originally announced November 2017.

    Comments: 29 pages plus appendices, to appear in POPL 2018. arXiv admin note: text overlap with arXiv:1610.04641

  15. arXiv:1708.02328  [pdf, ps, other

    cs.PL cs.LO

    Deriving Law-Abiding Instances

    Authors: Ryan Scott, Vikraman Choudhury, Ryan Newton, Niki Vazou, Ranjit Jhala

    Abstract: Liquid Haskell's refinement-reflection feature augments the Haskell language with theorem proving capabilities, allowing programmers to retrofit their existing code with proofs. But many of these proofs require routine, boilerplate code that is tedious to write. Moreover, many such proofs do not scale well, as the size of proof terms can grow superlinearly with the size of the datatypes involved i… ▽ More

    Submitted 7 August, 2017; originally announced August 2017.

    ACM Class: D.3.2; D.1.1

  16. arXiv:1610.07118  [pdf, other

    cs.PL

    Verified Parallel String Matching in Haskell

    Authors: Niki Vazou, Jeff Polakow

    Abstract: In this paper, we prove correctness of parallelizing a string matcher using Haskell as a theorem prover. We use refinement types to specify correctness properties, Haskell terms to express proofs and Liquid Haskell to check correctness of proofs. First, we specify and prove that a class of monoid morphisms can be parallelized via parallel monoid concatenation. Then, we encode string matching as a… ▽ More

    Submitted 22 October, 2016; originally announced October 2016.

  17. arXiv:1610.04641  [pdf, ps, other

    cs.PL cs.LO

    Refinement Reflection (or, how to turn your favorite language into a proof assistant using SMT)

    Authors: Niki Vazou, Ranjit Jhala

    Abstract: Refinement Reflection turns your favorite programming language into a proof assistant by reflecting 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 unfolded into the refinement logic in a precise, predictable and most importantly, programmer controllable way. In the logic, we encode fu… ▽ More

    Submitted 14 October, 2016; originally announced October 2016.

  18. arXiv:1507.00385  [pdf, ps, other

    cs.PL cs.SE

    Bounded Refinement Types

    Authors: Niki Vazou, Alexander Bakst, Ranjit Jhala

    Abstract: We present a notion of bounded quantification for refinement types and show how it expands the expressiveness of refinement ty** by using it to develop typed combinators for: (1) relational algebra and safe database access, (2) Floyd-Hoare logic within a state transformer monad equipped with combinators for branching and loo**, and (3) using the above to implement a refined IO monad that track… ▽ More

    Submitted 1 July, 2015; originally announced July 2015.

    Comments: 14 pages, International Conference on Functional Programming, ICFP 2015

    ACM Class: D.2.4; D.3.3; F.3.1

  19. Type Targeted Testing

    Authors: Eric L. Seidel, Niki Vazou, Ranjit Jhala

    Abstract: We present a new technique called type targeted testing, which translates precise refinement types into comprehensive test-suites. The key insight behind our approach is that through the lens of SMT solvers, refinement types can also be viewed as a high-level, declarative, test generation technique, wherein types are converted to SMT queries whose models can be decoded into concrete program inputs… ▽ More

    Submitted 15 January, 2015; v1 submitted 20 October, 2014; originally announced October 2014.

  20. arXiv:1401.6227  [pdf, ps, other

    cs.PL

    From Safety To Termination And Back: SMT-Based Verification For Lazy Languages

    Authors: Niki Vazou, Eric L. Seidel, Ranjit Jhala

    Abstract: SMT-based verifiers have long been an effective means of ensuring safety properties of programs. While these techniques are well understood, we show that they implicitly require eager semantics; directly applying them to a lazy language is unsound due to the presence of divergent sub-computations. We recover soundness by composing the safety analysis with a termination analysis. Of course, termina… ▽ More

    Submitted 23 January, 2014; originally announced January 2014.