A Logic for Parametric Polymorphism
Total Page:16
File Type:pdf, Size:1020Kb
Load more
Recommended publications
-
Proving Termination of Evaluation for System F with Control Operators
Proving termination of evaluation for System F with control operators Małgorzata Biernacka Dariusz Biernacki Sergue¨ıLenglet Institute of Computer Science Institute of Computer Science LORIA University of Wrocław University of Wrocław Universit´ede Lorraine [email protected] [email protected] [email protected] Marek Materzok Institute of Computer Science University of Wrocław [email protected] We present new proofs of termination of evaluation in reduction semantics (i.e., a small-step opera- tional semantics with explicit representation of evaluation contexts) for System F with control oper- ators. We introduce a modified version of Girard’s proof method based on reducibility candidates, where the reducibility predicates are defined on values and on evaluation contexts as prescribed by the reduction semantics format. We address both abortive control operators (callcc) and delimited- control operators (shift and reset) for which we introduce novel polymorphic type systems, and we consider both the call-by-value and call-by-name evaluation strategies. 1 Introduction Termination of reductions is one of the crucial properties of typed λ-calculi. When considering a λ- calculus as a deterministic programming language, one is usually interested in termination of reductions according to a given evaluation strategy, such as call by value or call by name, rather than in more general normalization properties. A convenient format to specify such strategies is reduction semantics, i.e., a form of operational semantics with explicit representation of evaluation (reduction) contexts [14], where the evaluation contexts represent continuations [10]. Reduction semantics is particularly convenient for expressing non-local control effects and has been most successfully used to express the semantics of control operators such as callcc [14], or shift and reset [5]. -
Biology, Bioinformatics, Bioengineering, Biophysics, Biostatistics, Neuroscience, Medicine, Ophthalmology, and Dentistry
Biology, Bioinformatics, Bioengineering, Biophysics, Biostatistics, Neuroscience, Medicine, Ophthalmology, and Dentistry This section contains links to textbooks, books, and articles in digital libraries of several publishers (Springer, Elsevier, Wiley, etc.). Most links will work without login on any campus (or remotely using the institution’s VPN) where the institution (company) subscribes to those digital libraries. For De Gruyter and the associated university presses (Chicago, Columbia, Harvard, Princeton, Yale, etc.) you may have to go through your institution’s library portal first. A red title indicates an excellent item, and a blue title indicates a very good (often introductory) item. A purple year of publication is a warning sign. Titles of Open Access (free access) items are colored green. The library is being converted to conform to the university virtual library model that I developed. This section of the library was updated on 06 September 2021. Professor Joseph Vaisman Computer Science and Engineering Department NYU Tandon School of Engineering This section (and the library as a whole) is a free resource published under Attribution-NonCommercial-NoDerivatives 4.0 International license: You can share – copy and redistribute the material in any medium or format under the following terms: Attribution, NonCommercial, and NoDerivatives. https://creativecommons.org/licenses/by-nc-nd/4.0/ Copyright 2021 Joseph Vaisman Table of Contents Food for Thought Biographies Biology Books Articles Web John Tyler Bonner Morphogenesis Evolution -
Lecture Notes on Types for Part II of the Computer Science Tripos
Q Lecture Notes on Types for Part II of the Computer Science Tripos Prof. Andrew M. Pitts University of Cambridge Computer Laboratory c 2016 A. M. Pitts Contents Learning Guide i 1 Introduction 1 2 ML Polymorphism 6 2.1 Mini-ML type system . 6 2.2 Examples of type inference, by hand . 14 2.3 Principal type schemes . 16 2.4 A type inference algorithm . 18 3 Polymorphic Reference Types 25 3.1 The problem . 25 3.2 Restoring type soundness . 30 4 Polymorphic Lambda Calculus 33 4.1 From type schemes to polymorphic types . 33 4.2 The Polymorphic Lambda Calculus (PLC) type system . 37 4.3 PLC type inference . 42 4.4 Datatypes in PLC . 43 4.5 Existential types . 50 5 Dependent Types 53 5.1 Dependent functions . 53 5.2 Pure Type Systems . 57 5.3 System Fw .............................................. 63 6 Propositions as Types 67 6.1 Intuitionistic logics . 67 6.2 Curry-Howard correspondence . 69 6.3 Calculus of Constructions, lC ................................... 73 6.4 Inductive types . 76 7 Further Topics 81 References 84 Learning Guide These notes and slides are designed to accompany 12 lectures on type systems for Part II of the Cambridge University Computer Science Tripos. The course builds on the techniques intro- duced in the Part IB course on Semantics of Programming Languages for specifying type systems for programming languages and reasoning about their properties. The emphasis here is on type systems for functional languages and their connection to constructive logic. We pay par- ticular attention to the notion of parametric polymorphism (also known as generics), both because it has proven useful in practice and because its theory is quite subtle. -
Design and Implementation of Generics for the .NET Common Language Runtime
Design and Implementation of Generics for the .NET Common Language Runtime Andrew Kennedy Don Syme Microsoft Research, Cambridge, U.K. fakeÒÒ¸d×ÝÑeg@ÑicÖÓ×ÓfغcÓÑ Abstract cally through an interface definition language, or IDL) that is nec- essary for language interoperation. The Microsoft .NET Common Language Runtime provides a This paper describes the design and implementation of support shared type system, intermediate language and dynamic execution for parametric polymorphism in the CLR. In its initial release, the environment for the implementation and inter-operation of multiple CLR has no support for polymorphism, an omission shared by the source languages. In this paper we extend it with direct support for JVM. Of course, it is always possible to “compile away” polymor- parametric polymorphism (also known as generics), describing the phism by translation, as has been demonstrated in a number of ex- design through examples written in an extended version of the C# tensions to Java [14, 4, 6, 13, 2, 16] that require no change to the programming language, and explaining aspects of implementation JVM, and in compilers for polymorphic languages that target the by reference to a prototype extension to the runtime. JVM or CLR (MLj [3], Haskell, Eiffel, Mercury). However, such Our design is very expressive, supporting parameterized types, systems inevitably suffer drawbacks of some kind, whether through polymorphic static, instance and virtual methods, “F-bounded” source language restrictions (disallowing primitive type instanti- type parameters, instantiation at pointer and value types, polymor- ations to enable a simple erasure-based translation, as in GJ and phic recursion, and exact run-time types. -
Submission Data for 2020-2021 CORE Conference Ranking Process International Conference on Mathematical Foundations of Programming Semantics
Submission Data for 2020-2021 CORE conference Ranking process International Conference on Mathematical Foundations of Programming Semantics Bartek Klin Conference Details Conference Title: International Conference on Mathematical Foundations of Programming Semantics Acronym : MFPS Requested Rank Rank: B Primarily CS Is this conference primarily a CS venue: True Location Not commonly held within a single country, set of countries, or region. DBLP Link DBLP url: https://dblp.org/db/conf/mfps/index.html FoR Codes For1: 4613 For2: SELECT For3: SELECT Recent Years Proceedings Publishing Style Proceedings Publishing: journal Link to most recent proceedings: https://www.sciencedirect.com/journal/electronic-notes-in-theoretical-computer-science/vol/347/suppl/C Further details: Proceedings published as volumes of Electronic Notes in Theoretical Computer Science, published by Elsevier. Most Recent Years Most Recent Year Year: 2019 URL: https://www.coalg.org/calco-mfps-2019/mfps/ Location: London, UK Papers submitted: 20 Papers published: 15 Acceptance rate: 75 Source for numbers: https://www.coalg.org/calco-mfps-2019/mfps/mfps-xxxv-list-of-accepted-papers/ General Chairs 1 No General Chairs Program Chairs Name: Barbara KÃűnig Affiliation: University of Duisburg-Essen, Germany Gender: F H Index: 27 GScholar url: https://scholar.google.com/citations?user=bcM7IuEAAAAJ DBLP url: Second Most Recent Year Year: 2018 URL: https://www.mathstat.dal.ca/mfps2018/ Location: Halifax, Canada Papers submitted: 24 Papers published: 16 Acceptance rate: 67 Source for -
Part I Background
Cambridge University Press 978-0-521-19746-5 - Transitions and Trees: An Introduction to Structural Operational Semantics Hans Huttel Excerpt More information PART I BACKGROUND © in this web service Cambridge University Press www.cambridge.org Cambridge University Press 978-0-521-19746-5 - Transitions and Trees: An Introduction to Structural Operational Semantics Hans Huttel Excerpt More information 1 A question of semantics The goal of this chapter is to give the reader a glimpse of the applications and problem areas that have motivated and to this day continue to inspire research in the important area of computer science known as programming language semantics. 1.1 Semantics is the study of meaning Programming language semantics is the study of mathematical models of and methods for describing and reasoning about the behaviour of programs. The word semantics has Greek roots1 and was first used in linguistics. Here, one distinguishes among syntax, the study of the structure of lan- guages, semantics, the study of meaning, and pragmatics, the study of the use of language. In computer science we make a similar distinction between syntax and se- mantics. The languages that we are interested in are programming languages in a very general sense. The ‘meaning’ of a program is its behaviour, and for this reason programming language semantics is the part of programming language theory devoted to the study of program behaviour. Programming language semantics is concerned only with purely internal aspects of program behaviour, namely what happens within a running pro- gram. Program semantics does not claim to be able to address other aspects of program behaviour – e.g. -
The System F of Variable Types, Fifteen Years Later
Theoretical Computer Science 45 (1986) 159-192 159 North-Holland THE SYSTEM F OF VARIABLE TYPES, FIFTEEN YEARS LATER Jean-Yves GIRARD Equipe de Logique Mathdmatique, UA 753 du CNRS, 75251 Paris Cedex 05, France Communicated by M. Nivat Received December 1985 Revised March 1986 Abstract. The semantic study of system F stumbles on the problem of variable types for which there was no convincing interpretation; we develop here a semantics based on the category-theoretic idea of direct limit, so that the behaviour of a variable type on any domain is determined by its behaviour on finite ones, thus getting rid of the circularity of variable types. To do so, one has first to simplify somehow the extant semantic ideas, replacing Scott domains by the simpler and more finitary qualitative domains. The interpretation obtained is extremely compact, as shown on simple examples. The paper also contains the definitions of a very small 'universal model' of lambda-calculus, and investigates the concept totality. Contents Introduction ................................... 159 1. Qualitative domains and A-structures ........................ 162 2. Semantics of variable types ............................ 168 3. The system F .................................. 174 3.1. The semantics of F: Discussion ........................ 177 3.2. Case of irrt ................................. 182 4. The intrinsic model of A-calculus .......................... 183 4.1. Discussion about t* ............................. 183 4.2. Final remarks ............................... -
Parametric Polymorphism Parametric Polymorphism
Parametric Polymorphism Parametric Polymorphism • is a way to make a language more expressive, while still maintaining full static type-safety (every Haskell expression has a type, and types are all checked at compile-time; programs with type errors will not even compile) • using parametric polymorphism, a function or a data type can be written generically so that it can handle values identically without depending on their type • such functions and data types are called generic functions and generic datatypes Polymorphism in Haskell • Two kinds of polymorphism in Haskell – parametric and ad hoc (coming later!) • Both kinds involve type variables, standing for arbitrary types. • Easy to spot because they start with lower case letters • Usually we just use one letter on its own, e.g. a, b, c • When we use a polymorphic function we will usually do so at a specific type, called an instance. The process is called instantiation. Identity function Consider the identity function: id x = x Prelude> :t id id :: a -> a It does not do anything with the input other than returning it, therefore it places no constraints on the input's type. Prelude> :t id id :: a -> a Prelude> id 3 3 Prelude> id "hello" "hello" Prelude> id 'c' 'c' Polymorphic datatypes • The identity function is the simplest possible polymorphic function but not very interesting • Most useful polymorphic functions involve polymorphic types • Notation – write the name(s) of the type variable(s) used to the left of the = symbol Maybe data Maybe a = Nothing | Just a • a is the type variable • When we instantiate a to something, e.g. -
An Introduction to Logical Relations Proving Program Properties Using Logical Relations
An Introduction to Logical Relations Proving Program Properties Using Logical Relations Lau Skorstengaard [email protected] Contents 1 Introduction 2 1.1 Simply Typed Lambda Calculus (STLC) . .2 1.2 Logical Relations . .3 1.3 Categories of Logical Relations . .5 2 Normalization of the Simply Typed Lambda Calculus 5 2.1 Strong Normalization of STLC . .5 2.2 Exercises . 10 3 Type Safety for STLC 11 3.1 Type safety - the classical treatment . 11 3.2 Type safety - using logical predicate . 12 3.3 Exercises . 15 4 Universal Types and Relational Substitutions 15 4.1 System F (STLC with universal types) . 16 4.2 Contextual Equivalence . 19 4.3 A Logical Relation for System F . 20 4.4 Exercises . 28 5 Existential types 29 6 Recursive Types and Step Indexing 34 6.1 A motivating introduction to recursive types . 34 6.2 Simply typed lambda calculus extended with µ ............ 36 6.3 Step-indexing, logical relations for recursive types . 37 6.4 Exercises . 41 1 1 Introduction The term logical relations stems from Gordon Plotkin’s memorandum Lambda- definability and logical relations written in 1973. However, the spirit of the proof method can be traced back to Wiliam W. Tait who used it to show strong nor- malization of System T in 1967. Names are a curious thing. When I say “chair”, you immediately get a picture of a chair in your head. If I say “table”, then you picture a table. The reason you do this is because we denote a chair by “chair” and a table by “table”, but we might as well have said “giraffe” for chair and “Buddha” for table. -
CSE 307: Principles of Programming Languages Classes and Inheritance
OOP Introduction Type & Subtype Inheritance Overloading and Overriding CSE 307: Principles of Programming Languages Classes and Inheritance R. Sekar 1 / 52 OOP Introduction Type & Subtype Inheritance Overloading and Overriding Topics 1. OOP Introduction 3. Inheritance 2. Type & Subtype 4. Overloading and Overriding 2 / 52 OOP Introduction Type & Subtype Inheritance Overloading and Overriding Section 1 OOP Introduction 3 / 52 OOP Introduction Type & Subtype Inheritance Overloading and Overriding OOP (Object Oriented Programming) So far the languages that we encountered treat data and computation separately. In OOP, the data and computation are combined into an “object”. 4 / 52 OOP Introduction Type & Subtype Inheritance Overloading and Overriding Benefits of OOP more convenient: collects related information together, rather than distributing it. Example: C++ iostream class collects all I/O related operations together into one central place. Contrast with C I/O library, which consists of many distinct functions such as getchar, printf, scanf, sscanf, etc. centralizes and regulates access to data. If there is an error that corrupts object data, we need to look for the error only within its class Contrast with C programs, where access/modification code is distributed throughout the program 5 / 52 OOP Introduction Type & Subtype Inheritance Overloading and Overriding Benefits of OOP (Continued) Promotes reuse. by separating interface from implementation. We can replace the implementation of an object without changing client code. Contrast with C, where the implementation of a data structure such as a linked list is integrated into the client code by permitting extension of new objects via inheritance. Inheritance allows a new class to reuse the features of an existing class. -
Estonian Academy of Sciences Yearbook 2018 XXIV
Facta non solum verba ESTONIAN ACADEMY OF SCIENCES YEARBOOK FACTS AND FIGURES ANNALES ACADEMIAE SCIENTIARUM ESTONICAE XXIV (51) 2018 TALLINN 2019 This book was compiled by: Jaak Järv (editor-in-chief) Editorial team: Siiri Jakobson, Ebe Pilt, Marika Pärn, Tiina Rahkama, Ülle Raud, Ülle Sirk Translator: Kaija Viitpoom Layout: Erje Hakman Photos: Annika Haas p. 30, 31, 48, Reti Kokk p. 12, 41, 42, 45, 46, 47, 49, 52, 53, Janis Salins p. 33. The rest of the photos are from the archive of the Academy. Thanks to all authos for their contributions: Jaak Aaviksoo, Agnes Aljas, Madis Arukask, Villem Aruoja, Toomas Asser, Jüri Engelbrecht, Arvi Hamburg, Sirje Helme, Marin Jänes, Jelena Kallas, Marko Kass, Meelis Kitsing, Mati Koppel, Kerri Kotta, Urmas Kõljalg, Jakob Kübarsepp, Maris Laan, Marju Luts-Sootak, Märt Läänemets, Olga Mazina, Killu Mei, Andres Metspalu, Leo Mõtus, Peeter Müürsepp, Ülo Niine, Jüri Plado, Katre Pärn, Anu Reinart, Kaido Reivelt, Andrus Ristkok, Ave Soeorg, Tarmo Soomere, Külliki Steinberg, Evelin Tamm, Urmas Tartes, Jaana Tõnisson, Marja Unt, Tiit Vaasma, Rein Vaikmäe, Urmas Varblane, Eero Vasar Printed in Priting House Paar ISSN 1406-1503 (printed version) © EESTI TEADUSTE AKADEEMIA ISSN 2674-2446 (web version) CONTENTS FOREWORD ...........................................................................................................................................5 CHRONICLE 2018 ..................................................................................................................................7 MEMBERSHIP -
From Semantics to Dialectometry
Contents Preface ix Subjunctions as discourse markers? Stancetaking on the topic ‘insubordi- nate subordination’ Werner Abraham Two-layer networks, non-linear separation, and human learning R. Harald Baayen & Peter Hendrix John’s car repaired. Variation in the position of past participles in the ver- bal cluster in Duth Sjef Barbiers, Hans Bennis & Lote Dros-Hendriks Perception of word stress Leonor van der Bij, Dicky Gilbers & Wolfgang Kehrein Empirical evidence for discourse markers at the lexical level Jelke Bloem Verb phrase ellipsis and sloppy identity: a corpus-based investigation Johan Bos 7 7 Om-omission Gosse Bouma 8 Neural semantics Harm Brouwer, Mathew W. Crocker & Noortje J. Venhuizen 7 9 Liberating Dialectology J. K. Chambers 8 0 A new library for construction of automata Jan Daciuk 9 Generating English paraphrases from logic Dan Flickinger 99 Contents Use and possible improvement of UNESCO’s Atlas of the World’s Lan- guages in Danger Tjeerd de Graaf 09 Assessing smoothing parameters in dialectometry Jack Grieve 9 Finding dialect areas by means of bootstrap clustering Wilbert Heeringa 7 An acoustic analysis of English vowels produced by speakers of seven dif- ferent native-language bakgrounds Vincent J. van Heuven & Charlote S. Gooskens 7 Impersonal passives in German: some corpus evidence Erhard Hinrichs 9 7 In Hülle und Fülle – quantiication at a distance in German, Duth and English Jack Hoeksema 9 8 he interpretation of Duth direct speeh reports by Frisian-Duth bilin- guals Franziska Köder, J. W. van der Meer & Jennifer Spenader 7 9 Mining for parsing failures Daniël de Kok & Gertjan van Noord 8 0 Looking for meaning in names Stasinos Konstantopoulos 9 Second thoughts about the Chomskyan revolution Jan Koster 99 Good maps William A.