How to Keep Your Neighbours in Order

Total Page:16

File Type:pdf, Size:1020Kb

How to Keep Your Neighbours in Order How to Keep Your Neighbours in Order Conor McBride University of Strathclyde [email protected] Abstract 2. How to Hide the Truth I present a datatype-generic treatment of recursive container types If we intend to enforce invariants, we shall need to mix a little whose elements are guaranteed to be stored in increasing order, bit of logic in with our types and a little bit of proof in with our with the ordering invariant rolled out systematically. Intervals, lists programming. It is worth taking some trouble to set up our logical and binary search trees are instances of the generic treatment. On apparatus to maximize the effort we can get from the computer the journey to this treatment, I report a variety of failed experiments and to minimize the textual cost of proofs. We should prefer to and the transferable learning experiences they triggered. I demon- encounter logic only when it is dangerously absent! strate that a total element ordering is enough to deliver insertion and Our basic tools are the types representing falsity and truth by flattening algorithms, and show that (with care about the formula- virtue of their number of inhabitants: tion of the types) the implementations remain as usual. Agda’s in- data 0 : Set where stance arguments and pattern synonyms maximize the proof search -- no constructors! done by the typechecker and minimize the appearance of proofs record 1 : Set where constructor hi -- no fields! in program text, often eradicating them entirely. Generalizing to Dependent types allow us to compute sets from data. E.g., we indexed recursive container types, invariants such as size and bal- can represent evidence for the truth of some Boolean expression ance can be expressed in addition to ordering. By way of example, I which we might have tested. implement insertion and deletion for 2-3 trees, ensuring both order and balance by the discipline of type checking. data 2 : Set where tt ff : 2 So : 2 ! Set 1. Introduction So tt = 1 So ff = 0 It has taken years to see what was under my nose. I have been experimenting with ordered container structures for a long time A set P which evaluates to 0 or to 1 might be considered [McBride(2000)]: how to keep lists ordered, how to keep binary ‘propositional’ in that we are unlikely to want to distinguish its search trees ordered, how to flatten the latter to the former. Re- inhabitants. We might even prefer not even to see its inhabitants. cently, the pattern common to the structures and methods I had of- I define a wrapper type for propositions whose purpose is to hide ten found effective became clear to me. Let me tell you about it. proofs. Patterns are, of course, underarticulated abstractions. Correspond- record (P : Set): Set where ingly, let us construct a universe of container-like datatypes ensur- pq constructor ! ing that elements are in increasing order, good for intervals, ordered lists, binary search trees, and more besides. field ffprf gg : P This paper is a literate Agda program. The entire development Agda uses braces to indicate that an argument or field is to be is available at https://github.com/pigworker/Pivotal. As suppressed by default in program texts and inferred somehow by well as making the headline contributions the typechecker. Single-braced variables are solved by unification, • a datatype-generic treatment of ordering invariants and opera- in the tradition of Milner. Doubled braces indicate instance argu- tions which respect them ments, inferred by contextual search: if just one hypothesis can take the place of an instance argument, it is silently filled in, allowing us • a technique for hiding proofs from program texts a tiny bit of proof automation [Devriese and Piessens(2011)]. If an • a precise implementation of insertion and deletion for 2-3 trees inhabitant of pSo bq is required, we may write ! to indicate that we expect the truth of b to be known. I take the time to explore the design space, reporting a selection of Careful positioning of instance arguments seeds the context the wrong turnings and false dawns I encountered on my journey to with useful information. We may hypothesize over them quietly, these results. I try to extrapolate transferable design principles, so and support forward reasoning with a ‘therefore’ operator. that others in future may suffer less than I. ) : Set ! Set ! Set P ) T = ffp : P gg ! T infixr 3 ) Permission to make digital or hard copies of all or part of this work for personal or ) : 8fPT g ! pPq ! (P ) T ) ! T classroom use is granted without fee provided that copies are not made or distributed ! t = t for profit or commercial advantage and that copies bear this notice and the full citation ) on the first page. To copy otherwise, to republish, to post on servers or to redistribute This apparatus can give the traditional conditional a subtly more to lists, requires prior specific permission and/or a fee. informative type, thus: Copyright c ACM [to be supplied]. $5.00 : : 2 ! 2; : tt = ff; : ff = tt if then else : ?i : 8fX g ! 2 ! Maybe X ! Maybe X 8fX g b ! (So b ) X ) ! (So (: b) ) X ) ! X b ?i mx = if b then mx else no if tt then t else f = t infixr 4 ?i if ff then t else f = f ?i infix 1 if then else The guarding operator allows us to attach a Boolean test. We may now validate the range of a Tree. If ever there is a proof of 0 in the context, we should be able to ask for anything we want. Let us define valid : Tree ! Maybe STRange valid leaf = yes ; magic : fX : Setg ! 0 ) X valid (node lpr ) with valid l j valid r magic ff()gg ::: j yes ;j yes ; = yes (p −p) using Agda’s absurd pattern to mark the impossible instance ::: j yes ;j yes (c −d) = lepc ?i yes (p −d) argument which shows that no value need be returned. E.g., ::: j yes (a −b) j yes ; = lebp ?i yes (a −p) if tt then ff else magic : 2. ::: j yes (a −b) j yes (c −d) Instance arguments are not a perfect fit for proof search: they = lebp ?i lepc ?i yes (a −d) were intended as a cheap alternative to type classes, hence the ::: j j = no requirement for exactly one candidate instance. For proofs we might prefer to be less fussy about redundancy, but we shall manage As valid is a fold over the structure of Tree, we can follow my perfectly well for the purposes of this paper. colleagues Bob Atkey, Neil Ghani and Patricia Johann in comput- ing the partial refinement [Atkey et al.(2012)Atkey, Johann, and Ghani] 3. Barking Up the Wrong Search Trees of Tree which valid induces. We seek a type BST : STRange ! Set such that BST r =∼ ft : Tree j valid t = yes rg and we find David Turner [Turner(1987)] notes that whilst quicksort is often it by refining the type of each constructor of Tree with the check cited as a program which defies structural recursion, it performs the performed by the corresponding case of valid, assuming that the same sorting algorithm (although not with the same memory usage subtrees yielded valid ranges. We can calculate the conditions to pattern) as building a binary search tree and then flattening it. The check and the means to compute the output range if successful. irony is completed by noting that the latter sorting algorithm is the archetype of structural recursion in Rod Burstall’s development of lOK : STRange ! P ! 2 the concept [Burstall(1969)]. Binary search trees have empty leaves lOK ; p = tt and nodes labelled with elements which act like pivots in quicksort: lOK ( −u) p = leup the left subtree stores elements which precede the pivot, the right rOK : P ! STRange ! 2 subtree elements which follow it. Surely this invariant is crying out rOK p ; = tt to be a dependent type! Let us search for a type for search trees. rOK p (l − ) = lepl We could, of course, define binary search trees as ordinary node- labelled trees with parameter P giving the type of pivots: rOut : STRange ! P ! STRange ! STRange rOut ; p ; = p −p data Tree : Set where rOut ; p ( −u) = p −u leaf : Tree; node : Tree ! P ! Tree ! Tree rOut (l − ) p ; = l −p We might then define the invariant as a predicate IsBST : Tree ! rOut (l − ) ( −u) = l −u Set, implement insertion in our usual way, and prove separately We thus obtain the following refinement from Tree to BST: that our program maintains the invariant. However, the joy of de- pendently typed programming is that refining the types of the data data BST : STRange ! Set where themselves can often alleviate or obviate the burden of proof. Let leaf : BST ; us try to bake the invariant in. node : 8flr g ! BST l ! (p : P) ! BST r ! What should the type of a subtree tell us? If we want to check So (lOK lp ) ) So (rOK pr ) ) BST (rOut lpr ) the invariant at a given node, we shall need some information about the subtrees which we might expect comes from their type. We Attempting to implement insertion. Now that each binary search require that the elements left of the pivot precede it, so we could tree tells us its type, can we implement insertion? Rod Burstall’s require the whole set of those elements represented somehow, but implementation is as follows of course, for any order worthy of the name, it suffices to check only the largest.
Recommended publications
  • A Type and Scope Safe Universe of Syntaxes with Binding: Their Semantics and Proofs
    ZU064-05-FPR jfp19 26 March 2020 16:6 Under consideration for publication in J. Functional Programming 1 A Type and Scope Safe Universe of Syntaxes with Binding: Their Semantics and Proofs GUILLAUME ALLAIS, ROBERT ATKEY University of Strathclyde (UK) JAMES CHAPMAN Input Output HK Ltd. (HK) CONOR MCBRIDE University of Strathclyde (UK) JAMES MCKINNA University of Edinburgh (UK) Abstract Almost every programming language’s syntax includes a notion of binder and corresponding bound occurrences, along with the accompanying notions of α-equivalence, capture-avoiding substitution, typing contexts, runtime environments, and so on. In the past, implementing and reasoning about programming languages required careful handling to maintain the correct behaviour of bound variables. Modern programming languages include features that enable constraints like scope safety to be expressed in types. Nevertheless, the programmer is still forced to write the same boilerplate over again for each new implementation of a scope safe operation (e.g., renaming, substitution, desugaring, printing, etc.), and then again for correctness proofs. We present1 an expressive universe of syntaxes with binding and demonstrate how to (1) implement scope safe traversals once and for all by generic programming; and (2) how to derive properties of these traversals by generic proving. Our universe description, generic traversals and proofs, and our examples have all been formalised in Agda and are available in the accompanying material available online at https://github.com/gallais/generic-syntax. 1 Introduction In modern typed programming languages, programmers writing embedded DSLs (Hudak (1996)) and researchers formalising them can now use the host language’s type system to help them.
    [Show full text]
  • Agda User Manual Release 2.6.3
    Agda User Manual Release 2.6.3 The Agda Team Sep 23, 2021 Contents 1 Overview 3 2 Getting Started 5 2.1 What is Agda?..............................................5 2.2 Installation................................................7 2.3 ‘Hello world’ in Agda.......................................... 13 2.4 A Taste of Agda............................................. 14 2.5 A List of Tutorials............................................ 22 3 Language Reference 25 3.1 Abstract definitions............................................ 25 3.2 Built-ins................................................. 27 3.3 Coinduction............................................... 40 3.4 Copatterns................................................ 42 3.5 Core language.............................................. 45 3.6 Coverage Checking............................................ 48 3.7 Cubical.................................................. 51 3.8 Cumulativity............................................... 65 3.9 Data Types................................................ 66 3.10 Flat Modality............................................... 69 3.11 Foreign Function Interface........................................ 70 3.12 Function Definitions........................................... 75 3.13 Function Types.............................................. 78 3.14 Generalization of Declared Variables.................................. 79 3.15 Guarded Cubical............................................. 84 3.16 Implicit Arguments...........................................
    [Show full text]
  • CEPS Working Document Policy No
    Centre for European CEPS Working Document Policy No. 214/November 2004 Studies Europeanisation as a Gravity Model of Democratisation Michael Emerson & Gergana Noutcheva Abstract Much analysis of trends in democratisation in the world nowadays gives a rather pessimistic message, with such sweeping notions as the end of the third wave of democratisation, or of the democratic transition paradigm. A closer look at what has been happening in Europe, however, suggests that such analyses have often overlooked an important explanatory variable, captured in what we may call a ‘gravity model’, borrowing here a term from trade theory in economics. The gravity model of democratisation joins up with the mechanisms of Europeanisation, with democratisation progressing fast and deeply in 20 European states that were recently non-democratic, and which have various integrative relationships with the European Union. The trends and levels in the democracy scorecard in Europe as a whole show a clear correlation with the degrees of strength of these integrative relationships, and the results can be seen to be linked to the political conditionality and socialisation mechanisms of Europeanisation. Unfortunately for the advocates of universal democracy, other continents are presently unable to organise or access something similar, even Latin America where the US might have been expected to play more of an analogous role, and even less the Arab/Islamic world. This is not to argue that the values and mechanisms of democracy do not have universal plausibility, at least in the long run. But in the absence of the gravity variable in other continents, there should be soberly realistic expectations over the prospects for fast and deep democratisation.
    [Show full text]
  • Current Issue of FACS FACTS
    Issue 2021-2 July 2021 FACS A C T S The Newsletter of the Formal Aspects of Computing Science (FACS) Specialist Group ISSN 0950-1231 FACS FACTS Issue 2021-2 July 2021 About FACS FACTS FACS FACTS (ISSN: 0950-1231) is the newsletter of the BCS Specialist Group on Formal Aspects of Computing Science (FACS). FACS FACTS is distributed in electronic form to all FACS members. Submissions to FACS FACTS are always welcome. Please visit the newsletter area of the BCS FACS website for further details at: https://www.bcs.org/membership/member-communities/facs-formal-aspects- of-computing-science-group/newsletters/ Back issues of FACS FACTS are available for download from: https://www.bcs.org/membership/member-communities/facs-formal-aspects- of-computing-science-group/newsletters/back-issues-of-facs-facts/ The FACS FACTS Team Newsletter Editors Tim Denvir [email protected] Brian Monahan [email protected] Editorial Team: Jonathan Bowen, John Cooke, Tim Denvir, Brian Monahan, Margaret West. Contributors to this issue: Jonathan Bowen, Andrew Johnstone, Keith Lines, Brian Monahan, John Tucker, Glynn Winskel BCS-FACS websites BCS: http://www.bcs-facs.org LinkedIn: https://www.linkedin.com/groups/2427579/ Facebook: http://www.facebook.com/pages/BCS-FACS/120243984688255 Wikipedia: http://en.wikipedia.org/wiki/BCS-FACS If you have any questions about BCS-FACS, please send these to Jonathan Bowen at [email protected]. 2 FACS FACTS Issue 2021-2 July 2021 Editorial Dear readers, Welcome to the 2021-2 issue of the FACS FACTS Newsletter. A theme for this issue is suggested by the thought that it is just over 50 years since the birth of Domain Theory1.
    [Show full text]
  • Objective Metatheory of Cubical Type Theories (Thesis Proposal) Jonathan Sterling August 15, 2020
    Objective Metatheory of Cubical Type Theories (thesis proposal) Jonathan Sterling August 15, 2020 School of Computer Science Carnegie Mellon University Pittsburgh, PA 15213 Thesis Committee: Robert Harper, Chair Lars Birkedal Jeremy Avigad Karl Crary Favonia Submitted in partial fulfillment of the requirements for the degree of Doctor of Philosophy. Copyright © 2020 Jonathan Sterling I gratefully acknowledge the support of the Air Force Office of Scientific Research through MURI grant FA9550-15-1-0053. Any opinions, findings and conclusions or recommendations expressed in this material are those of the author and do not necessarily reflect the views of the AFOSR. Contents 1 Introduction 1 1.1 Computation in dependent type theory ................. 1 1.2 Syntactic, phenomenal, and semantic aspects of equality . 3 1.3 Subjective metatheory: the mathematics of formalisms . 6 1.4 Objective metatheory: a syntax-invariant perspective . 6 1.5 Towards principled implementation of proof assistants . 20 1.6 Thesis Statement ............................. 20 1.7 Acknowledgments ............................. 21 2 Background and Prior Work 23 2.1 RedPRL: a program logic for cubical type theory . 23 2.2 The redtt proof assistant ......................... 28 2.3 XTT: cubical equality and gluing .................... 39 3 Proposed work 45 3.1 Algebraic model theory .......................... 46 3.2 Contexts and injective renamings .................... 46 3.3 Characterizing normal forms ....................... 48 3.4 Normalization of cartesian cubical type theory . 49 3.5 redtt reloaded: abstract elaboration ................... 50 3.6 Timeline and fallback positions ..................... 50 A redtt: supplementary materials 51 A.1 The RTT core language ......................... 51 A.2 Normalization by evaluation for RTT . 59 A.3 Elaboration relative to a boundary ..................
    [Show full text]
  • Haskell Communities and Activities Report
    Haskell Communities and Activities Report http://www.haskell.org/communities/ Eighth Edition – May 13, 2005 Andres L¨oh (ed.) Perry Alexander Lloyd Allison Tiago Miguel Laureano Alves Krasimir Angelov Alistair Bayley J´er´emy Bobbio Bj¨orn Bringert Niklas Broberg Paul Callaghan Mark Carroll Manuel Chakravarty Olaf Chitil Koen Claessen Catarina Coquand Duncan Coutts Philippa Cowderoy Alain Cr´emieux Iavor Diatchki Atze Dijkstra Shae Erisson Sander Evers Markus Forsberg Simon Foster Leif Frenzel Andr´eFurtado John Goerzen Murray Gross Walter Gussmann Jurriaan Hage Sven Moritz Hallberg Thomas Hallgren Keith Hanna Bastiaan Heeren Anders H¨ockersten John Hughes Graham Hutton Patrik Jansson Johan Jeuring Paul Johnson Isaac Jones Oleg Kiselyov Graham Klyne Daan Leijen Huiqing Li Andres L¨oh Rita Loogen Salvador Lucas Christoph Luth¨ Ketil Z. Malde Christian Maeder Simon Marlow Conor McBride John Meacham Serge Mechveliani Neil Mitchell William Garret Mitchener Andy Moran Matthew Naylor Rickard Nilsson Jan Henry Nystr¨om Sven Panne Ross Paterson Jens Petersen John Peterson Simon Peyton-Jones Jorge Sousa Pinto Bernie Pope Claus Reinke Frank Rosemeier David Roundy George Russell Chris Ryder David Sabel Uwe Schmidt Martijn Schrage Peter Simons Anthony Sloane Dominic Steinitz Donald Bruce Stewart Martin Sulzmann Autrijus Tang Henning Thielemann Peter Thiemann Simon Thompson Phil Trinder Arjan van IJzendoorn Tuomo Valkonen Eelco Visser Joost Visser Malcolm Wallace Ashley Yakeley Jory van Zessen Bulat Ziganshin Preface You are reading the 8th edition of the Haskell Communities and Activities Report (HCAR). These are interesting times to be a Haskell enthusiast. Everyone seems to be talking about darcs (→ 6.3) and Pugs (→ 6.1) these days, and it is nice to see Haskell being mentioned in places where it usually was not.
    [Show full text]
  • 162581776.Pdf
    View metadata, citation and similar papers at core.ac.uk brought to you by CORE provided by The IT University of Copenhagen's Repository Verification of High-Level Transformations with Inductive Refinement Types Ahmad Salim Al-Sibahi Thomas P. Jensen DIKU/Skanned.com/ITU INRIA Rennes Denmark France Aleksandar S. Dimovski Andrzej Wąsowski ITU/Mother Teresa University, Skopje ITU Denmark/Macedonia Denmark Abstract 1 Introduction High-level transformation languages like Rascal include ex- Transformations play a central role in software development. pressive features for manipulating large abstract syntax trees: They are used, amongst others, for desugaring, model trans- first-class traversals, expressive pattern matching, backtrack- formations, refactoring, and code generation. The artifacts ing and generalized iterators. We present the design and involved in transformations—e.g., structured data, domain- implementation of an abstract interpretation tool, Rabit, for specific models, and code—often have large abstract syn- verifying inductive type and shape properties for transfor- tax, spanning hundreds of syntactic elements, and a corre- mations written in such languages. We describe how to per- spondingly rich semantics. Thus, writing transformations form abstract interpretation based on operational semantics, is a tedious and error-prone process. Specialized languages specifically focusing on the challenges arising when analyz- and frameworks with high-level features have been devel- ing the expressive traversals and pattern matching. Finally, oped to address this challenge of writing and maintain- we evaluate Rabit on a series of transformations (normaliza- ing transformations. These languages include Rascal [28], tion, desugaring, refactoring, code generators, type inference, Stratego/XT [12], TXL [16], Uniplate [31] for Haskell, and etc.) showing that we can effectively verify stated properties.
    [Show full text]
  • Domain-Specific Languages for Modeling and Simulation
    Domain-specifc Languages for Modeling and Simulation Dissertation zur Erlangung des akademischen Grades Doktor-Ingenieur (Dr.-Ing.) der Fakultät für Informatik und Elektrotechnik der Universität Rostock vorgelegt von Tom Warnke, geb. am 25.01.1988 in Malchin aus Rostock Rostock, 14. September 2020 https://doi.org/10.18453/rosdok_id00002966 Dieses Werk ist lizenziert unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 4.0 International Lizenz. Gutachter: Prof. Dr. Adelinde M. Uhrmacher (Universität Rostock) Prof. Rocco De Nicola (IMT Lucca) Prof. Hans Vangheluwe (Universität Antwerpen) Eingereicht am 14. September 2020 Verteidigt am 8. Januar 2021 Abstract Simulation models and simulation experiments are increasingly complex. One way to handle this complexity is developing software languages tailored to specifc application domains, so-called domain-specifc languages (DSLs). This thesis explores the potential of employing DSLs in modeling and simulation. We study diferent DSL design and implementation techniques and illustrate their benefts for expressing simulation models as well as simulation experiments with several examples. Regarding simulation models, we focus on discrete-event models based on continuous- time Markov chains (CTMCs). Most of our work revolves around ML-Rules, an rule-based modeling language for biochemical reaction networks. First, we relate the expressive power of ML-Rules to other currently available modeling languages for this application domain. Then we defne the abstract syntax and operational semantics for ML-Rules, mapping models to CTMCs in an unambiguous and precise way. Based on the formal defnitions, we present two approaches to implement ML-Rules as a DSL. The core of both implementations is fnding the matches for the patterns on the left side of ML-Rules’ rules.
    [Show full text]
  • Good Neighbours, an Inquiry Into Australia's Relationship with Indonesia
    The Parliament of the Commonwealth of Australia Near Neighbours – Good Neighbours An Inquiry into Australia’s Relationship with Indonesia Joint Standing Committee on Foreign Affairs Defence and Trade Foreign Affairs Sub Committee May 2004 Canberra © Commonwealth of Australia 2004 ISBN 0 642 78464 7 Contents Foreword...................................................................................................................................................vii Membership of the Committee................................................................................................................. ix Membership of the Foreign Affairs Sub-Committee ................................................................................ x Terms of reference..................................................................................................................................xiii List of abbreviations ................................................................................................................................xv List of recommendations........................................................................................................................ xix 1 Australia’s relationship with Indonesia —a rich and complex tapestry.......... 1 Introduction.....................................................................................................................................1 Importance of Indonesia to Australia ..........................................................................................2 Importance
    [Show full text]
  • First-Class Type Classes
    First-Class Type Classes Matthieu Sozeau1 and Nicolas Oury2 1 Univ. Paris Sud, CNRS, Laboratoire LRI, UMR 8623, Orsay, F-91405 INRIA Saclay, ProVal, Parc Orsay Universit´e, F-91893 [email protected] 2 University of Nottingham [email protected] Abstract. Type Classes have met a large success in Haskell and Is- abelle, as a solution for sharing notations by overloading and for spec- ifying with abstract structures by quantification on contexts. However, both systems are limited by second-class implementations of these con- structs, and these limitations are only overcomed by ad-hoc extensions to the respective systems. We propose an embedding of type classes into a dependent type theory that is first-class and supports some of the most popular extensions right away. The implementation is correspond- ingly cheap, general and integrates well inside the system, as we have experimented in Coq. We show how it can be used to help structured programming and proving by way of examples. 1 Introduction Since its introduction in programming languages [1], overloading has met an important success and is one of the core features of object–oriented languages. Overloading allows to use a common name for different objects which are in- stances of the same type schema and to automatically select an instance given a particular type. In the functional programming community, overloading has mainly been introduced by way of type classes, making ad-hoc polymorphism less ad hoc [17]. A type class is a set of functions specified for a parametric type but defined only for some types.
    [Show full text]
  • How Fremantlemedia Australia's Daily Soap Won the Hearts of Millions Of
    week 12 / 19 March 2015 AN AUSTRALIAN ICON How FremantleMedia Australia’s daily soap won the hearts of millions of viewers over three decades Luxembourg Luxembourg Croatia Guillaume de Posch RTL Group named RTL Hrvatska delivers keynote speech ‘Luxembourg’s launches three at the Cable Congress most attractive new pay channels Employer’ week 12 / 19 March 2015 AN AUSTRALIAN ICON How FremantleMedia Australia’s daily soap won the hearts of millions of viewers over three decades Luxembourg Luxembourg Croatia Guillaume de Posch RTL Group named RTL Hrvatska delivers keynote speech ‘Luxembourg’s launches three at the Cable Congress most attractive new pay channels Employer’ Cover Neighbours 30 years Publisher RTL Group 45, Bd Pierre Frieden L-1543 Luxembourg Editor, Design, Production RTL Group Corporate Communications & Marketing k before y hin ou T p r in t backstage.rtlgroup.com backstage.rtlgroup.fr backstage.rtlgroup.de QUICK VIEW “We have the content; you have the distribution pipeline” RTL Group “One of the most iconic p.10–11 programmes ever to be produced in Australia” RTL Group once FremantleMedia Australia again ‘Luxembourg’s p.4–9 Most Attractive Employer’ RTL Group p.12 Crime, Passion and Living enrich RTL Group’s family of channels in Croatia RTL Hrvatska p.13 An enriched listening experience, thanks to Big Picture ‘Shazam for Radio’ p.15 IP France p.14 SHORT NEWS p.16–17 PEOPLE p.18 “ONE OF THE MOST On 18 March 2015, the FremantleMedia Australia (FMA) production ICONIC PROGRAMMES Neighbours turned 30. Backstage looks back EVER TO BE PRODUCED at the success of this long-running soap.
    [Show full text]
  • Europe's Dark Cloud Report
    EuropE’s dark cloud How coal-burning countriEs arE making tHEir nEigHbours sick EuropE’s dark How coal-burning countriEs arE making tHEir cloud nEigHbours sick The content of this report was researched and written by Dave Jones from Sandbag, Julia Huscher from Health and Environment Alliance (HEAL), Lauri Myllyvirta and Rosa Gierens from Greenpeace, Joanna Flisowska and Kathrin Gutmann from Climate Action Network (CAN) Europe, Darek Urbaniak and Sarah Azau from WWF European Policy Office. The health impact methodology used in this report was drawn up by HEAL and Greenpeace. It is guided by recommendations from the World Health Organization Europe’s ‘Health risks of air pollution in Europe’ (HRAPIE) project on health impact assessments for air pollution. It includes atmospheric modelling with the European Monitoring and Evaluation Programme Meteorological Synthesizing Centre - West (EMEP MSC-W) computer model, which is also used by the European Environment Agency for assessments of health impacts from air pollution in Europe. The methodology and calculations have been peer reviewed by Dr Mike Holland, Ecometrics Research and Consulting. They are based on publicly available, relevant data known of by the authors; this data may not be exhaustive and there may exist further or updated information they were not aware of at the time of writing. Graphic design: OneHemisphere Edited by WWF European Policy Office and CAN Europe. Published in June 2016 by WWF European Policy Office, Sandbag, CAN Europe and HEAL in Brussels, Belgium. Any reproduction in full or in parts must mention the title and credit the above-mentioned publishers as the copyright owners.
    [Show full text]