Skip to main content

Showing 1–13 of 13 results for author: Protzenko, J

.
  1. arXiv:2404.02680  [pdf, other

    cs.PL

    Sound Borrow-Checking for Rust via Symbolic Semantics (Long Version)

    Authors: Son Ho, Aymeric Fromherz, Jonathan Protzenko

    Abstract: The Rust programming language continues to rise in popularity, and as such, warrants the close attention of the programming languages community. In this work, we present a new foundational contribution towards the theoretical understanding of Rust's semantics. We prove that LLBC, a high-level, borrow-centric model previously proposed for Rust's semantics and execution, is sound with regards to a l… ▽ More

    Submitted 1 July, 2024; v1 submitted 3 April, 2024; originally announced April 2024.

  2. arXiv:2403.09435  [pdf, other

    cs.PL cs.CR

    StarMalloc: A Formally Verified, Concurrent, Performant, and Security-Oriented Memory Allocator

    Authors: Antonin Reitz, Aymeric Fromherz, Jonathan Protzenko

    Abstract: In this work, we present StarMalloc, a verified, security-oriented, concurrent memory allocator that can be used as a drop-in replacement in real-world projects. Using the Steel separation logic framework, we show how to specify and verify StarMalloc, relying on dependent types and modular abstractions to enable efficient verification. As part of StarMalloc, we also develop several generic datastr… ▽ More

    Submitted 14 March, 2024; originally announced March 2024.

  3. Aeneas: Rust Verification by Functional Translation

    Authors: Son Ho, Jonathan Protzenko

    Abstract: We present Aeneas, a new verification toolchain for Rust programs based on a lightweight functional translation. We leverage Rust's rich region-based type system to eliminate memory reasoning for many Rust programs, as long as they do not rely on interior mutability or unsafe code. Doing so, we relieve the proof engineer of the burden of memory-based reasoning, allowing them to instead focus on fu… ▽ More

    Submitted 28 September, 2022; v1 submitted 14 June, 2022; originally announced June 2022.

    Journal ref: Proceedings of the ACM on Programming Languages, Volume 6, Issue ICFP. August 2022. Article No.: 116, pp 711-741

  4. Catala: A Programming Language for the Law

    Authors: Denis Merigoux, Nicolas Chataing, Jonathan Protzenko

    Abstract: Law at large underpins modern society, codifying and governing many aspects of citizens' daily lives. Oftentimes, law is subject to interpretation, debate and challenges throughout various courts and jurisdictions. But in some other areas, law leaves little room for interpretation, and essentially aims to rigorously describe a computation, a decision procedure or, simply said, an algorithm. Unfort… ▽ More

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

  5. arXiv:2102.01644  [pdf, ps, other

    cs.PL

    Modularity, Code Specialization, and Zero-Cost Abstractions for Program Verification

    Authors: Son Ho, Aymeric Fromherz, Jonathan Protzenko

    Abstract: For all the successes in verifying low-level, efficient, security-critical code, little has been said or studied about the structure, architecture and engineering of such large-scale proof developments. We present the design, implementation and evaluation of a set of language-based techniques that allow the programmer to modularly write and verify code at a high level of abstraction, while retai… ▽ More

    Submitted 6 July, 2023; v1 submitted 2 February, 2021; originally announced February 2021.

  6. arXiv:2011.07966  [pdf, other

    cs.PL

    A Modern Compiler for the French Tax Code

    Authors: Denis Merigoux, Raphaël Monat, Jonathan Protzenko

    Abstract: In France, income tax is computed from taxpayers' individual returns, using an algorithm that is authored, designed and maintained by the French Public Finances Directorate (DGFiP). This algorithm relies on a legacy custom language and compiler originally designed in 1990, which unlike French wine, did not age well with time. Owing to the shortcomings of the input language and the technical limita… ▽ More

    Submitted 25 January, 2021; v1 submitted 16 November, 2020; originally announced November 2020.

  7. arXiv:1803.06547  [pdf, other

    cs.PL cs.LO

    Meta-F*: Proof Automation with SMT, Tactics, and Metaprograms

    Authors: Guido Martínez, Danel Ahman, Victor Dumitrescu, Nick Giannarakis, Chris Hawblitzel, Catalin Hritcu, Monal Narasimhamurthy, Zoe Paraskevopoulou, Clément Pit-Claudel, Jonathan Protzenko, Tahina Ramananandro, Aseem Rastogi, Nikhil Swamy

    Abstract: We introduce Meta-F*, a tactics and metaprogramming framework for the F* program verifier. The main novelty of Meta-F* is allowing the use of tactics and metaprogramming to discharge assertions not solvable by SMT, or to just simplify them into well-behaved SMT fragments. Plus, Meta-F* can be used to generate verified code automatically. Meta-F* is implemented as an F* effect, which, given the p… ▽ More

    Submitted 7 March, 2019; v1 submitted 17 March, 2018; originally announced March 2018.

    Comments: Full version of ESOP'19 paper

  8. arXiv:1703.00055  [pdf, other

    cs.PL cs.CR

    A Monadic Framework for Relational Verification: Applied to Information Security, Program Equivalence, and Optimizations

    Authors: Niklas Grimm, Kenji Maillard, Cédric Fournet, Catalin Hritcu, Matteo Maffei, Jonathan Protzenko, Tahina Ramananandro, Aseem Rastogi, Nikhil Swamy, Santiago Zanella-Béguelin

    Abstract: Relational properties describe multiple runs of one or more programs. They characterize many useful notions of security, program refinement, and equivalence for programs with diverse computational effects, and they have received much attention in the recent literature. Rather than develo** separate tools for special classes of effects and relational properties, we advocate using a general purpos… ▽ More

    Submitted 12 October, 2019; v1 submitted 28 February, 2017; originally announced March 2017.

    Comments: CPP'18 extended version with the missing ERC acknowledgement

  9. arXiv:1703.00053  [pdf, other

    cs.PL cs.CR

    Verified Low-Level Programming Embedded in F*

    Authors: Jonathan Protzenko, Jean-Karim Zinzindohoué, Aseem Rastogi, Tahina Ramananandro, Peng Wang, Santiago Zanella-Béguelin, Antoine Delignat-Lavaud, Catalin Hritcu, Karthikeyan Bhargavan, Cédric Fournet, Nikhil Swamy

    Abstract: We present Low*, a language for low-level programming and verification, and its application to high-assurance optimized cryptographic libraries. Low* is a shallow embedding of a small, sequential, well-behaved subset of C in F*, a dependently-typed variant of ML aimed at program verification. Departing from ML, Low* does not involve any garbage collection or implicit heap allocation; instead, it h… ▽ More

    Submitted 11 December, 2018; v1 submitted 28 February, 2017; originally announced March 2017.

    Comments: extended version of ICFP final camera ready version; only Acknowledgements differ from 30 Aug 2017 version

  10. arXiv:1608.06499  [pdf, other

    cs.PL

    Dijkstra Monads for Free

    Authors: Danel Ahman, Catalin Hritcu, Kenji Maillard, Guido Martinez, Gordon Plotkin, Jonathan Protzenko, Aseem Rastogi, Nikhil Swamy

    Abstract: Dijkstra monads enable a dependent type theory to be enhanced with support for specifying and verifying effectful code via weakest preconditions. Together with their closely related counterparts, Hoare monads, they provide the basis on which verification tools like F*, Hoare Type Theory (HTT), and Ynot are built. We show that Dijkstra monads can be derived "for free" by applying a continuation-p… ▽ More

    Submitted 12 October, 2019; v1 submitted 23 August, 2016; originally announced August 2016.

    Comments: extended pre-print for POPL 2017 final version with the missing ERC acknowledgement

  11. arXiv:1311.7256  [pdf, ps, other

    cs.PL

    The ins and outs of iteration in Mezzo

    Authors: Armaël Guéneau, François Pottier, Jonathan Protzenko

    Abstract: This is a talk proposal for HOPE 2013. Using iteration over a collection as a case study, we wish to illustrate the strengths and weaknesses of the prototype programming language Mezzo.

    Submitted 28 November, 2013; originally announced November 2013.

    ACM Class: D.3.2

  12. Programming with Permissions in Mezzo

    Authors: Jonathan Protzenko, François Pottier

    Abstract: We present Mezzo, a typed programming language of ML lineage. Mezzo is equipped with a novel static discipline of duplicable and affine permissions, which controls aliasing and ownership. This rules out certain mistakes, including representation exposure and data races, and enables new idioms, such as gradual initialization, memory re-use, and (type)state changes. Although the core static discipli… ▽ More

    Submitted 28 November, 2013; originally announced November 2013.

    ACM Class: D.3.2

    Journal ref: ICFP 2013, Proceedings of the 18th ACM SIGPLAN international conference on Functional programming

  13. Illustrating the Mezzo programming language

    Authors: Jonathan Protzenko

    Abstract: When programmers want to prove strong program invariants, they are usually faced with a choice between using theorem provers and using traditional programming languages. The former requires them to provide program proofs, which, for many applications, is considered a heavy burden. The latter provides less guarantees and the programmer usually has to write run-time assertions to compensate for the… ▽ More

    Submitted 27 November, 2013; originally announced November 2013.

    ACM Class: D.3.2

    Journal ref: 1st French Singaporean Workshop on Formal Methods and Applications (FSFMA 2013)