Monadic Coq Compiler Lef Ioannidis

Slides:



Advertisements
Similar presentations
The Art of Avoiding Work
Advertisements

A Translation from Typed Assembly Language to Certified Assembly Programming Zhong Shao Yale University Joint work with Zhaozhong Ni Paper URL:
1 Dependent Types for Termination Verification Hongwei Xi University of Cincinnati.
1 Building with Assurance CSSE 490 Computer Security Mark Ardis, Rose-Hulman Institute May 10, 2004.
An Open Framework for Foundational Proof-Carrying Code Xinyu Feng Yale University Joint work with Zhaozhong Ni (Yale, now at MSR), Zhong Shao (Yale) and.
AFID: An Automated Fault Identification Tool Alex Edwards Sean Tucker Sébastien Worms Rahul Vaidya Brian Demsky.
Copyright Arshi Khan1 System Programming Instructor Arshi Khan.
Asst.Prof.Dr.Ahmet Ünveren SPRING Computer Engineering Department Asst.Prof.Dr.Ahmet Ünveren SPRING Computer Engineering Department.
Graphical User Interfaces in Haskell Koen Lindström Claessen.
Foundations of Programming Languages – Course Overview Xinyu Feng Acknowledgments: some slides taken or adapted from lecture notes of Stanford CS242
Have Your Verified Compiler And Extend It Too Zachary Tatlock Sorin Lerner UC San Diego.
VeriML DARPA CRASH Project Progress Report Antonis Stampoulis October 5 th, 2012 A language-based, dependently-typed, user-extensible approach to proof.
Secure Compiler Seminar 11/7 Survey: Modular Development of Certified Program Verifiers with a Proof Assistant Toshihiro YOSHINO (D1, Yonezawa Lab.)
F28PL1 Programming Languages Lecture 15: Standard ML 5.
Introduction to Our Research on Certifying Compiler Zhaopeng Li (In Chinese: 李兆鹏 ) Certifying Compiler Group USTC-Yale Joint.
1 MVD 2010 University of Iowa New York University Comparing Proof Systems for Linear Real Arithmetic Using LFSC Andrew Reynolds September 17, 2010.
Visual Linker Prototype presentation.
Dependable software deployment Wouter Swierstra 13 October 2006.
Agate: an Agda -to- Haskell compiler AIST / CVS Hiroyuki Ozaki (joint work with Makoto Takeyama)
Semi-Automatic Quality Assessment of Linked Data without Requiring Ontology Saemi Jang, Megawati, Jiyeon Choi, and Mun Yong Yi KIRD, KAIST NLP&DBPEDIA.
Verifiable Cloud Computing KANG Yu. Verifiable Computation Weak clients Computationally powerful cloud Goal: – Verify the computing result.
Automated tactics for separation logic VeriML Reconstruct Z3 Proof Safe incremental type checker Certifying code transformation Proof carrying hardware.
Designing Abstract Interfaces for Device Independency Designing Abstract Interfaces for Device Independency Review of A Procedure for Designing Abstract.
MIDORI The Windows Killer!! by- Sagar R. Yeole Under the guidance of- Prof. T. A. Chavan.
SAFE KERNEL EXTENSIONS WITHOUT RUN-TIME CHECKING George C. Necula Peter Lee Carnegie Mellon U.
Performed By: Itamar Niddam and Lior Motorin Instructor: Inna Rivkin Bi-Semesterial. Winter 2012/2013 3/12/2012.
© Andrew IrelandGrand Challenges for Computing Research 2004 The Verifying Compiler Andrew Ireland Dependable Systems Group School of Mathematical & Computer.
Sources, Targets and Interactions LabVIEW and the LHC.
Philipp Gysel ECE Department University of California, Davis
K Framework Grigore Rosu University of Illinois at Urbana-Champaign, USA Traian-Florin Serbanuta Alexandru Ioan-Cuza University, Iasi, Romania Joint work.
1 Programming and problem solving in C, Maxima, and Excel.
The Bedrock Structured Programming System Combining Generative Metaprogramming and Hoare Logic in an Extensible Program Verifier Adam Chlipala MIT CSAIL.
Computer Representation of Venn and Euler Diagrams Diunuge B. Wijesinghe, Surangika Ranathunga, Gihan Dias Department of Computer Science and Engineering,
Programming Languages winter term 2010/11
What is it all about? .NET MeetUp in Prague, CZ (2017/7/19)
The language focusses on ease of use
Security analysis of COM with Alloy
Sparkle a functional theorem prover
Key Ideas from day 1 slides
Jim Fawcett CSE687 – Object Oriented Design Spring 2005
Ch 1. A Python Q&A Session Bernard Chen 2007.
A Deep Learning Technical Paper Recommender System
CISC 7120X Programming Languages and Compilers
Ontology-based Software Engineering
CHAPTER 1: Introduction to Computers and Programming
CMPE419 Mobile Application Development
A Verified DSL for MPC in
Program Verification Using
What is it all about? .NET MeetUp in Amsterdam, NL (2017/7/11)
Foundations of Programming Languages – Course Overview
Foundations of Programming Languages – Course Overview
Microsoft Connect /1/2018 2:36 AM
Finding Subgraphs with Maximum Total Density and Limited Overlap
Modeling Heterogeneous Semantics in Ptolemy
Cloud Security 李芮,蒋希坤,崔男 2018年4月.
An overview of Coq Xinyu Feng USTC.
Proposal for Term Project Operating Systems, Fall 2018
Design and Implementation Issues for Atomicity
Logic: tool-based modeling and reasoning
CISC 7120X Programming Languages and Compilers
CSE-321 Programming Languages Overview
Functional Programming and Haskell
Requirements Engineering Lecture 6
CMPE419 Mobile Application Development
EN Software Carpentry Python – A Crash Course Esoteric Sections Compiled Languages.
Cloud-DNN: An Open Framework for Mapping DNN Models to Cloud FPGAs
Pointer analysis John Rollinson & Kaiyuan Li
Static Contract Checking for Haskell
An overview of Coq.
Functional Programming and Haskell
Presentation transcript:

Monadic Coq Compiler Lef Ioannidis <elefthei@mit.edu> MCQC Monadic Coq Compiler Lef Ioannidis <elefthei@mit.edu>

Make formally verified code fast and portable Motivation Make formally verified code fast and portable

Existing approaches

Deep Embeddings C-light CompCert [Ler+12] Kami [Joo+17] + operational semantics + verified compilation CompCert [Ler+12] Kami [Joo+17] Cryptol [Our+08] OEuf [Mul+18] . . . ASM Show in contrib

{ Shallow Embeddings FSCQ [Che+15] Jitk [Wan+14] . . . coqc Large RTS Haskell Extraction FSCQ [Che+15] Jitk [Wan+14] . . . coqc Large RTS Slow performance Large TCB Not portable { ghc .exe Give hello world example,

{ MCQC Pipeline coqc JSON No RTS Fast performance Smaller TCB mcqc C++17 Extraction coqc No RTS Fast performance Smaller TCB Portable output { JSON mcqc base, syscall clang .exe

Why C++17 Lambdas (C++11) Sum Types (C++17) “Weakly Typed” Parametric polymorphic Smart pointers (C++11) Goal is to compile verified: Linux modules Arduino code Interpreters/JITs Garbage collectors Smart contracts . . .

Arithmetic

C++17 Lib

Polymorphic ADTs

Reference-counted, tagged union Higher-order, polymorphic pattern matching

Higher-order logic

C++17 Sections are expanded by Coq extraction. Fundep needed to constraint too general type for F.

IO Monad

Lib C++17

+ + Implementation 1800 lines of Haskell 200 lines of Coq 600 lines MCQC typeclasses library

Benchmarks MacOS 10.14 Mojave, Macbook Air 1.4 GHz, Intel Core i5, 4GB DDR3 Using time, valgrind --tool=massif, ghc-prof-8.4.4

Try MCQC https://github.com/mit-pdos/mcqc

References [Ler+12] Leroy, Xavier. "The CompCert verified compiler." Documentation and user’s manual. INRIA Paris-Rocquencourt 53 (2012). [Cho+17] Choi, Joonwon, et al. "Kami: a platform for high-level parametric hardware specification and its modular verification." Proceedings of the ACM on Programming Languages 1.ICFP (2017): 24. [Our+08] Oury, Nicolas, and Wouter Swierstra. "The power of Pi." ICFP. Vol. 8. 2008. [Let08] Letouzey, Pierre. "Extraction in coq: An overview." Conference on Computability in Europe. Springer, Berlin, Heidelberg, 2008. [SPJ+93] Jones, SL Peyton, et al. "The Glasgow Haskell compiler: a technical overview." Proc. UK Joint Framework for Information Technology (JFIT) Technical Conference. Vol. 93. 1993. [Ana+17] Anand, Abhishek, et al. "CertiCoq: A verified compiler for Coq." The Third International Workshop on Coq for Programming Languages (CoqPL). 2017. [Mul+18] Mullen, Eric, et al. "Œuf: minimizing the Coq extraction TCB." Proceedings of the 7th ACM SIGPLAN International Conference on Certified Programs and Proofs. ACM, 2018. [Jos03] Josuttis, Nicolai M. C++ Templates: The Complete Guide. Addison-Wesley Professional, 2003. [Che+15] Chen, Haogang, et al. "Using Crash Hoare logic for certifying the FSCQ file system." Proceedings of the 25th Symposium on Operating Systems Principles. ACM, 2015. [Wan+14] Wang, Xi, et al. "Jitk: A trustworthy in-kernel interpreter infrastructure." 11th USENIX Symposium on Operating Systems Design and Implementation (OSDI). 2014.