ABSTRACT
We present the implementation of Mezzo, a programming language based on the notion of permission that provides strong guarantees about aliasing, ownership and mutable state. The unique features of Mezzo make its implementation challenging, both from a formal and a technical perspective. In this paper, we formalize the core operations used for type-checking, and give corresponding algorithms. Two central operations, subtraction and merging, are detailed. Both operations are closely related to shape analysis and frame inference.
- Andrew W. Appel. VeriSmall: Verified Smallfoot shape analysis. In Certified Programs and Proofs, volume 7086 of Lecture Notes in Computer Science, pages 231--246. Springer, 2011. Google ScholarDigital Library
- Thibaut Balabonski and François Pottier. A Coq formalization of Mezzo, take 2, December 2013. http://gallium.inria.fr/~fpottier/mezzo/mezzo-coq.tar.gz.Google Scholar
- Bernhard Beckert, Reiner Hähnle, and Peter H. Schmitt, editors. Verification of Object-Oriented Software: The KeY Approach. LNCS 4334. Springer-Verlag, 2007. Google ScholarDigital Library
- Josh Berdine, Cristiano Calcagno, and Peter W. O'Hearn. Smallfoot: Modular automatic assertion checking with separation logic. In Formal Methods for Components and Objects, volume 4111 of Lecture Notes in Computer Science, pages 115--137. Springer, 2005. Google ScholarDigital Library
- Josh Berdine, Cristiano Calcagno, and Peter W. O'Hearn. Symbolic execution with separation logic. In Asian Symposium on Programming Languages and Systems (APLAS), volume 3780 of Lecture Notes in Computer Science, pages 52--68. Springer, 2005. Google ScholarDigital Library
- Kevin Bierhoff and Jonathan Aldrich. Modular typestate checking of aliased objects. In Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), pages 301--320, 2007. Google ScholarDigital Library
- John Boyland. Checking interference with fractional permissions. In Static Analysis Symposium (SAS), volume 2694 of Lecture Notes in Computer Science, pages 55--72. Springer, 2003. Google ScholarDigital Library
- Cristiano Calcagno, Dino Distefano, Peter W. O'Hearn, and Hongseok Yang. Compositional shape analysis by means of bi-abduction. In Principles of Programming Languages (POPL), pages 289--300, 2009. Google ScholarDigital Library
- Bor-Yuh Evan Chang and Xavier Rival. Relational inductive shape analysis. In Principles of Programming Languages (POPL), pages 247--260, 2008. Google ScholarDigital Library
- Arthur Charguéraud. Program verification through characteristic formulae. In International Conference on Functional Programming (ICFP), 2010. Google ScholarDigital Library
- Dino Distefano and Matthew J. Parkinson. jStar: towards practical verification for Java. In Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), pages 213--226, 2008. Google ScholarDigital Library
- Jean-Christophe Filliâtre and Claude Marché. Multi-prover verification of C programs. In International Conference on Formal Engineering Methods (ICFEM), volume 3308 of Lecture Notes in Computer Science, pages 15--29. Springer, 2004.Google ScholarCross Ref
- Dan Grossman, Greg Morrisett, Trevor Jim, Michael Hicks, Yanling Wang, and James Cheney. Region-based memory management in Cyclone. In Programming Language Design and Implementation (PLDI), pages 282--293, 2002. Google ScholarDigital Library
- Armaël Guéneau, François Pottier, and Jonathan Protzenko. The ins and outs of iteration in Mezzo. Workshop on Higher-Order Programming and Effects (HOPE), September 2013. http://goo.gl/NrgKc4.Google Scholar
- Aleksandar Nanevski, Greg Morrisett, Avraham Shinnar, Paul Govereau, and Lars Birkedal. Ynot: dependent types for imperative programs. In International Conference on Functional Programming (ICFP), pages 229--240, 2008. Google ScholarDigital Library
- Juan Antonio Navarro Pérez and Andrey Rybalchenko. Separation logic + superposition calculus = heap theorem prover. In Programming Language Design and Implementation (PLDI), pages 556--566, 2011. Google ScholarDigital Library
- Huu Hai Nguyen, Cristina David, Shengchao Qin, and Wei-Ngan Chin. Automated verification of shape and size properties via separation logic. In Verification, Model Checking and Abstract Interpretation (VMCAI), volume 4349 of Lecture Notes in Computer Science, pages 251--266. Springer, 2007. Google ScholarDigital Library
- François Pottier and Jonathan Protzenko. Programming with permissions in Mezzo. In International Conference on Functional Programming (ICFP), pages 173--184, 2013. Google ScholarDigital Library
- François Pottier and Didier Rémy. The essence of ML type inference. In Benjamin C. Pierce, editor, Advanced Topics in Types and Programming Languages, chapter 10, pages 389--489. MIT Press, 2005.Google Scholar
- John C. Reynolds. Separation logic: A logic for shared mutable data structures. In Logic in Computer Science (LICS), pages 55--74, 2002. Google ScholarDigital Library
- Xavier Rival. Abstract Domains for the Static Analysis of Programs Manipulating Complex Data Structures. Habilitation à diriger des recherches, École Normale Supérieure, 2011.Google Scholar
- Sam Tobin-Hochstadt and Matthias Felleisen. Logical types for untyped languages. ACM Sigplan Notices, 45(9):117--128, 2010. Google ScholarDigital Library
- Hongseok Yang, Oukseh Lee, Josh Berdine, Cristiano Calcagno, Byron Cook, Dino Distefano, and Peter W. O'Hearn. Scalable shape analysis for systems code. In Computer Aided Verification, volume 5123 of Lecture Notes in Computer Science, pages 385--398. Springer, 2008. Google ScholarDigital Library
Index Terms
- The implementation of the Mezzo type-checker
Recommendations
The ruby type checker
SAC '13: Proceedings of the 28th Annual ACM Symposium on Applied ComputingWe present the Ruby Type Checker (rtc), a tool that adds type checking to Ruby, an object-oriented, dynamic scripting language. Rtc is implemented as a Ruby library in which all type checking occurs at run time; thus it checks types later than a purely ...
Type debugging with counter-factual type error messages using an existing type checker
IFL '19: Proceedings of the 31st Symposium on Implementation and Application of Functional LanguagesThe cause of a type error can be very difficult to find for the Hindley-Milner type system. Consequently many solutions have been proposed, but they are hardly used in practice. Here we propose a new solution that provides counter-factual type error ...
Stitch: the sound type-indexed type checker (functional pearl)
Haskell 2020: Proceedings of the 13th ACM SIGPLAN International Symposium on HaskellA classic example of the power of generalized algebraic datatypes (GADTs) to verify a delicate implementation is the type-indexed expression AST. This functional pearl refreshes this example, casting it in modern Haskell using many of GHC's bells and ...
Comments