Compiling Self-Adjusting Programs with Continuations

Size: px
Start display at page:

Download "Compiling Self-Adjusting Programs with Continuations"

Transcription

1 Compiling Self-Adjusting Programs with Continuations Ruy Ley-Wild 1 Matthew Fluet 2 Umut Acar 2 1 Carnegie Mellon University 2 Toyota Technological Institute at Chicago September 2,

2 2 Dealin with Input Changes

3 Dealin with Input Changes talk.tex 2

4 Dealin with Input Changes talk.tex First run must process the entire source file 2

5 Dealin with Input Changes talk.tex First run must process the entire source file 2

6 Dealin with Input Changes talk.tex First run must process the entire source file 2

7 Dealing with Input Changes talk.tex First run must process the entire source file 2

8 Dealing with Input Changes talk.tex First run must process the entire source file Second run only has to process the affected frame...but latex processes the entire file again 2

9 Self-Adjusting Computation Self-Adjusting Computation (SAC) = Recompute affected outputs + Reuse unaffected outputs Modes of execution From scratch Update: reuse work from previous runs Track computation that depends on input changes 3

10 Example: Sum of Squares from scratch run: sumofsquares(3,2) same 3 2 change data

11 Example: Sum of Squares from scratch run: sumofsquares(3,2) reuse same change data computation data flow

12 Example: Sum of Squares from scratch run: sumofsquares(3,2) reuse same change recompute data computation data flow control flow

13 Example: Sum of Squares from scratch run: sumofsquares(3,2) same 3 reuse 9 reuse change recompute data computation data flow control flow

14 Example: Sum of Squares from scratch run: update run: sumofsquares(3,2) sumofsquares(3, 2) same 3 reuse 9 reuse change recompute data computation data flow control flow

15 Example: Sum of Squares from scratch run: update run: sumofsquares(3,2) sumofsquares(3, 2) same 3 reuse 9 reuse change recompute data computation data flow control flow

16 Example: Sum of Squares from scratch run: update run: sumofsquares(3,2) sumofsquares(3, 2) same 3 reuse 9 reuse change recompute data computation data flow control flow

17 Example: Sum of Squares from scratch run: update run: sumofsquares(3,2) sumofsquares(3, 2) same 3 reuse 9 reuse change recompute data computation data flow control flow

18 Applications Algorithms (computational geometry, dynamic algorithms) Machine learning (Bayesian inference) Robotics Software verification (dynamic invariant checking) Hardware design (reconfigurable hardware) 5

19 Tracking Dependencies Previous approach: Manually track dependencies monadic destination-passing primitives manual hashing, equality, memoization fun sumofsquares (x, y) = let x2 = read(x, fn m => write(m * m)) y2 = read(y, fn n => write(n * n)) in memo (x2,y2) (fn (x2,y2) => read(x2, fn n2 => read(y2, fn m2 => write(n2 + m2)))) end 6

20 Tracking Dependencies Previous approach: Manually track dependencies monadic destination-passing primitives manual hashing, equality, memoization fun sumofsquares (x, y) = let x2 = read(x, fn m => write(m * m)) y2 = read(y, fn n => write(n * n)) in memo (x2,y2) (fn (x2,y2) => read(x2, fn n2 => read(y2, fn m2 => write(n2 + m2)))) end 6 New approach: Automatically infer dependencies Language support: direct-style annotations Compiler support: infer dependencies from annotations fun sumofsquares (box m, box n) = box(unbox (box(m * m)) + unbox(box (n * n)))

21 Compilation Outline source λ-calculus + SAC annotations compilation target CPS λ-calculus + SAC primitives 7

22 Source Language Pure λ-calculus with SAC annotations Use boxes to mark changeable data τ ::= τ box e ::= box e create unbox e dereference 8

23 Source Language Pure λ-calculus with SAC annotations Use boxes to mark changeable data τ ::= τ box e ::= box e create unbox e dereference datatype a list = nil :: of a * a list map : ( a -> b) -> a list -> b list fun map f ( nil) = nil map f ( (h::t)) = (f h :: map f t) 8

24 Source Language Pure λ-calculus with SAC annotations Use boxes to mark changeable data τ ::= τ box e ::= box e create unbox e dereference datatype a list = nil :: of a * a list box map : ( a -> b) -> a list box -> b list box fun map f (box nil) = box nil map f (box (h::t)) = box (f h :: map f t) 8

25 Challenges of Compilation same e change recompute How to identify control dependencies? + memo 13 9

26 Challenges of Compilation same e change + memo 13 recompute How to identify control dependencies? Use the continuation! = the rest of the computation 9

27 Challenges of Compilation same e change + memo 13 recompute How to identify control dependencies? Use the continuation! = the rest of the computation But continuation is an overapproximation 9

28 Challenges of Compilation same e change + memo 13 recompute How to identify control dependencies? Use the continuation! = the rest of the computation But continuation is an overapproximation Use memoization 9

29 Challenges of Compilation same e change + memo 13 recompute How to identify control dependencies? Use the continuation! = the rest of the computation But continuation is an overapproximation Use memoization How to combine memoization and continuations? 9

30 Target Language Pure CPS λ-calculus with SAC primitives e ::= fun f.x.k.e explicit continuation v f v x v k boxk v v k unboxk v v k memo e attempt reuse Intrinsic support for self-adjusting computation 10

31 Dynamic Semantics for Evaluation and Replay expression evaluation σ; e σ ; v ; T state value trace replay σ; T σ ; v ; T trace 11

32 Dynamic Semantics for Evaluation and Replay expression evaluation σ; e σ ; v ; T state value trace replay σ; T σ ; v ; T trace from scratch evaluation-only 11

33 Dynamic Semantics for Evaluation and Replay expression evaluation σ; e σ ; v ; T state value trace replay σ; T σ ; v ; T trace from scratch evaluation-only update interleaving replay when possible evaluate when necessary 11

34 Dynamic Semantics for Evaluation and Replay evaluation expression σ; e σ ; v ; T state value trace replay σ; T σ ; v ; T trace Correctness: from scratch update evaluation-only interleaving replay when possible evaluate when necessary 11

35 Alternating between Evaluation and Replay a memo can adapt a similar execution previous run {}}{ σ ; e ; ; T σ; T σ ; v ; T σ; memo e σ ; v ; T 12

36 Alternating between Evaluation and Replay a memo can adapt a similar execution previous run {}}{ σ ; e ; ; T σ; T σ ; v ; T σ; memo e σ ; v ; T an invalid unboxk must be reevaluated σ(l) = v v σ; v k v σ ; v ; T σ; unboxk l v v k }{{} record result T σ ; v ; unboxk l v v k T 12

37 Adaptive CPS Translation e src v tgt k = e tgt compile term e with continuation v k box translation: straightforward fun translation: subtle box e v k = e (λy.boxk y v k ) unbox e v k = e (λy.unboxk y v k ) fun f.x.e v k =??? e 1 e 2 v k = e 1 (λy f. e 2 (λy x.y f y x v k )) 13

38 Function Compilation: standard translation 1 m 1 k 1 a 2 m 2 k 2 b 3 m 3 k 3 c fun f.x.e v k = v k (fun f.x.k. ( e k )) 1

39 Function Compilation: standard translation 1 m 1 k 1 a m 2 k 2 b 3 m 3 k 3 c fun f.x.e v k = v k (fun f.x.k. ( e k )) 1

40 Function Compilation: standard translation redo 1 m 1 k 1 How to reuse work? a m k d 3 m 3 k 3 c fun f.x.e v k = v k (fun f.x.k. ( e k )) 1

41 Function Compilation: memo d call 1 memo fn m 1 k 1 a How to reuse work? Memo the function call m 2 k 2 b 3 m 3 k 3 c fun f.x.e v k = v k (fun f.x.k. memo ( e k )) memo body 1

42 Function Compilation: memo d call 1 m 1 reuse m redo k 1 k a d How to reuse work? Memo the function call How to memo despite continuation? 3 m 3 k 3 c fun f.x.e v k = v k (fun f.x.k. memo ( e k )) memo body 1

43 Function Compilation: memo d call + boxed cont 1 m 1 m 2 box cont k 1 k 2 k 1 k 2 a b How to reuse work? Memo the function call How to memo despite continuation? Box the continuation 3 m 3 k 3 k 3 c 1 fun f.x.e v k = v k (fun f.x.k. let y k = boxk k in box cont let k = λy r.unboxk y k (λk.k y r ) in unbox cont memo ( e k )) memo body

44 Function Compilation: memo d call + boxed cont 1 3 m 1 reuse k 1 m redo k m 3 reuse k 3 k 1 a redo k d k 3 c How to reuse work? Memo the function call How to memo despite continuation? Box the continuation How to avoid reexecuting continuation? 1 fun f.x.e v k = v k (fun f.x.k. let y k = boxk k in box cont let k = λy r.unboxk y k (λk.k y r ) in unbox cont memo ( e k )) memo body

45 Function Compilation: memo d call/cont + boxed cont 1 3 m 1 m 2 m 3 memo cont k 1 k 2 k 3 k 1 k 2 k 3 a b c How to reuse work? Memo the function call How to memo despite continuation? Box the continuation How to avoid reexecuting continuation? Memoizing continuations fun f.x.e v k = v k (fun f.x.k. let k m = λy r.memo (k y r ) in memo cont let y k = boxk k m in box cont let k = λy r.unboxk y k (λk.k y r ) in unbox cont memo ( e k )) memo body 1

46 Function Compilation: memo d call/cont + boxed cont 1 3 m 1 memo k 1 m redo k m 3 reuse k 3 reuse k 1 a redo k d k 3 c How to reuse work? Memo the function call How to memo despite continuation? Box the continuation How to avoid reexecuting continuation? Memoizing continuations Uses existing primitives! fun f.x.e v k = v k (fun f.x.k. let k m = λy r.memo (k y r ) in memo cont let y k = boxk k m in box cont let k = λy r.unboxk y k (λk.k y r ) in unbox cont memo ( e k )) memo body 1

47 Summary Adaptive CPS for compiling self-adjusting programs Boxes = track dependencies + isolate continuations Memoization = identify reuse + optimize continuations More natural programming style SML implementation in MLton Selective CPS Reconcile memoization with allocation Interacting with self-adjusting subprograms Experimental evaluation Efficient update Competitive against manual approach See paper! 15

48 Thanks! pl/sa-sml 16

49 Future Work Reasoning principles for asymptotic performance Automate annotations Combine with effects (imperative references, I/O,...) Larger applications Self-adjusting latex? 17

A Cost Semantics for Self-Adjusting Computation

A Cost Semantics for Self-Adjusting Computation A Cost Semantics for Self-Adjusting Computation Ruy Ley-Wild Carnegie Mellon University rleywild@cs.cmu.edu Umut A. Acar Matthew Fluet Toyota Technological Institute at Chicago {acar,fluet}@tti-c.org Abstract

More information

Implicit Self-Adjusting Computation for Purely Functional Programs

Implicit Self-Adjusting Computation for Purely Functional Programs Implicit Self-Adjustg Computation for Purely Functional Programs Yan Chen Joshua Dunfield Matthew A. Hammer Umut A. Acar MPI-SWS September 19, 2011 Incremental/Dynamic Problems Input: 3, 5, 8, 2, 10, 4,

More information

Abstractions and Decision Procedures for Effective Software Model Checking

Abstractions and Decision Procedures for Effective Software Model Checking Abstractions and Decision Procedures for Effective Software Model Checking Prof. Natasha Sharygina The University of Lugano, Carnegie Mellon University Microsoft Summer School, Moscow, July 2011 Lecture

More information

Continuations, Processes, and Sharing. Paul Downen, Luke Maurer, Zena M. Ariola, Daniele Varacca. September 8, 2014

Continuations, Processes, and Sharing. Paul Downen, Luke Maurer, Zena M. Ariola, Daniele Varacca. September 8, 2014 Continuations, Processes, and Sharing Paul Downen, Luke Maurer, Zena M. Ariola, Daniele Varacca University of Oregon, Université Paris Diderot September 8, 2014 The plethora of semantic artifacts Many

More information

A Concurrent Logical Framework

A Concurrent Logical Framework A Concurrent Logical Framework Frank Pfenning Carnegie Mellon University Types Workshop Torino, Italy, April 2003 Joint work with Iliano Cervesato, David Walker, and Kevin Watkins Types 03, Torino, April

More information

Dynamic Semantics. Dynamic Semantics. Operational Semantics Axiomatic Semantics Denotational Semantic. Operational Semantics

Dynamic Semantics. Dynamic Semantics. Operational Semantics Axiomatic Semantics Denotational Semantic. Operational Semantics Dynamic Semantics Operational Semantics Denotational Semantic Dynamic Semantics Operational Semantics Operational Semantics Describe meaning by executing program on machine Machine can be actual or simulated

More information

Abstracting Definitional Interpreters. David Van Horn

Abstracting Definitional Interpreters. David Van Horn Abstracting Definitional Interpreters David Van Horn Abstracting Definitional Interpreters David Van Horn Northeastern University Definitional interpreters written in monadic style can express a wide variety

More information

Harvard School of Engineering and Applied Sciences CS 152: Programming Languages

Harvard School of Engineering and Applied Sciences CS 152: Programming Languages Harvard School of Engineering and Applied Sciences CS 152: Programming Languages Lecture 17 Tuesday, April 2, 2013 1 There is a strong connection between types in programming languages and propositions

More information

Bicubical Directed Type Theory

Bicubical Directed Type Theory Bicubical Directed Type Theory Matthew Weaver General Examination May 7th, 2018 Advised by Andrew Appel and Dan Licata Bicubical Directed Type Theory Bicubical directed type theory is a constructive model

More information

Principles of Program Analysis: A Sampler of Approaches

Principles of Program Analysis: A Sampler of Approaches Principles of Program Analysis: A Sampler of Approaches Transparencies based on Chapter 1 of the book: Flemming Nielson, Hanne Riis Nielson and Chris Hankin: Principles of Program Analysis Springer Verlag

More information

NICTA Advanced Course. Theorem Proving Principles, Techniques, Applications

NICTA Advanced Course. Theorem Proving Principles, Techniques, Applications NICTA Advanced Course Theorem Proving Principles, Techniques, Applications λ 1 CONTENT Intro & motivation, getting started with Isabelle Foundations & Principles Lambda Calculus Higher Order Logic, natural

More information

CSE 505, Fall 2005, Midterm Examination 8 November Please do not turn the page until everyone is ready.

CSE 505, Fall 2005, Midterm Examination 8 November Please do not turn the page until everyone is ready. CSE 505, Fall 2005, Midterm Examination 8 November 2005 Please do not turn the page until everyone is ready. Rules: The exam is closed-book, closed-note, except for one side of one 8.5x11in piece of paper.

More information

Verified Characteristic Formulae for CakeML. Armaël Guéneau, Magnus O. Myreen, Ramana Kumar, Michael Norrish April 18, 2017

Verified Characteristic Formulae for CakeML. Armaël Guéneau, Magnus O. Myreen, Ramana Kumar, Michael Norrish April 18, 2017 Verified Characteristic Formulae for CakeML Armaël Guéneau, Magnus O. Myreen, Ramana Kumar, Michael Norrish April 18, 2017 CakeML Has: references, modules, datatypes, exceptions, a FFI,... Doesn t have:

More information

A Denotational Approach to Measuring Complexity in Functional Programs

A Denotational Approach to Measuring Complexity in Functional Programs A Denotational Approach to Measuring Complexity in Functional Programs Kathryn Van Stone June 2003 CMU-CS-03-150 School of Computer Science Carnegie Mellon University Pittsburgh, PA 15213 Thesis Committee:

More information

A Quantum Computing Approach to the Verification and Validation of Complex Cyber-Physical Systems

A Quantum Computing Approach to the Verification and Validation of Complex Cyber-Physical Systems A Quantum Computing Approach to the Verification and Validation of Complex Cyber-Physical Systems Achieving Quality and Cost Control in the Development of Enormous Systems Safe and Secure Systems and Software

More information

Reconciling Situation Calculus and Fluent Calculus

Reconciling Situation Calculus and Fluent Calculus Reconciling Situation Calculus and Fluent Calculus Stephan Schiffel and Michael Thielscher Department of Computer Science Dresden University of Technology {stephan.schiffel,mit}@inf.tu-dresden.de Abstract

More information

Static Program Analysis

Static Program Analysis Static Program Analysis Xiangyu Zhang The slides are compiled from Alex Aiken s Michael D. Ernst s Sorin Lerner s A Scary Outline Type-based analysis Data-flow analysis Abstract interpretation Theorem

More information

Automated Equational Reasoning in Nondeterministic λ-calculi Modulo Theories H

Automated Equational Reasoning in Nondeterministic λ-calculi Modulo Theories H 1 Automated Equational Reasoning in Nondeterministic λ-calculi Modulo Theories H Fritz Obermeyer Department of Mathematics Carnegie Mellon University 2009:03:22 Motivation 2 to semi-automatically build

More information

Call by Effect. Kevin Ellis. Catlin Gabel

Call by Effect. Kevin Ellis. Catlin Gabel Call by Effect Kevin Ellis Catlin Gabel Abstract. Evaluation strategies specify rules for evaluation of terms in a programming language. That the choice of evaluation strategy affects the expressiveness

More information

Simply Typed Lambda Calculus

Simply Typed Lambda Calculus Simply Typed Lambda Calculus Language (ver1) Lambda calculus with boolean values t ::= x variable x : T.t abstraction tt application true false boolean values if ttt conditional expression Values v ::=

More information

A Humble Introduction to DIJKSTRA S A A DISCIPLINE OF PROGRAMMING

A Humble Introduction to DIJKSTRA S A A DISCIPLINE OF PROGRAMMING A Humble Introduction to DIJKSTRA S A A DISCIPLINE OF PROGRAMMING Do-Hyung Kim School of Computer Science and Engineering Sungshin Women s s University CONTENTS Bibliographic Information and Organization

More information

Code Generation for a Simple First-Order Prover

Code Generation for a Simple First-Order Prover Code Generation for a Simple First-Order Prover Jørgen Villadsen, Anders Schlichtkrull, and Andreas Halkjær From DTU Compute, Technical University of Denmark, 2800 Kongens Lyngby, Denmark Abstract. We

More information

Bounded Retransmission in Event-B CSP: a Case Study

Bounded Retransmission in Event-B CSP: a Case Study Available online at www.sciencedirect.com Electronic Notes in Theoretical Computer Science 280 (2011) 69 80 www.elsevier.com/locate/entcs Bounded Retransmission in Event-B CSP: a Case Study Steve Schneider

More information

Automatic Resource Bound Analysis and Linear Optimization. Jan Hoffmann

Automatic Resource Bound Analysis and Linear Optimization. Jan Hoffmann Automatic Resource Bound Analysis and Linear Optimization Jan Hoffmann Beyond worst-case analysis Beyond worst-case analysis of algorithms Beyond worst-case analysis of algorithms Resource bound analysis

More information

Lecture Notes on Intuitionistic Kripke Semantics

Lecture Notes on Intuitionistic Kripke Semantics Lecture Notes on Intuitionistic Kripke Semantics 15-816: Modal Logic Frank Pfenning Lecture 15 March 18, 2010 1 Introduction In this lecture we present an intuitionistic approach to describing a multipleworld

More information

Deductive Verification

Deductive Verification Deductive Verification Mooly Sagiv Slides from Zvonimir Rakamaric First-Order Logic A formal notation for mathematics, with expressions involving Propositional symbols Predicates Functions and constant

More information

Classical Program Logics: Hoare Logic, Weakest Liberal Preconditions

Classical Program Logics: Hoare Logic, Weakest Liberal Preconditions Chapter 1 Classical Program Logics: Hoare Logic, Weakest Liberal Preconditions 1.1 The IMP Language IMP is a programming language with an extensible syntax that was developed in the late 1960s. We will

More information

COP4020 Programming Languages. Introduction to Axiomatic Semantics Prof. Robert van Engelen

COP4020 Programming Languages. Introduction to Axiomatic Semantics Prof. Robert van Engelen COP4020 Programming Languages Introduction to Axiomatic Semantics Prof. Robert van Engelen Assertions and Preconditions Assertions are used by programmers to verify run-time execution An assertion is a

More information

NICTA Advanced Course. Theorem Proving Principles, Techniques, Applications. Gerwin Klein Formal Methods

NICTA Advanced Course. Theorem Proving Principles, Techniques, Applications. Gerwin Klein Formal Methods NICTA Advanced Course Theorem Proving Principles, Techniques, Applications Gerwin Klein Formal Methods 1 ORGANISATORIALS When Mon 14:00 15:30 Wed 10:30 12:00 7 weeks ends Mon, 20.9.2004 Exceptions Mon

More information

Embedded probabilistic programming

Embedded probabilistic programming Embedded probabilistic programming Oleg Kiselyov FNMOC oleg@pobox.com Chung-chieh Shan Rutgers University ccshan@cs.rutgers.edu 17 July 2009 Probabilistic inference Model (what) Pr(Reality) Pr(Obs j Reality)

More information

EDA045F: Program Analysis LECTURE 10: TYPES 1. Christoph Reichenbach

EDA045F: Program Analysis LECTURE 10: TYPES 1. Christoph Reichenbach EDA045F: Program Analysis LECTURE 10: TYPES 1 Christoph Reichenbach In the last lecture... Performance Counters Challenges in Dynamic Performance Analysis Taint Analysis Binary Instrumentation 2 / 44 Types

More information

Reasoning About Imperative Programs. COS 441 Slides 10b

Reasoning About Imperative Programs. COS 441 Slides 10b Reasoning About Imperative Programs COS 441 Slides 10b Last time Hoare Logic: { P } C { Q } Agenda If P is true in the initial state s. And C in state s evaluates to s. Then Q must be true in s. Program

More information

GOTO the past / programs choose their own adventure. CSE 505: Programming Languages

GOTO the past / programs choose their own adventure. CSE 505: Programming Languages GOTO the past / programs choose their own adventure. CSE 505: Programming Languages Lecture 13 Evaluation Contexts First-Class Continuations Continuation-Passing Style Zach Tatlock Fall 2013 Zach Tatlock

More information

A Verified ODE solver and Smale s 14th Problem

A Verified ODE solver and Smale s 14th Problem A Verified ODE solver and Smale s 14th Problem Fabian Immler Big Proof @ Isaac Newton Institute Jul 6, 2017 = Isabelle λ β α Smale s 14th Problem A computer-assisted proof involving ODEs. Motivation for

More information

Meta-reasoning in the concurrent logical framework CLF

Meta-reasoning in the concurrent logical framework CLF Meta-reasoning in the concurrent logical framework CLF Jorge Luis Sacchini (joint work with Iliano Cervesato) Carnegie Mellon University Qatar campus Nagoya University, 27 June 2014 Jorge Luis Sacchini

More information

Jug: Executing Parallel Tasks in Python

Jug: Executing Parallel Tasks in Python Jug: Executing Parallel Tasks in Python Luis Pedro Coelho EMBL 21 May 2013 Luis Pedro Coelho (EMBL) Jug 21 May 2013 (1 / 24) Jug: Coarse Parallel Tasks in Python Parallel Python code Memoization Luis Pedro

More information

Lecture Notes on Software Model Checking

Lecture Notes on Software Model Checking 15-414: Bug Catching: Automated Program Verification Lecture Notes on Software Model Checking Matt Fredrikson André Platzer Carnegie Mellon University Lecture 19 1 Introduction So far we ve focused on

More information

Interactive Theorem Provers

Interactive Theorem Provers Interactive Theorem Provers from the perspective of Isabelle/Isar Makarius Wenzel Univ. Paris-Sud, LRI July 2014 = Isabelle λ β Isar α 1 Introduction Notable ITP systems LISP based: ACL2 http://www.cs.utexas.edu/users/moore/acl2

More information

Limitations of OCAML records

Limitations of OCAML records Limitations of OCAML records The record types must be declared before they are used; a label e can belong to only one record type (otherwise fun x x.e) would have several incompatible types; we cannot

More information

Formal Verification of Mathematical Algorithms

Formal Verification of Mathematical Algorithms Formal Verification of Mathematical Algorithms 1 Formal Verification of Mathematical Algorithms John Harrison Intel Corporation The cost of bugs Formal verification Levels of verification HOL Light Formalizing

More information

Smtlink 2.0. Yan Peng 1 Mark R. Greenstreet 1. November 6th University of British Columbia. 1 Department of Computer Science

Smtlink 2.0. Yan Peng 1 Mark R. Greenstreet 1. November 6th University of British Columbia. 1 Department of Computer Science Smtlink 20 Yan Peng 1 Mark R Greenstreet 1 1 Department of Computer Science University of British Columbia November 6th 2018 Peng & Greenstreet (UBC) Smtlink 20 ACL2 Workshop 2018 1 / 21 1 Why Smtlink

More information

Structure. Background. them to their higher order equivalents. functionals in Standard ML source code and converts

Structure. Background. them to their higher order equivalents. functionals in Standard ML source code and converts Introduction 3 Background functionals factor out common behaviour map applies a function to every element of a list fun map [ ] = [ ] map f ( x : : xs ) = f x : : map f xs filter keeps only those elements

More information

Axiomatic Semantics. Lecture 9 CS 565 2/12/08

Axiomatic Semantics. Lecture 9 CS 565 2/12/08 Axiomatic Semantics Lecture 9 CS 565 2/12/08 Axiomatic Semantics Operational semantics describes the meaning of programs in terms of the execution steps taken by an abstract machine Denotational semantics

More information

Formal Verification of Systems-on-Chip

Formal Verification of Systems-on-Chip Formal Verification of Systems-on-Chip Wolfgang Kunz Department of Electrical & Computer Engineering University of Kaiserslautern, Germany Slide 1 Industrial Experiences Formal verification of Systems-on-Chip

More information

1 st Semester 2007/2008

1 st Semester 2007/2008 Chapter 17: System Departamento de Engenharia Informática Instituto Superior Técnico 1 st Semester 2007/2008 Slides baseados nos slides oficiais do livro Database System c Silberschatz, Korth and Sudarshan.

More information

Proof-producing decompilation and compilation

Proof-producing decompilation and compilation Proof-producing decompilation and compilation Magnus Myreen May 2008 Introduction This talk concerns verification of functional correctness of machine code for commercial processors (ARM, PowerPC, x86...

More information

Operational Semantics

Operational Semantics Operational Semantics Semantics and applications to verification Xavier Rival École Normale Supérieure Xavier Rival Operational Semantics 1 / 50 Program of this first lecture Operational semantics Mathematical

More information

Implicit Self-Adjusting Computation for Purely Functional Programs

Implicit Self-Adjusting Computation for Purely Functional Programs Implicit elf-adjusting omputation for Purely Functional Programs Yan hen Joshua Dunfield Matthew A. Hammer Umut A. Acar Max Planck Institute for oftware ystems {chenyan, joshua, hammer, umut}@mpi-sws.org

More information

Proofs of Correctness: Introduction to Axiomatic Verification

Proofs of Correctness: Introduction to Axiomatic Verification Proofs of Correctness: Introduction to Axiomatic Verification Introduction Weak correctness predicate Assignment statements Sequencing Selection statements Iteration 1 Introduction What is Axiomatic Verification?

More information

Differential Privacy and Verification. Marco Gaboardi University at Buffalo, SUNY

Differential Privacy and Verification. Marco Gaboardi University at Buffalo, SUNY Differential Privacy and Verification Marco Gaboardi University at Buffalo, SUNY Given a program P, is it differentially private? P Verification Tool yes? no? Proof P Verification Tool yes? no? Given a

More information

Information Flow Inference for ML

Information Flow Inference for ML POPL 02 INRIA Rocquencourt Projet Cristal Francois.Pottier@inria.fr http://cristal.inria.fr/~fpottier/ Vincent.Simonet@inria.fr http://cristal.inria.fr/~simonet/ Information flow analysis account number

More information

Quantum Functional Programming Language & Its Denotational Semantics

Quantum Functional Programming Language & Its Denotational Semantics Quantum Functional Programming Language & Its Denotational Semantics Ichiro Hasuo Dept. Computer Science University of Tokyo Naohiko Hoshino Research Inst. for Math. Sci. Kyoto University Talk based on:

More information

Multicore Semantics and Programming

Multicore Semantics and Programming Multicore Semantics and Programming Peter Sewell Tim Harris University of Cambridge Oracle October November, 2015 p. 1 These Lectures Part 1: Multicore Semantics: the concurrency of multiprocessors and

More information

Semantic Equivalences and the. Verification of Infinite-State Systems 1 c 2004 Richard Mayr

Semantic Equivalences and the. Verification of Infinite-State Systems 1 c 2004 Richard Mayr Semantic Equivalences and the Verification of Infinite-State Systems Richard Mayr Department of Computer Science Albert-Ludwigs-University Freiburg Germany Verification of Infinite-State Systems 1 c 2004

More information

The lambda calculus with constructors

The lambda calculus with constructors The lambda calculus with constructors Categorical semantic and Continuations Barbara Petit Focus - Univ. Bologna CaCos 2012 Barbara Petit (Focus - Univ. Bologna) The lambda calculus with constructors 1

More information

Lecture Notes on Combinatory Modal Logic

Lecture Notes on Combinatory Modal Logic Lecture Notes on Combinatory Modal Logic 15-816: Modal Logic Frank Pfenning Lecture 9 February 16, 2010 1 Introduction The connection between proofs and program so far has been through a proof term assignment

More information

Lecture Notes on Subject Reduction and Normal Forms

Lecture Notes on Subject Reduction and Normal Forms Lecture Notes on Subject Reduction and Normal Forms 15-814: Types and Programming Languages Frank Pfenning Lecture 4 September 13, 2018 1 Introduction In the last lecture we proved some key aspect of a

More information

Program verification. Hoare triples. Assertional semantics (cont) Example: Semantics of assignment. Assertional semantics of a program

Program verification. Hoare triples. Assertional semantics (cont) Example: Semantics of assignment. Assertional semantics of a program Program verification Assertional semantics of a program Meaning of a program: relation between its inputs and outputs; specified by input assertions (pre-conditions) and output assertions (post-conditions)

More information

CSED233: Data Structures (2017F) Lecture4: Analysis of Algorithms

CSED233: Data Structures (2017F) Lecture4: Analysis of Algorithms (2017F) Lecture4: Analysis of Algorithms Daijin Kim CSE, POSTECH dkim@postech.ac.kr Running Time Most algorithms transform input objects into output objects. The running time of an algorithm typically

More information

Agent-Based HOL Reasoning 1

Agent-Based HOL Reasoning 1 Agent-Based HOL Reasoning 1 Alexander Steen Max Wisniewski Christoph Benzmüller Freie Universität Berlin 5th International Congress on Mathematical Software (ICMS 2016) 1 This work has been supported by

More information

Abstract Machine for Software Process Models

Abstract Machine for Software Process Models Abstract Machine for Software Process Models Finite State Machine for SPM Waterfall Incremental Spiral Extreme Programming (XP) Scrum Generalized Abstract Machine for SPM Problem set: objectives with colors

More information

Towards a Practical Secure Concurrent Language

Towards a Practical Secure Concurrent Language Towards a Practical Secure Concurrent Language Stefan Muller and Stephen Chong TR-05-12 Computer Science Group Harvard University Cambridge, Massachusetts Towards a Practical Secure Concurrent Language

More information

Lecture Notes on Programs with Arrays

Lecture Notes on Programs with Arrays 15-414: Bug Catching: Automated Program Verification Lecture Notes on Programs with Arrays Matt Fredrikson Ruben Martins Carnegie Mellon University Lecture 6 1 Introduction The previous lecture focused

More information

Adjoint Logic and Its Concurrent Semantics

Adjoint Logic and Its Concurrent Semantics Adjoint Logic and Its Concurrent Semantics Frank Pfenning ABCD Meeting, Edinburgh, December 18-19, 2017 Joint work with Klaas Pruiksma and William Chargin Outline Proofs as programs Linear sequent proofs

More information

Recent Advances in Bayesian Inference Techniques

Recent Advances in Bayesian Inference Techniques Recent Advances in Bayesian Inference Techniques Christopher M. Bishop Microsoft Research, Cambridge, U.K. research.microsoft.com/~cmbishop SIAM Conference on Data Mining, April 2004 Abstract Bayesian

More information

Lecture Notes on Call-by-Value and Call-by-Name

Lecture Notes on Call-by-Value and Call-by-Name Lecture Notes on Call-by-Value and Call-by-Name 15-816: Substructural Logics Frank Pfenning Lecture 22 November 16, 2017 In this lecture we consider two different polarization strategies for structural

More information

2 Results I: Lifting Computer Science

2 Results I: Lifting Computer Science Ben Greenman December 12, 2015 Call-By-Name, Call-By-Value, and the λ Calculus Abstract Plotkin s 1975 paper is strictly business. There are many theorems packed in the space of 35 pages, with little room

More information

STCE. Mixed Integer Programming for Call Tree Reversal. J. Lotz, U. Naumann, S. Mitra

STCE. Mixed Integer Programming for Call Tree Reversal. J. Lotz, U. Naumann, S. Mitra Mixed Integer Programming or J. Lotz, U. Naumann, S. Mitra LuFG Inormatik 12: Sotware and Tools or Computational Engineering () RWTH Aacen University and Cemical Engineering, Carnegie Mellon University

More information

COMP 2600: Formal Methods for Software Engineeing

COMP 2600: Formal Methods for Software Engineeing COMP 2600: Formal Methods for Software Engineeing Dirk Pattinson Semester 2, 2013 What do we mean by FORMAL? Oxford Dictionary in accordance with convention or etiquette or denoting a style of writing

More information

Programming Languages and Compilers (CS 421)

Programming Languages and Compilers (CS 421) Programming Languages and Compilers (CS 421) Sasa Misailovic 4110 SC, UIUC https://courses.engr.illinois.edu/cs421/fa2017/cs421a Based in part on slides by Mattox Beckman, as updated by Vikram Adve, Gul

More information

Enabling ENVI. ArcGIS for Server

Enabling ENVI. ArcGIS for Server Enabling ENVI throughh ArcGIS for Server 1 Imagery: A Unique and Valuable Source of Data Imagery is not just a base map, but a layer of rich information that can address problems faced by GIS users. >

More information

Proof-Carrying Code in a Session-Typed Process Calculus

Proof-Carrying Code in a Session-Typed Process Calculus Proof-Carrying Code in a Session-Typed Process Calculus Frank Pfenning with Luís Caires and Bernardo Toninho Department of Computer Science Carnegie Mellon University 1st International Conference on Certified

More information

An Informal introduction to Formal Verification

An Informal introduction to Formal Verification An Informal introduction to Formal Verification Osman Hasan National University of Sciences and Technology (NUST), Islamabad, Pakistan O. Hasan Formal Verification 2 Agenda q Formal Verification Methods,

More information

Data Structures and Algorithms Running time and growth functions January 18, 2018

Data Structures and Algorithms Running time and growth functions January 18, 2018 Data Structures and Algorithms Running time and growth functions January 18, 2018 Measuring Running Time of Algorithms One way to measure the running time of an algorithm is to implement it and then study

More information

Hoare Logic I. Introduction to Deductive Program Verification. Simple Imperative Programming Language. Hoare Logic. Meaning of Hoare Triples

Hoare Logic I. Introduction to Deductive Program Verification. Simple Imperative Programming Language. Hoare Logic. Meaning of Hoare Triples Hoare Logic I Introduction to Deductive Program Verification Işıl Dillig Program Spec Deductive verifier FOL formula Theorem prover valid contingent Example specs: safety (no crashes), absence of arithmetic

More information

Lecture 05: High-Level Design with SysML. An Introduction to SysML. Where are we? What is a model? The Unified Modeling Language (UML)

Lecture 05: High-Level Design with SysML. An Introduction to SysML. Where are we? What is a model? The Unified Modeling Language (UML) Where are we? Systeme hoher Sicherheit und Qualität Universität Bremen, WS 2017/2018 Lecture 05: High-Level Design with SysML Christoph Lüth, Dieter Hutter, Jan Peleska 01: Concepts of Quality 02: Legal

More information

Lecture Notes on Certifying Theorem Provers

Lecture Notes on Certifying Theorem Provers Lecture Notes on Certifying Theorem Provers 15-317: Constructive Logic Frank Pfenning Lecture 13 October 17, 2017 1 Introduction How do we trust a theorem prover or decision procedure for a logic? Ideally,

More information

Hoare Logic (I): Axiomatic Semantics and Program Correctness

Hoare Logic (I): Axiomatic Semantics and Program Correctness Hoare Logic (I): Axiomatic Semantics and Program Correctness (Based on [Apt and Olderog 1991; Gries 1981; Hoare 1969; Kleymann 1999; Sethi 199]) Yih-Kuen Tsay Dept. of Information Management National Taiwan

More information

Verifying Concurrent Memory Reclamation Algorithms with Grace

Verifying Concurrent Memory Reclamation Algorithms with Grace Verifying Concurrent Memory Reclamation Algorithms with Grace Alexey Gotsman, Noam Rinetzky, and Hongseok Yang 1 IMDEA Software Institute 2 Tel-Aviv University 3 University of Oxford Abstract. Memory management

More information

Logic Programming Techniques for Reasoning with Probabilistic Ontologies

Logic Programming Techniques for Reasoning with Probabilistic Ontologies Logic Programming Techniques for Reasoning with Probabilistic Ontologies Riccardo Zese, Elena Bellodi, Evelina Lamma and Fabrizio Riguzzi University of Ferrara, Italy riccardo.zese@unife.it Zese, Bellodi,

More information

Erly Marsh - a Model-Based Testing tool. Johan Blom, PhD

Erly Marsh - a Model-Based Testing tool. Johan Blom, PhD Erly Marsh - a Model-Based Testing tool Johan Blom, PhD 1 Motivation Mobile Arts Develops server software for mobile telecom operators (Location server, SMSC etc.) Implementations rather big and complicated

More information

On Compensation Primitives as Adaptable Processes

On Compensation Primitives as Adaptable Processes On Compensation Primitives as Adaptable Processes Jovana Dedeić University of Novi Sad Jovanka Pantović (Novi Sad) and Jorge A. Pérez (Groningen) LAP 2015 - Dubrovnik, September 24, 2015 Outline 1 Context

More information

NATIONAL RADIO ASTRONOMY OBSERVATORY MEMORANDUM

NATIONAL RADIO ASTRONOMY OBSERVATORY MEMORANDUM NATIONAL RADIO ASTRONOMY OBSERVATORY MEMORANDUM DATE: September 16, 1996 TO: M. Clark, B. Garwood, D. Hogg, H. Liszt FROM: Ron Maddalena SUBJECT: GBT and Aips++ requirements for traditional, all-sky pointing

More information

Meta-Reasoning in a Concurrent Logical Framework

Meta-Reasoning in a Concurrent Logical Framework Meta-Reasoning in a Concurrent Logical Framework Iliano Cervesato and Jorge Luis Sacchini Carnegie Mellon University Chalmers University, 16 Oct 2013 Iliano Cervesato and Jorge Luis Sacchini Meta-Reasoning

More information

Subtyping and Intersection Types Revisited

Subtyping and Intersection Types Revisited Subtyping and Intersection Types Revisited Frank Pfenning Carnegie Mellon University International Conference on Functional Programming (ICFP 07) Freiburg, Germany, October 1-3, 2007 Joint work with Rowan

More information

Formal verification of IA-64 division algorithms

Formal verification of IA-64 division algorithms Formal verification of IA-64 division algorithms 1 Formal verification of IA-64 division algorithms John Harrison Intel Corporation IA-64 overview HOL Light overview IEEE correctness Division on IA-64

More information

Analysis of Algorithms

Analysis of Algorithms Presentation for use with the textbook Data Structures and Algorithms in Java, 6th edition, by M. T. Goodrich, R. Tamassia, and M. H. Goldwasser, Wiley, 2014 Analysis of Algorithms Input Algorithm Analysis

More information

The LCF Approach to Theorem Proving

The LCF Approach to Theorem Proving The LCF Approach to Theorem Proving 1 The LCF Approach to Theorem Proving John Harrison Intel Corporation Ideas and historical context Key ideas of LCF Equational logic example More about HOL Light Programming

More information

On the Semantics of Parsing Actions

On the Semantics of Parsing Actions On the Semantics of Parsing Actions Hayo Thielecke School of Computer Science University of Birmingham Birmingham B15 2TT, United Kingdom Abstract Parsers, whether constructed by hand or automatically

More information

Floyd-Hoare Style Program Verification

Floyd-Hoare Style Program Verification Floyd-Hoare Style Program Verification Deepak D Souza Department of Computer Science and Automation Indian Institute of Science, Bangalore. 9 Feb 2017 Outline of this talk 1 Overview 2 Hoare Triples 3

More information

Model Checking. Boris Feigin March 9, University College London

Model Checking. Boris Feigin March 9, University College London b.feigin@cs.ucl.ac.uk University College London March 9, 2005 Outline 1 2 Techniques Symbolic 3 Software 4 Vs. Deductive Verification Summary Further Reading In a nutshell... Model checking is a collection

More information

COMS 6100 Class Notes

COMS 6100 Class Notes COMS 6100 Class Notes Daniel Solus September 20, 2016 1 General Remarks The Lecture notes submitted by the class have been very good. Integer division seemed to be a common oversight when working the Fortran

More information

A Polymorphic Type and System for Multi-Staged Exceptions

A Polymorphic Type and System for Multi-Staged Exceptions A Polymorphic Type System for Multi-Staged Exceptions Seoul National University 08/04/2006 This is a joint work with In-Sook Kim and Kwangkeun Yi Outlie 1. Introduction and Examples 2. Operational Semantics

More information

Sample Alignment Part

Sample Alignment Part Sample Alignment Part Contents Contents 1. How to set Part conditions...1 1.1 Setting conditions... 1 1.2 Customizing scan conditions and slit conditions... 6 2. Sample alignment sequence...13 2.1 Direct

More information

Automatic Generation of Polynomial Invariants for System Verification

Automatic Generation of Polynomial Invariants for System Verification Automatic Generation of Polynomial Invariants for System Verification Enric Rodríguez-Carbonell Technical University of Catalonia Talk at EPFL Nov. 2006 p.1/60 Plan of the Talk Introduction Need for program

More information

Intelligent Agents. Formal Characteristics of Planning. Ute Schmid. Cognitive Systems, Applied Computer Science, Bamberg University

Intelligent Agents. Formal Characteristics of Planning. Ute Schmid. Cognitive Systems, Applied Computer Science, Bamberg University Intelligent Agents Formal Characteristics of Planning Ute Schmid Cognitive Systems, Applied Computer Science, Bamberg University Extensions to the slides for chapter 3 of Dana Nau with contributions by

More information

Program Slicing. Author: Mark Weiser Published in TSE, Presented by Peeratham (Karn) Techapalokul 10/13/2015

Program Slicing. Author: Mark Weiser Published in TSE, Presented by Peeratham (Karn) Techapalokul 10/13/2015 Program Slicing Author: Mark Weiser Published in TSE, 1984 Presented by Peeratham (Karn) Techapalokul 1/13/215 About Mark Weiser a chief scientist at Xerox PARC Widely considered to be the father of ubiquitous

More information

RESISTing Reliability Degradation through Proactive Reconfiguration

RESISTing Reliability Degradation through Proactive Reconfiguration RESISTing Reliability Degradation through Proactive Reconfiguration D. Cooray, S. Malek, R. Roshandel, and D. Kilgore Summarized by Haoliang Wang September 28, 2015 Motivation An emerging class of system

More information

Algebraic Trace Theory

Algebraic Trace Theory Algebraic Trace Theory EE249 Roberto Passerone Material from: Jerry R. Burch, Trace Theory for Automatic Verification of Real-Time Concurrent Systems, PhD thesis, CMU, August 1992 October 21, 2002 ee249

More information

Information Flow Inference for ML

Information Flow Inference for ML Information Flow Inference for ML Vincent Simonet INRIA Rocquencourt Projet Cristal MIMOSA September 27, 2001 Information flow account number bank applet order vendor account H order L bank H vendor L

More information