78
Ilya Sergey ilyasergey.net PLMW @ POPL 2019 How to Bootstrap a Research Project

How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

Ilya Sergeyilyasergey.net

PLMW @ POPL 2019

How to Bootstrap a Research Project

Page 2: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

About myself 2

MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012

Currently Associate Professor (tenure-track) at Yale-NUS College & NUS Previously Lecturer at University College London Postdoc at IMDEA Software Institute Software Engineer at JetBrains

Page 3: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

Anxiety

3

Page 4: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

Why do a PhD?

4

Page 5: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

Why do a PhD?

Challenge

5

Page 6: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

Not this kind of Challenge… 6

Page 7: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

More like this kind of Challenge

http://www.claymath.org/millennium-problems

?

???

?

7

Page 8: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

Challengepaper.pdf

Challenge?paper.pdf

Accept

ed

to POP

L

8

Page 9: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

Challengepaper.pdf

Challenge?paper.pdf

Accept

ed

to POP

L

9

Page 10: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

Challengepaper.pdf

Challenge?paper.pdf

Accept

ed

to POP

L

10

Page 11: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

Challengepaper.pdf

What is “?”

11

Page 12: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

Picture from https://www.guyanassociates.com

Page 13: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

When did it go wrong?

• Need to find your own project

• Lost interest in a given project

• Got scooped

• Writer’s Block

13

Page 14: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

Research Limbo

• Is what I’m about to do relevant?

• What if it won’t work?

• Will it scale for more project ideas?

• I’m not as productive as my labmates.

• I don’t see the final goal of what I’m about to do.

Limbo game art copyright: Playdead ApS

14

Page 15: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

You know what to do

15

Page 16: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

Blame Others

• your advisor • your research environment • your officemates • your parents • the pizza delivery guys

16

Page 17: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

Escaping Research Limbo

17

Page 18: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

Big Picture

human knowledge

your knowledge

Matt Might. The illustrated guide to a Ph.D.http://matt.might.net/articles/phd-school-in-pictures/

18

Page 19: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

?

?

?

?

? ?

??

? ?

?

?

??

?

?advisor’s

role

19

Page 20: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

?

?

?

?

?

?

?

?

??

?

?

??

?

?

20

Page 21: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

?

?

?

?

?

?

?

?

??

?

?

??

?

?

21

Page 22: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

?

?

?

?

?

?

?

?

??

?

?

??

?

?

22

Page 23: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

?

23

Page 24: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

?

Application Domain

Tools and Techniques

24

Page 25: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

• Type Theory • Semantics • Abstract Interpretation • SMT and Model Checking • Logics and Proof Assistants • Program Synthesis, etc

• Machine Learning • Security and Privacy • Quantum Computation • Processor Architecture • Resource Consumption • Web, etc

Application DomainTools and Techniques 25

Page 26: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

One researcher’s Technique is

another researcher’s Domain

26

Page 27: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

One researcher’s Technique is

another researcher’s Domain

27

Page 28: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

This year at POPL• Pretend Synchrony: Synchronous Verification of Asynchronous Distributed Programs • A Separation Logic for Concurrent Randomized Programs • Bayesian Synthesis of Probabilistic Programs for Automatic Data Modeling • An Abstract Domain for Certifying Neural Networks • Game Semantics for Quantum Programming • Type-Driven Gradual Security with References • ISA Semantics for ARMv8-A, RISC-V, and CHERI-MIPS • JaVerT 2.0: Compositional Symbolic Execution for JavaScript • LWeb: Information Flow Security for Multi-Tier Web Applications

28

Page 29: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

Step 1: Read

Escaping Research Limbo 29

Page 30: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

?

Application Domain

Tools and Techniques

30

Page 31: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

?

31

Page 32: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

?

32

Page 33: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

?

33

Page 34: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

?

34

Page 35: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

?

35

Page 36: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

• Is what I’m about to do relevant?

• What if it won’t work?

• Will it scale for more project ideas?

• I’m not as productive as my labmates.

• I don’t see the final goal of what I’m about to do.

Escaping Research Limbo 36

Page 37: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

• Is what I’m about to do relevant?

• What if it won’t work?

• Will it scale for more project ideas?

• I’m not as productive as my labmates.

• I don’t see the final goal of what I’m about to do.

Escaping Research Limbo 37

Page 38: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

• Is what I’m about to do relevant?

• What if it won’t work?

• Will it scale for more project ideas?

• I’m not as productive as my labmates.

• I don’t see the final goal of what I’m about to do.

Escaping Research Limbo 38

Page 39: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

?

39

Page 40: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

Finding the Path

40

Page 41: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

There is no royal road to geometry. Euclid

Research is from “search”. Aleks Nanevski

Move Fast and Break Things.©

41

Page 42: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

Step 2:

Escaping Research Limbo

Hack

42

Page 43: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

Pick your Favourite Tools 43

Page 44: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

A typical POPL paper• Introduction • Overview • Theory • Mechanisation / Implementation • Case Studies / Evaluation • Related Work and Conclusion

44

Page 45: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

A typical POPL paper• Introduction • Overview • Theory • Mechanisation / Implementation• Case Studies / Evaluation• Related Work and Conclusion

45

Page 46: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

Evaluation

Theory

Implementation

The Scientific Method 46

Page 47: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

Implementation

47

Page 48: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

Evaluation

Implementation

48

Page 49: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

Evaluation

Theory

Implementation

49

Page 50: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

DomainTechnique

72

Structuring the Synthesis of Heap-Manipulating Programs

NADIA POLIKARPOVA, University of California, San Diego, USA

ILYA SERGEY, Yale-NUS College, Singapore and National University of Singapore, Singapore

This paper describes a deductive approach to synthesizing imperative programs with pointers from declarativespecifications expressed in Separation Logic. Our synthesis algorithm takes as input a pair of assertions—a pre- and a postcondition—which describe two states of the symbolic heap, and derives a program thattransforms one state into the other, guided by the shape of the heap. Our approach to program synthesisis grounded in proof theory: we introduce the novel framework of Synthetic Separation Logic (SSL), whichgeneralises the classical notion of heap entailment P ⊢ Q to incorporate a possibility of transforming a heapsatisfying an assertion P into a heap satisfying an assertion Q. A synthesized program represents a proofterm for a transforming entailment statement P ! Q, and the synthesis procedure corresponds to a proofsearch. The derived programs are, thus, correct by construction, in the sense that they satisfy the ascribedpre/postconditions, and are accompanied by complete proof derivations, which can be checked independently.

We have implemented a proof search engine for SSL in a form of the program synthesizer called SuSLik.For efficiency, the engine exploits properties of SSL rules, such as invertibility and commutativity of ruleapplications on separate heaps, to prune the space of derivations it has to consider. We explain and showcasethe use of SSL on characteristic examples, describe the design of SuSLik, and report on our experience ofusing it to synthesize a series of benchmark programs manipulating heap-based linked data structures.

CCS Concepts: • Theory of computation→ Logic and verification; • Software and its engineering→Automatic programming;

Additional Key Words and Phrases: Program Synthesis, Separation Logic, Proof Systems, Type Theory

ACM Reference Format:Nadia Polikarpova and Ilya Sergey. 2019. Structuring the Synthesis of Heap-Manipulating Programs. Proc.ACM Program. Lang. 3, POPL, Article 72 (January 2019), 30 pages. https://doi.org/10.1145/3290385

1 INTRODUCTION

Consider the task of implementing a procedure swap(x, y), which swaps the values stored attwo distinct heap locations, x and y. The desired effect of swap can be concisely captured viapre/postconditions expressed in Separation Logic (SL)—a Hoare-style program logic for specifyingand verifying stateful programs with pointers (O’Hearn et al. 2001; Reynolds 2002):

{x "→ a ∗ y "→ b} void swap(loc x, loc y) {x "→ b ∗ y "→ a} (1)

This specification is declarative: it describes what the heap should look like before and afterexecuting swap without saying how to get from one to the other. Specifically, it states that theprogram takes as input two pointers, x and y, and runs in a heap where x points to an unspecifiedvalue a, and y points to b. Both a and b here are logical (ghost) variables, whose scope captures bothpre- and postcondition (Kleymann 1999). Because these variables are ghosts, we cannot use them

Authors’ addresses: Nadia Polikarpova, University of California, San Diego, USA, [email protected]; Ilya Sergey,Yale-NUS College, Singapore, National University of Singapore, Singapore, [email protected].

Permission to make digital or hard copies of part or all of this work for personal or classroom use is granted without feeprovided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice andthe full citation on the first page. Copyrights for third-party components of this work must be honored. For all other uses,contact the owner/author(s).

© 2019 Copyright held by the owner/author(s).2475-1421/2019/1-ART72https://doi.org/10.1145/3290385

Proc. ACM Program. Lang., Vol. 3, No. POPL, Article 72. Publication date: January 2019.

This work is licensed under a Creative Commons Attribution 4.0 International License.

50

Page 51: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

| {z }<latexit sha1_base64="PTT9Yj7gx2hGEUf0/7gVMmt9N4c=">AAACI3ichVBNS8NAEN3Ur1q/oh69BIvgqSQiKJ6KXjxWsK3QhLLZTNqlm92wuxFKyH/x4l/x4kEpXjz4X9y2OWgr+GDg8d4MM/PClFGlXffTqqysrq1vVDdrW9s7u3v2/kFHiUwSaBPBhHwIsQJGObQ11QweUgk4CRl0w9HN1O8+glRU8Hs9TiFI8IDTmBKsjdS3r/yMRyBDiQnkfjrEXIskx/+jKPp23W24MzjLxCtJHZVo9e2JHwmSJcA1YVipnuemOsix1JQwKGp+piDFZIQH0DOU4wRUkM9+LJwTo0ROLKQprp2Z+nMix4lS4yQ0nQnWQ7XoTcW/vF6m48sgpzzNNHAyXxRnzNHCmQbmRFQC0WxsCCaSmlsdMsQmL21irZkQvMWXl0nnrOG5De/uvN68LuOooiN0jE6Rhy5QE92iFmojgp7QC3pD79az9WpNrI95a8UqZw7RL1hf32D0pew=</latexit><latexit sha1_base64="PTT9Yj7gx2hGEUf0/7gVMmt9N4c=">AAACI3ichVBNS8NAEN3Ur1q/oh69BIvgqSQiKJ6KXjxWsK3QhLLZTNqlm92wuxFKyH/x4l/x4kEpXjz4X9y2OWgr+GDg8d4MM/PClFGlXffTqqysrq1vVDdrW9s7u3v2/kFHiUwSaBPBhHwIsQJGObQ11QweUgk4CRl0w9HN1O8+glRU8Hs9TiFI8IDTmBKsjdS3r/yMRyBDiQnkfjrEXIskx/+jKPp23W24MzjLxCtJHZVo9e2JHwmSJcA1YVipnuemOsix1JQwKGp+piDFZIQH0DOU4wRUkM9+LJwTo0ROLKQprp2Z+nMix4lS4yQ0nQnWQ7XoTcW/vF6m48sgpzzNNHAyXxRnzNHCmQbmRFQC0WxsCCaSmlsdMsQmL21irZkQvMWXl0nnrOG5De/uvN68LuOooiN0jE6Rhy5QE92iFmojgp7QC3pD79az9WpNrI95a8UqZw7RL1hf32D0pew=</latexit><latexit sha1_base64="PTT9Yj7gx2hGEUf0/7gVMmt9N4c=">AAACI3ichVBNS8NAEN3Ur1q/oh69BIvgqSQiKJ6KXjxWsK3QhLLZTNqlm92wuxFKyH/x4l/x4kEpXjz4X9y2OWgr+GDg8d4MM/PClFGlXffTqqysrq1vVDdrW9s7u3v2/kFHiUwSaBPBhHwIsQJGObQ11QweUgk4CRl0w9HN1O8+glRU8Hs9TiFI8IDTmBKsjdS3r/yMRyBDiQnkfjrEXIskx/+jKPp23W24MzjLxCtJHZVo9e2JHwmSJcA1YVipnuemOsix1JQwKGp+piDFZIQH0DOU4wRUkM9+LJwTo0ROLKQprp2Z+nMix4lS4yQ0nQnWQ7XoTcW/vF6m48sgpzzNNHAyXxRnzNHCmQbmRFQC0WxsCCaSmlsdMsQmL21irZkQvMWXl0nnrOG5De/uvN68LuOooiN0jE6Rhy5QE92iFmojgp7QC3pD79az9WpNrI95a8UqZw7RL1hf32D0pew=</latexit><latexit sha1_base64="PTT9Yj7gx2hGEUf0/7gVMmt9N4c=">AAACI3ichVBNS8NAEN3Ur1q/oh69BIvgqSQiKJ6KXjxWsK3QhLLZTNqlm92wuxFKyH/x4l/x4kEpXjz4X9y2OWgr+GDg8d4MM/PClFGlXffTqqysrq1vVDdrW9s7u3v2/kFHiUwSaBPBhHwIsQJGObQ11QweUgk4CRl0w9HN1O8+glRU8Hs9TiFI8IDTmBKsjdS3r/yMRyBDiQnkfjrEXIskx/+jKPp23W24MzjLxCtJHZVo9e2JHwmSJcA1YVipnuemOsix1JQwKGp+piDFZIQH0DOU4wRUkM9+LJwTo0ROLKQprp2Z+nMix4lS4yQ0nQnWQ7XoTcW/vF6m48sgpzzNNHAyXxRnzNHCmQbmRFQC0WxsCCaSmlsdMsQmL21irZkQvMWXl0nnrOG5De/uvN68LuOooiN0jE6Rhy5QE92iFmojgp7QC3pD79az9WpNrI95a8UqZw7RL1hf32D0pew=</latexit>

Implementation

z }| {<latexit sha1_base64="o/9y/+iYATmvWYLFFwU2SaLHtLQ=">AAACCXicbVBNS8NAEN3Ur1q/oh69LBbBU0lE0GPRi8cK9gPaUCbbTbt0sxt2N0IJuXrxr3jxoIhX/4E3/43bNoi2Phh4vDfDzLww4Uwbz/tySiura+sb5c3K1vbO7p67f9DSMlWENonkUnVC0JQzQZuGGU47iaIQh5y2w/H11G/fU6WZFHdmktAghqFgESNgrNR3cU9aO1RAaNZLRiCMjDP4QZ733apX82bAy8QvSBUVaPTdz95AkjSmwhAOWnd9LzFBBsowwmle6aWaJkDGMKRdSwXEVAfZ7JMcn1hlgCOpbAmDZ+rviQxirSdxaDtjMCO96E3F/7xuaqLLIGMiSQ0VZL4oSjk2Ek9jwQOmKDF8YgkQxeytmIzAxmJseBUbgr/48jJpndV8r+bfnlfrV0UcZXSEjtEp8tEFqqMb1EBNRNADekIv6NV5dJ6dN+d93lpyiplD9AfOxzfaMpsN</latexit><latexit sha1_base64="o/9y/+iYATmvWYLFFwU2SaLHtLQ=">AAACCXicbVBNS8NAEN3Ur1q/oh69LBbBU0lE0GPRi8cK9gPaUCbbTbt0sxt2N0IJuXrxr3jxoIhX/4E3/43bNoi2Phh4vDfDzLww4Uwbz/tySiura+sb5c3K1vbO7p67f9DSMlWENonkUnVC0JQzQZuGGU47iaIQh5y2w/H11G/fU6WZFHdmktAghqFgESNgrNR3cU9aO1RAaNZLRiCMjDP4QZ733apX82bAy8QvSBUVaPTdz95AkjSmwhAOWnd9LzFBBsowwmle6aWaJkDGMKRdSwXEVAfZ7JMcn1hlgCOpbAmDZ+rviQxirSdxaDtjMCO96E3F/7xuaqLLIGMiSQ0VZL4oSjk2Ek9jwQOmKDF8YgkQxeytmIzAxmJseBUbgr/48jJpndV8r+bfnlfrV0UcZXSEjtEp8tEFqqMb1EBNRNADekIv6NV5dJ6dN+d93lpyiplD9AfOxzfaMpsN</latexit><latexit sha1_base64="o/9y/+iYATmvWYLFFwU2SaLHtLQ=">AAACCXicbVBNS8NAEN3Ur1q/oh69LBbBU0lE0GPRi8cK9gPaUCbbTbt0sxt2N0IJuXrxr3jxoIhX/4E3/43bNoi2Phh4vDfDzLww4Uwbz/tySiura+sb5c3K1vbO7p67f9DSMlWENonkUnVC0JQzQZuGGU47iaIQh5y2w/H11G/fU6WZFHdmktAghqFgESNgrNR3cU9aO1RAaNZLRiCMjDP4QZ733apX82bAy8QvSBUVaPTdz95AkjSmwhAOWnd9LzFBBsowwmle6aWaJkDGMKRdSwXEVAfZ7JMcn1hlgCOpbAmDZ+rviQxirSdxaDtjMCO96E3F/7xuaqLLIGMiSQ0VZL4oSjk2Ek9jwQOmKDF8YgkQxeytmIzAxmJseBUbgr/48jJpndV8r+bfnlfrV0UcZXSEjtEp8tEFqqMb1EBNRNADekIv6NV5dJ6dN+d93lpyiplD9AfOxzfaMpsN</latexit><latexit sha1_base64="o/9y/+iYATmvWYLFFwU2SaLHtLQ=">AAACCXicbVBNS8NAEN3Ur1q/oh69LBbBU0lE0GPRi8cK9gPaUCbbTbt0sxt2N0IJuXrxr3jxoIhX/4E3/43bNoi2Phh4vDfDzLww4Uwbz/tySiura+sb5c3K1vbO7p67f9DSMlWENonkUnVC0JQzQZuGGU47iaIQh5y2w/H11G/fU6WZFHdmktAghqFgESNgrNR3cU9aO1RAaNZLRiCMjDP4QZ733apX82bAy8QvSBUVaPTdz95AkjSmwhAOWnd9LzFBBsowwmle6aWaJkDGMKRdSwXEVAfZ7JMcn1hlgCOpbAmDZ+rviQxirSdxaDtjMCO96E3F/7xuaqLLIGMiSQ0VZL4oSjk2Ek9jwQOmKDF8YgkQxeytmIzAxmJseBUbgr/48jJpndV8r+bfnlfrV0UcZXSEjtEp8tEFqqMb1EBNRNADekIv6NV5dJ6dN+d93lpyiplD9AfOxzfaMpsN</latexit>

Distilling the theory

z }| {<latexit sha1_base64="SNixYgukui8QXPR0fihCOzo6HNk=">AAACA3icbVBNS8NAEJ3Ur1q/ot70slgETyURQY9FLx4r2A9oQtlsN+3SzW7Y3QglFLz4V7x4UMSrf8Kb/8Ztm4O2Phh4vDfDzLwo5Uwbz/t2Siura+sb5c3K1vbO7p67f9DSMlOENonkUnUirClngjYNM5x2UkVxEnHajkY3U7/9QJVmUtybcUrDBA8EixnBxko99yiQ1o4UJjQP0iEWRiY5tphMem7Vq3kzoGXiF6QKBRo99yvoS5IlVBjCsdZd30tNmGNlGOF0UgkyTVNMRnhAu5YKnFAd5rMfJujUKn0US2VLGDRTf0/kONF6nES2M8FmqBe9qfif181MfBXmTKSZoYLMF8UZR0aiaSCozxQlho8twUQxeysiQ2wDMTa2ig3BX3x5mbTOa75X8+8uqvXrIo4yHMMJnIEPl1CHW2hAEwg8wjO8wpvz5Lw4787HvLXkFDOH8AfO5w9C+5iL</latexit><latexit sha1_base64="SNixYgukui8QXPR0fihCOzo6HNk=">AAACA3icbVBNS8NAEJ3Ur1q/ot70slgETyURQY9FLx4r2A9oQtlsN+3SzW7Y3QglFLz4V7x4UMSrf8Kb/8Ztm4O2Phh4vDfDzLwo5Uwbz/t2Siura+sb5c3K1vbO7p67f9DSMlOENonkUnUirClngjYNM5x2UkVxEnHajkY3U7/9QJVmUtybcUrDBA8EixnBxko99yiQ1o4UJjQP0iEWRiY5tphMem7Vq3kzoGXiF6QKBRo99yvoS5IlVBjCsdZd30tNmGNlGOF0UgkyTVNMRnhAu5YKnFAd5rMfJujUKn0US2VLGDRTf0/kONF6nES2M8FmqBe9qfif181MfBXmTKSZoYLMF8UZR0aiaSCozxQlho8twUQxeysiQ2wDMTa2ig3BX3x5mbTOa75X8+8uqvXrIo4yHMMJnIEPl1CHW2hAEwg8wjO8wpvz5Lw4787HvLXkFDOH8AfO5w9C+5iL</latexit><latexit sha1_base64="SNixYgukui8QXPR0fihCOzo6HNk=">AAACA3icbVBNS8NAEJ3Ur1q/ot70slgETyURQY9FLx4r2A9oQtlsN+3SzW7Y3QglFLz4V7x4UMSrf8Kb/8Ztm4O2Phh4vDfDzLwo5Uwbz/t2Siura+sb5c3K1vbO7p67f9DSMlOENonkUnUirClngjYNM5x2UkVxEnHajkY3U7/9QJVmUtybcUrDBA8EixnBxko99yiQ1o4UJjQP0iEWRiY5tphMem7Vq3kzoGXiF6QKBRo99yvoS5IlVBjCsdZd30tNmGNlGOF0UgkyTVNMRnhAu5YKnFAd5rMfJujUKn0US2VLGDRTf0/kONF6nES2M8FmqBe9qfif181MfBXmTKSZoYLMF8UZR0aiaSCozxQlho8twUQxeysiQ2wDMTa2ig3BX3x5mbTOa75X8+8uqvXrIo4yHMMJnIEPl1CHW2hAEwg8wjO8wpvz5Lw4787HvLXkFDOH8AfO5w9C+5iL</latexit><latexit sha1_base64="SNixYgukui8QXPR0fihCOzo6HNk=">AAACA3icbVBNS8NAEJ3Ur1q/ot70slgETyURQY9FLx4r2A9oQtlsN+3SzW7Y3QglFLz4V7x4UMSrf8Kb/8Ztm4O2Phh4vDfDzLwo5Uwbz/t2Siura+sb5c3K1vbO7p67f9DSMlOENonkUnUirClngjYNM5x2UkVxEnHajkY3U7/9QJVmUtybcUrDBA8EixnBxko99yiQ1o4UJjQP0iEWRiY5tphMem7Vq3kzoGXiF6QKBRo99yvoS5IlVBjCsdZd30tNmGNlGOF0UgkyTVNMRnhAu5YKnFAd5rMfJujUKn0US2VLGDRTf0/kONF6nES2M8FmqBe9qfif181MfBXmTKSZoYLMF8UZR0aiaSCozxQlho8twUQxeysiQ2wDMTa2ig3BX3x5mbTOa75X8+8uqvXrIo4yHMMJnIEPl1CHW2hAEwg8wjO8wpvz5Lw4787HvLXkFDOH8AfO5w9C+5iL</latexit>

FancyCase Studies

POPL deadline

“Hello World”works!

51

z }| {<latexit sha1_base64="o/9y/+iYATmvWYLFFwU2SaLHtLQ=">AAACCXicbVBNS8NAEN3Ur1q/oh69LBbBU0lE0GPRi8cK9gPaUCbbTbt0sxt2N0IJuXrxr3jxoIhX/4E3/43bNoi2Phh4vDfDzLww4Uwbz/tySiura+sb5c3K1vbO7p67f9DSMlWENonkUnVC0JQzQZuGGU47iaIQh5y2w/H11G/fU6WZFHdmktAghqFgESNgrNR3cU9aO1RAaNZLRiCMjDP4QZ733apX82bAy8QvSBUVaPTdz95AkjSmwhAOWnd9LzFBBsowwmle6aWaJkDGMKRdSwXEVAfZ7JMcn1hlgCOpbAmDZ+rviQxirSdxaDtjMCO96E3F/7xuaqLLIGMiSQ0VZL4oSjk2Ek9jwQOmKDF8YgkQxeytmIzAxmJseBUbgr/48jJpndV8r+bfnlfrV0UcZXSEjtEp8tEFqqMb1EBNRNADekIv6NV5dJ6dN+d93lpyiplD9AfOxzfaMpsN</latexit><latexit sha1_base64="o/9y/+iYATmvWYLFFwU2SaLHtLQ=">AAACCXicbVBNS8NAEN3Ur1q/oh69LBbBU0lE0GPRi8cK9gPaUCbbTbt0sxt2N0IJuXrxr3jxoIhX/4E3/43bNoi2Phh4vDfDzLww4Uwbz/tySiura+sb5c3K1vbO7p67f9DSMlWENonkUnVC0JQzQZuGGU47iaIQh5y2w/H11G/fU6WZFHdmktAghqFgESNgrNR3cU9aO1RAaNZLRiCMjDP4QZ733apX82bAy8QvSBUVaPTdz95AkjSmwhAOWnd9LzFBBsowwmle6aWaJkDGMKRdSwXEVAfZ7JMcn1hlgCOpbAmDZ+rviQxirSdxaDtjMCO96E3F/7xuaqLLIGMiSQ0VZL4oSjk2Ek9jwQOmKDF8YgkQxeytmIzAxmJseBUbgr/48jJpndV8r+bfnlfrV0UcZXSEjtEp8tEFqqMb1EBNRNADekIv6NV5dJ6dN+d93lpyiplD9AfOxzfaMpsN</latexit><latexit sha1_base64="o/9y/+iYATmvWYLFFwU2SaLHtLQ=">AAACCXicbVBNS8NAEN3Ur1q/oh69LBbBU0lE0GPRi8cK9gPaUCbbTbt0sxt2N0IJuXrxr3jxoIhX/4E3/43bNoi2Phh4vDfDzLww4Uwbz/tySiura+sb5c3K1vbO7p67f9DSMlWENonkUnVC0JQzQZuGGU47iaIQh5y2w/H11G/fU6WZFHdmktAghqFgESNgrNR3cU9aO1RAaNZLRiCMjDP4QZ733apX82bAy8QvSBUVaPTdz95AkjSmwhAOWnd9LzFBBsowwmle6aWaJkDGMKRdSwXEVAfZ7JMcn1hlgCOpbAmDZ+rviQxirSdxaDtjMCO96E3F/7xuaqLLIGMiSQ0VZL4oSjk2Ek9jwQOmKDF8YgkQxeytmIzAxmJseBUbgr/48jJpndV8r+bfnlfrV0UcZXSEjtEp8tEFqqMb1EBNRNADekIv6NV5dJ6dN+d93lpyiplD9AfOxzfaMpsN</latexit><latexit sha1_base64="o/9y/+iYATmvWYLFFwU2SaLHtLQ=">AAACCXicbVBNS8NAEN3Ur1q/oh69LBbBU0lE0GPRi8cK9gPaUCbbTbt0sxt2N0IJuXrxr3jxoIhX/4E3/43bNoi2Phh4vDfDzLww4Uwbz/tySiura+sb5c3K1vbO7p67f9DSMlWENonkUnVC0JQzQZuGGU47iaIQh5y2w/H11G/fU6WZFHdmktAghqFgESNgrNR3cU9aO1RAaNZLRiCMjDP4QZ733apX82bAy8QvSBUVaPTdz95AkjSmwhAOWnd9LzFBBsowwmle6aWaJkDGMKRdSwXEVAfZ7JMcn1hlgCOpbAmDZ+rviQxirSdxaDtjMCO96E3F/7xuaqLLIGMiSQ0VZL4oSjk2Ek9jwQOmKDF8YgkQxeytmIzAxmJseBUbgr/48jJpndV8r+bfnlfrV0UcZXSEjtEp8tEFqqMb1EBNRNADekIv6NV5dJ6dN+d93lpyiplD9AfOxzfaMpsN</latexit>

Optimisations

Page 52: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

• Is what I’m about to do relevant?

• What if it won’t work?

• Will it scale for more project ideas?

• I’m not as productive as my labmates.

• I don’t see the final goal of what I’m about to do.

Escaping Research Limbo 52

Page 53: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

• Is what I’m about to do relevant?

• What if it won’t work?

• Will it scale for more project ideas?

• I’m not as productive as my labmates.

• I don’t see the final goal of what I’m about to do.

Escaping Research Limbo 53

Page 54: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

• Is what I’m about to do relevant?

• What if it won’t work?

• Will it scale for more project ideas?

• I’m not as productive as my labmates.

• I don’t see the final goal of what I’m about to do.

Escaping Research Limbo 54

Page 55: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

Step 3: Look for Shortcomings

Escaping Research Limbo 55

Page 56: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

56

Page 57: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

opportunity

57

Page 58: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

The Virtue of PL Research

too messy too brittle too inefficient

Implementation to Solve a Domain Problem

?Can we make it better

A novel technique for better implementations.

58

Page 59: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

In praise of Incrementality

Bertrand Meyer. One cheer for incremental researchhttps://bertrandmeyer.com/2009/08/10/one-cheer-for-incremental-research/

59

Page 60: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

Story One

“Can we make Static Analyses less complex?”

60

Page 61: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

too inefficient

Introspective Pushdown Analysis of Higher-Order Programs

Christopher EarlUniversity of Utah

[email protected]

Ilya SergeyKU Leuven

[email protected]

Matthew MightUniversity of [email protected]

David Van HornNortheastern [email protected]

AbstractIn the static analysis of functional programs, pushdown flow anal-ysis and abstract garbage collection skirt just inside the boundariesof soundness and decidability. Alone, each method reduces analy-sis times and boosts precision by orders of magnitude. This workilluminates and conquers the theoretical challenges that stand in theway of combining the power of these techniques. The challenge inmarrying these techniques is not subtle: computing the reachablecontrol states of a pushdown system relies on limiting access dur-ing transition to the top of the stack; abstract garbage collection,on the other hand, needs full access to the entire stack to computea root set, just as concrete collection does. Introspective pushdownsystems resolve this conflict. Introspective pushdown systems pro-vide enough access to the stack to allow abstract garbage collection,but they remain restricted enough to compute control-state reacha-bility, thereby enabling the sound and precise product of pushdownanalysis and abstract garbage collection. Experiments reveal syn-ergistic interplay between the techniques, and the fusion demon-strates “better-than-both-worlds” precision.

Categories and Subject Descriptors D.3.4 [Programming lan-guages]: Processors—Optimization; F.3.2 [Logics and Meaningsof Programs]: Semantics of Programming Languages—Programanalysis, Operational semantics

General Terms Languages, Theory

Keywords CFA2, pushdown systems, abstract interpretation,pushdown analysis, program analysis, abstract machines, abstractgarbage collection, higher-order languages

1. Introduction

The recent development of a context-free1 approach to control-flow analysis (CFA2) by Vardoulakis and Shivers has provoked a

1 As in context-free language, not context-sensitivity.

Permission to make digital or hard copies of all or part of this work for personal orclassroom use is granted without fee provided that copies are not made or distributedfor profit or commercial advantage and that copies bear this notice and the full citationon the first page. To copy otherwise, to republish, to post on servers or to redistributeto lists, requires prior specific permission and/or a fee.ICFP ’12 September 10–12, Copenhagen, Denmark.Copyright c� 2012 ACM 978-1-4503-1054-3/12/09. . . $15.00

seismic shift in the static analysis of higher-order programs [22].Prior to CFA2, a precise analysis of recursive behavior had beena stumbling block—even though flow analyses have an importantrole to play in optimization for functional languages, such as flow-driven inlining [13], interprocedural constant propagation [19] andtype-check elimination [23].

While it had been possible to statically analyze recursion soundly,CFA2 made it possible to analyze recursion precisely by matchingcalls and returns without approximation. In its pursuit of recursion,clever engineering steered CFA2 just shy of undecidability. Thepayoff is an order-of-magnitude reduction in analysis time and anorder-of-magnitude increase in precision.

For a visual measure of the impact, Figure 1 renders the abstracttransition graph (a model of all possible traces through the pro-gram) for the toy program in Figure 2. For this example, pushdownanalysis eliminates spurious return-flow from the use of recursion.But, recursion is just one problem of many for flow analysis. Forinstance, pushdown analysis still gets tripped up by the spuriouscross-flow problem; at calls to (id f) and (id g) in the previousexample, it thinks (id g) could be f or g.

Powerful techniques such as abstract garbage collection [14]were developed to solve the cross-flow problem.2 In fact, abstractgarbage collection, by itself, also delivers orders-of-magnitude im-provements to analytic speed and precision. (See Figure 1 again fora visualization of that impact.)

It is natural to ask: can abstract garbage collection and pushdownanlysis work together? Can their strengths be multiplied? At firstglance, the answer appears to be a disheartening No.

1.1 The problem: The whole stack versus just the top

Abstract garbage collections seems to require more than push-down analysis can decidably provide: access to the full stack. Ab-stract garbage collection, like its name implies, discards unreach-able values from an abstract store during the analysis. Like con-crete garbage collection, abstract garbage collection also begins itssweep with a root set, and like concrete garbage collection, it musttraverse the abstract stack to compute that root set. But, pushdown

2 The cross-flow problem arises because monotonicity prevents revoking ajudgment like “procedure f flows to x,” or “procedure g flows to x,” onceit’s been made.

ICFP’12

Can we make Static Analyses less complex?ICFP’10

Abstracting Abstract Machines

David Van Horn ⇤

Northeastern [email protected]

Matthew MightUniversity of [email protected]

Abstract

We describe a derivational approach to abstract interpretation thatyields novel and transparently sound static analyses when appliedto well-established abstract machines. To demonstrate the tech-nique and support our claim, we transform the CEK machineof Felleisen and Friedman, a lazy variant of Krivine’s machine,and the stack-inspecting CM machine of Clements and Felleiseninto abstract interpretations of themselves. The resulting analysesbound temporal ordering of program events; predict return-flowand stack-inspection behavior; and approximate the flow and eval-uation of by-need parameters. For all of these machines, we findthat a series of well-known concrete machine refactorings, plus atechnique we call store-allocated continuations, leads to machinesthat abstract into static analyses simply by bounding their stores.We demonstrate that the technique scales up uniformly to allowstatic analysis of realistic language features, including tail calls,conditionals, side effects, exceptions, first-class continuations, andeven garbage collection.

Categories and Subject Descriptors F.3.2 [Logics and Meaningsof Programs]: Semantics of Programming Languages—Programanalysis, Operational semantics; F.4.1 [Mathematical Logic andFormal Languages]: Mathematical Logic—Lambda calculus andrelated systems

General Terms Languages, Theory

Keywords abstract machines, abstract interpretation

1. Introduction

Abstract machines such as the CEK machine and Krivine’s ma-chine are first-order state transition systems that represent the coreof a real language implementation. Semantics-based program anal-ysis, on the other hand, is concerned with safely approximatingintensional properties of such a machine as it runs a program. Itseems natural then to want to systematically derive analyses frommachines to approximate the core of realistic run-time systems.

Our goal is to develop a technique that enables direct abstractinterpretations of abstract machines by methods for transforminga given machine description into another that computes its finiteapproximation.

⇤ Supported by the National Science Foundation under grant 0937060 to theComputing Research Association for the CIFellow Project.

Permission to make digital or hard copies of all or part of this work for personal orclassroom use is granted without fee provided that copies are not made or distributedfor profit or commercial advantage and that copies bear this notice and the full citationon the first page. To copy otherwise, to republish, to post on servers or to redistributeto lists, requires prior specific permission and/or a fee.ICFP’10, September 27–29, 2010, Baltimore, Maryland, USA.Copyright c� 2010 ACM 978-1-60558-794-3/10/09. . . $10.00

We demonstrate that the technique of refactoring a machinewith store-allocated continuations allows a direct structural ab-straction1 by bounding the machine’s store. Thus, we are able toconvert semantic techniques used to model language features intostatic analysis techniques for reasoning about the behavior of thosevery same features. By abstracting well-known machines, our tech-nique delivers static analyzers that can reason about by-need evalu-ation, higher-order functions, tail calls, side effects, stack structure,exceptions and first-class continuations.

The basic idea behind store-allocated continuations is not new.SML/NJ has allocated continuations in the heap for well over adecade [28]. At first glance, modeling the program stack in an ab-stract machine with store-allocated continuations would not seemto provide any real benefit. Indeed, for the purpose of defining themeaning of a program, there is no benefit, because the meaningof the program does not depend on the stack-implementation strat-egy. Yet, a closer inspection finds that store-allocating continua-tions eliminate recursion from the definition of the state-space ofthe machine. With no recursive structure in the state-space, an ab-stract machine becomes eligible for conversion into an abstract in-terpreter through a simple structural abstraction.

To demonstrate the applicability of the approach, we deriveabstract interpreters of:

• a call-by-value �-calculus with state and control based on theCESK machine of Felleisen and Friedman [13],

• a call-by-need �-calculus based on a tail-recursive, lazy vari-ant of Krivine’s machine derived by Ager, Danvy and Midt-gaard [1], and

• a call-by-value �-calculus with stack inspection based on theCM machine of Clements and Felleisen [3];

and use abstract garbage collection to improve precision [25].

Overview

In Section 2, we begin with the CEK machine and attempt a struc-tural abstract interpretation, but find ourselves blocked by two re-cursive structures in the machine: environments and continuations.We make three refactorings to:

1. store-allocate bindings,2. store-allocate continuations, and3. time-stamp machine states;

resulting in the CESK, CESK?, and time-stamped CESK? ma-chines, respectively. The time-stamps encode the history (context)of the machine’s execution and facilitate context-sensitive abstrac-tions. We then demonstrate that the time-stamped machine ab-stracts directly into a parameterized, sound and computable staticanalysis.

1 A structural abstraction distributes component-, point-, and member-wise.

lots of code duplication

Monadic Abstract Interpreters

Ilya Sergey

IMDEA Software Institute, Spain

[email protected]

Dominique Devriese

iMinds – DistriNet, KU Leuven, Belgium

[email protected]

Matthew Might

University of Utah, USA

[email protected]

Jan Midtgaard

Aarhus University, Denmark

[email protected]

David Darais

Harvard University, USA

[email protected]

Dave Clarke Frank Piessens

iMinds – DistriNet, KU Leuven, Belgium

{firstname.lastname}@cs.kuleuven.be

Abstract

Recent developments in the systematic construction of abstractinterpreters hinted at the possibility of a broad unification ofconcepts in static analysis. We deliver that unification by show-ing context-sensitivity, polyvariance, flow-sensitivity, reachability-pruning, heap-cloning and cardinality-bounding to be independentof any particular semantics. Monads become the unifying agent be-tween these concepts and between semantics. For instance, by plug-ging the same “context-insensitivity monad” into a monadically-parameterized semantics for Java or for the lambda calculus, ityields the expected context-insensitive analysis.

To achieve this unification, we develop a systematic method fortransforming a concrete semantics into a monadically-parameterizedabstract machine. Changing the monad changes the behavior ofthe machine. By changing the monad, we recover a spectrum ofmachines—from the original concrete semantics to a monovariant,flow- and context-insensitive static analysis with a singly-threadedheap and weak updates.

The monadic parameterization also suggests an abstraction overthe ubiquitous monotone fixed-point computation found in staticanalysis. This abstraction makes it straightforward to instrumentan analysis with high-level strategies for improving precision andperformance, such as abstract garbage collection and widening.

While the paper itself runs the development for continuation-passing style, our generic implementation replays it for direct-stylelambda-calculus and Featherweight Java to support generality.

Categories and Subject Descriptors F.3.2 [Logics and Meaningsof Programs]: Semantics of Programming Languages—Programanalysis, Operational semantics

General Terms Languages, Theory

Keywords abstract machines, abstract interpretation, monads, op-erational semantics, collecting semantics, abstract garbage collec-tion, interpreters

Permission to make digital or hard copies of all or part of this work for personal orclassroom use is granted without fee provided that copies are not made or distributedfor profit or commercial advantage and that copies bear this notice and the full citationon the first page. To copy otherwise, to republish, to post on servers or to redistributeto lists, requires prior specific permission and/or a fee.

PLDI’13, June 16–19, 2013, Seattle, WA, USA.Copyright c⃝ 2013 ACM 978-1-4503-2014-6/13/06. . . $10.00

1. Introduction

Recent work on systematizing the construction of abstract inter-preters [15, 23, 24] hints at the possibility of broad theoretical uni-fication within static analysis. Van Horn and Might [23] sketcha method for abstracting abstract machines into static analyzersby bounding the store of the abstract machine: once the store isbounded, the abstraction and then the analysis follows.

But, bounding the store is an act of design—of human interven-tion. How a designer bounds the store immediately determines clas-sical properties of the analysis such as its context-sensitivity and itspolyvariance. While not directly expressed in terms of a bound onthe store, other classical properties are also related to the abstrac-tion and handling of the store, including heap-cloning, reachability-pruning and cardinality-bounding. But, other properties, such asflow-sensitivity, path-sensitvity and some kinds of widening, havelittle to do with the store, and more to with the (re-)interpretationof the abstract semantics during analysis.

Fortunately, there is a construct that encompasses all of theseconcerns: the monad. Monads were originally adapted to program-ming languages to provide a durable abstraction for mutation ina purely functional language. As such, expressing a semanticsmonadically allows the monad to fully veil the details of interact-ing with a store. Yet monads have always provided more than justa means for hiding effects in a purely functional manner: they alsoallow a near-complete reinterpretation of computations expressedmonadically, e.g., the instant and powerful non-determinism of thelist monad. This semantic reflection in precisely the right dimen-sions allows monads to encapsulate a variety of concepts in staticanalysis.

The payoff of this realization is immediate: we can monadicallyrefactor semantics for languages as diverse as the lambda calculusand Java, yet define notions like context-sensitivity for both at thesame time, with the same monad.

Our presentation details every step of the monadic refactoringfor continuation-passing style lambda calculus, and then developsthe monadic parameters that induce static analyzers. The imple-mentation of the approach in the accompanying code repositoryreplays the same monadic refactoring for a direct-style lambda cal-culus and for Featherweight Java. The monads remain the same.

We have chosen Haskell in lieu of formal mathematics for thepresentation for two reasons: (1) Haskell is directly executable, and(2) Haskell has concise, convenient and readable syntax for ex-pressing monads—the central actor in our work. Our fundamentalresults are no more restricted to Haskell than monads are restrictedto Haskell.

PLDI’13

See David Darais’ works for the follow-ups.

61

Page 62: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

Story Two

“Can we unify existing Concurrency Logics?”

62

Page 63: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

how do we use it?

proofs are difficult to manage

Higher-Order Ghost State

Ralf JungMPI-SWS, [email protected]

Robbert KrebbersAarhus University, [email protected]

Lars BirkedalAarhus University, Denmark

[email protected]

Derek DreyerMPI-SWS, [email protected]

AbstractThe development of concurrent separation logic (CSL) has sparked along line of work on modular verification of sophisticated concurrentprograms. Two of the most important features supported by severalexisting extensions to CSL are higher-order quantification andcustom ghost state. However, none of the logics that support bothof these features reap the full potential of their combination. Inparticular, none of them provide general support for a feature wedub “higher-order ghost state”: the ability to store arbitrary higher-order separation-logic predicates in ghost variables.

In this paper, we propose higher-order ghost state as a interestingand useful extension to CSL, which we formalize in the frameworkof Jung et al.’s recently developed Iris logic. To justify its soundness,we develop a novel algebraic structure called CMRAs (“cameras”),which can be thought of as “step-indexed partial commutativemonoids”. Finally, we show that Iris proofs utilizing higher-orderghost state can be effectively formalized in Coq, and discuss thechallenges we faced in formalizing them.

Categories and Subject Descriptors D.3.1 [Programming Lan-guages]: Formal Definitions and Theory; F.3.1 [Logics and Mean-ings of Programs]: Specifying and Verifying and Reasoning aboutPrograms

Keywords Separation logic, fine-grained concurrency, higher-order logic, compositional verification, interactive theorem proving

1. IntroductionOver a decade ago, O’Hearn made a critical observation: separationlogic—developed to simplify the verification of sequential, heap-manipulating programs—can help simplify the verification of con-current programs as well. In concurrent separation logic (CSL) [28],assertions denote not only facts about the state of the program, butalso ownership of a piece of that state. Concretely, this means thatif a thread t can assert ` 7! v, then t knows not only that location` currently points to v, but also that it “owns” `, so no other threadcan read or write ` concurrently. Given this ownership assertion, tcan perform local (and essentially sequential) reasoning on accessesto `, completely ignoring concurrently operating threads.

Of course at some point threads have to communicate throughsome kind of shared state (such as a mutable heap or message-passing channels). To reason modularly about such communication,the original CSL used a simple form of resource invariants, which

Permission to make digital or hard copies of part or all of this work for personal or classroom use is granted without feeprovided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice andthe full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored.Abstracting with credit is permitted. To copy otherwise, to republish, to post on servers, or to redistribute to lists, contactthe Owner/Author(s). Request permissions from [email protected] or Publications Dept., ACM, Inc., fax +1 (212)869-0481.

ICFP ’16, September 18–22, 2016, Nara, Japan.Copyright c� 2016 held by owner/author(s). Publication rights licensed to ACM.ACM 978-1-4503-4219-3/16/09. . . $15.00.DOI: http://dx.doi.org/10.1145/2951913.2951943

were tied to a “conditional critical region” construct for synchro-nization. Since O’Hearn’s pioneering (and Gödel-award-winning)paper, there has been an avalanche of follow-on work extendingCSL with more sophisticated mechanisms for modular reasoning,which allow shared state to be accessed at a finer granularity (e.g.,atomic compare-and-swap instructions) and which support the ver-ification of more “daring” (less clearly synchronized) concurrentprograms [40, 17, 16, 13, 18, 38, 35, 27, 11, 24].

In this paper, we focus on two of the most important extensionsto CSL—higher-order quantification and custom ghost state—andobserve that, although several logics support both of these exten-sions, none of them reap the full potential of their combination. Inparticular, none of them provide general support for a feature wedub “higher-order ghost state”.

Higher-order quantification is the ability to quantify logicalassertions (universally and existentially) over other assertions and,in general, over arbitrary higher-order predicates. Several recentextensions to CSL have incorporated higher-order quantification [36,35, 24, 21, 27], in part because it leads to more generic and reusablespecifications of concurrent data structures (see §4), and in partbecause it is seemingly necessary for verifying some higher-orderconcurrency paradigms [35, 38, 31].

Ghost state is “logical state”, i.e., state that is essential tomaintain in the proof of a program but is not part of the physical statemanipulated by the program itself. It is a fixture of Hoare logics sincethe work of Owicki and Gries [29] in the 1970s, and is useful fora variety of purposes: for encoding various kinds of “permissions”,for recording information about the trace of the computation, fordescribing “protocols” on how threads may interact with sharedstate, and more. Traditionally, ghost state was manipulated byinstrumenting a program with updates to “ghost” (or “auxiliary”)variables. Although this approach is convenient for integration intoautomatic verification tools [10], it is unnecessarily low-level: thereis no reason logical state needs to be manipulated in exactly thesame way as physical state, and doing so makes it harder to reasonabout updates to shared logical state in a modular fashion.

Recently, a number of researchers have argued that a more high-level, general, and flexible way to represent ghost state is via partialcommutative monoids (PCMs). Intuitively, PCMs are a naturalfit for ghost state because they impose only the bare minimumrequirements on something that should be “ownable” in a separationlogic, while leaving lots of room for proof-specific customization.Several newer extensions to CSL [24, 27, 12] thus give users thefreedom to define ghost state on a per-proof basis in terms of anarbitrary PCM of their choosing. Furthermore, the Iris logic [24] hasestablished that PCMs (together with simple invariants) are flexibleenough to derive several advanced reasoning mechanisms that werebuilt in as primitive in prior logics.

Unfortunately, a limitation arises when one uses PCMs to supportcustom ghost state in the context of a logic with higher-orderquantification. Specifically, PCMs yield a model of ghost state thatis first-order. By this we mean that there is an inherent stratification:

1

ICFP’16

Consist

ent *Complete *

Well D

ocumented*Easyt

oR

euse* *

Evaluated

*POPL*

Artifact

*AEC

Interactive Proofs in Higher-OrderConcurrent Separation Logic

Robbert Krebbers ⇤

Delft University of Technology,The Netherlands

[email protected]

Amin Timanyimec-Distrinet, KU Leuven, Belgium

[email protected]

Lars BirkedalAarhus University, Denmark

[email protected]

AbstractWhen using a proof assistant to reason in an embedded logic – likeseparation logic – one cannot benefit from the proof contexts andbasic tactics of the proof assistant. This results in proofs that areat a too low level of abstraction because they are cluttered withbookkeeping code related to manipulating the object logic.

In this paper, we introduce a so-called proof mode that extendsthe Coq proof assistant with (spatial and non-spatial) named proofcontexts for the object logic. We show that thanks to these contextswe can implement high-level tactics for introduction and eliminationof the connectives of the object logic, and thereby make reasoningin the embedded logic as seamless as reasoning in the meta logic ofthe proof assistant. We apply our method to Iris: a state of the arthigher-order impredicative concurrent separation logic.

We show that our method is very general, and is not just limited toprogram verification. We demonstrate its generality by formalizingcorrectness proofs of fine-grained concurrent algorithms, derivedconstructs of the Iris logic, and a unary and binary logical relationfor a language with concurrency, higher-order store, polymorphism,and recursive types. This is the first formalization of a binary logicalrelation for such an expressive language. We also show how to usethe logical relation to prove contextual refinement of fine-grainedconcurrent algorithms.

Categories and Subject Descriptors D.3.1 [Programming Lan-guages]: Formal Definitions and Theory; F.3.1 [Logics and Mean-ings of Programs]: Specifying and Verifying and Reasoning aboutPrograms

Keywords Separation Logic, Interactive Theorem Proving, Coq,Fine-grained Concurrency, Logical Relations

1. IntroductionIn the last decade, there has been tremendous progress on programlogics for increasingly sophisticated programming languages [43,17, 16, 13, 18, 42, 40, 11, 31, 24, 23, 26]. Part of the success ofthese logics stems from the fact that they have built-in support forreasoning about challenging programming language features. For

⇤ This research was carried out while this author was at Aarhus University.

Permission to make digital or hard copies of part or all of this work for personal or classroom use is granted without feeprovided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice andthe full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored.Abstracting with credit is permitted. To copy otherwise, to republish, to post on servers, or to redistribute to lists, contactthe Owner/Author(s). Request permissions from [email protected] or Publications Dept., ACM, Inc., fax +1 (212)869-0481.

POPL ’17, January 18 - 20, 2017, Paris, FranceCopyright c� 2017 held by owner/author(s). Publication rights licensed to ACM.ACM 978-1-4503-4660-3/17/01. . . $15.00.DOI: http://dx.doi.org/10.1145/http://dx.doi.org/10.1145/3009837.3009855

instance, they include separating conjunction of separation logic forreasoning about mutable data structures, invariants for reasoningabout sharing, guarded recursion for reasoning about various formsof recursion, and higher-order quantification for giving genericmodular specifications to libraries.

Due to these built-in features, modern program logics are verydifferent from the logics of general purpose proof assistants. There-fore, to use a proof assistant to formalize reasoning in a programlogic, one needs to represent the program logic in that proof assis-tant, and then, to benefit from the built-in features of the programlogic, use the proof assistant to reason in the embedded logic.

Reasoning in an embedded logic using a proof assistant tradition-ally results in a lot of overhead. Most of this overhead stems fromthe fact that when embedding a logic, one can no longer make useof the proof assistant’s infrastructure for managing hypotheses. Inseparation logic this overhead is evident from the fact that proposi-tions represent resources (they are spatial) and can thus be used atmost once, which is very different from hypotheses in conventionallogic that can be duplicated at will.

To remedy this situation, we present a so-called proof mode thatextends the Coq proof assistant with (spatial and non-spatial) namedcontexts for managing the hypotheses of the object logic. We showthat using our proof mode we can make reasoning in the embeddedlogic as seamless as reasoning in the meta logic of Coq. Althoughwe believe that our proof mode is very generic, and can be appliedto a variety of different embedded logics, we apply it to a specificlogic in this paper, Iris: a state of the art impredicative higher-orderseparation logic for fine-grained concurrency [24, 23, 26]. We callthe implementation on top of Iris IPM: Iris Proof Mode.

Iris is an interesting showcase for our proof mode, becauseunlike conventional program logics, it cannot only be used toreason about partial program correctness, but it also supports otherkinds of reasoning. For starters, Iris differs from other (concurrent)program logics by not baking in particular reasoning principles,but by providing a minimal set of primitive constructs using whichmore advanced reasoning constructs can be defined in the logic.Furthermore, Iris can be used to define unary and binary relationalinterpretations of type systems and for proving theorems about thoseinterpretations, e.g., that if two terms are related in the relationalinterpretation of a type, then they are contextually equivalent.The type systems can range from ML-like type systems, suchas Fµ,ref ,conc (System F with recursive types, references, andconcurrency), to more expressive type-and-effect systems [27], orsophisticated ownership-based type systems such as the Rust typesystem [14]. We show that IPM supports all of these different kindsof reasoning.

One may wonder why we develop a reasoning tool for a logiclike Iris in a general purpose proof assistant, instead of building astandalone tool. The main reason for using a proof assistant is that

POPL’17

Can we unify existing Concurrency Logics?

Consist

ent *Complete *

Well D

ocumented*Easyt

oReuse* *

Evaluated*POPL*

Artifact

*AEC

Iris: Monoids and Invariants as an

Orthogonal Basis for Concurrent Reasoning

Ralf JungMPI-SWS &

Saarland [email protected]

David SwaseyMPI-SWS

[email protected]

Filip SieczkowskiAarhus [email protected]

Kasper SvendsenAarhus University

[email protected]

Aaron TuronMozilla Research

[email protected]

Lars BirkedalAarhus [email protected]

Derek DreyerMPI-SWS

[email protected]

Abstract

We present Iris, a concurrent separation logic with a simple premise:monoids and invariants are all you need. Partial commutativemonoids enable us to express—and invariants enable us to enforce—user-defined protocols on shared state, which are at the conceptualcore of most recent program logics for concurrency. Furthermore,through a novel extension of the concept of a view shift, Iris supportsthe encoding of logically atomic specifications, i.e., Hoare-stylespecs that permit the client of an operation to treat the operationessentially as if it were atomic, even if it is not.

Categories and Subject Descriptors D.3.1 [Programming Lan-

guages]: Formal Definitions and Theory; D.3.3 [Programming

Languages]: Language Constructs and Features; F.3.1 [Logics and

Meanings of Programs]: Specifying and Verifying and Reasoningabout Programs

Keywords Separation logic, fine-grained concurrency, atomicity,partial commutative monoids, invariants, higher-order logic, compo-sitional verification.

1. Introduction

Concurrency is fundamentally about shared state. This is true notonly for shared-memory concurrency, where the state takes the formof a “heap” that threads may write to and read from, but also formessage-passing concurrency, where the state takes the form of a“network” that threads may send to and receive from (or a sequenceof “events” on which threads may synchronize). Thus, to scalablyverify concurrent programs of any stripe, we need compositionalmethods for reasoning about shared state.

This goal has sparked a long line of work, especially in recentyears, during which a synthesis of rely-guarantee reasoning [21] andseparation logic [31, 28] has led to a series of increasingly advancedprogram logics for concurrency: RGSep [37], SAGL [13], LRG [12],CAP [10], HLRG [15], CaReSL [34], iCAP [33], FCSL [27],

Permission to make digital or hard copies of all or part of this work for personal orclassroom use is granted without fee provided that copies are not made or distributedfor profit or commercial advantage and that copies bear this notice and the full citationon the first page. Copyrights for components of this work owned by others than theauthor(s) must be honored. Abstracting with credit is permitted. To copy otherwise, orrepublish, to post on servers or to redistribute to lists, requires prior specific permissionand/or a fee. Request permissions from [email protected] ’15, January 15–17, 2015, Mumbai, India.Copyright is held by the owner/author(s). Publication rights licensed to ACM.ACM 978-1-4503-3300-9/15/01. . . $15.00.http://dx.doi.org/10.1145/2676726.2676980

TaDA [8], and others. In this paper, we present a logic called Iris thatexplains some of the complexities of these prior separation logics interms of a simpler unifying foundation, while also supporting somenew and powerful reasoning principles for concurrency.

Before we get to Iris, however, let us begin with a brief overviewof some key problems that arise in reasoning compositionally aboutshared state, and how prior approaches have dealt with them.

1.1 Invariants and their limitations

The canonical model of concurrency is sequential consistency [23]:threads take turns interacting with the shared state (reading/writing,sending/receiving), with each turn lasting for one step of computa-tion.1 Although the semantics of sequentially consistent (SC) con-currency is simple to define, that does not mean it is easy to reasonabout. In particular, the key question is how to do thread-local

reasoning—that is, verifying one thread at a time—even thoughother threads may interfere with (i.e., mutate) the shared state inbetween each step of computation in the thread we are verifying.

The invariant rule. The simplest (and oldest) way in whichconcurrent program logics account for such interference is viainvariants [5]. An invariant is a property that holds of some piece ofshared state at all times: each thread accessing the state may assumethe invariant holds before each step of its computation, but it mustalso ensure that it continues to hold after each step.

Formally, in concurrent separation logics, the invariant rule lookssomething like the following (omitting some important details thatwe explain later in §4):

{R ⇤ P } e {R ⇤Q} e physically atomicR ` {P } e {Q}

Here, the assertion R states the knowledge that there exists aninvariant R governing some piece of shared state. Given thisknowledge, the rule tells us that e may gain (exclusive) control ofthe shared state satisfying R, so long as it ensures that R continuesto hold of it when it is finished executing. Note the crucial sidecondition that e be physically atomic, meaning that it takes exactlyone step of computation. If e were not physically atomic, thenanother thread might access the shared state governed by R duringe’s execution, in which case it would not be safe for the rule to grante exclusive control of the shared state throughout its execution.

1 There is much recent work on weaker models of concurrency, which are inmany ways more realistic, but in this paper we focus on SC concurrency.

1

POPL’15 63

Page 64: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

Standing on the Shoulders of Giants

64

Page 65: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

• Is what I’m about to do relevant?

• What if it won’t work?

• Will it scale for more project ideas?

• I’m not as productive as my labmates.

• I don’t see the final goal of what I’m about to do.

Escaping Research Limbo 65

Page 66: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

• Is what I’m about to do relevant?

• What if it won’t work?

• Will it scale for more project ideas?

• I’m not as productive as my labmates.

• I don’t see the final goal of what I’m about to do.

Escaping Research Limbo 66

Page 67: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

• Is what I’m about to do relevant?

• What if it won’t work?

• Will it scale for more project ideas?

• I’m not as productive as my labmates.

• I don’t see the final goal of what I’m about to do.

Escaping Research Limbo 67

Page 68: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

you

POPL CAV PLDI POPL again

your officemate

now

now

68

Page 69: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

nowtwo years ago

uphill battl

e

when you started

productivity plateau

learning new techniques/domain

69

Page 70: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

milestone papers

workshop

symposium

flagship conference

Step 4: Document your results

Escaping Research Limbo 70

Page 71: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

My first Highs and LowsInspired by Greg Morrisett’s Highs and Lows of a Language Researcher. PLMW@POPL’16

LDTA’11

IPL’11ESOP’12 ESOP’14

ESOP’15

PLDI’15 OOPSLA’16

ECOOP’17

|{z} <latexit sha1_base64="PTT9Yj7gx2hGEUf0/7gVMmt9N4c=">AAACI3ichVBNS8NAEN3Ur1q/oh69BIvgqSQiKJ6KXjxWsK3QhLLZTNqlm92wuxFKyH/x4l/x4kEpXjz4X9y2OWgr+GDg8d4MM/PClFGlXffTqqysrq1vVDdrW9s7u3v2/kFHiUwSaBPBhHwIsQJGObQ11QweUgk4CRl0w9HN1O8+glRU8Hs9TiFI8IDTmBKsjdS3r/yMRyBDiQnkfjrEXIskx/+jKPp23W24MzjLxCtJHZVo9e2JHwmSJcA1YVipnuemOsix1JQwKGp+piDFZIQH0DOU4wRUkM9+LJwTo0ROLKQprp2Z+nMix4lS4yQ0nQnWQ7XoTcW/vF6m48sgpzzNNHAyXxRnzNHCmQbmRFQC0WxsCCaSmlsdMsQmL21irZkQvMWXl0nnrOG5De/uvN68LuOooiN0jE6Rhy5QE92iFmojgp7QC3pD79az9WpNrI95a8UqZw7RL1hf32D0pew=</latexit> <latexit sha1_base64="PTT9Yj7gx2hGEUf0/7gVMmt9N4c=">AAACI3ichVBNS8NAEN3Ur1q/oh69BIvgqSQiKJ6KXjxWsK3QhLLZTNqlm92wuxFKyH/x4l/x4kEpXjz4X9y2OWgr+GDg8d4MM/PClFGlXffTqqysrq1vVDdrW9s7u3v2/kFHiUwSaBPBhHwIsQJGObQ11QweUgk4CRl0w9HN1O8+glRU8Hs9TiFI8IDTmBKsjdS3r/yMRyBDiQnkfjrEXIskx/+jKPp23W24MzjLxCtJHZVo9e2JHwmSJcA1YVipnuemOsix1JQwKGp+piDFZIQH0DOU4wRUkM9+LJwTo0ROLKQprp2Z+nMix4lS4yQ0nQnWQ7XoTcW/vF6m48sgpzzNNHAyXxRnzNHCmQbmRFQC0WxsCCaSmlsdMsQmL21irZkQvMWXl0nnrOG5De/uvN68LuOooiN0jE6Rhy5QE92iFmojgp7QC3pD79az9WpNrI95a8UqZw7RL1hf32D0pew=</latexit> <latexit sha1_base64="PTT9Yj7gx2hGEUf0/7gVMmt9N4c=">AAACI3ichVBNS8NAEN3Ur1q/oh69BIvgqSQiKJ6KXjxWsK3QhLLZTNqlm92wuxFKyH/x4l/x4kEpXjz4X9y2OWgr+GDg8d4MM/PClFGlXffTqqysrq1vVDdrW9s7u3v2/kFHiUwSaBPBhHwIsQJGObQ11QweUgk4CRl0w9HN1O8+glRU8Hs9TiFI8IDTmBKsjdS3r/yMRyBDiQnkfjrEXIskx/+jKPp23W24MzjLxCtJHZVo9e2JHwmSJcA1YVipnuemOsix1JQwKGp+piDFZIQH0DOU4wRUkM9+LJwTo0ROLKQprp2Z+nMix4lS4yQ0nQnWQ7XoTcW/vF6m48sgpzzNNHAyXxRnzNHCmQbmRFQC0WxsCCaSmlsdMsQmL21irZkQvMWXl0nnrOG5De/uvN68LuOooiN0jE6Rhy5QE92iFmojgp7QC3pD79az9WpNrI95a8UqZw7RL1hf32D0pew=</latexit> <latexit sha1_base64="PTT9Yj7gx2hGEUf0/7gVMmt9N4c=">AAACI3ichVBNS8NAEN3Ur1q/oh69BIvgqSQiKJ6KXjxWsK3QhLLZTNqlm92wuxFKyH/x4l/x4kEpXjz4X9y2OWgr+GDg8d4MM/PClFGlXffTqqysrq1vVDdrW9s7u3v2/kFHiUwSaBPBhHwIsQJGObQ11QweUgk4CRl0w9HN1O8+glRU8Hs9TiFI8IDTmBKsjdS3r/yMRyBDiQnkfjrEXIskx/+jKPp23W24MzjLxCtJHZVo9e2JHwmSJcA1YVipnuemOsix1JQwKGp+piDFZIQH0DOU4wRUkM9+LJwTo0ROLKQprp2Z+nMix4lS4yQ0nQnWQ7XoTcW/vF6m48sgpzzNNHAyXxRnzNHCmQbmRFQC0WxsCCaSmlsdMsQmL21irZkQvMWXl0nnrOG5De/uvN68LuOooiN0jE6Rhy5QE92iFmojgp7QC3pD79az9WpNrI95a8UqZw7RL1hf32D0pew=</latexit>

Project 1 (PhD)

|{z} <latexit sha1_base64="PTT9Yj7gx2hGEUf0/7gVMmt9N4c=">AAACI3ichVBNS8NAEN3Ur1q/oh69BIvgqSQiKJ6KXjxWsK3QhLLZTNqlm92wuxFKyH/x4l/x4kEpXjz4X9y2OWgr+GDg8d4MM/PClFGlXffTqqysrq1vVDdrW9s7u3v2/kFHiUwSaBPBhHwIsQJGObQ11QweUgk4CRl0w9HN1O8+glRU8Hs9TiFI8IDTmBKsjdS3r/yMRyBDiQnkfjrEXIskx/+jKPp23W24MzjLxCtJHZVo9e2JHwmSJcA1YVipnuemOsix1JQwKGp+piDFZIQH0DOU4wRUkM9+LJwTo0ROLKQprp2Z+nMix4lS4yQ0nQnWQ7XoTcW/vF6m48sgpzzNNHAyXxRnzNHCmQbmRFQC0WxsCCaSmlsdMsQmL21irZkQvMWXl0nnrOG5De/uvN68LuOooiN0jE6Rhy5QE92iFmojgp7QC3pD79az9WpNrI95a8UqZw7RL1hf32D0pew=</latexit> <latexit sha1_base64="PTT9Yj7gx2hGEUf0/7gVMmt9N4c=">AAACI3ichVBNS8NAEN3Ur1q/oh69BIvgqSQiKJ6KXjxWsK3QhLLZTNqlm92wuxFKyH/x4l/x4kEpXjz4X9y2OWgr+GDg8d4MM/PClFGlXffTqqysrq1vVDdrW9s7u3v2/kFHiUwSaBPBhHwIsQJGObQ11QweUgk4CRl0w9HN1O8+glRU8Hs9TiFI8IDTmBKsjdS3r/yMRyBDiQnkfjrEXIskx/+jKPp23W24MzjLxCtJHZVo9e2JHwmSJcA1YVipnuemOsix1JQwKGp+piDFZIQH0DOU4wRUkM9+LJwTo0ROLKQprp2Z+nMix4lS4yQ0nQnWQ7XoTcW/vF6m48sgpzzNNHAyXxRnzNHCmQbmRFQC0WxsCCaSmlsdMsQmL21irZkQvMWXl0nnrOG5De/uvN68LuOooiN0jE6Rhy5QE92iFmojgp7QC3pD79az9WpNrI95a8UqZw7RL1hf32D0pew=</latexit> <latexit sha1_base64="PTT9Yj7gx2hGEUf0/7gVMmt9N4c=">AAACI3ichVBNS8NAEN3Ur1q/oh69BIvgqSQiKJ6KXjxWsK3QhLLZTNqlm92wuxFKyH/x4l/x4kEpXjz4X9y2OWgr+GDg8d4MM/PClFGlXffTqqysrq1vVDdrW9s7u3v2/kFHiUwSaBPBhHwIsQJGObQ11QweUgk4CRl0w9HN1O8+glRU8Hs9TiFI8IDTmBKsjdS3r/yMRyBDiQnkfjrEXIskx/+jKPp23W24MzjLxCtJHZVo9e2JHwmSJcA1YVipnuemOsix1JQwKGp+piDFZIQH0DOU4wRUkM9+LJwTo0ROLKQprp2Z+nMix4lS4yQ0nQnWQ7XoTcW/vF6m48sgpzzNNHAyXxRnzNHCmQbmRFQC0WxsCCaSmlsdMsQmL21irZkQvMWXl0nnrOG5De/uvN68LuOooiN0jE6Rhy5QE92iFmojgp7QC3pD79az9WpNrI95a8UqZw7RL1hf32D0pew=</latexit> <latexit sha1_base64="PTT9Yj7gx2hGEUf0/7gVMmt9N4c=">AAACI3ichVBNS8NAEN3Ur1q/oh69BIvgqSQiKJ6KXjxWsK3QhLLZTNqlm92wuxFKyH/x4l/x4kEpXjz4X9y2OWgr+GDg8d4MM/PClFGlXffTqqysrq1vVDdrW9s7u3v2/kFHiUwSaBPBhHwIsQJGObQ11QweUgk4CRl0w9HN1O8+glRU8Hs9TiFI8IDTmBKsjdS3r/yMRyBDiQnkfjrEXIskx/+jKPp23W24MzjLxCtJHZVo9e2JHwmSJcA1YVipnuemOsix1JQwKGp+piDFZIQH0DOU4wRUkM9+LJwTo0ROLKQprp2Z+nMix4lS4yQ0nQnWQ7XoTcW/vF6m48sgpzzNNHAyXxRnzNHCmQbmRFQC0WxsCCaSmlsdMsQmL21irZkQvMWXl0nnrOG5De/uvN68LuOooiN0jE6Rhy5QE92iFmojgp7QC3pD79az9WpNrI95a8UqZw7RL1hf32D0pew=</latexit>

Project 2 (postdoc)

| {z }Learning about concurrency, Separation Logic, and Coq

71

Page 72: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

• Is what I’m about to do relevant?

• What if it won’t work?

• Will it scale for more project ideas?

• I’m not as productive as my labmates.

• I don’t see the final goal of what I’m about to do.

Escaping Research Limbo 72

Page 73: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

• Is what I’m about to do relevant?

• What if it won’t work?

• Will it scale for more project ideas?

• I’m not as productive as my labmates.

• I don’t see the final goal of what I’m about to do.

Escaping Research Limbo 73

Page 74: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

• Is what I’m about to do relevant?

• What if it won’t work?

• Will it scale for more project ideas?

• I’m not as productive as my labmates.

• I don’t see the final goal of what I’m about to do.• I don’t see the final goal of what I’m about to do.

Escaping Research Limbo 74

Page 75: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

They are reusable

You have acquired skills

75

Page 76: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

?

76

Page 77: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

?

?

?

?

?

?

?

? ?

?

?

?

?

??

77

Page 78: How to Bootstrap a Research Project - Ilya SergeyAbout myself 2 MSc Saint Petersburg State University, 2008 PhD KU Leuven, 2008-2012 Currently Associate Professor (tenure-track) at

To Take Away• Starting a new project is always scary!

• To escape the Research Limbo: Read, Hack, Find shortcomings, Write

Thank you and good luck!

Many thanks to my fellow travellers: Dave Clarke, Aleks Nanevski, Olivier Danvy, Matt Might, David Van Horn, Simon Peyton Jones, Dimitrios Vytiniotis, Dominique Devriese, Aquinas Hobor, Nadia Polikarpova, Jan Midtgaard, Peter O’Hearn, Nikos Gorogiannis, Álvaro Garcia Pérez, Anindya Banerjee, Zach Tatlock, Germán Delbianco, David Darais, Anton Podkopaev, Kristoffer Just Andersen, Maria A Schett, George Pîrlea, Kiran Gopinathan, and James R. Wilcox.

78