What should a general purpose language for Dependently-Typed Programming look like?

Slides:



Advertisements
Similar presentations
1 Verification by Model Checking. 2 Part 1 : Motivation.
Advertisements

Automated Theorem Proving Lecture 1. Program verification is undecidable! Given program P and specification S, does P satisfy S?
Static and User-Extensible Proof Checking Antonis StampoulisZhong Shao Yale University POPL 2012.
VeriCon: Towards Verifying Controller Programs in SDNs (PLDI 2014) Thomas Ball, Nikolaj Bjorner, Aaron Gember, Shachar Itzhaky, Aleksandr Karbyshev, Mooly.
Background information Formal verification methods based on theorem proving techniques and model­checking –to prove the absence of errors (in the formal.
VIDE als voortzetting van Cocktail SET Seminar 11 september 2008 Dr. ir. Michael Franssen.
Presenter: PCLee – This paper outlines the MBAC tool for the generation of assertion checkers in hardware. We begin with a high-level presentation.
Assurance techniques for code generators Ewen Denney USRA/RIACS, NASA Ames Bernd Fischer ECS, U Southampton.
ISBN Chapter 3 Describing Syntax and Semantics.
CS 330 Programming Languages 09 / 19 / 2006 Instructor: Michael Eckmann.
Introductory Lecture. What is Discrete Mathematics? Discrete mathematics is the part of mathematics devoted to the study of discrete (as opposed to continuous)
VeriML: Revisiting the Foundations of Proof Assistants Zhong Shao Yale University MacQueen Fest May 13, 2012 (Joint work with Antonis Stampoulis)
An Integration of Program Analysis and Automated Theorem Proving Bill J. Ellis & Andrew Ireland School of Mathematical & Computer Sciences Heriot-Watt.
Formal Methods in Software Engineering Credit Hours: 3+0 By: Qaisar Javaid Assistant Professor Formal Methods in Software Engineering1.
A small part of what you should know about continuations, but were too afraid to ask Nick Benton.
CS 330 Programming Languages 09 / 18 / 2007 Instructor: Michael Eckmann.
OOP #10: Correctness Fritz Henglein. Wrap-up: Types A type is a collection of objects with common behavior (operations and properties). (Abstract) types.
Management 421 Computer Science 350. Overview Project Roles Software Development Process Extreme Programming Management/Developer Interaction in Extreme.
A Type System for Expressive Security Policies David Walker Cornell University.
CS 330 Programming Languages 09 / 16 / 2008 Instructor: Michael Eckmann.
SNAL Sensor Networks Application Language Alvise Bonivento Mentor: Prof. Sangiovanni-Vincentelli 290N project, Fall 04.
Tim Sheard Oregon Graduate Institute Lecture 11: A Reduction Semantics for MetaML CS510 Section FSC Winter 2005 Winter 2005.
School of Computer ScienceG53FSP Formal Specification1 Dr. Rong Qu Introduction to Formal Specification
Course Instructor: Aisha Azeem
DBMS1 Database Management System (DBMS) Introductory Concepts Week-1.
Mathematics throughout the CS Curriculum Support by NSF #
Roles Managers Technical Team Leaders Programmers Customers Database Administrators Instructors.
©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 19Slide 1 Verification and Validation l Assuring that a software system meets a user's.
VeriML DARPA CRASH Project Progress Report Antonis Stampoulis October 5 th, 2012 A language-based, dependently-typed, user-extensible approach to proof.
Verification and Validation Yonsei University 2 nd Semester, 2014 Sanghyun Park.
CS 101 – Aug. 26 Definition of computer & CS Making good decisions Computer organization A little history Please read Chapter 1 in book. Tomorrow’s lab:
Software Engineering Prof. Dr. Bertrand Meyer March 2007 – June 2007 Chair of Software Engineering Static program checking and verification Slides: Based.
Computing and the World Walid Taha Rice University.
Types for Programs and Proofs Lecture 1. What are types? int, float, char, …, arrays types of procedures, functions, references, records, objects,...
CSCA48 Course Summary.
Proof Carrying Code Zhiwei Lin. Outline Proof-Carrying Code The Design and Implementation of a Certifying Compiler A Proof – Carrying Code Architecture.
CSE 219 Computer Science III Program Design Principles.
ISBN Chapter 3 Describing Semantics -Attribute Grammars -Dynamic Semantics.
Formal Verification Lecture 9. Formal Verification Formal verification relies on Descriptions of the properties or requirements Descriptions of systems.
Checking Reachability using Matching Logic Grigore Rosu and Andrei Stefanescu University of Illinois, USA.
Refinements to techniques for verifying shape analysis invariants in Coq Kenneth Roe GBO Presentation 9/30/2013 The Johns Hopkins University.
Lyra – A service-oriented and component-based method for the development of communicating systems (by Sari Leppänen, Nokia/NRC) Traditionally, the design,
High Integrity Ada in a UML and C world Peter Amey, Neil White Presented by Liping Cai.
Verification and Validation Assuring that a software system meets a user's needs.
3.2 Semantics. 2 Semantics Attribute Grammars The Meanings of Programs: Semantics Sebesta Chapter 3.
ISBN Chapter 3 Describing Semantics.
Chapter 3 Part II Describing Syntax and Semantics.
Semantics In Text: Chapter 3.
1 Chapter 26 Cleanroom Software Engineering Cleanroom Developed in early 80’s by Harlan Mills Reported very good results –reliable, high-quality.
- 1 -  P. Marwedel, Univ. Dortmund, Informatik 12, 05/06 Universität Dortmund Validation - Formal verification -
Automated tactics for separation logic VeriML Reconstruct Z3 Proof Safe incremental type checker Certifying code transformation Proof carrying hardware.
Software Engineering1  Verification: The software should conform to its specification  Validation: The software should do what the user really requires.
Unit 17: SDLC. Systems Development Life Cycle Five Major Phases Plus Documentation throughout Plus Evaluation…
Duminda WijesekeraSWSE 623: Introduction1 Introduction to Formal and Semi- formal Methods Based on A Specifier's Introduction to Formal Methods (J. Wing)
Getting Started in PL Design Research Stephanie Weirich University of Pennsylvania.
Course: Software Engineering – Design I IntroductionSlide Number 1 What is a specification Description of a (computer) system, which:  is precise;  defines.
Frederico Araujo CS6362 – Fall 2010 Automated Theorem Proving.
Introductory Lecture. What is Discrete Mathematics? Discrete mathematics is the part of mathematics devoted to the study of discrete (as opposed to continuous)
©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 19Slide 1 Verification and Validation l Assuring that a software system meets a user's.
EECE 320 L8: Combinational Logic design Principles 1Chehab, AUB, 2003 EECE 320 Digital Systems Design Lecture 8: Combinational Logic Design Principles.
Types for Programs and Proofs
A Verified DSL for MPC in
IS 2935: Developing Secure Systems
Clark Barrett Analysis of Computer Systems Group
Software Verification and Validation
Software Verification and Validation
강의 내용 및 방법 접근방법 리포트 시험 Lambda Calculus, Proof of Correctness
Software Verification and Validation
Social Practice of the language: Describe and share information
Rich Model Toolkit – An Infrastructure for Reliable Computer Systems
Presentation transcript:

What should a general purpose language for Dependently-Typed Programming look like?

Discussion Topics General framework Indexed or full dependent types? Staging? Soundness? Examples? What application areas? Reason about effects? What logic? Automation? (what sort?) IDE integration? Is this the right question? Are other approaches better? Coq Esc/Haskell, Spec#, etc.

Participants Stephanie Weirich Emir Pasalic Edwin Brady Tim Sheard Ralf Laemmel John O’Leary Manuel Fahndrich (with cameos by Walid Taha and Oleg Kiselyov)

Indexed vs. Full Dependent types Split based on base language FP = same/sub-language C#/Java/C++ = too different from logic Different vs. sublanguage if indexed language is sublanguage of computation language, semantics must coincide Types pick out sub-language effect type system indexed monad (monad encapsulates effects, index describes effects)

Staging? It’s orthogonal Relation to phase-distinction? Do we want to control what is compile- time, what is runtime? Disagreement here, not a lot of specific experience

Examples Typed-object languages Datastructures (balanced trees, binomial heaps, etc.) Correctness of insertion sort Correctness of lex/yacc (Pottier) Defunctionalization FRP (Nilsson) Pugs (Perl 6 implementation) N-way maps Generic programming (Reflection) Correctness of CPS conversion Static resource estimation

Future examples? Hardware Ripple-carry adder (applications in hardware verification) Wired circuit generator (Sheeran) Formalize “From System F to TAL” Network protocols - Session types Self-describing databases Capturing the ordering of lock acquisition Provably correct refactoring More sophisticated typed object languages

Automation As much as possible please. How to convince programmers to do proofs? Pluggable decision procedures Omega, SAT, Ring, Uninterpreted functions Cooperative decision procedures Semi-automatic proving (tactics) What sort of help with failed proofs? Incremental proof generation Interaction between static and dynamic checking