Relational Parametricity and Separation Logic. Hongseok Yang, Queen Mary, Univ. of London Lars Birkedal, IT Univ. of Copenhagen

Size: px
Start display at page:

Download "Relational Parametricity and Separation Logic. Hongseok Yang, Queen Mary, Univ. of London Lars Birkedal, IT Univ. of Copenhagen"

Transcription

1 Relational Parametricity and Separation Logic Hongseok Yang, Queen Mary, Univ. of London Lars Birkedal, IT Univ. of Copenhagen

2 Challenge Develop a theory of data abstraction for pointer programs. When are two modules equivalent in the presence of pointers?

3 Message Focus on good clients of modules. Provability in sep. logic is a good candidate for deciding good clients.

4 Module Buffer1 *b=*p; free(p); b put(p) 5 get()

5 Module Buffer1 *b=*p; free(p); b put(p) 5 get()

6 Module Buffer1 *b=*p; free(p); b put(p) 5 get() 5

7 Module Buffer1 *b=*p; free(p); b put(p) 5 get()

8 Module Buffer1 *b=*p; free(p); b 5 put(p) get() 9

9 Module Buffer1 *b=*p; free(p); b 5 9 put(p) get()

10 Module Buffer1 *b=*p; free(p); b 9 9 put(p) get()

11 Module Buffer1 *b=*p; free(p); b 9 9 put(p) get()

12 Module Buffer1 *b=*p; free(p); Module Buffer2 free(b); b=p; b 9 put(p) get()

13 Module Buffer1 *b=*p; free(p); Module Buffer2 free(b); b=p; b 9 put(p) get() 3

14 Module Buffer1 *b=*p; free(p); Module Buffer2 free(b); b=p; b 9 3 put(p) get()

15 Module Buffer1 *b=*p; free(p); Module Buffer2 free(b); b=p; b 5 3 put(p) get()

16 Module Buffer1 *b=*p; free(p); Module Buffer2 free(b); b=p; b 5 3 put(p) get()

17 Module Buffer1 *b=*p; free(p); Module Buffer2 free(b); b=p; b 3 put(p) get()

18 Module Buffer1 *b=*p; free(p); Module Buffer2 free(b); b=p; Client Program { emp p=malloc(); *p=5; { p - put(p); { emp n = read(); { emp *p=3; {??? b 3 put(p) get()

19 Module Buffer1 Module Buffer2 Interface Spec *b=*p; free(p); {p -put(p){emp {empget(){emp free(b); b=p; Client Program { emp p=malloc(); *p=5; { p - put(p); { emp n = read(); { emp *p=3; {??? b 3 put(p) get()

20 Module Buffer1 Module Buffer2 Interface Spec *b=*p; free(p); {p -put(p){emp {empget(){emp free(b); b=p; Client Program { emp p=malloc(); *p=5; { p - put(p); { emp n = read(); { emp *p=3; {??? b 3 put(p) get()

21 Module Buffer1 Module Buffer2 Interface Spec *b=*p; free(p); {p -put(p){emp {empget(){emp free(b); b=p; Client Program { emp p=malloc(); *p=5; { p - put(p); { emp n = read(); { emp *p=3; {??? b 3 put(p) get()

22 Module Buffer1 Module Buffer2 Interface Spec *b=*p; free(p); {p -put(p){emp {empget(){emp free(b); b=p; Client Program { emp p=malloc(); *p=5; { p - put(p); { emp n = read(); { emp *p=3; {??? b 3 put(p) get()

23 Module Buffer1 Module Buffer2 Interface Spec *b=*p; free(p); {p -put(p){emp {empget(){emp free(b); b=p; Client Program { emp p=malloc(); *p=5; { p - put(p); { emp n = read(); { emp *p=3; {??? b 3 put(p) get()

24 Module Buffer1 Module Buffer2 Interface Spec *b=*p; free(p); {p -put(p){emp {empget(){emp free(b); b=p; Client Program { emp p=malloc(); *p=5; { p - put(p); { emp n = read(); { emp *p=3; {??? b 3 put(p) get()

25 Main Result Informally Buffer1 and Buffer2 are observationally equivalent, if we consider only provable clients C in sep. logic: for some P and Q, Γ SL ( {p put(p){emp {empget(){emp ) {P C{Q

26 Main Result Informally Buffer1 and Buffer2 are observationally equivalent, if we consider only provable clients C in sep. logic: for some P and Q, Γ SL ( {p put(p){emp {empget(){emp ) {P C{Q

27 Main Result Informally Buffer1 and Buffer2 are observationally equivalent, if we consider only provable clients C in sep. logic: for some P and Q, Γ SL ( {p put(p){emp {empget(){emp ) {P C{Q

28 Main Result Informally Buffer1 and Buffer2 are observationally equivalent, if we consider only provable clients C in sep. logic: for some P and Q, Γ SL ( {p put(p){emp {empget(){emp ) {P C{Q

29 Main Result Informally Buffer1 and Buffer2 are observationally equivalent, if we consider only provable clients C in sep. logic: for some P and Q, Γ SL ( {p put(p){emp {empget(){emp ) {P C{Q Client Program { emp p=malloc(); *p=5; { p - put(p); { emp n = read(); { emp *p=3; {???

30 Main Result Informally Buffer1 and Buffer2 are observationally equivalent, if we consider only provable clients C in sep. logic: for some P and Q, Γ SL ( {p put(p){emp {empget(){emp ) {P C{Q

31 Main Result Informally Buffer1 and Buffer2 are observationally equivalent, if we consider only provable clients C in sep. logic: for some P and Q, Γ SL ( {p put(p){emp {empget(){emp ) {P C{Q for all r, put 1 (p) C[put 1, get 1 ] if eq [p ] r eq [emp ] r..., then eq [P ] r eq [Q ] r put 2 (p) C[put 2, get 2 ]

32 By Relational Main Result Semantics Informally of Specifications in Sep. Logic Buffer1 and Buffer2 are observationally equivalent, if we consider only provable clients C in sep. logic: for some P and Q, Γ SL ( {p put(p){emp {empget(){emp ) {P C{Q for all r, put 1 (p) C[put 1, get 1 ] if eq [p ] r eq [emp ] r..., then eq [P ] r eq [Q ] r put 2 (p) C[put 2, get 2 ]

33 Sample Specification k : com {l k{emp {P C{Q

34 Syntax k : com {l k{emp {P C{Q Commands. (e.g. free(x), *x=y.)

35 Syntax k : com {l k{emp {P C{Q Commands. (e.g. free(x), *x=y.) Assertions. (e.g. emp, l -.)

36 Syntax k : com {l k{emp {P C{Q Commands. (e.g. free(x), *x=y.) Assertions. (e.g. emp, l -.) Specifications. (e.g. {l -k{emp, {empc{emp.)

37 Semantics of Commands and Assertions k : com {l k{emp {P C{Q Heaps [[com]] [[assert]] def = Locations fin Values def = Heaps local (Heaps {fault) def = P(Heaps)

38 Relational Semantics of Specifications k : com {l k{emp {P C{Q η 1, η 2, r = ϕ

39 Relational Semantics of Specifications k : com {l k{emp {P C{Q Environments E.g. [k [[free(l)]]] η 1, η 2, r = ϕ

40 Relational Semantics of Specifications k : com {l k{emp {P C{Q Environments E.g. [k [[free(l)]]] η 1, η 2, r = ϕ Relations on Heaps E.g. h 1 [eq H ]h 2 iff h 1 = h 2 h 2 q h 1 [allocemp l ]h 2 iff v. h 1 =[l v] h 2 =[]

41 Semantics of Hoare Triples k : com {l k{emp {P C{Q η 1, η 2, r = {P C{Q iff ] [[C]] η1 [eq [P ] r eq [Q ] r [[C]] η2

42 Semantics of Hoare Triples Separating Conj. for Relations: h 1 [r 1 r 2 ]h 2 k : com {l k{emp {P C{Q η 1, η 2, r = {P C{Q iff ] [[C]] η1 [eq [P ] r eq [Q ] r [[C]] η2 holds iff h 1 = n 1 m 1 h 2 = n 2 m 2 n 1 [r 1 ]m 1 n 2 [r 2 ]m 2

43 Semantics of Hoare Triples Separating Conj. for Relations: h 1 [r 1 r 2 ]h 2 k : com {l k{emp {P C{Q η 1, η 2, r = {P C{Q iff ] [[C]] η1 [eq [P ] r eq [Q ] r [[C]] η2 holds iff h 1 = n 1 m 1 h 2 = n 2 m 2 n 1 [r 1 ]m 1 n 2 [r 2 ]m 2 h1 = n1!m1 eq [P ] r h2 = n2!m2

44 Semantics of Hoare Triples Separating Conj. for Relations: h 1 [r 1 r 2 ]h 2 k : com {l k{emp {P C{Q η 1, η 2, r = {P C{Q iff ] [[C]] η1 [eq [P ] r eq [Q ] r [[C]] η2 holds iff h 1 = n 1 m 1 h 2 = n 2 m 2 n 1 [r 1 ]m 1 n 2 [r 2 ]m 2 h1 = n1!m1 eq [P ] r h2 = n2!m2 [[C]] η1 [[C]] η2

45 Semantics of Hoare Triples Separating Conj. for Relations: h 1 [r 1 r 2 ]h 2 k : com {l k{emp {P C{Q η 1, η 2, r = {P C{Q iff ] [[C]] η1 [eq [P ] r eq [Q ] r [[C]] η2 holds iff h 1 = n 1 m 1 h 2 = n 2 m 2 n 1 [r 1 ]m 1 n 2 [r 2 ]m 2 h1 = n1!m1 eq [P ] r h2 = n2!m2 [[C]] η1 [[C]] η2 h'1 = n'1!m'1 eq [Q ] r h'2 = n'2!m'2

46 Semantics of Hoare Triples Separating Conj. for Relations: [k [[ l = 0]]], [k [[skip]]], allocemp l h 1 [r 1 r 2 ]h 2 k : com {l k{emp {P C{Q η 1, η 2, r = {P C{Q iff ] [[C]] η1 [eq [P ] r eq [Q ] r [[C]] η2 holds iff = {empk{emp η 1, η 2, eq [emp ] = {empdispose(l){emp h 1 = n 1 m 1 h 2 = n 2 m 2 n 1 [r 1 ]m 1 n 2 [r 2 ]m 2 [] [l v] eq [emp ] allocemp l [] []

47 Semantics of Hoare Triples Separating Conj. for Relations: [k [[ l = 0]]], [k [[skip]]], allocemp l h 1 [r 1 r 2 ]h 2 k : com {l k{emp {P C{Q η 1, η 2, r = {P C{Q iff ] [[C]] η1 [eq [P ] r eq [Q ] r [[C]] η2 holds iff = {empk{emp η 1, η 2, eq [emp ] = {empdispose(l){emp h 1 = n 1 m 1 h 2 = n 2 m 2 n 1 [r 1 ]m 1 n 2 [r 2 ]m 2 [] [l v] [[k]] η1 = [[ l = 0]] eq [emp ] allocemp l [] [] [[k]] η2 = [[skip]]

48 Semantics of Hoare Triples Separating Conj. for Relations: [k [[ l = 0]]], [k [[skip]]], allocemp l h 1 [r 1 r 2 ]h 2 k : com {l k{emp {P C{Q η 1, η 2, r = {P C{Q iff ] [[C]] η1 [eq [P ] r eq [Q ] r [[C]] η2 holds iff = {empk{emp η 1, η 2, eq [emp ] = {empdispose(l){emp h 1 = n 1 m 1 h 2 = n 2 m 2 n 1 [r 1 ]m 1 n 2 [r 2 ]m 2 [] [l v] [[k]] η1 = [[ l = 0]] [] [l 0] eq [emp ] [] [] allocemp l [[k]] η2 = [[skip]] eq [emp ] [] [] allocemp l

49 Semantics of Hoare Triples Separating Conj. for Relations: h 1 [r 1 r 2 ]h 2 k : com {l k{emp {P C{Q η 1, η 2, r = {P C{Q iff ] [[C]] η1 [eq [P ] r eq [Q ] r [[C]] η2 holds iff η 1, η 2, eq [emp ] = {l dispose(l){emp {empdispose(l){emp h 1 = n 1 m 1 h 2 = n 2 m 2 n 1 [r 1 ]m 1 n 2 [r 2 ]m 2 [l 0] [] eq [l ] eq [emp ] [l 0] []

50 Semantics of Hoare Triples Separating Conj. for Relations: h 1 [r 1 r 2 ]h 2 k : com {l k{emp {P C{Q η 1, η 2, r = {P C{Q iff ] [[C]] η1 [eq [P ] r eq [Q ] r [[C]] η2 holds iff η 1, η 2, eq [emp ] = {l dispose(l){emp {empdispose(l){emp h 1 = n 1 m 1 h 2 = n 2 m 2 n 1 [r 1 ]m 1 n 2 [r 2 ]m 2 [l 0] [] [[dispose(l)]] η1 eq [l ] [l 0] [] eq [emp ] [[dispose(l)]] η2

51 Semantics of Hoare Triples Separating Conj. for Relations: h 1 [r 1 r 2 ]h 2 k : com {l k{emp {P C{Q η 1, η 2, r = {P C{Q iff ] [[C]] η1 [eq [P ] r eq [Q ] r [[C]] η2 holds iff η 1, η 2, eq [emp ] = {l dispose(l){emp {empdispose(l){emp h 1 = n 1 m 1 h 2 = n 2 m 2 n 1 [r 1 ]m 1 n 2 [r 2 ]m 2 [l 0] [] [[dispose(l)]] η1 [] [] eq [l ] eq [emp ] eq [emp ] eq [emp ] [l 0] [] [[dispose(l)]] η2 [] []

52 Semantics of Hoare Triples Separating Conj. for Relations: h 1 [r 1 r 2 ]h 2 k : com {l k{emp {P C{Q η 1, η 2, r = {P C{Q iff ] [[C]] η1 [eq [P ] r eq [Q ] r [[C]] η2 holds iff η 1, η 2, eq [emp ] = {l dispose(l){emp {empdispose(l){emp h 1 = n 1 m 1 h 2 = n 2 m 2 n 1 [r 1 ]m 1 n 2 [r 2 ]m 2 Lemma: Suppose C does not call functions. = usual {P C{Q if and only if = new {P C{Q [l 0] [] [[dispose(l)]] η1 [] [] eq [l ] eq [emp ] eq [emp ] eq [emp ] [l 0] [] [[dispose(l)]] η2 [] []

53 Semantics of Implications k : com {l k{emp {P C{Q η 1, η 2, r = ϕ ψ iff r. if (η 1, η 2, r r = ϕ), then (η 1, η 2, r r = ψ)

54 Semantics of Implications k : com {l k{emp {P C{Q η 1, η 2, r = ϕ ψ iff r. if (η 1, η 2, r r = ϕ), then (η 1, η 2, r r = ψ) Kripke Semantics of Intuit. Logic. Worlds: Relations r on Heaps Accessibility Relation: r r r 0. r r 0 = r.

55 Relational Semantics of Specifications k : com {l k{emp {P C{Q

56 Relational Semantics of Specifications k : com {l k{emp {P C{Q η 1, η 2, eq [emp ] = {l k{emp {P C{Q

57 Relational Semantics of Specifications k : com {l k{emp {P C{Q η 1, η 2, eq [emp ] = {l k{emp {P C{Q r. if (η 1, η 2, r = {l k{emp), then (η 1, η 2, r = {P C{Q).

58 Relational Semantics of Specifications k : com {l k{emp {P C{Q η 1, η 2, eq [emp ] = {l k{emp {P C{Q r. if (η 1, η 2, r = {l k{emp), then (η 1, η 2, r = {P C{Q). r. if η 1 (k)[eq a r eq b r]η 2 (k), then [[C]] η1 [eq p r eq q r][c]] η2 (where a = [[l ]], b = [[emp]], p = [[P ]], and q = [[Q]])

59 Semantics of Triples [[com]] def = Heaps local (Heaps {fault) η 1, η 2, r = {P C{Q iff r. [[C]] η1 [ eq [P ] r r eq [Q ] r r ] [[C]] η2

60 Semantics of Triples [[com]] def = Heaps local (Heaps {fault) η 1, η 2, r = {P C{Q iff r. [[C]] η1 [ eq [P ] r r eq [Q ] r r ] [[C]] η2

61 Semantics of Triples [[com]] def = Heaps local (Heaps {fault) η 1, η 2, r = {P C{Q iff r. [[C]] η1 [ eq [P ] r r eq [Q ] r r ] [[C]] η2

62 Semantics of Triples [[com]] def = Heaps local (Heaps {fault) η 1, η 2, r = {P C{Q iff r. [[C]] η1 [ eq [P ] r r eq [Q ] r r ] [[C]] η2 [Lemma] Supp. C does not call fns. If = new {P C{Q, [[C]] satisfies the locality cond. restricted to [[P true]]. [Frame Property] h [[P true]] [[C]](h) = h 1 = [[C]](h h 9 ) = h 1 h 9

63 [Frame Property when set quantification is used] Semantics of Triples h [[P true]] [[C]](h) = h 1 = h 2 [[Q]]. [[C]](h h 9 ) = h 2 h 9 [[com]] def = Heaps local (Heaps {fault) η 1 η,, ηq 2, r = = {P {P C{Q iff [ ] r q. 0.[[C]] [[C]] η1 eq [P ] r r eq [Q ] r r η ([[P ]] q 0 q) [[C]] η ([[Q]] q 0 [[C]] q) η2 [Lemma] Supp. C does not call fns. If = new {P C{Q, [[C]] satisfies the locality cond. restricted to [[P true]]. [Frame Property] h [[P true]] [[C]](h) = h 1 = [[C]](h h 9 ) = h 1 h 9

64 Semantics in the Paper Uses FM-domain theory and biorthogonality to deal with memory allocation.

65 Theory of Data Abstraction for Pointer Programs Focus on good clients. Provability in sep. logic is a good candidate for deciding good clients.

66 Relational Kripke Reading of Logic Can reveal that proofs in a logic says more than what are intended.

Program Verification using Separation Logic Lecture 0 : Course Introduction and Assertion Language. Hongseok Yang (Queen Mary, Univ.

Program Verification using Separation Logic Lecture 0 : Course Introduction and Assertion Language. Hongseok Yang (Queen Mary, Univ. Program Verification using Separation Logic Lecture 0 : Course Introduction and Assertion Language Hongseok Yang (Queen Mary, Univ. of London) Dream Automatically verify the memory safety of systems software,

More information

Lectures on Separation Logic. Lecture 2: Foundations

Lectures on Separation Logic. Lecture 2: Foundations Lectures on Separation Logic. Lecture 2: Foundations Peter O Hearn Queen Mary, University of London Marktoberdorf Summer School, 2011 Outline for this lecture Part I : Assertions and Their Semantics Part

More information

A Short Introduction to Hoare Logic

A Short Introduction to Hoare Logic A Short Introduction to Hoare Logic Supratik Chakraborty I.I.T. Bombay June 23, 2008 Supratik Chakraborty (I.I.T. Bombay) A Short Introduction to Hoare Logic June 23, 2008 1 / 34 Motivation Assertion checking

More information

A Semantic Foundation for Hidden State

A Semantic Foundation for Hidden State A Semantic Foundation for Hidden State Jan Schwinghammer 1, Hongseok Yang 2, Lars Birkedal 3, François Pottier 4, and Bernhard Reus 5 1 Saarland Univ. 2 Queen Mary Univ. of London 3 IT Univ. of Copenhagen

More information

NESTED HOARE TRIPLES AND FRAME RULES FOR HIGHER-ORDER STORE

NESTED HOARE TRIPLES AND FRAME RULES FOR HIGHER-ORDER STORE Logical Methods in Computer Science Vol. 7 (3:21) 2011, pp. 1 42 www.lmcs-online.org Submitted Mar. 8, 2011 Published Sep. 28, 2011 NESTED HOARE TRIPLES AND FRAME RULES FOR HIGHER-ORDER STORE JAN SCHWINGHAMMER

More information

Nested Hoare Triples and Frame Rules for Higher-order Store

Nested Hoare Triples and Frame Rules for Higher-order Store Nested Hoare Triples and Frame Rules for Higher-order Store Jan Schwinghammer 1, Lars Birkedal 2, Bernhard Reus 3, and Hongseok Yang 4 1 Saarland University, Saarbrücken 2 IT University of Copenhagen 3

More information

Structuring the verification of heap-manipulating programs

Structuring the verification of heap-manipulating programs Structuring the verification of heap-manipulating programs Aleksandar Nanevski (IMDEA Madrid) Viktor Vafeiadis (MSR / Univ. of Cambridge) Josh Berdine (MSR Cambridge) Hoare/Separation Logic Hoare logic

More information

Separation Logic and the Mashup Isolation Problem

Separation Logic and the Mashup Isolation Problem Separation Logic and the Mashup Isolation Problem Dept. of Computer Science, Stanford University Phd Qualifier Exam Talk Outline 1 Background Hoare Logic Intuition behind Separation Logic 2 The Mashup

More information

Program Verification Using Separation Logic

Program Verification Using Separation Logic Program Verification Using Separation Logic Cristiano Calcagno Adapted from material by Dino Distefano Lecture 1 Goal of the course Study Separation Logic having automatic verification in mind Learn how

More information

Theories of Programming Languages Assignment 5

Theories of Programming Languages Assignment 5 Theories of Programming Languages Assignment 5 December 17, 2012 1. Lambda-Calculus (see Fig. 1 for initions of = β, normal order evaluation and eager evaluation). (a) Let Ω = ((λx. x x) (λx. x x)), and

More information

Nested Hoare Triples and Frame Rules for Higher-order Store

Nested Hoare Triples and Frame Rules for Higher-order Store Nested Hoare Triples and Frame Rules for Higher-order Store Jan Schwinghammer 1, Lars Birkedal 2, Bernhard Reus 3, and Hongseok Yang 4 1 Saarland University, Germany 3 University of Sussex, Brighton, UK

More information

Propositional Dynamic Logic

Propositional Dynamic Logic Propositional Dynamic Logic Contents 1 Introduction 1 2 Syntax and Semantics 2 2.1 Syntax................................. 2 2.2 Semantics............................... 2 3 Hilbert-style axiom system

More information

Introduction to Permission-Based Program Logics Part II Concurrent Programs

Introduction to Permission-Based Program Logics Part II Concurrent Programs Introduction to Permission-Based Program Logics Part II Concurrent Programs Thomas Wies New York University Example: Lock-Coupling List 2 3 5 7 8 9 There is one lock per node; threads acquire locks in

More information

Flow Interfaces Compositional Abstractions of Concurrent Data Structures. Siddharth Krishna, Dennis Shasha, and Thomas Wies

Flow Interfaces Compositional Abstractions of Concurrent Data Structures. Siddharth Krishna, Dennis Shasha, and Thomas Wies Flow Interfaces Compositional Abstractions of Concurrent Data Structures Siddharth Krishna, Dennis Shasha, and Thomas Wies Background Verifying programs, separation logic, inductive predicates Verifying

More information

A Brief History of Shared memory C M U

A Brief History of Shared memory C M U A Brief History of Shared memory S t e p h e n B r o o k e s C M U 1 Outline Revisionist history Rational reconstruction of early models Evolution of recent models A unifying framework Fault-detecting

More information

Universität Augsburg

Universität Augsburg Universität Augsburg Algebraic Separation Logic H.-H. Dang P. Höfner B. Möller Report 2010-06 July 2010 Institut für Informatik D-86135 Augsburg Copyright c H.-H. Dang P. Höfner B. Möller Institut für

More information

Recent developments in concurrent program logics

Recent developments in concurrent program logics Recent developments in concurrent program logics Viktor Vafeiadis University of Cambridge PSPL 2010 Why program logic? Reasoning framework Capture common reasoning principles Reduce accidental proof complexity

More information

A Semantic Foundation for Hidden State

A Semantic Foundation for Hidden State A Semantic Foundation for Hidden State Jan Schwinghammer 1, Hongseo Yang 2, Lars Biredal 3, François Pottier 4, and Bernhard Reus 5 1 Saarland Univ. 2 Queen Mary Univ. of London 3 IT Univ. of Copenhagen

More information

From Separation Logic to Systems Software

From Separation Logic to Systems Software From Separation Logic to Systems Software Peter O Hearn, Queen Mary Based on work of the SpaceInvader team: Cristiano Calcagno, Dino Distefano, Hongseok Yang, and me Special thanks to our SLAyer colleagues

More information

Separation and Information Hiding

Separation and Information Hiding Separation and Information Hiding PETER W. O HEARN and HONGSEOK YANG Queen Mary, University of London and JOHN C. REYNOLDS Carnegie Mellon University 11 We investigate proof rules for information hiding,

More information

Separation Logic and the Mashup Isolation Problem

Separation Logic and the Mashup Isolation Problem Separation Logic and the Mashup Isolation Problem Ankur Taly Computer Science Department, Stanford University Abstract. This work was done as part of my PhD qualifier exam. My qualifier exam problem was

More information

Chapter 4. Lists and List Segments. An Introduction to Separation Logic c 2011 John C. Reynolds February 17, 2011

Chapter 4. Lists and List Segments. An Introduction to Separation Logic c 2011 John C. Reynolds February 17, 2011 Chapter 4 An Introduction to Separation Logic c 2011 John C. Reynolds February 17, 2011 Lists and List Segments In this chapter, we begin to explore data structures that represent abstract types of data.

More information

Views: Compositional Reasoning for Concurrent Programs

Views: Compositional Reasoning for Concurrent Programs Views: Compositional Reasoning for Concurrent Programs Thomas Dinsdale-Young Imperial College td202@doc.ic.ac.uk Lars Birkedal IT University of Copenhagen birkedal@itu.dk Philippa Gardner Imperial College

More information

Putting order to the separation logic jungle

Putting order to the separation logic jungle 1 Putting order to the separation logic jungle Qinxiang Cao, Santiago Cuellar, Andrew Appel Department of Computer Science, Princeton University qinxiang@princeton.edu, scuellar@princeton.edu, appel@princeton.edu

More information

Collecting garbage concurrently (but correctly)

Collecting garbage concurrently (but correctly) Collecting garbage concurrently (but correctly) Kamal Lodaya The Institute of Mathematical Sciences, Chennai Joint work with Kalpesh Kapoor (IIT, Guwahati) and Uday Reddy (U. Birmingham) 1 First order

More information

A Revisionist History of Concurrent Separation Logic

A Revisionist History of Concurrent Separation Logic Available online at www.sciencedirect.com Electronic Notes in Theoretical Computer Science 276 (2011) 5 28 www.elsevier.com/locate/entcs A Revisionist History of Concurrent Separation Logic Stephen Brookes

More information

AN INTRODUCTION TO SEPARATION LOGIC. 2. Assertions

AN INTRODUCTION TO SEPARATION LOGIC. 2. Assertions AN INTRODUCTION TO SEPARATION LOGIC 2. Assertions John C. Reynolds Carnegie Mellon University January 7, 2011 c 2011 John C. Reynolds Pure Assertions An assertion p is pure iff, for all stores s and all

More information

Flow Interfaces Compositional Abstractions of Concurrent Data Structures. Siddharth Krishna, Dennis Shasha, and Thomas Wies

Flow Interfaces Compositional Abstractions of Concurrent Data Structures. Siddharth Krishna, Dennis Shasha, and Thomas Wies Flow Interfaces Compositional Abstractions of Concurrent Data Structures Siddharth Krishna, Dennis Shasha, and Thomas Wies Background Verifying programs, separation logic, inductive predicates Slides courtesy

More information

Separation Logic and Graphical Models

Separation Logic and Graphical Models Separation Logic and Graphical Models John Wickerson and Tony Hoare Semantics Lunch, 25th October 2010 1 Trace composition Problem: Composition is non-deterministic. 2 Trace composition Problem: Composition

More information

Boolean bunched logic: its semantics and completeness

Boolean bunched logic: its semantics and completeness Boolean bunched logic: its semantics and completeness James Brotherston Programming Principles, Logic and Verification Group Dept. of Computer Science University College London, UK J.Brotherston@ucl.ac.uk

More information

Normal Forms of Propositional Logic

Normal Forms of Propositional Logic Normal Forms of Propositional Logic Bow-Yaw Wang Institute of Information Science Academia Sinica, Taiwan September 12, 2017 Bow-Yaw Wang (Academia Sinica) Normal Forms of Propositional Logic September

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

Axiomatic Semantics. Operational semantics. Good for. Not good for automatic reasoning about programs

Axiomatic Semantics. Operational semantics. Good for. Not good for automatic reasoning about programs Review Operational semantics relatively l simple many flavors (small vs. big) not compositional (rule for while) Good for describing language implementation reasoning about properties of the language eg.

More information

Hoare Logic: Reasoning About Imperative Programs

Hoare Logic: Reasoning About Imperative Programs Hoare Logic: Reasoning About Imperative Programs COMP1600 / COMP6260 Dirk Pattinson Australian National University Semester 2, 2018 Programming Paradigms Functional. (Haskell, SML, OCaml,... ) main paradigm:

More information

Step-Indexed Kripke Models over Recursive Worlds

Step-Indexed Kripke Models over Recursive Worlds Step-Indexed Kripke Models over Recursive Worlds Lars Birkedal IT University of Copenhagen, Denmark birkedal@itu.dk Bernhard Reus University of Sussex, UK bernhard@sussex.ac.uk Jan Schwinghammer Saarland

More information

Graph Theory and Modal Logic

Graph Theory and Modal Logic Osaka University of Economics and Law (OUEL) Aug. 5, 2013 BLAST 2013 at Chapman University Contents of this Talk Contents of this Talk 1. Graphs = Kripke frames. Contents of this Talk 1. Graphs = Kripke

More information

A semantics for concurrent separation logic

A semantics for concurrent separation logic Theoretical Computer Science 375 (2007) 227 270 www.elsevier.com/locate/tcs A semantics for concurrent separation logic Stephen Brookes School of Computer Science, Carnegie Mellon University, 5000 Forbes

More information

Hoare Examples & Proof Theory. COS 441 Slides 11

Hoare Examples & Proof Theory. COS 441 Slides 11 Hoare Examples & Proof Theory COS 441 Slides 11 The last several lectures: Agenda Denotational semantics of formulae in Haskell Reasoning using Hoare Logic This lecture: Exercises A further introduction

More information

Positive provability logic

Positive provability logic Positive provability logic Lev Beklemishev Steklov Mathematical Institute Russian Academy of Sciences, Moscow November 12, 2013 Strictly positive modal formulas The language of modal logic extends that

More information

Errata and Remarks for The Semantics and Proof Theory of the Logic of Bunched Implications BI-monograph-errata.

Errata and Remarks for The Semantics and Proof Theory of the Logic of Bunched Implications  BI-monograph-errata. Errata and Remarks for The Semantics and Proof Theory of the Logic of Bunched Implications http://www.cs.bath.ac.uk/~pym/ BI-monograph-errata.pdf David J. Pym University of Bath 30 March, 2008 Abstract

More information

Realizability Semantics of Parametric Polymorphism, General References, and Recursive Types

Realizability Semantics of Parametric Polymorphism, General References, and Recursive Types Realizability Semantics of Parametric Polymorphism, General References, and Recursive Types Lars Birkedal IT University of Copenhagen Joint work with Kristian Støvring and Jacob Thamsborg Oct, 2008 Lars

More information

Natural Deduction. Formal Methods in Verification of Computer Systems Jeremy Johnson

Natural Deduction. Formal Methods in Verification of Computer Systems Jeremy Johnson Natural Deduction Formal Methods in Verification of Computer Systems Jeremy Johnson Outline 1. An example 1. Validity by truth table 2. Validity by proof 2. What s a proof 1. Proof checker 3. Rules of

More information

Roy L. Crole. Operational Semantics Abstract Machines and Correctness. University of Leicester, UK

Roy L. Crole. Operational Semantics Abstract Machines and Correctness. University of Leicester, UK Midlands Graduate School, University of Birmingham, April 2008 1 Operational Semantics Abstract Machines and Correctness Roy L. Crole University of Leicester, UK Midlands Graduate School, University of

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

The Curry-Howard Isomorphism

The Curry-Howard Isomorphism The Curry-Howard Isomorphism Software Formal Verification Maria João Frade Departmento de Informática Universidade do Minho 2008/2009 Maria João Frade (DI-UM) The Curry-Howard Isomorphism MFES 2008/09

More information

Iris: Higher-Order Concurrent Separation Logic. Lecture 9: Concurrency Intro and Invariants

Iris: Higher-Order Concurrent Separation Logic. Lecture 9: Concurrency Intro and Invariants 1 Iris: Higher-Order Concurrent Separation Logic Lecture 9: Concurrency Intro and Invariants Lars Birkedal Aarhus University, Denmark November 21, 2017 Overview Earlier: Operational Semantics of λ ref,conc

More information

A Pointer Logic for Object Diagrams

A Pointer Logic for Object Diagrams UNU-IIST International Institute for Software Technology A Pointer Logic for Object Diagrams Yifeng Chen and J W Sanders July 2007 UNU-IIST Report No. 379 R UNU-IIST and UNU-IIST Reports UNU-IIST (United

More information

Concurrent separation logic and operational semantics

Concurrent separation logic and operational semantics MFPS 2011 Concurrent separation logic and operational semantics Viktor Vafeiadis Max Planck Institute for Software Systems (MPI-SWS), Germany Abstract This paper presents a new soundness proof for concurrent

More information

Chapter 3. Specifications. 3.1 Hoare Triples. An Introduction to Separation Logic c 2011 John C. Reynolds February 3, 2011

Chapter 3. Specifications. 3.1 Hoare Triples. An Introduction to Separation Logic c 2011 John C. Reynolds February 3, 2011 Chapter 3 An Introduction to Separation Logic c 2011 John C. Reynolds February 3, 2011 Specifications From assertions, we move on to specifications, which describe the behavior of commands. In this chapter,

More information

Reasoning about High-Level Tree Update and its Low-Level Implementation

Reasoning about High-Level Tree Update and its Low-Level Implementation Reasoning about High-Level Tree Update and its Low-Level Implementation Philippa Gardner and Uri Zarfaty, Imperial College London Abstract We relate Context Logic reasoning about a high-level tree update

More information

Automatic Parallelization with Separation Logic

Automatic Parallelization with Separation Logic Automatic Parallelization with Separation Logic Mohammad Raza, Cristiano Calcagno, and Philippa Gardner Department of Computing, Imperial College London 180 Queen s Gate, London SW7 2AZ, UK {mraza,ccris,pg}@doc.ic.ac.uk

More information

An Introduction to Modal Logic III

An Introduction to Modal Logic III An Introduction to Modal Logic III Soundness of Normal Modal Logics Marco Cerami Palacký University in Olomouc Department of Computer Science Olomouc, Czech Republic Olomouc, October 24 th 2013 Marco Cerami

More information

Temporal & Modal Logic. Acronyms. Contents. Temporal Logic Overview Classification PLTL Syntax Semantics Identities. Concurrency Model Checking

Temporal & Modal Logic. Acronyms. Contents. Temporal Logic Overview Classification PLTL Syntax Semantics Identities. Concurrency Model Checking Temporal & Modal Logic E. Allen Emerson Presenter: Aly Farahat 2/12/2009 CS5090 1 Acronyms TL: Temporal Logic BTL: Branching-time Logic LTL: Linear-Time Logic CTL: Computation Tree Logic PLTL: Propositional

More information

CIS 500 Software Foundations. Final Exam. May 9, Answer key. Hoare Logic

CIS 500 Software Foundations. Final Exam. May 9, Answer key. Hoare Logic CIS 500 Software Foundations Final Exam May 9, 2011 Answer key Hoare Logic 1. (7 points) What does it mean to say that the Hoare triple {{P}} c {{Q}} is valid? Answer: {{P}} c {{Q}} means that, for any

More information

Abstraction for Concurrent Objects

Abstraction for Concurrent Objects Abstraction for Concurrent Objects Ivana Filipović, Peter O Hearn, Noam Rinetzky, and Hongseok Yang Queen Mary University of London, UK Abstract. Concurrent data structures are usually designed to satisfy

More information

A Step-indexed Kripke Model of Hidden State via Recursive Properties on Recursively Defined Metric Spaces

A Step-indexed Kripke Model of Hidden State via Recursive Properties on Recursively Defined Metric Spaces via Recursive Properties on Recursively Defined Metric Spaces Lars Birkedal IT University of Copenhagen birkedal@itu.dk Jan Schwinghammer Saarland University jan@ps.uni-saarland.de Abstract Kristian Støvring

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

Semantic Metatheory of SL: Mathematical Induction

Semantic Metatheory of SL: Mathematical Induction Semantic Metatheory of SL: Mathematical Induction Preliminary matters: why and when do we need Mathematical Induction? We need it when we want prove that a certain claim (n) holds for all n N (0, 1, 2,

More information

Modal Logic. UIT2206: The Importance of Being Formal. Martin Henz. March 19, 2014

Modal Logic. UIT2206: The Importance of Being Formal. Martin Henz. March 19, 2014 Modal Logic UIT2206: The Importance of Being Formal Martin Henz March 19, 2014 1 Motivation The source of meaning of formulas in the previous chapters were models. Once a particular model is chosen, say

More information

Trace semantics: towards a unification of parallel paradigms Stephen Brookes. Department of Computer Science Carnegie Mellon University

Trace semantics: towards a unification of parallel paradigms Stephen Brookes. Department of Computer Science Carnegie Mellon University Trace semantics: towards a unification of parallel paradigms Stephen Brookes Department of Computer Science Carnegie Mellon University MFCSIT 2002 1 PARALLEL PARADIGMS State-based Shared-memory global

More information

Computability and Complexity Results for a Spatial Assertion Language for Data Structures

Computability and Complexity Results for a Spatial Assertion Language for Data Structures Computability and Complexity Results for a Spatial Assertion Language for Data Structures Cristiano Calcagno 12, Hongseok Yang 3, and Peter W. O Hearn 1 1 Queen Mary, University of London 2 DISI, University

More information

Natural Deduction for Propositional Logic

Natural Deduction for Propositional Logic Natural Deduction for Propositional Logic Bow-Yaw Wang Institute of Information Science Academia Sinica, Taiwan September 10, 2018 Bow-Yaw Wang (Academia Sinica) Natural Deduction for Propositional Logic

More information

Applied Logic. Lecture 1 - Propositional logic. Marcin Szczuka. Institute of Informatics, The University of Warsaw

Applied Logic. Lecture 1 - Propositional logic. Marcin Szczuka. Institute of Informatics, The University of Warsaw Applied Logic Lecture 1 - Propositional logic Marcin Szczuka Institute of Informatics, The University of Warsaw Monographic lecture, Spring semester 2017/2018 Marcin Szczuka (MIMUW) Applied Logic 2018

More information

Abstraction for Concurrent Objects

Abstraction for Concurrent Objects Abstraction for Concurrent Objects Ivana Filipović, Peter O Hearn, Noam Rinetzky 1, Hongseok Yang Queen Mary University of London, UK Abstract Concurrent data structures are usually designed to satisfy

More information

Program Analysis and Verification

Program Analysis and Verification Program Analysis and Verification 0368-4479 Noam Rinetzky Lecture 4: Axiomatic Semantics Slides credit: Tom Ball, Dawson Engler, Roman Manevich, Erik Poll, Mooly Sagiv, Jean Souyris, Eran Tromer, Avishai

More information

Solutions to exercises for the Hoare logic (based on material written by Mark Staples)

Solutions to exercises for the Hoare logic (based on material written by Mark Staples) Solutions to exercises for the Hoare logic (based on material written by Mark Staples) Exercise 1 We are interested in termination, so that means we need to use the terminology of total correctness, i.e.

More information

Barrier Proof. 1 Code and spec. April 21, 2016

Barrier Proof. 1 Code and spec. April 21, 2016 Barrier Proof April 21, 2016 This document gives the Iris version of the specification and proof of the barrier originally presented in [1]. 1 Code and spec We aim to verify the following piece of code:

More information

Spatial Interpolants

Spatial Interpolants Spatial Interpolants Aws Albargouthi 1, Josh Berdine 2, Byron Cook 3, and Zachary Kincaid 4 University of Wisconsin-Madison 1, Microsoft Research 2, University College London 3, University of Toronto 4

More information

Model Checking for Symbolic-Heap Separation Logic with Inductive Predicates

Model Checking for Symbolic-Heap Separation Logic with Inductive Predicates Model Checking for Symbolic-Heap Separation Logic with Inductive Predicates James Brotherston University College London, UK J.Brotherston@ucl.ac.uk Nikos Gorogiannis Middlesex University, UK nikos.gorogiannis@gmail.com

More information

Hoare Logic and Model Checking

Hoare Logic and Model Checking Hoare Logic and Model Checking Kasper Svendsen University of Cambridge CST Part II 2016/17 Acknowledgement: slides heavily based on previous versions by Mike Gordon and Alan Mycroft Introduction In the

More information

Definability in Boolean bunched logic

Definability in Boolean bunched logic Definability in Boolean bunched logic James Brotherston Programming Principles, Logic and Verification Group Dept. of Computer Science University College London, UK J.Brotherston@ucl.ac.uk Logic Summer

More information

The Assignment Axiom (Hoare)

The Assignment Axiom (Hoare) The Assignment Axiom (Hoare) Syntax: V := E Semantics: value of V in final state is value of E in initial state Example: X:=X+ (adds one to the value of the variable X) The Assignment Axiom {Q[E/V ]} V

More information

Abstraction and Refinement for Local Reasoning

Abstraction and Refinement for Local Reasoning Under consideration for publication in Math. Struct. in Comp. Science Abstraction and Refinement for Local Reasoning Thomas Dinsdale-Young, Philippa Gardner and Mark Wheelhouse Department of Computing,

More information

Semantics and Pragmatics of NLP

Semantics and Pragmatics of NLP Semantics and Pragmatics of NLP Alex Ewan School of Informatics University of Edinburgh 28 January 2008 1 2 3 Taking Stock We have: Introduced syntax and semantics for FOL plus lambdas. Represented FOL

More information

Exogenous Semantics Approach to Enriching Logics

Exogenous Semantics Approach to Enriching Logics Exogenous Semantics Approach to Enriching Logics Paulo Mateus, Amílcar Sernadas, and Cristina Sernadas Abstract. The exogenous semantics approach to enriching a logic consists in defining each model in

More information

List reversal: back into the frying pan

List reversal: back into the frying pan List reversal: back into the frying pan Richard Bornat March 20, 2006 Abstract More than thirty years ago Rod Burstall showed how to do a proof of a neat little program, shown in a modern notation in figure

More information

Lecture 2: Axiomatic semantics

Lecture 2: Axiomatic semantics Chair of Software Engineering Trusted Components Prof. Dr. Bertrand Meyer Lecture 2: Axiomatic semantics Reading assignment for next week Ariane paper and response (see course page) Axiomatic semantics

More information

Hoare Logic: Part II

Hoare Logic: Part II Hoare Logic: Part II COMP2600 Formal Methods for Software Engineering Jinbo Huang Australian National University COMP 2600 Hoare Logic II 1 Factorial {n 0} fact := 1; i := n; while (i >0) do fact := fact

More information

Axiomatic Semantics. Stansifer Ch 2.4, Ch. 9 Winskel Ch.6 Slonneger and Kurtz Ch. 11 CSE

Axiomatic Semantics. Stansifer Ch 2.4, Ch. 9 Winskel Ch.6 Slonneger and Kurtz Ch. 11 CSE Axiomatic Semantics Stansifer Ch 2.4, Ch. 9 Winskel Ch.6 Slonneger and Kurtz Ch. 11 CSE 6341 1 Outline Introduction What are axiomatic semantics? First-order logic & assertions about states Results (triples)

More information

Program Analysis Part I : Sequential Programs

Program Analysis Part I : Sequential Programs Program Analysis Part I : Sequential Programs IN5170/IN9170 Models of concurrency Program Analysis, lecture 5 Fall 2018 26. 9. 2018 2 / 44 Program correctness Is my program correct? Central question for

More information

CSC 7101: Programming Language Structures 1. Axiomatic Semantics. Stansifer Ch 2.4, Ch. 9 Winskel Ch.6 Slonneger and Kurtz Ch. 11.

CSC 7101: Programming Language Structures 1. Axiomatic Semantics. Stansifer Ch 2.4, Ch. 9 Winskel Ch.6 Slonneger and Kurtz Ch. 11. Axiomatic Semantics Stansifer Ch 2.4, Ch. 9 Winskel Ch.6 Slonneger and Kurtz Ch. 11 1 Overview We ll develop proof rules, such as: { I b } S { I } { I } while b do S end { I b } That allow us to verify

More information

Theoretical Foundations of the UML

Theoretical Foundations of the UML Theoretical Foundations of the UML Lecture 17+18: A Logic for MSCs Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group moves.rwth-aachen.de/teaching/ws-1718/fuml/ 5.

More information

A Marriage of Rely/Guarantee and Separation Logic

A Marriage of Rely/Guarantee and Separation Logic A Marriage of Rely/Guarantee and Separation Logic Viktor Vafeiadis and Matthew Parkinson University of Cambridge Abstract. In the quest for tractable methods for reasoning about concurrent algorithms both

More information

Logics in Access Control: A Conditional Approach

Logics in Access Control: A Conditional Approach Logics in Access Control: A Conditional Approach Valerio Genovese 1, Laura Giordano 2, Valentina Gliozzi 3, and Gian Luca Pozzato 3 1 University of Luxembourg and Università di Torino - Italy valerio.genovese@uni.lu

More information

The mathematical core of Tarski s truth definition

The mathematical core of Tarski s truth definition The mathematical core of Tarski s truth definition Wilfrid Hodges Queen Mary, University of London August 2007 www.maths.qmul.ac.uk/ wilfrid/unilog07.pdf Alfred Tarski gave a mathematical description of

More information

Automata-Theoretic Model Checking of Reactive Systems

Automata-Theoretic Model Checking of Reactive Systems Automata-Theoretic Model Checking of Reactive Systems Radu Iosif Verimag/CNRS (Grenoble, France) Thanks to Tom Henzinger (IST, Austria), Barbara Jobstmann (CNRS, Grenoble) and Doron Peled (Bar-Ilan University,

More information

Spring 2016 Program Analysis and Verification. Lecture 3: Axiomatic Semantics I. Roman Manevich Ben-Gurion University

Spring 2016 Program Analysis and Verification. Lecture 3: Axiomatic Semantics I. Roman Manevich Ben-Gurion University Spring 2016 Program Analysis and Verification Lecture 3: Axiomatic Semantics I Roman Manevich Ben-Gurion University Warm-up exercises 1. Define program state: 2. Define structural semantics configurations:

More information

Type Theory and Constructive Mathematics. Type Theory and Constructive Mathematics Thierry Coquand. University of Gothenburg

Type Theory and Constructive Mathematics. Type Theory and Constructive Mathematics Thierry Coquand. University of Gothenburg Type Theory and Constructive Mathematics Type Theory and Constructive Mathematics Thierry Coquand University of Gothenburg Content An introduction to Voevodsky s Univalent Foundations of Mathematics The

More information

Lecture Notes on Classical Modal Logic

Lecture Notes on Classical Modal Logic Lecture Notes on Classical Modal Logic 15-816: Modal Logic André Platzer Lecture 5 January 26, 2010 1 Introduction to This Lecture The goal of this lecture is to develop a starting point for classical

More information

Models of Concurrency

Models of Concurrency Models of Concurrency GERARDO SCHNEIDER UPPSALA UNIVERSITY DEPARTMENT OF INFORMATION TECHNOLOGY UPPSALA, SWEDEN Thanks to Frank Valencia Models of Concurrency p.1/57 Concurrency is Everywhere Concurrent

More information

Unifying Theories of Programming

Unifying Theories of Programming 1&2 Unifying Theories of Programming Unifying Theories of Programming 3&4 Theories Unifying Theories of Programming designs predicates relations reactive CSP processes Jim Woodcock University of York May

More information

Software Engineering

Software Engineering Software Engineering Lecture 07: Design by Contract Peter Thiemann University of Freiburg, Germany 02.06.2014 Table of Contents Design by Contract Contracts for Procedural Programs Contracts for Object-Oriented

More information

An Entailment Checker for Separation Logic with Inductive Definitions

An Entailment Checker for Separation Logic with Inductive Definitions An Entailment Checker for Separation Loic with Inductive Definitions Radu Iosif, Cristina Serban Université de Grenoble Alpes, CNRS, VERIMAG July 18, 2018 Cristina Serban (VERIMAG) An Entailment Checker

More information

Program verification. 18 October 2017

Program verification. 18 October 2017 Program verification 18 October 2017 Example revisited // assume(n>2); void partition(int a[], int n) { int pivot = a[0]; int lo = 1, hi = n-1; while (lo

More information

Extensions of Analytic Pure Sequent Calculi with Modal Operators

Extensions of Analytic Pure Sequent Calculi with Modal Operators Extensions of Analytic Pure Sequent Calculi with Modal Operators Yoni Zohar Tel Aviv University (joint work with Ori Lahav) GeTFun 4.0 Motivation C 1 [Avron, Konikowska, Zamansky 12] Positive rules of

More information

Certification of Safe Polynomial Memory Bounds (Extended Version)

Certification of Safe Polynomial Memory Bounds (Extended Version) Certification of Safe Polynomial Memory Bounds (Extended Version) Javier de Dios and Ricardo Peña Departamento de Sistemas Informáticos y Computación Universidad Complutense de Madrid, Spain jdcastro@aventia.com,

More information

Towards a Program Logic for JavaScript

Towards a Program Logic for JavaScript Towards a Program Logic for JavaScript Philippa Gardner, Sergio Maffeis, Gareth Smith {pg,maffeis,gds}@docicacuk Abstract JavaScript has become the most widely used language for client-side web programming

More information

SEMANTICS OF PROGRAMMING LANGUAGES Course Notes MC 308

SEMANTICS OF PROGRAMMING LANGUAGES Course Notes MC 308 University of Leicester SEMANTICS OF PROGRAMMING LANGUAGES Course Notes for MC 308 Dr. R. L. Crole Department of Mathematics and Computer Science Preface These notes are to accompany the module MC 308.

More information

CIS 500 Software Foundations. Midterm II. March 28, 2012

CIS 500 Software Foundations. Midterm II. March 28, 2012 CIS 500 Software Foundations Midterm II March 28, 2012 Name: Pennkey: Scores: 1 2 3 4 5 6 Total (80 max) This exam concentrates on the material on the Imp programming language, program equivalence, and

More information

Foundations of Computation

Foundations of Computation The Australian National University Semester 2, 2018 Research School of Computer Science Tutorial 6 Dirk Pattinson Foundations of Computation The tutorial contains a number of exercises designed for the

More information