Grad PL vs. The World

Similar documents
Simply-Typed Lambda Calculus

ADAM CHLIPALA. Research interests. Education. Refereed conference papers

CS 565: Programming Languages. Spring 2008 Tu, Th: 16:30-17:45 Room LWSN 1106

Programming language design and analysis

Developing Reliable Software using Object-Oriented Formal Specification and Refinement [Extended abstract prepared 24 March 2003]

Programming Languages

Tracking the Flow of Ideas through the Programming Languages Literature

Static Program Analysis

FAKULTÄT FÜR INFORMATIK

Introduction to Axiomatic Semantics (1/2)

Introduction to JML David Cok, Joe Kiniry, and Erik Poll Eastman Kodak Company, University College Dublin, and Radboud University Nijmegen

Language Techniques for Provably Safe Mobile Code

Verification of Object-Oriented Programs with Invariants

Regression Verification - a practical way to verify programs

Leaf Petersen Curriculum Vitae

Extended Static Checking for Java

Software Model Checking with Abstraction Refinement

Com S 541. Programming Languages I

Introduction to Axiomatic Semantics (1/2)

Type Theory meets Effects. Greg Morrisett

Distributed Systems Programming (F21DS1) Formal Verification

Formal Verification. Lecture 10

References: Thomas A. Henzinger (1996): The theory of hybrid automata In: Annual IEEE Symposium on Logic in Computer Science

Logical Relations. Amal Ahmed. Northeastern University. OPLSS Lecture 5, June 26, 2015

Programming Languages

Today s Class. Programming Languages Topic of Ultimate Mastery. Reasonable Initial Skepticism. Meta-Level Information

Semantics of Imperative Objects

Meta-programming with Names and Necessity p.1

Reasoning about Object Structures Using Ownership

Analysis of Software Artifacts

An Eclipse Plug-in for Model Checking

Second-Order Type Systems

Abstract Interpretation

6. Hoare Logic and Weakest Preconditions

F-Soft: Software Verification Platform

Double Header. Two Lectures. Flying Boxes. Some Key Players: Model Checking Software Model Checking SLAM and BLAST

Paradigms of computer programming

Chapter 1. Introduction

Model Checking: Back and Forth Between Hardware and Software

Tutorial on Model Checking Modelling and Verification in Computer Science

Types. Benjamin C. Pierce University of Pennsylvania. Programming Languages Mentoring Workshop, Jan. 2012

Programming Languages Topic of Ultimate Mastery

Chapter 3 (part 3) Describing Syntax and Semantics

Outline. Introduction SDV Motivation Model vs Real Implementation SLIC SDVRP SLAM-2 Comparisons Conclusions

Typed Lambda Calculus. Chapter 9 Benjamin Pierce Types and Programming Languages

Inductive Invariant Generation via Abductive Inference

2. Department of Computer Science, Yale University

Type Systems. Today. 1. Organizational Matters. 1. Organizational Matters. Lecture 1 Oct. 20th, 2004 Sebastian Maneth. 1. Organizational Matters

Proof Pearl: The Termination Analysis of Terminator

COS 320. Compiling Techniques

A Type System for Object Initialization In the Java TM Bytecode Language

CS-XXX: Graduate Programming Languages. Lecture 9 Simply Typed Lambda Calculus. Dan Grossman 2012

The Formal Semantics of Programming Languages An Introduction. Glynn Winskel. The MIT Press Cambridge, Massachusetts London, England

Introduction to Formal Methods

Refinement Types for TypeScript

A Type System for Functional Traversal-Based Aspects

Areas related to SW verif. Trends in Software Validation. Your Expertise. Research Trends High level. Research Trends - Ex 2. Research Trends Ex 1

Dependant Type Systems (saying what you are) Data Abstraction (hiding what you are) Review. Dependent Types. Dependent Type Notation

CS 4110 Programming Languages & Logics

From Event-B Models to Dafny Code Contracts

Main Goal. Language-independent program verification framework. Derive program properties from operational semantics

Lecture 11 Lecture 11 Nov 5, 2014

Computer aided verification

Operational Semantics. One-Slide Summary. Lecture Outline

The Fox Project: Advanced Development of Systems Software

From Hoare Logic to Matching Logic Reachability. Grigore Rosu and Andrei Stefanescu University of Illinois, USA

How to Make a Correct Multiprocess Program Execute Correctly on a Multiprocessor

DEFINING A LANGUAGE. Robert Harper. Friday, April 27, 12

Extended Static Checking: a Ten-Year Perspective

Trends in Automated Verification

JML tool-supported specification for Java Erik Poll Radboud University Nijmegen

99.44% pure: Useful Abstractions in Specifications

Programming with Types

Lecture 09. Ada to Software Engineering. Mr. Mubashir Ali Lecturer (Dept. of Computer Science)

Conservative Concurrency in Haskell

JPred-P 2. Josh Choi, Michael Welch {joshchoi,

CIS 500 Software Foundations Fall December 6

Administrivia. Existential Types. CIS 500 Software Foundations Fall December 6. Administrivia. Motivation. Motivation

Simply-Typed Lambda Calculus

Semantics. There is no single widely acceptable notation or formalism for describing semantics Operational Semantics

An Evolution of Mathematical Tools

Formal Semantics of Programming Languages

Programming Languages (PL)

COMP 181. Agenda. Midterm topics. Today: type checking. Purpose of types. Type errors. Type checking

The design of a programming language for provably correct programs: success and failure

Introduction to ML. Mooly Sagiv. Cornell CS 3110 Data Structures and Functional Programming

Formal Semantics of Programming Languages

CMSC 631 Program Analysis and Understanding. Dynamic Typing, Contracts, and Gradual Typing

Scalable Program Verification by Lazy Abstraction

To be or not programmable Dimitri Papadimitriou, Bernard Sales Alcatel-Lucent April 2013 COPYRIGHT 2011 ALCATEL-LUCENT. ALL RIGHTS RESERVED.

A Verifier for Temporal Properties

Programming Languages Topic of Ultimate Mastery

Strict Bidirectional Type Checking

Research on the Static Analysis Method of the Localization Embedded Platform Software Code Zhijie Gaoa, Ling Lu, Wen Jiao

Lecture 5: The Halting Problem. Michael Beeson

Technologies for finding errors in object-oriented software

Department of Computer Science

Runtime Behavior of Conversion Interpretation of Subtyping

! Use of formal notations. ! in software system descriptions. ! for a broad range of effects. ! and varying levels of use. !

1. true / false By a compiler we mean a program that translates to code that will run natively on some machine.

Transcription:

Grad PL vs. The World #1

Grad PL Conclusions You are now equipped to read the most influential papers in PL. You can also recognize PL concepts and will know what to do when they come up in your research. #2

Questions Model Checking, Abstraction Refinement, SLAM, Large-Step Opsem, Contextual Opsem, Structural Induction, Theorem Proving, Simplex, Proof Checking, Axiomatic Semantics, VCGen, Symbolic Execution, Invariant Detection, Abstract Interpretation, Lambda Calculus, Monomorphic and Polymorphic Type Systems, Recursive and Dependent Types, Pi Calculus, Machine Learning, Fault Localization, Program Repair, Instructor. #3

ACM SIGPLAN Most Influential Paper Awards SIGPLAN presents these awards to the author(s) of a paper presented at ICFP, OOPSLA, PLDI, and POPL held 10 years prior to the award year. The award includes a prize of $1,000 to be split among the authors of the winning paper. The papers are judged by their influence over the past decade. Each award is presented at the respective conference. #4

2008 (POPL 1998): From System F to Typed Assembly Language, Greg Morrisett, David Walker, Karl Crary, and Neal Glew.... began a major development in the application of type system ideas to low level programming. The paper shows how to compile a high-level, statically typed language into TAL, a typed assembly language defined by the authors. The type system for the assembly language ensures that source-level abstractions like closures and polymorphic functions are enforced at the machine-code level while permitting aggressive, low-level optimizations such as register allocation and instruction scheduling. This infrastructure provides the basis for ensuring the safety of untrusted low-level code artifacts, regardless of their source. A large body of subsequent work has drawn on the ideas in this paper, including work on proof-carrying code and certifying compilers. #5

From System F to Typed Assembly Language Polymorphic Function Type Polymorphic Function Type Application Tuple Type Tuple Field Selection Polymorphic Function Creation #6

From System F to Typed Assembly Language... but you know it. Typing Judgment What is fix like? #7

Operational Semantics, Forward Symex if false... ; S' L is fresh. Small-step opsem For allocation. #8

From System F to Typed Assembly Language Type Preservation cf. Decomposition #9

2011 (POPL 2001): Anytime, Anywhere: Modal Logics for Mobile Ambients, Luca Cardelli and Andrew D. Gordon.... helped spur a flowering of work in the area of process calculi that continues today. The paper focused on modal logics for reasoning about both temporal and spacial modalities for ambient behaviours, demonstrating techniques that also apply to other process calculi (even those without an explicit notion of location), so contributing to excitement in an area that was growing at that time and continues. The work has led to application of concurrency theory in fields as diverse as security, safety critical applications, query languages for semistructured data, and systems biology. #10

Anytime, Anywhere: Modal Logics for Mobile Ambients Pi Calculus -esque cf. pi send and receive #11

Anytime, Anywhere: Modal Logics for Mobile Ambients Pi Calculus Synchronous Rendezvous #12

2011 (PLDI 2001): Automatic predicate abstraction of C programs, Thomas Ball, Rupak Majumdar, Todd Millstein, Sriram K. Rajamani.... presented the underlying predicate abstraction technology of the SLAM project for checking that software satisfies critical behavioral properties of the interfaces it uses and to aid software engineers in designing interfaces and software that ensure reliable and correct execution. The technology is now part of Microsoft's Static Driver Verifier in the Windows Driver Development Kit. This is one of the earliest examples of automation of software verification on a large scale and the basis for numerous efforts to expand the domains that can be verified. #13

Automatic predicate abstraction of C programs Axiomatic Semantics #14

2009 (PLDI 1999): A Fast Fourier Transform Compiler, Matteo Frigo... describes the implementation of genfft, a special-purpose compiler that produces the performance critical code for a library, called FFTW (the Fastest Fourier Transform in the West ), that computes the discrete Fourier transform. FFTW is the predominant open fast Fourier transform package available today, as it has been since its introduction a decade ago. genfft demonstrated the power of domainspecific compilation FFTW achieves the best or close to best performance on most machines, which is remarkable for a single package. By encapsulating expert knowledge from the FFT algorithm domain and the compiler domain, genfft and FFTW provide a tremendous service to the scientific and technical community by making highly efficient FFTs available to everyone on any machine. As well as being the fastest FFT in the West, FFTW may be the last FFT in the West as the quality of this package and the maturity of the field may mean that it will never be superseded, at least for computer architectures similar to past and current ones. #15

A Fast Fourier Transform Compiler No joke. cf. HW5 #16

2014 (POPL 2004): Abstractions from proofs, Thomas Henzinger, Ranjit Jhala, Rupak Majumdar, and Kenneth McMillan.... the authors demonstrated a fundamental generalization of Craig interpolation to program analysis by predicate abstraction, opening the door for interpolation to be applied to abstraction refinement of infinite-state systems. This work showed how interpolation offers a fundamental way to explain abstraction refinement in a logical framework and has led to many extensions to increase the power of abstraction in program analysis. #17

Side Condition Proof Checking, Abstract Interpretation P -> False --------------!P P -> X,!P -> Y --------------------X Y #18

2012 (PLDI 2002): Extended Static Checking for Java, Cormac Flanagan, K. Rustan M. Leino, Mark Lillibridge, Greg Nelson, James B. Saxe, Raymie Stata... marks a turning point in the field of static checking, describing pragmatic design decisions that promote practicality over completeness. Pioneered in ESC/Modula-3, techniques from ESC/Java are now widely used in various forms in Microsoft s development tools, notably as part of Code Contracts which ships with VisualStudio. Recent innovations strongly influenced by ESC/Java include refinement types for Haskell, and verification of Eiffel programs. #19

Invariant Generation HW5 (Path Enum) Axiomatic Semantics Automated Theorem Proving #20

2017 (POPL 2007): JavaScript Instrumentation for Browser Security, Dachuan Yu, Ajay Chander, Nayeem Islam, Igor Serikov.... presents one of the earliest models of the interaction between the browser and JavaScript. It uses this model to work out the formalization and dynamic enforcement of rich security policies. Since then, people have routinely discovered additional, pernicious security problems based on this model. Eliminating these problems remains an important challenge to this day. Looking back, the selected paper made a prescient, and influential, contribution to understanding these JavaScript-based security problems. The authors chose a formal, semantic approach to model these problems and potential solutions, while remaining true to the complicated characteristics that make both JavaScript and the browser real-world artifacts. #21

Secretly IMP? #22

Read and explain their if and while rules to me #23

What is type preservation? How did they prove it? #24

Your Questions Model Checking, Abstraction Refinement, SLAM, Large-Step Opsem, Contextual Opsem, Structural Induction, Theorem Proving, Simplex, Proof Checking, Axiomatic Semantics, VCGen, Symbolic Execution, Invariant Detection, Abstract Interpretation, Lambda Calculus, Monomorphic and Polymorphic Type Systems, Recursive and Dependent Types, Pi Calculus, Machine Learning, Fault Localization, Program Repair, Instructor. #25

Grad PL Conclusions You are now equipped to read the most influential papers in PL. You can also recognize PL concepts and will know what to do when they come up in your research. #26