CINXE.COM
Composing Distributed Systems that are Provably Correct (Dahl-Nygaard prize keynote) (ECOOP 2019) - ECOOP 2019
<!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <link href="https://2019.ecoop.org/favicon.ico?28d37e6d7e5e12d24c39bdba0f4f3cfd" rel="shortcut icon" type="image/x-icon" /> <link href="https://2019.ecoop.org/stylesheets/common_.css?d7bcca3579a066193caf560ede9d6399" rel="stylesheet" type="text/css" /> <title>Composing Distributed Systems that are Provably Correct (Dahl-Nygaard prize keynote) (ECOOP 2019) - ECOOP 2019</title> <script type="text/javascript">var show_webdsl_debug=false;</script> <script type="text/javascript">var contextpath="https://2019.ecoop.org";</script> <link rel="stylesheet" href="https://2019.ecoop.org/stylesheets/bootstrap/css/bootstrap.min.css?7f89537eaf606bff49f5cc1a7c24dbca" type="text/css" /><link rel="stylesheet" href="https://2019.ecoop.org/stylesheets/conf.css?d8ff81ab1f2387936557f525e4e8eb20" type="text/css" /><link rel="stylesheet" href="https://2019.ecoop.org/getFile/4178e8be-c93e-442c-92af-6438620e66f0/logo.006.css?1563342595374" type="text/css" /><link rel="stylesheet" href="https://2019.ecoop.org/stylesheets/flatpickr-4.3.2.min.css?8eedb7a0f2455c0dbbbbcc46c4172c0d" type="text/css" /><link rel="stylesheet" href="https://2019.ecoop.org/stylesheets/theme.bootstrap_3.min.css?6867e70881e6ed2c03b6c9cf9c3152e0" type="text/css" /><script type="text/javascript" src="//code.jquery.com/jquery-3.5.1.min.js"></script> <script type="text/javascript" src="https://2019.ecoop.org/javascript/flatpickr-4.3.2.min.js?c2885c17ae5fd471c9a40c437e8a2736"></script> <script type="text/javascript" src="https://2019.ecoop.org/javascript/jquery.tablesorter.combined.min.js?285b21976326641f8f1b910492e6d5d0"></script> <script type="text/javascript" src="https://2019.ecoop.org/javascript/jquery.tablesorter.pager.min.js?4551cdfea66f45a11ae5548f3d50a06f"></script> <script type="text/javascript" src="https://2019.ecoop.org/javascript/tablesorter-init.js?ee6babedf1a6be960e4543a1bb57b421"></script> <script type="text/javascript" src="https://2019.ecoop.org/javascript/bootstrap/js/bootstrap.min.js?2f34b630ffe30ba2ff2b91e3f3c322a1"></script> <script type="text/javascript" src="https://2019.ecoop.org/javascript/notify.min.js?e86d399917a84b69a4683f504c7a7813"></script> <script type="text/javascript" src="https://2019.ecoop.org/javascript/ajax.js?2dbd1cc4f8f2d52ae9c879d7346f4f8a"></script> <script type="text/javascript">$(document).ready( function(){ $('#program-menu a[data-fltr-type]').on('click', function(event){ event.preventDefault(); window.location = $(this).attr('href') + "?" + encodeURIComponent( $(this).data('fltr-type') ) + '=' + encodeURIComponent( $(this).data('fltr-val') ); }) }) </script> <script type="text/javascript">(function($){ $(document).ready(function(){ $('ul.dropdown-menu [data-toggle=dropdown]').on('click', function(event) { event.preventDefault(); event.stopPropagation(); $(this).parent().siblings().removeClass('open'); $(this).parent().toggleClass('open'); }); }); })(jQuery); </script> <script type="text/javascript"> $(window).on('popstate', function(){ $('.modal.in').modal('hide') }); </script><script type="text/javascript">(function(){ var post_process_function = function(n){ var node=(n&&n.nodeType === 1)?n:document; $(node).find('.modal').on( 'shown.bs.modal', function(){ if(history.pushState){ history.pushState({ id: 'modal', modalId: $(this).attr('id') }, null, window.location.href); } } ).on( 'hidden.bs.modal', function (){ if( history.state != null && history.state.modalId == $(this).attr('id') ){ history.back(); } } ); }; var original_post_process_func = ajax_post_process; ajax_post_process = function(){ original_post_process_func.apply(this,arguments); post_process_function.apply(this,arguments); }; $(document).ready( post_process_function ); })(); </script> <script async src="https://www.googletagmanager.com/gtag/js?id=G-4G0QWEKVQS"></script> <script>window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', 'G-4G0QWEKVQS', {'cookie_domain': 'auto', 'anonymizeIp': true });gtag('config', 'UA-9607501-2', {'cookie_domain': 'auto', 'anonymizeIp': true });</script> <meta prefix='og: http://ogp.me/ns#' property='og:image' content='https://2019.ecoop.org/getImage/carousel/5604439246_08fb0350fe_o.jpg?1528908239000'> <meta prefix='og: http://ogp.me/ns#' property='og:title' content='Composing Distributed Systems that are Provably Correct (Dahl-Nygaard prize keynote) (ECOOP 2019) - ECOOP 2019'> <meta name='description' content='ECOOP is a programming languages conference, and solicits high-quality submissions describing original and unpublished results on any Programming Languages topic. The traditional focus of the conference was on object orientation, but the focus now is on a much broader range of programming topics. This year’s conference will feature research papers, tool insights papers, reproduction studies, experience reports, “pearls”, and “brave new ideas” - see the Call for Papers for details. Take a look at last year’s proceedings for examples of the kinds of work that ECOOP’19 aims to attract. Su ...'> <!--[if IE 9]><script type="text/javascript" src="https://cdn.jsdelivr.net/npm/eligrey-classlist-js-polyfill@1.2.20171210/classList.min.js"></script><![endif]--> <meta prefix='og: http://ogp.me/ns#' property='og:description' content='ECOOP is a programming languages conference, and solicits high-quality submissions describing original and unpublished results on any Programming Languages topic. The traditional focus of the conference was on object orientation, but the focus now is on a much broader range of programming topics. This year’s conference will feature research papers, tool insights papers, reproduction studies, experience reports, “pearls”, and “brave new ideas” - see the Call for Papers for details. Take a look at last year’s proceedings for examples of the kinds of work that ECOOP’19 aims to attract. Su ...'> <script type="text/javascript">(function(){ var post_process_function = function(n){ var node=(n&&n.nodeType === 1)?n:document; $(node).find('input.flatpickr:not([id])').focusout( function(){ this.dispatchEvent( new KeyboardEvent('keydown',{keyCode:13, bubbles: true}) ); } ); }; var original_post_process_func = ajax_post_process; ajax_post_process = function(){ original_post_process_func.apply(this,arguments); post_process_function.apply(this,arguments); }; $(document).ready( post_process_function ); })(); </script> <script type="text/javascript">function addEventModalLoadOnClick( containerNode ){ $(containerNode).find( "a[data-event-modal]" ).on("click", function(e){ var eventId = $(this).data("event-modal"); var modalElem = $("#modal-" + eventId); if(modalElem.length){ modalElem.modal({ backdrop: 'static', keyboard: true}, 'show'); } else { var loaderElem = $("#event-modal-loader"); loaderElem.find("input.event-id-input").val( eventId ); loaderElem.find("#load-modal-action").click(); } e.preventDefault(); } ); } </script><script type="text/javascript">function addStarredEventOnClick( containerNode ){ $(containerNode).find( "[data-event-star]" ).on("click", function(e){ var eventId = $(this).data("event-star"); var starEventFormElem = $("#event-star-form"); starEventFormElem.find("input.event-id-input").val( eventId ); starEventFormElem.find("#star-event-action").click(); e.preventDefault(); e.stopPropagation(); } ); } </script><script type="text/javascript">function pauseOnCloseModal( modalid ){ //pauses video (only youtube at the moment) when closing modal $('#' + modalid).on('hidden.bs.modal', function () { $(this).find('.embed-container iframe[src*=enablejsapi]').each( function(){ this.contentWindow.postMessage('{"event":"command","func":"pauseVideo","args":""}', '*') } ); } ) } </script> </head> <body id="details"><div class="frame"><div class="logobar"><div class="container"><a href="https://2019.ecoop.org" class="navbar-brand navigate"><span class="brand-text">ECOOP 2019</span></a><div class="place">Mon 15 - Fri 19 July 2019 <a href="https://2019.ecoop.org/venue/ecoop-2019-venue" class="navigate">Hammersmith, London, United Kingdom</a></div></div></div><div class="navbar navbar-default"><div class="container"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navigationbar" class="navbar-toggle"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button></div><div id="navigationbar" class="navigationbar collapse navbar-collapse"><ul class="block nav navbar-nav"><li class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Attending <span class="caret"></span></a><ul class="block dropdown-menu"><li class="block"><a href="https://2019.ecoop.org/venue/ecoop-2019-venue" class="navigate">Venue: Novotel London West</a></li><li class="block"><a href="https://2019.ecoop.org/attending/sponsorship" class="navigate">Sponsorship</a></li><li class="block"><a href="https://2019.ecoop.org/attending/conduct" class="navigate">Conduct</a></li><li class="block"><a href="https://2019.ecoop.org/attending/Students" class="navigate">Students</a></li><li class="block"><a href="https://2019.ecoop.org/attending/Visa" class="navigate">Visa</a></li><li class="block"><a href="https://2019.ecoop.org/attending/accommodation" class="navigate">Accommodation</a></li><li class="block"><a href="https://2019.ecoop.org/attending/Registration" class="navigate">Registration</a></li><li class="block"><a href="https://2019.ecoop.org/attending/curry-on-banquet" class="navigate">Socials</a></li><li class="block"><a href="https://2019.ecoop.org/attending/Online+participation" class="navigate">Live</a></li><li class="block"><a href="https://2019.ecoop.org/attending/awards" class="navigate">Awards</a></li></ul></li><li class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Program <span class="caret"></span></a><ul id="program-menu" class="block dropdown-menu"><li class="block"><a href="https://2019.ecoop.org/program/program-ecoop-2019/" class="navigate">ECOOP Program</a></li><li class="block"><a href="https://2019.ecoop.org/program/program-ecoop-2019/" data-fltr-type="prog" data-fltr-val="Your Program" class="navigate"><span class="glyphicon glyphicon-star"></span> Your Program</a></li><li class="block divider"></li><li class="block"><a href="https://2019.ecoop.org/program/program-ecoop-2019/" data-fltr-type="date" data-fltr-val="Mon 15 Jul 2019" class="navigate">Mon 15 Jul</a></li><li class="block"><a href="https://2019.ecoop.org/program/program-ecoop-2019/" data-fltr-type="date" data-fltr-val="Tue 16 Jul 2019" class="navigate">Tue 16 Jul</a></li><li class="block"><a href="https://2019.ecoop.org/program/program-ecoop-2019/" data-fltr-type="date" data-fltr-val="Wed 17 Jul 2019" class="navigate">Wed 17 Jul</a></li><li class="block"><a href="https://2019.ecoop.org/program/program-ecoop-2019/" data-fltr-type="date" data-fltr-val="Thu 18 Jul 2019" class="navigate">Thu 18 Jul</a></li><li class="block"><a href="https://2019.ecoop.org/program/program-ecoop-2019/" data-fltr-type="date" data-fltr-val="Fri 19 Jul 2019" class="navigate">Fri 19 Jul</a></li></ul></li><li id="tracks-in-navbar" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Tracks <span class="caret"></span></a><ul class="block dropdown-menu multi-column columns-3"><div class="row"><div class="col-sm-5"><ul class="block multi-column-dropdown"><li class="block dropdown-header">ECOOP 2019</li><li class="block"><a href="https://2019.ecoop.org/track/ecoop-2019-papers" class="navigate">Research Papers</a></li><li class="block"><a href="https://2019.ecoop.org/track/ecoop-2019-artifacts" class="navigate">Artifacts</a></li><li class="block"><a href="https://2019.ecoop.org/track/ecoop-2019-Student-Volunteers" class="navigate">Student Volunteers</a></li><li class="block"><a href="https://2019.ecoop.org/track/ecoop-2019-docsymp" class="navigate">Doctoral Symposium</a></li><li class="block"><a href="https://2019.ecoop.org/track/ecoop-2019-summer-school" class="navigate">Summer School</a></li><li class="block"><a href="https://2019.ecoop.org/track/ecoop-2019-workshops" class="navigate">Workshops</a></li><li class="block"><a href="https://2019.ecoop.org/track/ecoop-2019-Posters" class="navigate">Posters</a></li><li class="block"><a href="https://2019.ecoop.org/track/curry-on" class="navigate">Curry On</a></li></ul></div><div class="col-sm-7"><ul class="block multi-column-dropdown"><li class="block dropdown-header">Workshops</li><li class="block"><a href="https://2019.ecoop.org/home/aorta-2019" class="navigate"><strong>AORTA</strong> </a></li><li class="block"><a href="https://2019.ecoop.org/home/benchwork-2019" class="navigate"><strong>BenchWork</strong> </a></li><li class="block"><a href="https://2019.ecoop.org/home/COP-2019" class="navigate"><strong>COP</strong> </a></li><li class="block"><a href="https://2019.ecoop.org/home/FTfJP-2019" class="navigate"><strong>FTfJP</strong> </a></li><li class="block"><a href="https://2019.ecoop.org/home/ICOOOLPS-2019" class="navigate"><strong>ICOOOLPS</strong> </a></li><li class="block"><a href="https://2019.ecoop.org/home/PASS-ECOOP-2019" class="navigate"><strong>PASS</strong> (CANCELED)</a></li><li class="block"><a href="https://2019.ecoop.org/home/panathon-2019" class="navigate"><strong>Panathon</strong> </a></li><li class="block"><a href="https://2019.ecoop.org/home/scala-2019" class="navigate"><strong>Scala</strong> </a></li><li class="block"><a href="https://2019.ecoop.org/home/vortex-2019" class="navigate"><strong>VORTEX</strong> </a></li></ul></div></div></ul></li><li class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Organization <span class="caret"></span></a><ul class="block dropdown-menu multi-column columns-2"><div class="row"><div class="col-sm-6"><ul class="block multi-column-dropdown"><li class="block dropdown-header">ECOOP 2019 Committees</li><li class="block"><a href="https://2019.ecoop.org/committee/ecoop-2019-organizing-committee" class="navigate">Organizing Committee</a></li><li class="block dropdown-header">Track Committees </li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>Research Papers</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://2019.ecoop.org/committee/ecoop-2019-papers-program-committee" class="navigate">Program Committee</a></li><li class="block"><a href="https://2019.ecoop.org/committee/ecoop-2019-papers-external-review-committee" class="navigate">External Review Committee</a></li></ul></li><li class="block"><a href="https://2019.ecoop.org/committee/ecoop-2019-artifacts" class="navigate"><strong>Artifacts</strong></a></li><li class="block"><a href="https://2019.ecoop.org/committee/ecoop-2019-student-volunteers-alisa-maas" class="navigate"><strong>Student Volunteers</strong></a></li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>Doctoral Symposium</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://2019.ecoop.org/committee/ecoop-2019-docsymp-academic-panel" class="navigate">Academic Panel</a></li><li class="block"><a href="https://2019.ecoop.org/committee/ecoop-2019-docsymp-organizing-committee" class="navigate">Organizing Committee</a></li><li class="block"><a href="https://2019.ecoop.org/committee/ecoop-2019-docsymp-program-committee" class="navigate">Program Committee</a></li></ul></li><li class="block"><a href="https://2019.ecoop.org/committee/ecoop-2019-workshops-organizing-committee" class="navigate"><strong>Workshops</strong></a></li><li class="block"><a href="https://2019.ecoop.org/committee/ecoop-2019-posters-posters-committee" class="navigate"><strong>Posters</strong></a></li><li class="block"><a href="https://2019.ecoop.org/committee/curry-on-organization-committee" class="navigate"><strong>Curry On</strong></a></li><li class="block dropdown-header">Contributors</li><li class="block"><a href="https://2019.ecoop.org/people-index" class="navigate"><span class="glyphicon glyphicon-search"></span><sup><span class="glyphicon glyphicon-user"></span></sup> People Index</a></li></ul></div><div class="col-sm-6"><ul class="block multi-column-dropdown"><li class="block dropdown-header">Workshops</li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>AORTA</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://2019.ecoop.org/committee/aorta-2019-papers-organizing-committee" class="navigate">Organizing Committee</a></li><li class="block"><a href="https://2019.ecoop.org/committee/aorta-2019-papers-program-committee" class="navigate">Program Committee</a></li></ul></li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>BenchWork</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://2019.ecoop.org/committee/benchwork-2019-papers-organizing-committee" class="navigate">Organizing Committee</a></li><li class="block"><a href="https://2019.ecoop.org/committee/benchwork-2019-papers-program-committee" class="navigate">Program Committee</a></li></ul></li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>COP</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://2019.ecoop.org/committee/cop-2019-papers-organizing-committee" class="navigate">Organizing Committee</a></li><li class="block"><a href="https://2019.ecoop.org/committee/cop-2019-papers-program-committee" class="navigate">Program Committee</a></li></ul></li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>FTfJP</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://2019.ecoop.org/committee/ftfjp-2019-papers-organizing-committee" class="navigate">Organizing Committee</a></li><li class="block"><a href="https://2019.ecoop.org/committee/ftfjp-2019-papers-program-committee" class="navigate">Program Committee</a></li><li class="block"><a href="https://2019.ecoop.org/committee/ftfjp-2019-papers-steering-commitee" class="navigate">Steering Commitee</a></li></ul></li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>ICOOOLPS</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://2019.ecoop.org/committee/icooolps-2019-papers-organizing-committee" class="navigate">Organizing Committee</a></li><li class="block"><a href="https://2019.ecoop.org/committee/icooolps-2019-papers-program-committee" class="navigate">Program Committee</a></li></ul></li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>PASS</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://2019.ecoop.org/committee/pass-ecoop-2019-papers-organizing-committee" class="navigate">Organizing Committee</a></li><li class="block"><a href="https://2019.ecoop.org/committee/pass-ecoop-2019-papers-program-committee" class="navigate">Program Committee</a></li></ul></li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>Panathon</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://2019.ecoop.org/committee/panathon-2019-papers-organizing-committee" class="navigate">Organizing Committee</a></li></ul></li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>Scala</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://2019.ecoop.org/committee/scala-2019-papers-organizing-committee" class="navigate">Organizing Committee</a></li><li class="block"><a href="https://2019.ecoop.org/committee/scala-2019-papers-program-committee" class="navigate">Program Committee</a></li><li class="block"><a href="https://2019.ecoop.org/committee/scala-2019-papers-steering-committee" class="navigate">Steering Committee</a></li></ul></li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>VORTEX</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://2019.ecoop.org/committee/vortex-2019-papers-organizing-committee" class="navigate">Organizing Committee</a></li><li class="block"><a href="https://2019.ecoop.org/committee/vortex-2019-papers-program-committee" class="navigate">Program Committee</a></li></ul></li></ul></div></div></ul></li><li class="block"><a href="https://2019.ecoop.org/search//all" class="navigate"><span class="glyphicon glyphicon-search"></span><span class="hidden-sm"> Search</span></a></li><li class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle"><span class="hidden-sm">Series <span class="caret"></span></span><span title="Series" class="visible-sm"><span class="glyphicon glyphicon-repeat"></span> <span class="caret"></span></span></a><ul class="block dropdown-menu"><li class="block"><a href="https://2019.ecoop.org/series/ecoop" class="navigate"><span class="glyphicon glyphicon-home"></span> Series</a></li><li class="block divider"></li><li class="block"><a href="https://2025.ecoop.org" class="navigate">ECOOP 2025</a></li><li class="block"><a href="https://2024.ecoop.org" class="navigate">ECOOP 2024</a></li><li class="block"><a href="https://2023.ecoop.org" class="navigate">ECOOP 2023</a></li><li class="block"><a href="https://2022.ecoop.org" class="navigate">ECOOP 2022</a></li><li class="block"><a href="https://2021.ecoop.org" class="navigate">ECOOP 2021</a></li><li class="block"><a href="https://2020.ecoop.org" class="navigate">ECOOP 2020</a></li><li class="block"><span class="text-muted" style="margin-left: 2px;"><span class="glyphicon glyphicon-hand-right"></span> ECOOP 2019</span></li><li class="block"><a href="https://2018.ecoop.org" class="navigate">ECOOP 2018</a></li><li class="block"><a href="https://2017.ecoop.org" class="navigate">ECOOP 2017</a></li><li class="block"><a href="https://2016.ecoop.org" class="navigate">ECOOP 2016</a></li><li class="block"><a href="https://2015.ecoop.org" class="navigate">ECOOP 2015</a></li><li class="block"></li><li class="block"><a href="http://2014.ecoop.org" target="_blank" class="navigate">2014: Uppsala <span class="pull-right"><span class="glyphicon glyphicon-new-window"></span></span></a></li><li class="block"><a href="http://2013.ecoop.org" target="_blank" class="navigate">2013: Montpellier <span class="pull-right"><span class="glyphicon glyphicon-new-window"></span></span></a></li><li class="block"><a href="http://ecoop12.cs.purdue.edu" target="_blank" class="navigate">2012: Beijing <span class="pull-right"><span class="glyphicon glyphicon-new-window"></span></span></a></li><li class="block"><a href="http://scc-sentinel.lancs.ac.uk/ecoop11/" target="_blank" class="navigate">2011: Lancaster <span class="pull-right"><span class="glyphicon glyphicon-new-window"></span></span></a></li><li class="block"><a href="http://ecoop2010.uni-mb.si" target="_blank" class="navigate">2010: Maribor <span class="pull-right"><span class="glyphicon glyphicon-new-window"></span></span></a></li><li class="block"><a href="http://ecoop09.disi.unige.it" target="_blank" class="navigate">2009: Genova <span class="pull-right"><span class="glyphicon glyphicon-new-window"></span></span></a></li><li class="block"><a href="https://ecoop08.cs.ucy.ac.cy" target="_blank" class="navigate">2008: Cyprus <span class="pull-right"><span class="glyphicon glyphicon-new-window"></span></span></a></li><li class="block"><a href="http://ecoop07.swt.cs.tu-berlin.de" target="_blank" class="navigate">2007: Berlin <span class="pull-right"><span class="glyphicon glyphicon-new-window"></span></span></a></li><li class="block"><a href="http://www.emn.fr/z-info/ecoop2006/" target="_blank" class="navigate">2006: Nice <span class="pull-right"><span class="glyphicon glyphicon-new-window"></span></span></a></li><li class="block"><a href="http://2005.ecoop.org/" target="_blank" class="navigate">2005: Glasgow <span class="pull-right"><span class="glyphicon glyphicon-new-window"></span></span></a></li></ul></li></ul><div class="navbar-right"><ul class="block nav navbar-nav"><li class="block"><a href="https://conf.researchr.org/signin/ecoop-2019/https%3A%5Es%5Es2019.ecoop.org%5Esdetails%5Esecoop-2019-papers%5Es8%5EsComposing-Distributed-Systems-that-are-Provably-Correct-Dahl-Nygaard-prize-keynote-" rel="nofollow" class="navigate">Sign in</a></li><li class="block"><a href="https://2019.ecoop.org/signup" class="navigate">Sign up</a></li></ul></div></div></div></div><div id="content" class="container"><script type="text/javascript">if(gtag) { gtag( 'event', 'Show Event Page' , {'event_category': 'Event Information', 'event_label': 'Composing Distributed Systems that are Provably Correct (Dahl-Nygaard prize keynote)'} ) }</script><div class="page-header"><span class="text-muted small"><span class="glyphicon glyphicon-home"></span> <a href="https://2019.ecoop.org" class="navigate">ECOOP 2019</a> (<a href="https://2019.ecoop.org/series/ecoop" class="navigate">series</a>) / </span><span class="text-muted small"><span class="glyphicon glyphicon-road"></span> <a href="https://2019.ecoop.org/track/ecoop-2019-papers" class="navigate">ECOOP 2019</a> / </span><h2>Composing Distributed Systems that are Provably Correct (Dahl-Nygaard prize keynote)<h5><span class="pull-right"><span title="Keynote" class="output-badge"><img alt="Keynote" src="https://2019.ecoop.org/getImageFile/9f8cb17c-0c46-404c-a837-2c3901acefad/small?1558093933000" class="outputimage"/></span></span></h5></h2></div><div class="row"><div class="col-sm-8 col-lg-9"><div class="row" style="padding:4px 0px;"><label class="col-sm-2 control-label" style="text-align:right;">Track</label><div class="col-sm-10"><a href="https://2019.ecoop.org/track/ecoop-2019-papers" class="navigate">ECOOP 2019 Research Papers</a></div></div><script type="text/javascript">(function(){ var post_process_function = function(n){ var node=(n&&n.nodeType === 1)?n:document; $(node).find('.modal').on('shown.bs.modal', function() {if(gtag) { gtag( 'event', 'Show Details in Modal' , {'event_category': 'Event Information', 'event_label': '' + $(this).find('.modal-title').text() + ''} ) } } ) }; var original_post_process_func = ajax_post_process; ajax_post_process = function(){ original_post_process_func.apply(this,arguments); post_process_function.apply(this,arguments); }; $(document).ready( post_process_function ); })(); </script><div tabindex="-1" id="hidden-modal" class="modal"><div class="modal-dialog "><div class="modal-content"></div></div></div><div id="program-settings-modal" class="webdsl-placeholder"><div id="userProgramSettings" class="modal fade"><div class="modal-dialog "><div class="modal-content"><div class="modal-header"><a data-dismiss="modal" class="close"><span class="glyphicon glyphicon-remove"></span></a><h3>Program Display Configuration</h3></div><div class="modal-body"><form name="form11390898770538530f0e2bbdb67872b491120c5c8a7" id="form11390898770538530f0e2bbdb67872b491120c5c8a7" action="https://2019.ecoop.org/userProgramSettingsModalConferenceEdition" accept-charset="UTF-8" method="POST" role="form" class="form-horizontal"><input type="hidden" name="form11390898770538530f0e2bbdb67872b491120c5c8a7" value="1" /><input type="hidden" name="context" value="ecoop-2019" /><div class="panel panel-default timezone-panel"><div class="panel-heading clearfix"><div class="panel-title">Time Zone</div></div><div class="panel-body"><span class="help-block">The program is currently displayed in <strong>(GMT+01:00) Belfast</strong>.</span><div class="row"><div class="col-sm-11 col-sm-offset-1"><label class="radio"><input type="radio" checked="checked" name="9659afaa126198132be460b106e35ccb" value="false" onchange="if( ($(this).val() == 'true' && this.checked) != $('#cec04de0447905c49fb377c6d9693505').is(':visible') ) { $('#cec04de0447905c49fb377c6d9693505').fadeToggle( 250 ); }"/><strong>Use conference time zone: (GMT+01:00) Belfast</strong></label><label class="radio"><input type="radio" name="9659afaa126198132be460b106e35ccb" value="true" onchange="if( ($(this).val() == 'true' && this.checked) != $('#cec04de0447905c49fb377c6d9693505').is(':visible') ) { $('#cec04de0447905c49fb377c6d9693505').fadeToggle( 250 ); }"/>Select other time zone</label><div id="cec04de0447905c49fb377c6d9693505" style=" display: none;"><select name="0e35d6393a8ba494aa0723dd51b6899c" class="select form-control"><option value="" selected="selected" data-utc-minute-offset="0"></option><option value="Etc/GMT+12" data-utc-minute-offset="-720">(GMT-12:00) AoE (Anywhere On Earth)</option><option value="Pacific/Midway" data-utc-minute-offset="-660">(GMT-11:00) Midway Island, Samoa</option><option value="America/Adak" data-utc-minute-offset="-600">(GMT-09:00) Hawaii-Aleutian</option><option value="Etc/GMT+10" data-utc-minute-offset="-600">(GMT-10:00) Hawaii</option><option value="Pacific/Marquesas" data-utc-minute-offset="-570">(GMT-09:30) Marquesas Islands</option><option value="Pacific/Gambier" data-utc-minute-offset="-540">(GMT-09:00) Gambier Islands</option><option value="America/Anchorage" data-utc-minute-offset="-540">(GMT-08:00) Alaska</option><option value="America/Ensenada" data-utc-minute-offset="-480">(GMT-07:00) Tijuana, Baja California</option><option value="Etc/GMT+8" data-utc-minute-offset="-480">(GMT-08:00) Pitcairn Islands</option><option value="America/Los_Angeles" data-utc-minute-offset="-480">(GMT-07:00) Pacific Time (US & Canada)</option><option value="America/Denver" data-utc-minute-offset="-420">(GMT-06:00) Mountain Time (US & Canada)</option><option value="America/Chihuahua" data-utc-minute-offset="-360">(GMT-06:00) Chihuahua, La Paz, Mazatlan</option><option value="America/Dawson_Creek" data-utc-minute-offset="-420">(GMT-07:00) Arizona</option><option value="America/Belize" data-utc-minute-offset="-360">(GMT-06:00) Saskatchewan, Central America</option><option value="America/Cancun" data-utc-minute-offset="-300">(GMT-05:00) Guadalajara, Mexico City, Monterrey</option><option value="Chile/EasterIsland" data-utc-minute-offset="-300">(GMT-06:00) Easter Island</option><option value="America/Chicago" data-utc-minute-offset="-360">(GMT-05:00) Central Time (US & Canada)</option><option value="America/New_York" data-utc-minute-offset="-300">(GMT-04:00) Eastern Time (US & Canada)</option><option value="America/Havana" data-utc-minute-offset="-300">(GMT-04:00) Cuba</option><option value="America/Bogota" data-utc-minute-offset="-300">(GMT-05:00) Bogota, Lima, Quito, Rio Branco</option><option value="America/Caracas" data-utc-minute-offset="-240">(GMT-04:00) Caracas</option><option value="America/Santiago" data-utc-minute-offset="-180">(GMT-04:00) Santiago</option><option value="America/La_Paz" data-utc-minute-offset="-240">(GMT-04:00) La Paz</option><option value="Atlantic/Stanley" data-utc-minute-offset="-180">(GMT-03:00) Faukland Islands</option><option value="America/Campo_Grande" data-utc-minute-offset="-240">(GMT-04:00) Manaus, Amazonas, Brazil</option><option value="America/Goose_Bay" data-utc-minute-offset="-240">(GMT-03:00) Atlantic Time (Goose Bay)</option><option value="America/Glace_Bay" data-utc-minute-offset="-240">(GMT-03:00) Atlantic Time (Canada)</option><option value="America/St_Johns" data-utc-minute-offset="-210">(GMT-02:30) Newfoundland</option><option value="America/Araguaina" data-utc-minute-offset="-180">(GMT-03:00) UTC-3</option><option value="America/Montevideo" data-utc-minute-offset="-180">(GMT-03:00) Montevideo</option><option value="America/Miquelon" data-utc-minute-offset="-180">(GMT-02:00) Miquelon, St. Pierre</option><option value="America/Godthab" data-utc-minute-offset="-180">(GMT-02:00) Greenland</option><option value="America/Argentina/Buenos_Aires" data-utc-minute-offset="-180">(GMT-03:00) Buenos Aires</option><option value="America/Sao_Paulo" data-utc-minute-offset="-180">(GMT-03:00) Brasilia, Distrito Federal, Brazil</option><option value="America/Noronha" data-utc-minute-offset="-120">(GMT-02:00) Mid-Atlantic</option><option value="Atlantic/Cape_Verde" data-utc-minute-offset="-60">(GMT-01:00) Cape Verde Is.</option><option value="Atlantic/Azores" data-utc-minute-offset="-60">(GMT) Azores</option><option value="Etc/UTC" data-utc-minute-offset="0">(UTC) Coordinated Universal Time</option><option value="Europe/Belfast" data-utc-minute-offset="0">(GMT+01:00) Belfast</option><option value="Europe/Dublin" data-utc-minute-offset="0">(GMT+01:00) Dublin</option><option value="Europe/Lisbon" data-utc-minute-offset="0">(GMT+01:00) Lisbon</option><option value="Europe/London" data-utc-minute-offset="0">(GMT+01:00) London</option><option value="Africa/Abidjan" data-utc-minute-offset="0">(GMT) Monrovia, Reykjavik</option><option value="Europe/Amsterdam" data-utc-minute-offset="60">(GMT+02:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna</option><option value="Europe/Belgrade" data-utc-minute-offset="60">(GMT+02:00) Belgrade, Bratislava, Budapest, Ljubljana, Prague</option><option value="Europe/Brussels" data-utc-minute-offset="60">(GMT+02:00) Brussels, Copenhagen, Madrid, Paris</option><option value="Africa/Algiers" data-utc-minute-offset="60">(GMT+01:00) West Central Africa</option><option value="Africa/Windhoek" data-utc-minute-offset="120">(GMT+02:00) Windhoek</option><option value="Europe/Athens" data-utc-minute-offset="120">(GMT+03:00) Athens</option><option value="Asia/Beirut" data-utc-minute-offset="120">(GMT+03:00) Beirut</option><option value="Africa/Cairo" data-utc-minute-offset="120">(GMT+02:00) Cairo</option><option value="Asia/Gaza" data-utc-minute-offset="120">(GMT+03:00) Gaza</option><option value="Africa/Blantyre" data-utc-minute-offset="120">(GMT+02:00) Harare, Pretoria</option><option value="Asia/Jerusalem" data-utc-minute-offset="120">(GMT+03:00) Jerusalem</option><option value="Europe/Minsk" data-utc-minute-offset="180">(GMT+03:00) Minsk</option><option value="Asia/Damascus" data-utc-minute-offset="180">(GMT+03:00) Syria</option><option value="Europe/Moscow" data-utc-minute-offset="180">(GMT+03:00) Moscow, St. Petersburg, Volgograd</option><option value="Africa/Addis_Ababa" data-utc-minute-offset="180">(GMT+03:00) Nairobi</option><option value="Asia/Tehran" data-utc-minute-offset="210">(GMT+04:30) Tehran</option><option value="Asia/Dubai" data-utc-minute-offset="240">(GMT+04:00) Abu Dhabi, Muscat</option><option value="Asia/Yerevan" data-utc-minute-offset="240">(GMT+04:00) Yerevan</option><option value="Asia/Kabul" data-utc-minute-offset="270">(GMT+04:30) Kabul</option><option value="Asia/Yekaterinburg" data-utc-minute-offset="300">(GMT+05:00) Ekaterinburg</option><option value="Asia/Tashkent" data-utc-minute-offset="300">(GMT+05:00) Tashkent</option><option value="Asia/Kolkata" data-utc-minute-offset="330">(GMT+05:30) Chennai, Kolkata, Mumbai, New Delhi</option><option value="Asia/Katmandu" data-utc-minute-offset="345">(GMT+05:45) Kathmandu</option><option value="Asia/Dhaka" data-utc-minute-offset="360">(GMT+06:00) Astana, Dhaka</option><option value="Asia/Novosibirsk" data-utc-minute-offset="420">(GMT+07:00) Novosibirsk</option><option value="Asia/Rangoon" data-utc-minute-offset="390">(GMT+06:30) Yangon (Rangoon)</option><option value="Asia/Bangkok" data-utc-minute-offset="420">(GMT+07:00) Bangkok, Hanoi, Jakarta</option><option value="Asia/Krasnoyarsk" data-utc-minute-offset="420">(GMT+07:00) Krasnoyarsk</option><option value="Asia/Hong_Kong" data-utc-minute-offset="480">(GMT+08:00) Beijing, Chongqing, Hong Kong, Urumqi</option><option value="Asia/Irkutsk" data-utc-minute-offset="480">(GMT+08:00) Irkutsk, Ulaan Bataar</option><option value="Australia/Perth" data-utc-minute-offset="480">(GMT+08:00) Perth</option><option value="Australia/Eucla" data-utc-minute-offset="525">(GMT+08:45) Eucla</option><option value="Asia/Tokyo" data-utc-minute-offset="540">(GMT+09:00) Osaka, Sapporo, Tokyo</option><option value="Asia/Seoul" data-utc-minute-offset="540">(GMT+09:00) Seoul</option><option value="Asia/Yakutsk" data-utc-minute-offset="540">(GMT+09:00) Yakutsk</option><option value="Australia/Adelaide" data-utc-minute-offset="630">(GMT+09:30) Adelaide</option><option value="Australia/Darwin" data-utc-minute-offset="570">(GMT+09:30) Darwin</option><option value="Australia/Brisbane" data-utc-minute-offset="600">(GMT+10:00) Brisbane</option><option value="Australia/Hobart" data-utc-minute-offset="660">(GMT+10:00) Hobart</option><option value="Asia/Vladivostok" data-utc-minute-offset="600">(GMT+10:00) Vladivostok</option><option value="Australia/Lord_Howe" data-utc-minute-offset="660">(GMT+10:30) Lord Howe Island</option><option value="Etc/GMT-11" data-utc-minute-offset="660">(GMT+11:00) Solomon Is., New Caledonia</option><option value="Asia/Magadan" data-utc-minute-offset="660">(GMT+11:00) Magadan</option><option value="Pacific/Norfolk" data-utc-minute-offset="720">(GMT+11:00) Norfolk Island</option><option value="Asia/Anadyr" data-utc-minute-offset="720">(GMT+12:00) Anadyr, Kamchatka</option><option value="Pacific/Auckland" data-utc-minute-offset="780">(GMT+12:00) Auckland, Wellington</option><option value="Etc/GMT-12" data-utc-minute-offset="720">(GMT+12:00) Fiji, Kamchatka, Marshall Is.</option><option value="Pacific/Chatham" data-utc-minute-offset="825">(GMT+12:45) Chatham Islands</option><option value="Pacific/Tongatapu" data-utc-minute-offset="780">(GMT+13:00) Nuku'alofa</option><option value="Pacific/Kiritimati" data-utc-minute-offset="840">(GMT+14:00) Kiritimati</option></select><script type="text/javascript">var tzOffsetMin = new Date().getTimezoneOffset()*-1; var sel = document.getElementsByName('0e35d6393a8ba494aa0723dd51b6899c')[0] var opts = sel.options; for (var opt, j = 0; opt = opts[j]; j++) { if (opt.getAttribute('data-utc-minute-offset') == tzOffsetMin) { sel.selectedIndex = j; break; } } </script></div></div></div><br><span class="help-block"><small><span class="glyphicon glyphicon-info-sign"></span> The GMT offsets shown reflect the offsets <strong>at the moment of the conference</strong>.</small></span></div></div><div class="panel panel-default timeband-panel"><div class="panel-heading clearfix"><div class="panel-title">Time Band</div></div><div class="panel-body"><span class="help-block">By setting a time band, the program will dim events that are outside this time window. This is useful for (virtual) conferences with a continuous program (with repeated sessions).<br>The time band will also limit the events that are included in the personal iCalendar subscription service.</span><div class="row"><div class="col-sm-11 col-sm-offset-1"><label class="radio"><input type="radio" checked="checked" name="f1869fcfb40f29e9c9c46042f4fbda2c" value="false" onchange="if( ($(this).val() == 'true' && this.checked) != $('#c2371058bcb9b31dd10e115e7f712708').is(':visible') ) { $('#c2371058bcb9b31dd10e115e7f712708').fadeToggle( 250 ); }"/><strong>Display full program</strong></label><label class="radio"><input type="radio" name="f1869fcfb40f29e9c9c46042f4fbda2c" value="true" onchange="if( ($(this).val() == 'true' && this.checked) != $('#c2371058bcb9b31dd10e115e7f712708').is(':visible') ) { $('#c2371058bcb9b31dd10e115e7f712708').fadeToggle( 250 ); }"/>Specify a time band</label><div id="c2371058bcb9b31dd10e115e7f712708" style=" display: none;"><span class="input-group"><input name="a4e58ac1cd9cfb26fb62ecc29e600148" type="text" value="07:00" class="flatpickr inputDate form-control"/><script type="text/javascript">$("input:not(.flatpickr-input)[name=a4e58ac1cd9cfb26fb62ecc29e600148]").flatpickr({onOpen: function(dateObj, dateStr, instance){ if(dateStr == ''){ instance.jumpToDate( new Date() ); } }, allowInput: true, dateformat: 'H:i', altFormat: 'H:i' , altInput: true, time_24hr: true, noCalendar: true, enableTime : true}); </script><span class="input-group-addon"> - </span><input name="01ff55ee23f3ce1eb7d922f922eb09b1" type="text" value="19:00" class="flatpickr inputDate form-control"/><script type="text/javascript">$("input:not(.flatpickr-input)[name=01ff55ee23f3ce1eb7d922f922eb09b1]").flatpickr({onOpen: function(dateObj, dateStr, instance){ if(dateStr == ''){ instance.jumpToDate( new Date() ); } }, allowInput: true, dateformat: 'H:i', altFormat: 'H:i' , altInput: true, time_24hr: true, noCalendar: true, enableTime : true}); </script></span></div></div></div></div></div><div class="row form-group"><div class="col-sm-offset-2 col-sm-10"><button style="position: absolute; left: -9999px; width: 1px; height: 1px;" onclick='javascript:serverInvoke("https://2019.ecoop.org/userProgramSettingsModalConferenceEdition","userProgramSettingsModalConferenceEdition_apply18ec3dfeeecb5c44c1e40a40983898869", [{"name":"context", "value":"ecoop-2019"},],"form11390898770538530f0e2bbdb67872b491120c5c8a7", this.nextSibling, true,"program-settings-modal"); return false;'></button><a submitid="userProgramSettingsModalConferenceEdition_apply18ec3dfeeecb5c44c1e40a40983898869" href="javascript:void(0)" onclick="javascript:loadImageElem=this;$(this.previousSibling).click()" class="btn btn-primary btn btn-default">Save</a></div></div></form></div><div class="modal-footer"><a href="#" data-dismiss="modal" class="btn btn-default"><span class="glyphicon glyphicon-remove"></span> Close</a></div></div></div></div></div><div class="program-container"><div class="row" style="padding:4px 0px;"><label class="col-sm-2 control-label" style="text-align:right;">When</label><div class="col-sm-10"><strong>Wed 17 Jul 2019 09:00 - 10:00 at <a href="https://2019.ecoop.org/room/ecoop-2019-venue-mancy" class="room-link navigate">Mancy</a></strong> - <a href="https://2019.ecoop.org/track/ecoop-2019-papers#program" class="navigate">Dahl-Nygaard Prize Keynote</a> <small>Chair(s): <a href="https://2019.ecoop.org/profile/laurencetratt" target="_blank" class="navigate">Laurence Tratt</a></small></div></div></div><div class="row" style="padding:4px 0px;"><label class="col-sm-2 control-label" style="text-align:right;">Abstract</label><div class="col-sm-10"><p>Compositionality is a trait that is inherent to both mathematical proofs and programs. Just like mathematical reasoning is conducted from axioms and is organised via lemmas and theorems, with the details of the proofs abstracted away, good programs are structured via functions, modules, and objects, hiding the details of the implementations. This structure is what makes software development scalable and tractable. However, compositionality (and, hence, scalability and tractability) is tricky to get right in the cases when programming meets proving—a situation that takes place naturally once one tries to formally verify that a program is correct with respect to an ascribed specification (a mathematical statement), and then use this specification to verify programs built on top of that one.</p> <p>In my talk, I will describe my journey to date towards building techniques for scalable computer-assisted verification of correctness-critical programming artefacts, focusing specifically on programs with “interesting” features, such as concurrent and distributed computations. I will show how a combination of type theory, program logics, and semantics—all standard working tools of a programming languages researcher—enables construction and composition of provably correct software systems.</p></div></div><div class="row" style="padding:4px 0px;"><label class="col-sm-2 control-label" style="text-align:right;">File attachments</label><div class="col-sm-10"><table class="table table-bordered table-striped table-condensed"><tr><td>Slides (<a href="javascript:void(0)" onclick='javascript:serverInvokeDownloadCompatible("https://2019.ecoop.org/details","1202fb6ac71247219cea2d10e29dc5cbaction_174265066104b7d52ac6d7d91045559668fefde6c69", [{"name":"context", "value":"ecoop-2019"},{"name":"track", "value":"ecoop-2019-papers"},{"name":"urlKey", "value":"8"},{"name":"decoTitle", "value":"Composing-Distributed-Systems-that-are-Provably-Correct-Dahl-Nygaard-prize-keynote-"},],"", this,"1")' class="downloadlink">Sergey-ECOOP19.pdf</a>)</td><td>8.68MiB</td></tr></table></div></div><div class="row" style="padding:4px 0px;"><label class="col-sm-2 control-label" style="text-align:right;">Bio</label><div class="col-sm-10"><p>I am an Associate Professor (without tenure) at Yale-NUS College and School of Computing, NUS (Singapore).</p> <p>Prior to joining Yale-NUS, I was a a faculty at University College London. Before then, I was a postdoctoral researcher at IMDEA Software Institute (Madrid, Spain). I defended my PhD in 2012 in the DistriNet research group at the Department of Computer Sciences of KU Leuven (Belgium). Before that I received my MSc degree in Mathematics and Computer Science from Saint Petersburg State University (Russia) in 2008.</p> <p>My research interests dwell in the area of the design and implementation of programming languages, including but not limited to program semantics, certified programming, concurrency and abstract interpretation. I am particularly interested in developing verification techniques and static analyses for higher-order and concurrent programs.</p></div></div><div class="row" style="padding:4px 0px;"><label class="col-sm-2 control-label" style="text-align:right;">Recording</label><div class="col-sm-10"><div class="row"><div class="col-sm-8"><div class="embed-container"><iframe loading="lazy" width="560" height="315" src="https://www.youtube-nocookie.com/embed/RFNMfw3GAGc?enablejsapi=1" frameborder="0" allowfullscreen ></iframe></div></div></div></div></div><script type="text/javascript">(function(){ var post_process_function = function(n){ var node=(n&&n.nodeType === 1)?n:document; $(node).find('.modal').on('shown.bs.modal', function() {if(gtag) { gtag( 'event', 'Show Details in Modal' , {'event_category': 'Event Information', 'event_label': '' + $(this).find('.modal-title').text() + ''} ) } } ) }; var original_post_process_func = ajax_post_process; ajax_post_process = function(){ original_post_process_func.apply(this,arguments); post_process_function.apply(this,arguments); }; $(document).ready( post_process_function ); })(); </script><div tabindex="-1" id="hidden-modal" class="modal"><div class="modal-dialog "><div class="modal-content"></div></div></div><div id="program-settings-modal" class="webdsl-placeholder"><div id="userProgramSettings" class="modal fade"><div class="modal-dialog "><div class="modal-content"><div class="modal-header"><a data-dismiss="modal" class="close"><span class="glyphicon glyphicon-remove"></span></a><h3>Program Display Configuration</h3></div><div class="modal-body"><form name="form11390898770538530f0e2bbdb67872b491120c5c8a7" id="form11390898770538530f0e2bbdb67872b491120c5c8a7" action="https://2019.ecoop.org/userProgramSettingsModalConferenceEdition" accept-charset="UTF-8" method="POST" role="form" class="form-horizontal"><input type="hidden" name="form11390898770538530f0e2bbdb67872b491120c5c8a7" value="1" /><input type="hidden" name="context" value="ecoop-2019" /><div class="panel panel-default timezone-panel"><div class="panel-heading clearfix"><div class="panel-title">Time Zone</div></div><div class="panel-body"><span class="help-block">The program is currently displayed in <strong>(GMT+01:00) Belfast</strong>.</span><div class="row"><div class="col-sm-11 col-sm-offset-1"><label class="radio"><input type="radio" checked="checked" name="9659afaa126198132be460b106e35ccb" value="false" onchange="if( ($(this).val() == 'true' && this.checked) != $('#cec04de0447905c49fb377c6d9693505').is(':visible') ) { $('#cec04de0447905c49fb377c6d9693505').fadeToggle( 250 ); }"/><strong>Use conference time zone: (GMT+01:00) Belfast</strong></label><label class="radio"><input type="radio" name="9659afaa126198132be460b106e35ccb" value="true" onchange="if( ($(this).val() == 'true' && this.checked) != $('#cec04de0447905c49fb377c6d9693505').is(':visible') ) { $('#cec04de0447905c49fb377c6d9693505').fadeToggle( 250 ); }"/>Select other time zone</label><div id="cec04de0447905c49fb377c6d9693505" style=" display: none;"><select name="0e35d6393a8ba494aa0723dd51b6899c" class="select form-control"><option value="" selected="selected" data-utc-minute-offset="0"></option><option value="Etc/GMT+12" data-utc-minute-offset="-720">(GMT-12:00) AoE (Anywhere On Earth)</option><option value="Pacific/Midway" data-utc-minute-offset="-660">(GMT-11:00) Midway Island, Samoa</option><option value="America/Adak" data-utc-minute-offset="-600">(GMT-09:00) Hawaii-Aleutian</option><option value="Etc/GMT+10" data-utc-minute-offset="-600">(GMT-10:00) Hawaii</option><option value="Pacific/Marquesas" data-utc-minute-offset="-570">(GMT-09:30) Marquesas Islands</option><option value="Pacific/Gambier" data-utc-minute-offset="-540">(GMT-09:00) Gambier Islands</option><option value="America/Anchorage" data-utc-minute-offset="-540">(GMT-08:00) Alaska</option><option value="America/Ensenada" data-utc-minute-offset="-480">(GMT-07:00) Tijuana, Baja California</option><option value="Etc/GMT+8" data-utc-minute-offset="-480">(GMT-08:00) Pitcairn Islands</option><option value="America/Los_Angeles" data-utc-minute-offset="-480">(GMT-07:00) Pacific Time (US & Canada)</option><option value="America/Denver" data-utc-minute-offset="-420">(GMT-06:00) Mountain Time (US & Canada)</option><option value="America/Chihuahua" data-utc-minute-offset="-360">(GMT-06:00) Chihuahua, La Paz, Mazatlan</option><option value="America/Dawson_Creek" data-utc-minute-offset="-420">(GMT-07:00) Arizona</option><option value="America/Belize" data-utc-minute-offset="-360">(GMT-06:00) Saskatchewan, Central America</option><option value="America/Cancun" data-utc-minute-offset="-300">(GMT-05:00) Guadalajara, Mexico City, Monterrey</option><option value="Chile/EasterIsland" data-utc-minute-offset="-300">(GMT-06:00) Easter Island</option><option value="America/Chicago" data-utc-minute-offset="-360">(GMT-05:00) Central Time (US & Canada)</option><option value="America/New_York" data-utc-minute-offset="-300">(GMT-04:00) Eastern Time (US & Canada)</option><option value="America/Havana" data-utc-minute-offset="-300">(GMT-04:00) Cuba</option><option value="America/Bogota" data-utc-minute-offset="-300">(GMT-05:00) Bogota, Lima, Quito, Rio Branco</option><option value="America/Caracas" data-utc-minute-offset="-240">(GMT-04:00) Caracas</option><option value="America/Santiago" data-utc-minute-offset="-180">(GMT-04:00) Santiago</option><option value="America/La_Paz" data-utc-minute-offset="-240">(GMT-04:00) La Paz</option><option value="Atlantic/Stanley" data-utc-minute-offset="-180">(GMT-03:00) Faukland Islands</option><option value="America/Campo_Grande" data-utc-minute-offset="-240">(GMT-04:00) Manaus, Amazonas, Brazil</option><option value="America/Goose_Bay" data-utc-minute-offset="-240">(GMT-03:00) Atlantic Time (Goose Bay)</option><option value="America/Glace_Bay" data-utc-minute-offset="-240">(GMT-03:00) Atlantic Time (Canada)</option><option value="America/St_Johns" data-utc-minute-offset="-210">(GMT-02:30) Newfoundland</option><option value="America/Araguaina" data-utc-minute-offset="-180">(GMT-03:00) UTC-3</option><option value="America/Montevideo" data-utc-minute-offset="-180">(GMT-03:00) Montevideo</option><option value="America/Miquelon" data-utc-minute-offset="-180">(GMT-02:00) Miquelon, St. Pierre</option><option value="America/Godthab" data-utc-minute-offset="-180">(GMT-02:00) Greenland</option><option value="America/Argentina/Buenos_Aires" data-utc-minute-offset="-180">(GMT-03:00) Buenos Aires</option><option value="America/Sao_Paulo" data-utc-minute-offset="-180">(GMT-03:00) Brasilia, Distrito Federal, Brazil</option><option value="America/Noronha" data-utc-minute-offset="-120">(GMT-02:00) Mid-Atlantic</option><option value="Atlantic/Cape_Verde" data-utc-minute-offset="-60">(GMT-01:00) Cape Verde Is.</option><option value="Atlantic/Azores" data-utc-minute-offset="-60">(GMT) Azores</option><option value="Etc/UTC" data-utc-minute-offset="0">(UTC) Coordinated Universal Time</option><option value="Europe/Belfast" data-utc-minute-offset="0">(GMT+01:00) Belfast</option><option value="Europe/Dublin" data-utc-minute-offset="0">(GMT+01:00) Dublin</option><option value="Europe/Lisbon" data-utc-minute-offset="0">(GMT+01:00) Lisbon</option><option value="Europe/London" data-utc-minute-offset="0">(GMT+01:00) London</option><option value="Africa/Abidjan" data-utc-minute-offset="0">(GMT) Monrovia, Reykjavik</option><option value="Europe/Amsterdam" data-utc-minute-offset="60">(GMT+02:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna</option><option value="Europe/Belgrade" data-utc-minute-offset="60">(GMT+02:00) Belgrade, Bratislava, Budapest, Ljubljana, Prague</option><option value="Europe/Brussels" data-utc-minute-offset="60">(GMT+02:00) Brussels, Copenhagen, Madrid, Paris</option><option value="Africa/Algiers" data-utc-minute-offset="60">(GMT+01:00) West Central Africa</option><option value="Africa/Windhoek" data-utc-minute-offset="120">(GMT+02:00) Windhoek</option><option value="Europe/Athens" data-utc-minute-offset="120">(GMT+03:00) Athens</option><option value="Asia/Beirut" data-utc-minute-offset="120">(GMT+03:00) Beirut</option><option value="Africa/Cairo" data-utc-minute-offset="120">(GMT+02:00) Cairo</option><option value="Asia/Gaza" data-utc-minute-offset="120">(GMT+03:00) Gaza</option><option value="Africa/Blantyre" data-utc-minute-offset="120">(GMT+02:00) Harare, Pretoria</option><option value="Asia/Jerusalem" data-utc-minute-offset="120">(GMT+03:00) Jerusalem</option><option value="Europe/Minsk" data-utc-minute-offset="180">(GMT+03:00) Minsk</option><option value="Asia/Damascus" data-utc-minute-offset="180">(GMT+03:00) Syria</option><option value="Europe/Moscow" data-utc-minute-offset="180">(GMT+03:00) Moscow, St. Petersburg, Volgograd</option><option value="Africa/Addis_Ababa" data-utc-minute-offset="180">(GMT+03:00) Nairobi</option><option value="Asia/Tehran" data-utc-minute-offset="210">(GMT+04:30) Tehran</option><option value="Asia/Dubai" data-utc-minute-offset="240">(GMT+04:00) Abu Dhabi, Muscat</option><option value="Asia/Yerevan" data-utc-minute-offset="240">(GMT+04:00) Yerevan</option><option value="Asia/Kabul" data-utc-minute-offset="270">(GMT+04:30) Kabul</option><option value="Asia/Yekaterinburg" data-utc-minute-offset="300">(GMT+05:00) Ekaterinburg</option><option value="Asia/Tashkent" data-utc-minute-offset="300">(GMT+05:00) Tashkent</option><option value="Asia/Kolkata" data-utc-minute-offset="330">(GMT+05:30) Chennai, Kolkata, Mumbai, New Delhi</option><option value="Asia/Katmandu" data-utc-minute-offset="345">(GMT+05:45) Kathmandu</option><option value="Asia/Dhaka" data-utc-minute-offset="360">(GMT+06:00) Astana, Dhaka</option><option value="Asia/Novosibirsk" data-utc-minute-offset="420">(GMT+07:00) Novosibirsk</option><option value="Asia/Rangoon" data-utc-minute-offset="390">(GMT+06:30) Yangon (Rangoon)</option><option value="Asia/Bangkok" data-utc-minute-offset="420">(GMT+07:00) Bangkok, Hanoi, Jakarta</option><option value="Asia/Krasnoyarsk" data-utc-minute-offset="420">(GMT+07:00) Krasnoyarsk</option><option value="Asia/Hong_Kong" data-utc-minute-offset="480">(GMT+08:00) Beijing, Chongqing, Hong Kong, Urumqi</option><option value="Asia/Irkutsk" data-utc-minute-offset="480">(GMT+08:00) Irkutsk, Ulaan Bataar</option><option value="Australia/Perth" data-utc-minute-offset="480">(GMT+08:00) Perth</option><option value="Australia/Eucla" data-utc-minute-offset="525">(GMT+08:45) Eucla</option><option value="Asia/Tokyo" data-utc-minute-offset="540">(GMT+09:00) Osaka, Sapporo, Tokyo</option><option value="Asia/Seoul" data-utc-minute-offset="540">(GMT+09:00) Seoul</option><option value="Asia/Yakutsk" data-utc-minute-offset="540">(GMT+09:00) Yakutsk</option><option value="Australia/Adelaide" data-utc-minute-offset="630">(GMT+09:30) Adelaide</option><option value="Australia/Darwin" data-utc-minute-offset="570">(GMT+09:30) Darwin</option><option value="Australia/Brisbane" data-utc-minute-offset="600">(GMT+10:00) Brisbane</option><option value="Australia/Hobart" data-utc-minute-offset="660">(GMT+10:00) Hobart</option><option value="Asia/Vladivostok" data-utc-minute-offset="600">(GMT+10:00) Vladivostok</option><option value="Australia/Lord_Howe" data-utc-minute-offset="660">(GMT+10:30) Lord Howe Island</option><option value="Etc/GMT-11" data-utc-minute-offset="660">(GMT+11:00) Solomon Is., New Caledonia</option><option value="Asia/Magadan" data-utc-minute-offset="660">(GMT+11:00) Magadan</option><option value="Pacific/Norfolk" data-utc-minute-offset="720">(GMT+11:00) Norfolk Island</option><option value="Asia/Anadyr" data-utc-minute-offset="720">(GMT+12:00) Anadyr, Kamchatka</option><option value="Pacific/Auckland" data-utc-minute-offset="780">(GMT+12:00) Auckland, Wellington</option><option value="Etc/GMT-12" data-utc-minute-offset="720">(GMT+12:00) Fiji, Kamchatka, Marshall Is.</option><option value="Pacific/Chatham" data-utc-minute-offset="825">(GMT+12:45) Chatham Islands</option><option value="Pacific/Tongatapu" data-utc-minute-offset="780">(GMT+13:00) Nuku'alofa</option><option value="Pacific/Kiritimati" data-utc-minute-offset="840">(GMT+14:00) Kiritimati</option></select><script type="text/javascript">var tzOffsetMin = new Date().getTimezoneOffset()*-1; var sel = document.getElementsByName('0e35d6393a8ba494aa0723dd51b6899c')[0] var opts = sel.options; for (var opt, j = 0; opt = opts[j]; j++) { if (opt.getAttribute('data-utc-minute-offset') == tzOffsetMin) { sel.selectedIndex = j; break; } } </script></div></div></div><br><span class="help-block"><small><span class="glyphicon glyphicon-info-sign"></span> The GMT offsets shown reflect the offsets <strong>at the moment of the conference</strong>.</small></span></div></div><div class="panel panel-default timeband-panel"><div class="panel-heading clearfix"><div class="panel-title">Time Band</div></div><div class="panel-body"><span class="help-block">By setting a time band, the program will dim events that are outside this time window. This is useful for (virtual) conferences with a continuous program (with repeated sessions).<br>The time band will also limit the events that are included in the personal iCalendar subscription service.</span><div class="row"><div class="col-sm-11 col-sm-offset-1"><label class="radio"><input type="radio" checked="checked" name="f1869fcfb40f29e9c9c46042f4fbda2c" value="false" onchange="if( ($(this).val() == 'true' && this.checked) != $('#c2371058bcb9b31dd10e115e7f712708').is(':visible') ) { $('#c2371058bcb9b31dd10e115e7f712708').fadeToggle( 250 ); }"/><strong>Display full program</strong></label><label class="radio"><input type="radio" name="f1869fcfb40f29e9c9c46042f4fbda2c" value="true" onchange="if( ($(this).val() == 'true' && this.checked) != $('#c2371058bcb9b31dd10e115e7f712708').is(':visible') ) { $('#c2371058bcb9b31dd10e115e7f712708').fadeToggle( 250 ); }"/>Specify a time band</label><div id="c2371058bcb9b31dd10e115e7f712708" style=" display: none;"><span class="input-group"><input name="a4e58ac1cd9cfb26fb62ecc29e600148" type="text" value="07:00" class="flatpickr inputDate form-control"/><script type="text/javascript">$("input:not(.flatpickr-input)[name=a4e58ac1cd9cfb26fb62ecc29e600148]").flatpickr({onOpen: function(dateObj, dateStr, instance){ if(dateStr == ''){ instance.jumpToDate( new Date() ); } }, allowInput: true, dateformat: 'H:i', altFormat: 'H:i' , altInput: true, time_24hr: true, noCalendar: true, enableTime : true}); </script><span class="input-group-addon"> - </span><input name="01ff55ee23f3ce1eb7d922f922eb09b1" type="text" value="19:00" class="flatpickr inputDate form-control"/><script type="text/javascript">$("input:not(.flatpickr-input)[name=01ff55ee23f3ce1eb7d922f922eb09b1]").flatpickr({onOpen: function(dateObj, dateStr, instance){ if(dateStr == ''){ instance.jumpToDate( new Date() ); } }, allowInput: true, dateformat: 'H:i', altFormat: 'H:i' , altInput: true, time_24hr: true, noCalendar: true, enableTime : true}); </script></span></div></div></div></div></div><div class="row form-group"><div class="col-sm-offset-2 col-sm-10"><button style="position: absolute; left: -9999px; width: 1px; height: 1px;" onclick='javascript:serverInvoke("https://2019.ecoop.org/userProgramSettingsModalConferenceEdition","userProgramSettingsModalConferenceEdition_apply18ec3dfeeecb5c44c1e40a40983898869", [{"name":"context", "value":"ecoop-2019"},],"form11390898770538530f0e2bbdb67872b491120c5c8a7", this.nextSibling, true,"program-settings-modal"); return false;'></button><a submitid="userProgramSettingsModalConferenceEdition_apply18ec3dfeeecb5c44c1e40a40983898869" href="javascript:void(0)" onclick="javascript:loadImageElem=this;$(this.previousSibling).click()" class="btn btn-primary btn btn-default">Save</a></div></div></form></div><div class="modal-footer"><a href="#" data-dismiss="modal" class="btn btn-default"><span class="glyphicon glyphicon-remove"></span> Close</a></div></div></div></div></div><div class="program-container"><div class="row" style="padding:4px 0px;"><label class="col-sm-2 control-label" style="text-align:right;">Session Program</label><div class="col-sm-10"><div class="hidable day-wrapper"><h4 class="day-header sticky-top"><div><div>Wed 17 Jul</div><p></p><div class="time-zone-info"><small class="text-muted">Displayed time zone: <strong>Belfast</strong> <small class="control-time-zone"><a data-toggle="modal" href="#userProgramSettings">change</a></small></small></div></div></h4><div class="hidable band hour-9"><table data-facet-date="Wed 17 Jul 2019" data-facet-date-order="190717" data-facet-room="Mancy" class="table table-condensed session-table"><colgroup width="10px"/><colgroup width="100px"/><colgroup width="10px"/><colgroup width="100%"/><tr class="session-details"><td class="track-color c0"></td><td><div class="slot-label">09:00 - 10:00</div></td><td colspan="2"><div class="session-info-in-table">Dahl-Nygaard Prize Keynote<span class="pull-right"><a href="https://2019.ecoop.org/track/ecoop-2019-papers" target="_blank" class="text-muted navigate">Research Papers</a></span> at <a href="https://2019.ecoop.org/room/ecoop-2019-venue-mancy" target="_blank" class="room-link navigate">Mancy</a><br/> <small>Chair(s): <a href="https://2019.ecoop.org/profile/laurencetratt" target="_blank" class="navigate">Laurence Tratt</a><span class="prog-aff"> King's College London</span></small></div></td></tr><tr class="firefox-fix"><td></td><td></td><td></td><td></td></tr><tr data-slot-id="a2b34d7c-4555-4c8c-b3ca-9e55b4ae373e" class="hidable"><td class="track-color c0"></td><td class=" text-right"><div class="text-muted"><div class="start-time">09:00</div><strong>60m</strong></div><div class="event-type">Talk</div><span data-facet-track="ECOOP Research Papers"></span></td><td><span data-event-star="5fde423c-76a6-4802-9625-928db6504820" title="Add event to your program"><span class="text-disabled glyphicon glyphicon-star-empty"></span></span></td><td><strong><a href="#" data-event-modal="5fde423c-76a6-4802-9625-928db6504820">Composing Distributed Systems that are Provably Correct (Dahl-Nygaard prize keynote)<span class="pull-right"><span title="Keynote" data-facet-badge="Keynote" class="output-badge" style="max-width:40px;"><img alt="Keynote" src="https://2019.ecoop.org/getImageFile/9f8cb17c-0c46-404c-a837-2c3901acefad/small?1558093933000" class="outputimage"/></span></span></a></strong><div class="prog-track">Research Papers</div><div class="performers"><span title="Keynote Speaker" class="role">K: </span><a href="https://2019.ecoop.org/profile/ilyasergey" class="navigate">Ilya Sergey</a><span class="prog-aff"> Yale-NUS College and National University of Singapore</span></div><a href="https://2019.ecoop.org/details/ecoop-2019-papers/8/Composing-Distributed-Systems-that-are-Provably-Correct-Dahl-Nygaard-prize-keynote-" target="_blank" class="publication-link navigate"><span class="glyphicon glyphicon-film"></span> Media Attached</a><a href="https://2019.ecoop.org/details/ecoop-2019-papers/8/Composing-Distributed-Systems-that-are-Provably-Correct-Dahl-Nygaard-prize-keynote-" target="_blank" class="publication-link navigate"><span class="glyphicon glyphicon-paperclip"></span> File Attached</a></td></tr></table></div></div></div></div></div></div><div class="col-sm-4 col-lg-3"><a href="https://2019.ecoop.org/profile/ilyasergey" class="navigate"><div class="thumbnail"><img alt="Ilya Sergey" src="https://2019.ecoop.org/getProfileImage/ilyasergey/29fc3c13-b861-4407-88eb-1c55f805c48e/small.jpg?1711569202000" class="outputimage "/><div class="caption"><h4>Ilya Sergey<span class="pull-right"><small>Keynote Speaker</small></span></h4><h5><span class="text-black">Yale-NUS College and National University of Singapore</span></h5></div></div></a></div></div><div id="messages-placeholder" class="alert alert-warning" style="display:none;"><a data-dismiss="alert" class="close">x</a><em>Fri 21 Feb 17:39</em></div></div><div id="notifications-ph" class="webdsl-placeholder"></div><div id="event-modal-loader" class="webdsl-placeholder"><form name="form_131600131703c411e65b13378d08eb1f6672b5a0259" id="form_131600131703c411e65b13378d08eb1f6672b5a0259" action="https://2019.ecoop.org/eventDetailsModalByAjaxConferenceEdition" accept-charset="UTF-8" method="POST" class="hidden"><input type="hidden" name="form_131600131703c411e65b13378d08eb1f6672b5a0259" value="1" /><input type="hidden" name="context" value="ecoop-2019" /><input name="ae03f7f6f951d515a297b161e922205d" type="text" value="" class="inputString form-control event-id-input"/><button style="position: absolute; left: -9999px; width: 1px; height: 1px;" onclick='javascript:serverInvoke("https://2019.ecoop.org/eventDetailsModalByAjaxConferenceEdition","eventDetailsModalByAjaxConferenceEdition_ia0_3c411e65b13378d08eb1f6672b5a0259", [{"name":"context", "value":"ecoop-2019"},],"form_131600131703c411e65b13378d08eb1f6672b5a0259", this.nextSibling, false,"event-modal-loader"); return false;'></button><a submitid="eventDetailsModalByAjaxConferenceEdition_ia0_3c411e65b13378d08eb1f6672b5a0259" href="javascript:void(0)" onclick="javascript:loadImageElem=this;$(this.previousSibling).click()" id="load-modal-action"></a></form></div><div id="event-star-form" class="webdsl-placeholder"><form name="form_509860938088b48fd14544d4239b498a2cf339e02b" id="form_509860938088b48fd14544d4239b498a2cf339e02b" action="https://2019.ecoop.org/eventStarByAjaxConferenceEdition" accept-charset="UTF-8" method="POST" class="hidden"><input type="hidden" name="form_509860938088b48fd14544d4239b498a2cf339e02b" value="1" /><input type="hidden" name="context" value="ecoop-2019" /><input name="a0b55aa29cf9431a9461b359872014e3" type="text" value="" class="inputString form-control event-id-input"/><button style="position: absolute; left: -9999px; width: 1px; height: 1px;" onclick='javascript:serverInvoke("https://2019.ecoop.org/eventStarByAjaxConferenceEdition","eventStarByAjaxConferenceEdition_ia0_88b48fd14544d4239b498a2cf339e02b", [{"name":"context", "value":"ecoop-2019"},],"form_509860938088b48fd14544d4239b498a2cf339e02b", this.nextSibling, false,"event-star-form"); return false;'></button><a submitid="eventStarByAjaxConferenceEdition_ia0_88b48fd14544d4239b498a2cf339e02b" href="javascript:void(0)" onclick="javascript:loadImageElem=this;$(this.previousSibling).click()" id="star-event-action"></a></form></div><div id="event-modals" class="webdsl-placeholder"></div><script type="text/javascript">(function(){ var post_process_function = function(n){ var node=(n&&n.nodeType === 1)?n:document; addEventModalLoadOnClick(node); addStarredEventOnClick(node); }; var original_post_process_func = ajax_post_process; ajax_post_process = function(){ original_post_process_func.apply(this,arguments); post_process_function.apply(this,arguments); }; $(document).ready( post_process_function ); })(); </script><footer class="footer"><div class="container"><div class="footer-box"><div class="row"><div class="col-sm-3"><h3><a href="https://2019.ecoop.org" class="navigate"><span class="glyphicon glyphicon-home"></span> ECOOP 2019</a></h3><hr/>using <a href="https://conf.researchr.org" class="navigate">conf.researchr.org</a> (<a href="http://yellowgrass.org/roadmap/conf.researchr.org" class="navigate">v1.69.0</a>)<br/><small><a href="https://2019.ecoop.org/support" target="_blank" class="navigate"><span class="glyphicon glyphicon-question-sign"></span> Support page</a></small><br/><small></small></div><div class="col-sm-5"><div class="row"><div class="col-sm-6"><h4>Tracks</h4><a href="https://2019.ecoop.org/track/ecoop-2019-papers" class="navigate">Research Papers</a><br/><a href="https://2019.ecoop.org/track/ecoop-2019-artifacts" class="navigate">Artifacts</a><br/><a href="https://2019.ecoop.org/track/ecoop-2019-Student-Volunteers" class="navigate">Student Volunteers</a><br/><a href="https://2019.ecoop.org/track/ecoop-2019-docsymp" class="navigate">Doctoral Symposium</a><br/><a href="https://2019.ecoop.org/track/ecoop-2019-summer-school" class="navigate">Summer School</a><br/><a href="https://2019.ecoop.org/track/ecoop-2019-workshops" class="navigate">Workshops</a><br/><a href="https://2019.ecoop.org/track/ecoop-2019-Posters" class="navigate">Posters</a><br/><a href="https://2019.ecoop.org/track/curry-on" class="navigate">Curry On</a></div><div class="col-sm-6"><h4>Workshops</h4><a href="https://2019.ecoop.org/home/aorta-2019" class="navigate">AORTA 2019</a><br/><a href="https://2019.ecoop.org/home/benchwork-2019" class="navigate">BenchWork 2019</a><br/><a href="https://2019.ecoop.org/home/COP-2019" class="navigate">COP 2019</a><br/><a href="https://2019.ecoop.org/home/FTfJP-2019" class="navigate">FTfJP 2019</a><br/><a href="https://2019.ecoop.org/home/ICOOOLPS-2019" class="navigate">ICOOOLPS 2019</a><br/><a href="https://2019.ecoop.org/home/PASS-ECOOP-2019" class="navigate">PASS 2019</a><br/><a href="https://2019.ecoop.org/home/panathon-2019" class="navigate">Panathon 2019</a><br/><a href="https://2019.ecoop.org/home/scala-2019" class="navigate">Scala 2019</a><br/><a href="https://2019.ecoop.org/home/vortex-2019" class="navigate">VORTEX 2019</a></div></div></div><div class="col-sm-2"><h4>Attending</h4><a href="https://2019.ecoop.org/venue/ecoop-2019-venue" class="navigate">Venue: Novotel London West</a><br><a href="https://2019.ecoop.org/attending/sponsorship" class="navigate">Sponsorship</a><br><a href="https://2019.ecoop.org/attending/conduct" class="navigate">Conduct</a><br><a href="https://2019.ecoop.org/attending/Students" class="navigate">Students</a><br><a href="https://2019.ecoop.org/attending/Visa" class="navigate">Visa</a><br><a href="https://2019.ecoop.org/attending/accommodation" class="navigate">Accommodation</a><br><a href="https://2019.ecoop.org/attending/Registration" class="navigate">Registration</a><br><a href="https://2019.ecoop.org/attending/curry-on-banquet" class="navigate">Social Events</a><br><a href="https://2019.ecoop.org/attending/Online+participation" class="navigate">Live</a><br><a href="https://2019.ecoop.org/attending/awards" class="navigate">Awards</a></div><div class="col-sm-2"><a href="https://2019.ecoop.org/signup" class="navigate">Sign Up</a></div></div></div></div></footer></div><script type="text/javascript">(function(){ var post_process_function = function(n){ var node=(n&&n.nodeType === 1)?n:document; let defaultplacement = $(document).scrollLeft() > 100 ? 'auto left' : 'auto top'; $(node).find('[title]').each( function(i,el){ var $e=$(el);$e.tooltip({placement: function(tt, elem){ var attval = elem.getAttribute('data-placement'); return attval ? attval : defaultplacement; }, sanitize: false, container: 'body' }) } ).on('show.bs.tooltip', function () { let el = this; while (el && window.getComputedStyle(el).position !== 'fixed') { el = el.parentElement; } if(el) $(this).data('bs.tooltip').options.container = el;});$('.tooltip.fade.in, .ui-tooltip-content').remove(); }; var original_post_process_func = ajax_post_process; ajax_post_process = function(){ original_post_process_func.apply(this,arguments); post_process_function.apply(this,arguments); }; $(document).ready( post_process_function ); })(); </script><script type="text/javascript">jQuery(document).ready(function($) { $(".clickable-row").click(function() { var href = $(this).attr("href"); if( window.location.href.indexOf( href ) < 0 ){ if ($(this).hasClass('new-window') ){ window.open( href ); } else { window.document.location = href; } } }); }); </script></body></html>