Extending the Lambda Calculus: An Eager Functional Language
|
|
- Thomas Francis
- 6 years ago
- Views:
Transcription
1 Syntax of the basic constructs: Extending the Lambda Calculus: An Eager Functional Language canonical forms z cfm ::= intcfm boolcfm funcfm tuplecfm altcfm intcfm ::= boolcfm ::= boolconst funcfm ::= λvar. exp tuplecfm ::= cfm,... cfm altcfm tag cfm boolconst ::= true false natconst ::= expressions e exp ::= natconst -exp exp + exp... boolconst exp exp exp... if exp then exp else exp funcfm var exp exp exp,... exp tag exp sumcase exp of (exp,... exp) error typeerror labels (tags) k tag ::= natconst
2 Syntactic Sugar: Definitions and Patterns Syntax of derived forms: funcfm ::=... λpat. exp exp ::=... let pat exp,... pat exp in exp patterns p pat ::= var pat,... pat Semantics of the derived forms: let p 1 e 1,... p n e n in e Example: λ p 0,... p n 1. e def = (λp λp n. e) e 1... e n def = λv. let p 0 v.0,... p n 1 v. n 1 in e where v / F V (e) let x, y 1, 2 in x+y = (λ x, y. x+y) 1, 2 = (λz. let x z.0, y z.1 in x+y) 1, 2 = (λz. (λx. λy. x+y) (z.0) (z.1)) 1, 2
3 Semantics of the Basic Constructs z z e i -e i e i e i e + e i + i e true e z if e then e else e z e λv. e 0 e z (e 0 /v z ) z e e z e b e b e b e b e e b b e false e z if e then e else e z e 1 z 1... e n z n e 1,... e n z 1,... z n e z 0,... z n 1 e.k z k if k < n e k k z k z e k z z sumcase e of (e 0,... e n 1 ) z if k < n
4 Recursion In the untyped language we can define recursive functions using the (eager) fixed-point combinator Y v. But in a simple typing discipline Y v is not typable. One solution: a special construct for recursive definitions: exp ::=... letrec var λpat. exp,... var λpat. exp in exp with the reduction rule Syntactic sugar: (λv λv n 1. e) (λu 0. e 0 )... (λu n 1. e n 1 ) z letrec v 0 λu 0. e 0,... v n 1 λu n 1. e n 1 in e z where e def i = letrec v 0 λu 0. e 0,... v n 1 λu n 1. e n 1 in e i and {v 0,...} {u 0,...} = {} letrec v 0 p 0 e 0,... in e def = letrec v 0 λp 0. e 0,... in e
5 Programming in the Eager Functional Language Recall the reduction rule for letrec: (λv λv n 1. e) (λu 0. e 0 )... (λu n 1. e n 1 ) z letrec v 0 λu 0. e 0,... v n 1 λu n 1. e n 1 in e z where e def i = letrec v 0 λu 0. e 0,... v n 1 λu n 1. e n 1 in e i and {v 0,...} {u 0,...} = {}
6 An Example: Generating a List letrec f λn. if n = n, f (n-1) }{{} e (λf. f 3) (λn. letrec f λn. e in e) (λn. letrec f λn. e in e) 3 in f 3 letrec f λn. e in if 3 = , f (3-1) (λf. if 3 = , f (3-1) ) (λn. letrec f λn. e in e) if 3 = , (λn. letrec f λn. e in e) 1 3, (λn. letrec f λn. e in e)
7 Derived Data Types: Lists Following Standard ML s syntax for lists... e 1 ::e 2 ::... ::e n ::nil case e of nil => e x::xs => e... we can extend the language with exp ::=... nil exp::exp constructors listcase exp of (exp, exp) deconstructor cfm ::= nil cfm::cfm
8 Evaluation semantics: Semantics and Encoding of Lists nil nil e nil e z listcase e of (e, e ) z e 1 z 1 e 2 z 2 e 1 ::e 2 z 1 ::z 2 e z 1 ::z 2 e z 1, z 2 z listcase e of (e, e ) z Encoding of lists in terms of products and sums: nil def 0 e 1 ::e 2 def 1 e 1, e 2 listcase e of (e, e ) def = sumcase e of (λ. e, e ) Note: LISP-style languages define a tester null? and deconstructors car and cdr but car and cdr are not well-defined on nil.
9 List Processing Some functions from the list libraries of ML and Haskell expressed in our eager functional language: letrec append λxs. λys. listcase xs of (ys, λ x, xs. x::append xs ys) in letrec map λf. λxs. listcase xs of (nil, λ x, xs. f x::map f xs ) in letrec foldr λf. λz. λxs. listcase xs of (z, λ x, xs. f x (foldr f z xs )) in letrec revappend λxs. λys. listcase xs of (ys, λ x, xs. revappend xs (x::ys)) in let map λf. foldr (λx. λys. f x::ys) nil, append λxs. λys. foldr (λz. λzs. z::zs) ys xs, rev λxs. revappend xs nil, append λxs. revappend (rev xs) in...
10 Direct Denotational Semantics Let the predomain of values be V φ ψ V int + V bool + V fun + V tup + V alt, where V int = Z V bool = B V fun = [V V ] V tup = n=0 V n V alt = N V with injections and the domain of results is V = (V + {error, typeerror}) : ι norm = ι ι 0 [V V ] err = ι (ι 1 error) V tyerr = ι (ι 1 typeerror) V ι int = ψ ι 0 [V int V ] ι bool = ψ ι 1 [V bool V ] ι fun = ψ ι 2 [V fun V ] ι tup = ψ ι 3 [V tup V ] ι alt = ψ ι 4 [V alt V ] Then [[ ]] exp E V, where E = var V is the predomain of environments: [[error]]η = err [[typeerror]]η = tyerr [[ n ]]η = ι norm (ι int n)
11 Direct Denotational Semantics cont d [[-e]]η = (λn Z. ι norm (ι int ( n))) int ([[e]]η) f int def = (f int ) where the lift ( ) from [V V ] to [V V ] is f (ι norm z) = f z f err = err f tyerr = tyerr and we define a type-checking lift ( ) int of functions from [V int V ] to [V V ]: f int (ι int n) = f n f int z = tyerr for other z V ( ) bool, ( ) fun, ( ) tup, and ( ) alt are defined similarly, and from them ( ) bool etc.
12 Denotational Semantics of Binary Operations [[e+e ]]η = ( λn Z. (λn Z. ι norm (ι int (n + n ))) int ([[e ]]η) ) int ([[e]]η) Note: this semantics evaluates e+e from left to right the symmetry of + from the expression language is broken either of e and e may fail (err or tyerr) or diverge If [[e]]η = and [[e]] η = tyerr, then [[e+e ]]η = [[e +e]]η = tyerr
13 Runtime Errors One approach to introducing types: Consider sets of values closed under the semantics of certain language constructs, e.g. integers are closed under the semantics of +, -, *. But operations like the division are not defined on all values in a type. We could consider more fine-grained types, e.g. the set { n, n n Z, n Z {0}}, but a type system which infers them would be undecidable. The prevailing approach is to defer the check for definedness until run time, and signal an error if undefined: [[e e ]]η = (λn Z. (λn Z. if n = 0 then err else ι norm (ι int (n n ))) int ([[e ]]η)) int ([[e]]η)
14 Functions, Tuples, Alternatives [[v]]η = ι norm (η v) [[e e ]]η = (λf [V fun V ]. (λz V. f z) ([[e ]]η)) fun ([[e]]η) [[λv. e]]η = ι norm (ι fun (λz V. [[e]][η v : z])) [[ e 1,... e n ]]η = (λz 1 V.... (λz n V. ι norm (ι tup z 1,... z n )) ([[e n ]]η)... ) ([[e 1 ]]η) [[e.k]]η = (λz V. if k dom z then ι norm (z k) else tyerr) tup ([[e]]η) [[@ k e]]η = (λz V. ι norm (ι alt k, z )) ([[e]]η) [[sumcase e of (e 0,... e n 1 )]]η = (λ k, z N V. if k < n then (λf [V V ]. f z) fun ([[e k ]]η)
15 The reduction rule for letrec Semantics of letrec (λv λv n 1. e) (λu 0. e 0 )... (λu n 1. e n 1 ) z letrec v 0 λu 0. e 0,... v n 1 λu n 1. e n 1 in e z where e def i = letrec v 0 λu 0. e 0,... v n 1 λu n 1. e n 1 in e i and {v 0,...} {u 0,...} = {} suggests that the semantic equation is [[letrec v 1 λu 1. e 1,... v n λu n. e n in e]]η = [[e]]η where η = [η v 1 : [[λu 1. e 1 ]]η... v n : [[λu n. e n ]]η ] The last equation is ill-formed: η E = var V, while [[λu 1. e 1 ]]η V, however the r.h.sides are restricted syntactically to be values, and [[λu i. e i ]]η = ι norm (ι fun (λu i V. [[e i ]][η u i : z])) so we can use directly the corresponding element of V : η = [η v 1 : ι fun (λu 1 V. [[e 1 ]][η u 1 : z])... v n : ι fun (λu n V. [[e n ]][η u n : z])]
16 Semantics of letrec cont d One remaining problem: the equation η = [η v 1 : ι fun (λu 1 V. [[e 1 ]][η u 1 : z])... v n : ι fun (λu n V. [[e n ]][η u n : z])] cannot be solved using the least fixed-point operator Y because E = var V is a predomain, not a domain. But we can break the loop at a different point, where the value is in a domain: in the case of n = 1 f is in V fun, which is a domain, hence η = [η v : ι fun f] where f = λu V. [[e]][η u : z] hence f = λu V. [[e]][η v : ι fun f u : z] f = Y Vfun (λg V fun. λu V. [[e]][η v : ι fun g u : z]).
1 Introduction. 2 Recap The Typed λ-calculus λ. 3 Simple Data Structures
CS 6110 S18 Lecture 21 Products, Sums, and Other Datatypes 1 Introduction In this lecture, we add constructs to the typed λ-calculus that allow working with more complicated data structures, such as pairs,
More informationProgramming Languages
CSE 230: Winter 2010 Principles of Programming Languages Lecture 10: Programming in λ-calculusc l l Ranjit Jhala UC San Diego Review The lambda calculus is a calculus of functions: e := x λx. e e 1 e 2
More informationReview. Principles of Programming Languages. Equality. The Diamond Property. The Church-Rosser Theorem. Corollaries. CSE 230: Winter 2007
CSE 230: Winter 2007 Principles of Programming Languages Lecture 12: The λ-calculus Ranjit Jhala UC San Diego Review The lambda calculus is a calculus of functions: e := x λx. e e 1 e 2 Several evaluation
More informationCS 4110 Programming Languages & Logics. Lecture 16 Programming in the λ-calculus
CS 4110 Programming Languages & Logics Lecture 16 Programming in the λ-calculus 30 September 2016 Review: Church Booleans 2 We can encode TRUE, FALSE, and IF, as: TRUE λx. λy. x FALSE λx. λy. y IF λb.
More informationNormalization by Evaluation
Normalization by Evaluation Andreas Abel Department of Computer Science and Engineering Chalmers and Gothenburg University PhD Seminar in Mathematical Engineering EAFIT University, Medellin, Colombia 9
More informationCS522 - Programming Language Semantics
1 CS522 - Programming Language Semantics Simply Typed Lambda Calculus Grigore Roşu Department of Computer Science University of Illinois at Urbana-Champaign 2 We now discuss a non-trivial extension of
More informationNICTA Advanced Course. Theorem Proving Principles, Techniques, Applications
NICTA Advanced Course Theorem Proving Principles, Techniques, Applications λ 1 CONTENT Intro & motivation, getting started with Isabelle Foundations & Principles Lambda Calculus Higher Order Logic, natural
More informationCSE 505, Fall 2009, Midterm Examination 5 November Please do not turn the page until everyone is ready.
CSE 505, Fall 2009, Midterm Examination 5 November 2009 Please do not turn the page until everyone is ready Rules: The exam is closed-book, closed-note, except for one side of one 85x11in piece of paper
More informationSimply Typed Lambda-Calculi (II)
THEORY AND PRACTICE OF FUNCTIONAL PROGRAMMING Simply Typed Lambda-Calculi (II) Dr. ZHANG Yu Institute of Software, Chinese Academy of Sciences Fall term, 2011 GUCAS, Beijing Introduction PCF Programming
More informationTyping λ-terms. Types. Typed λ-terms. Base Types. The Typing Relation. Advanced Formal Methods. Lecture 3: Simply Typed Lambda calculus
Course 2D1453, 200607 Advanced Formal Methods Lecture 3: Simply Typed Lambda calculus Mads Dam KTH/CSC Some material from B. Pierce: TAPL + some from G. Klein, NICTA Typing λterms The uptyped λcalculus
More informationFormal Methods Lecture 8. (B. Pierce's slides for the book Types and Programming Languages )
Formal Methods Lecture 8 (B. Pierce's slides for the book Types and Programming Languages ) Erasure and Typability Erasure We can transform terms in λ to terms of the untyped lambda-calculus simply by
More informationPrinciples of Programming Languages
Principles of Programming Languages Lecture 03 Theoretical Foundations 1 Domains Semantic model of a data type: semantic domain! Examples: Integer, Natural, Truth-Value Domains D are more than a set of
More informationIntroduction to lambda calculus Part 6
Introduction to lambda calculus Part 6 Antti-Juhani Kaijanaho 2017-02-16 1 Untyped lambda calculus 2 Typed lambda calculi 2.1 Dynamically typed lambda calculus with integers 2.2 A model of Lisp 2.3 Simply
More information1 Problem 1. (20 pts)
CS 336 Programming Languages Homework Solution 4 Winter 2005 Due 2/24/05 1 Problem 1. (20 pts) Do Exercise 18.6.2. We define a meta-operation + on types as follows: If R is a record type with labels given
More informationSimple Type Extensions
Simple Type Extensions Type Systems, Lecture 4 Jevgeni Kabanov Tartu, 14.02.2006 PREVIOUSLY ON TYPE SYSTEMS Lambda Calculus Embedded Booleans and Arithmetical expressions Fixpoints and Recursion Simple
More informationCOMP6463: λ-calculus
COMP6463: λ-calculus 1. Basics Michael Norrish Michael.Norrish@nicta.com.au Canberra Research Lab., NICTA Semester 2, 2015 Outline Introduction Lambda Calculus Terms Alpha Equivalence Substitution Dynamics
More informationSimply Typed Lambda Calculus
Simply Typed Lambda Calculus Language (ver1) Lambda calculus with boolean values t ::= x variable x : T.t abstraction tt application true false boolean values if ttt conditional expression Values v ::=
More informationQuantum Functional Programming Language & Its Denotational Semantics
Quantum Functional Programming Language & Its Denotational Semantics Ichiro Hasuo Dept. Computer Science University of Tokyo Naohiko Hoshino Research Inst. for Math. Sci. Kyoto University Talk based on:
More informationStatic Program Analysis
Static Program Analysis Xiangyu Zhang The slides are compiled from Alex Aiken s Michael D. Ernst s Sorin Lerner s A Scary Outline Type-based analysis Data-flow analysis Abstract interpretation Theorem
More informationλ Slide 1 Content Exercises from last time λ-calculus COMP 4161 NICTA Advanced Course Advanced Topics in Software Verification
Content COMP 4161 NICTA Advanced Course Advanced Topics in Software Verification Toby Murray, June Andronick, Gerwin Klein λ Slide 1 Intro & motivation, getting started [1] Foundations & Principles Lambda
More informationSemantics of Higher-Order Functional Programming
Semantics of Higher-Order Functional Programming Petros Barbagiannis µ λ July 14, 2014 Petros Barbagiannis Semantics of Higher-Order Functional Programming July 14, 2014 1 / 18 Introduction Higher-order
More informationThe Lambda Calculus. Stephen A. Edwards. Fall Columbia University
The Lambda Calculus Stephen A. Edwards Columbia University Fall 2014 Lambda Expressions Function application written in prefix form. Add four and five is (+ 4 5) Evaluation: select a redex and evaluate
More information(2) (15pts) Using Prolog, implement a type-checker for the following small subset of System F:
CS 6371 Advanced Programming Languages Sample Spring 2018 Final Exam This sample final exam is LONGER than a real final exam (to give you more practice problems) and has a medium difficulty level. You
More informationLimitations of OCAML records
Limitations of OCAML records The record types must be declared before they are used; a label e can belong to only one record type (otherwise fun x x.e) would have several incompatible types; we cannot
More informationOn Lists and Other Abstract Data Types in the Calculus of Constructions
On Lists and Other Abstract Data Types in the Calculus of Constructions Jonathan P. Seldin Department of Mathematics Concordia University Montreal, Quebec, Canada seldin@alcor.concordia.ca January 29,
More informationInteroperation for Lazy and Eager Evaluation
Interoperation for Lazy and Eager Evaluation 1 Matthews & Findler New method of interoperation Type safety, observational equivalence & transparency Eager evaluation strategies Lazy vs. eager 2 Lambda
More informationMinimally Strict Polymorphic Functions
Minimally Strict Polymorphic Functions Jan Christiansen Christian-Albrechts-Universität Kiel Institut für Informatik 24098 Kiel, Germany jac@informatik.uni-kiel.de Daniel Seidel Rheinische Friedrich-Wilhelms-Universität
More informationOutline. A recursive function follows the structure of inductively-defined data.
Outline A recursive function follows the structure of inductively-defined data. With lists as our example, we shall study 1. inductive definitions (to specify data) 2. recursive functions (to process data)
More informationCIS 500 Software Foundations Final Exam Answer key December 20, 2004
CIS 500 Software Foundations Final Exam Answer key December 20, 2004 True/False questions For each of the following statements, circle T if the sentence is true or F otherwise. 1. (10 points) (a) T F The
More informationTHE UNIVERSITY OF CALGARY FACULTY OF SCIENCE FINAL EXAMINATION COMPUTER SCIENCE 521
P. 1 of 7 THE UNIVERSITY OF CALGARY FACULTY OF SCIENCE FINAL EXAMINATION COMPUTER SCIENCE 521 December, 2014 Time: 2 hrs. Instructions The exam contains questions totaling 100 points. Answer all questions.
More informationType Systems Winter Semester 2006
Type Systems Winter Semester 2006 Week 7 November 29 November 29, 2006 - version 1.0 Plan PREVIOUSLY: 1. type safety as progress and preservation 2. typed arithmetic expressions 3. simply typed lambda
More informationPrinciples of Program Analysis: Control Flow Analysis
Principles of Program Analysis: Control Flow Analysis Transparencies based on Chapter 3 of the book: Flemming Nielson, Hanne Riis Nielson and Chris Hankin: Principles of Program Analysis. Springer Verlag
More informationTyping-by-encoding. A reductionistic approach to building type systems. François Pottier.
Typing-by-encoding A reductionistic approach to building type systems François Pottier Francois.Pottier@inria.fr Overview What is typing-by-encoding? Encoding exceptions into sums (folklore). Encoding
More informationCS611 Lecture 25 Solving Domain Equations 22 October 2007 Lecturer: Andrew Myers
CS611 Lecture 25 Solving Domain Equations 22 October 2007 Lecturer: Andrew Myers To develop a denotational semantics for a language with recursive types, or to give a denotational semantics for the untyped
More informationOperational Semantics
Operational Semantics Semantics and applications to verification Xavier Rival École Normale Supérieure Xavier Rival Operational Semantics 1 / 50 Program of this first lecture Operational semantics Mathematical
More informationCSE505, Fall 2012, Final Examination December 10, 2012
CSE505, Fall 2012, Final Examination December 10, 2012 Rules: The exam is closed-book, closed-notes, except for one side of one 8.5x11in piece of paper. Please stop promptly at 12:20. You can rip apart
More informationThe lambda calculus with constructors
The lambda calculus with constructors Categorical semantic and Continuations Barbara Petit Focus - Univ. Bologna CaCos 2012 Barbara Petit (Focus - Univ. Bologna) The lambda calculus with constructors 1
More informationLambda Calculus. Andrés Sicard-Ramírez. Semester Universidad EAFIT
Lambda Calculus Andrés Sicard-Ramírez Universidad EAFIT Semester 2010-2 Bibliography Textbook: Hindley, J. R. and Seldin, J. (2008). Lambda-Calculus and Combinators. An Introduction. Cambridge University
More informationCSE 505, Fall 2005, Midterm Examination 8 November Please do not turn the page until everyone is ready.
CSE 505, Fall 2005, Midterm Examination 8 November 2005 Please do not turn the page until everyone is ready. Rules: The exam is closed-book, closed-note, except for one side of one 8.5x11in piece of paper.
More informationLambda-Calculus (I) 2nd Asian-Pacific Summer School on Formal Methods Tsinghua University, August 23, 2010
Lambda-Calculus (I) jean-jacques.levy@inria.fr 2nd Asian-Pacific Summer School on Formal Methods Tsinghua University, August 23, 2010 Plan computation models lambda-notation bound variables conversion
More informationSystem F. Proofs and Types. Bow-Yaw Wang. Academia Sinica. Spring 2012
Proofs and Types System F Bow-Yaw Wang Academia Sinica Spring 2012 The Calculus Types in System F are defined as follows. type variables: X, Y,.... if U and V are types, then U V is a type. if V is a type
More informationCS 6110 Lecture 35 Solving Domain Equations 19 April 2013 Lecturer: Andrew Myers
CS 6110 Lecture 35 Solving Domain Equations 19 April 2013 Lecturer: Andrew Myers To develop a denotational semantics for a language with recursive types, or to give a denotational semantics for the untyped
More informationSolutions to Exercises. Solution to Exercise 2.4. Solution to Exercise 2.5. D. Sabel and M. Schmidt-Schauß 1
D. Sabel and M. Schmidt-Schauß 1 A Solutions to Exercises Solution to Exercise 2.4 We calculate the sets of free and bound variables: FV ((λy.(y x)) (λx.(x y)) (λz.(z x y))) = FV ((λy.(y x)) (λx.(x y)))
More informationSafety Analysis versus Type Inference
Information and Computation, 118(1):128 141, 1995. Safety Analysis versus Type Inference Jens Palsberg palsberg@daimi.aau.dk Michael I. Schwartzbach mis@daimi.aau.dk Computer Science Department, Aarhus
More informationFormal Techniques for Software Engineering: Denotational Semantics
Formal Techniques for Software Engineering: Denotational Semantics Rocco De Nicola IMT Institute for Advanced Studies, Lucca rocco.denicola@imtlucca.it May 2013 Lesson 4 R. De Nicola (IMT-Lucca) FoTSE@LMU
More informationModels of computation
Lambda-Calculus (I) jean-jacques.levy@inria.fr 2nd Asian-Pacific Summer School on Formal ethods Tsinghua University, August 23, 2010 Plan computation models lambda-notation bound variables odels of computation
More informationFormal Methods Lecture 6. (B. Pierce's slides for the book Types and Programming Languages )
Formal Methods Lecture 6 (B. Pierce's slides for the book Types and Programming Languages ) This Saturday, 10 November 2018, room 335 (FSEGA), we will recover the following activities: 1 Formal Methods
More informationTyped Arithmetic Expressions
Typed Arithmetic Expressions CS 550 Programming Languages Jeremy Johnson TAPL Chapters 3 and 5 1 Types and Safety Evaluation rules provide operational semantics for programming languages. The rules provide
More informationType Systems. Lecture 2 Oct. 27th, 2004 Sebastian Maneth.
Type Systems Lecture 2 Oct. 27th, 2004 Sebastian Maneth http://lampwww.epfl.ch/teaching/typesystems/2004 Today 1. What is the Lambda Calculus? 2. Its Syntax and Semantics 3. Church Booleans and Church
More informationA Calculus of Definitions
A Calculus of Definitions June 13, 2017 1 Type theory We describe how to implement a core type theory. This is very close to a functional programming language with λ abstraction and data types defined
More informationCMSC 336: Type Systems for Programming Languages Lecture 10: Polymorphism Acar & Ahmed 19 February 2008
CMSC 336: Type Systems for Programming Languages Lecture 10: Polymorphism Acar & Ahmed 19 February 2008 Contents 1 Polymorphism 1 2 Polymorphic λ-calculus: Syntax 1 3 Static Semantics 2 4 Dynamic Semantics
More informationReasoning About Imperative Programs. COS 441 Slides 10b
Reasoning About Imperative Programs COS 441 Slides 10b Last time Hoare Logic: { P } C { Q } Agenda If P is true in the initial state s. And C in state s evaluates to s. Then Q must be true in s. Program
More informationPrincipal types Robustness to program transformations Practice. Type constraints for simple types Type constraints for ML Type inference in ML F
1 Design iml F : an implicity-typed extension of System F Types explained eml F : an explicitly-typed version of iml F 2 Results Principal types Robustness to program transformations Practice 3 Type inference
More informationCategories, Proofs and Programs
Categories, Proofs and Programs Samson Abramsky and Nikos Tzevelekos Lecture 4: Curry-Howard Correspondence and Cartesian Closed Categories In A Nutshell Logic Computation 555555555555555555 5 Categories
More informationExtending Abramsky s Lazy Lambda Calculus: (Non)-Conservativity of Embeddings
Extending Abramsky s Lazy Lambda Calculus: (Non)-Conservativity of Embeddings Manfred Schmidt-Schauß 1, Elena Machkasova 2, and David Sabel 1 1 Goethe-Universität, Frankfurt, Germany schauss,sabel@ki.informatik.uni-frankfurt.de
More informationStructure. Background. them to their higher order equivalents. functionals in Standard ML source code and converts
Introduction 3 Background functionals factor out common behaviour map applies a function to every element of a list fun map [ ] = [ ] map f ( x : : xs ) = f x : : map f xs filter keeps only those elements
More informationPredicate Logic. Xinyu Feng 11/20/2013. University of Science and Technology of China (USTC)
University of Science and Technology of China (USTC) 11/20/2013 Overview Predicate logic over integer expressions: a language of logical assertions, for example x. x + 0 = x Why discuss predicate logic?
More informationMeta-Circularity, and Vice-Versa
1/60, and Vice-Versa didier@lrde.epita.fr http://www.lrde.epita.fr/ didier ACCU 2011 Thursday, April 14th 2/60 Table of contents 1 2 Symbolic Expressions 3 The of LISP 4 5 6 7 8 Dynamic 9 4/60 circularity
More informationCMSC 631 Program Analysis and Understanding Fall Type Systems
Program Analysis and Understanding Fall 2017 Type Systems Type Systems A type system is a tractable syntactic method for proving the absence of certain program behaviors by classifying phrases according
More informationThe Knaster-Tarski Fixed Point Theorem for Complete Partial Orders
The Knaster-Tarski Fixed Point Theorem for Complete Partial Orders Stephen Forrest October 31, 2005 Complete Lattices Let (X, ) be a be partially ordered set, and let S X. Then S ( the meet of S ) denotes
More informationThe Curry-Howard Isomorphism
The Curry-Howard Isomorphism Software Formal Verification Maria João Frade Departmento de Informática Universidade do Minho 2008/2009 Maria João Frade (DI-UM) The Curry-Howard Isomorphism MFES 2008/09
More informationTypage et déduction dans le calcul de
Typage et déduction dans le calcul de réécriture Benjamin Wack Encadrants : C. Kirchner, L. Liquori Deduction and computation λ-calculus [Church 40] is a simple and powerful computational model Explicit
More informationCOMPUTER SCIENCE TRIPOS
CST.2016.6.1 COMPUTER SCIENCE TRIPOS Part IB Thursday 2 June 2016 1.30 to 4.30 COMPUTER SCIENCE Paper 6 Answer five questions. Submit the answers in five separate bundles, each with its own cover sheet.
More informationCSCI 490 problem set 6
CSCI 490 problem set 6 Due Tuesday, March 1 Revision 1: compiled Tuesday 23 rd February, 2016 at 21:21 Rubric For full credit, your solutions should demonstrate a proficient understanding of the following
More informationFunctional Programming with F# Overview and Basic Concepts
Functional Programming with F# Overview and Basic Concepts Radu Nicolescu Department of Computer Science University of Auckland 27 Sep 2017 1 / 52 1 Background 2 Overview 3 Type System and Type Inference
More informationThe Lifting Lemma. Ralf Hinze
The Lifting Lemma Ralf Hinze Computing Laboratory, University of Oxford Wolfson Building, Parks Road, Oxford, OX1 3QD, England ralf.hinze@comlab.ox.ac.uk http://www.comlab.ox.ac.uk/ralf.hinze/ June 2009
More informationTypes and Programming Languages (15-814), Fall 2018 Assignment 4: Data Representation (Sample Solutions)
Types and Programming Languages (15-814), Fall 2018 Assignment 4: Data Representation (Sample Solutions) Contact: 15-814 Course Staff Due Tuesday, October 16, 2018, 10:30am This assignment is due by 10:30am
More informationPredicate Logic. Xinyu Feng 09/26/2011. University of Science and Technology of China (USTC)
University of Science and Technology of China (USTC) 09/26/2011 Overview Predicate logic over integer expressions: a language of logical assertions, for example x. x + 0 = x Why discuss predicate logic?
More informationBlame for All. Amal Ahmed, Robert Bruce Findler, Jeremy Siek, Philip Wadler
Blame for All Amal Ahmed, Robert Bruce Findler, Jeremy Siek, Philip Wadler Vs. Part I The bit you know from before with a twist A simple untyped program let inc = λx. x + 1 in let app = λf. λx. f x in
More informationDepending on equations
Depending on equations A proof-relevant framework for unification in dependent type theory Jesper Cockx DistriNet KU Leuven 3 September 2017 Unification for dependent types Unification is used for many
More informationA fully abstract semantics for a nondeterministic functional language with monadic types
A fully abstract semantics for a nondeterministic functional language with monadic types Alan Jeffrey 1 School of Cognitive and Computing Sciences University of Sussex, Brighton BN1 9QH, UK alanje@cogs.susx.ac.uk
More informationOn the Semantics of Parsing Actions
On the Semantics of Parsing Actions Hayo Thielecke School of Computer Science University of Birmingham Birmingham B15 2TT, United Kingdom Abstract Parsers, whether constructed by hand or automatically
More informationApplied Logic. Lecture 1 - Propositional logic. Marcin Szczuka. Institute of Informatics, The University of Warsaw
Applied Logic Lecture 1 - Propositional logic Marcin Szczuka Institute of Informatics, The University of Warsaw Monographic lecture, Spring semester 2017/2018 Marcin Szczuka (MIMUW) Applied Logic 2018
More informationProgramming Languages Fall 2013
Programming Languages Fall 2013 Lecture 11: Subtyping Prof Liang Huang huang@qccscunyedu Big Picture Part I: Fundamentals Functional Programming and Basic Haskell Proof by Induction and Structural Induction
More informationA Bisimulation for Type Abstraction and Recursion
University of Pennsylvania ScholarlyCommons Departmental Papers (CIS) Department of Computer & Information Science January 2005 A Bisimulation for Type Abstraction and Recursion Eijiro Sumii University
More informationRefined Environment Classifiers
Refined Environment Classifiers Type- and Scope-safe Code Generation with Mutable Cells Oleg Kiselyov Yukiyoshi Kameyama Yuto Sudo Tohoku University University of Tsukuba APLAS 2016 November 22, 2016 Region
More informationINTEROPERATION FOR LAZY AND EAGER EVALUATION. A Thesis. Presented to. the Faculty of California Polytechnic State University.
INTEROPERATION FOR LAZY AND EAGER EVALUATION A Thesis Presented to the Faculty of California Polytechnic State University San Luis Obispo In Partial Fulfillment of the Requirements for the Degree Master
More informationInformation Flow Inference for ML
Information Flow Inference for ML Vincent Simonet INRIA Rocquencourt Projet Cristal MIMOSA September 27, 2001 Information flow account number bank applet order vendor account H order L bank H vendor L
More informationDenotational semantics
Denotational semantics Semantics and Application to Program Verification Antoine Miné École normale supérieure, Paris year 2015 2016 Course 4 4 March 2016 Course 4 Denotational semantics Antoine Miné p.
More informationConsequence Relations and Natural Deduction
Consequence Relations and Natural Deduction Joshua D. Guttman Worcester Polytechnic Institute September 9, 2010 Contents 1 Consequence Relations 1 2 A Derivation System for Natural Deduction 3 3 Derivations
More informationVerifying Relational Properties of Functional Programs by First-Order Refinement
Verifying Relational Properties of Functional Programs by First-Order Refinement Kazuyuki Asada a, Ryosuke Sato a, Naoki Kobayashi a a University of okyo Abstract Much progress has been made recently on
More informationIntroduction to Type Theory February 2008 Alpha Lernet Summer School Piriapolis, Uruguay. Herman Geuvers Nijmegen & Eindhoven, NL
Introduction to Type Theory February 2008 Alpha Lernet Summer School Piriapolis, Uruguay Herman Geuvers Nijmegen & Eindhoven, NL Lecture 5: Higher Order Logic and the Calculus of Constructions 1 Church
More informationAdvanced Lambda Calculus. Henk Barendregt & Giulio Manzonetto ICIS Faculty of Science Radboud University Nijmegen, The Netherlands
Advanced Lambda Calculus Henk Barendregt & Giulio Manzonetto ICIS Faculty of Science Radboud University Nijmegen, The Netherlands Form of the course Ordinary lecture Seminar form Exam: working out an exercise
More informationRoy L. Crole. Operational Semantics Abstract Machines and Correctness. University of Leicester, UK
Midlands Graduate School, University of Birmingham, April 2008 1 Operational Semantics Abstract Machines and Correctness Roy L. Crole University of Leicester, UK Midlands Graduate School, University of
More informationDenotational semantics
Denotational semantics The method define syntax (syntactic domains) define semantic domains define semantic functions use compositional definitions Andrzej Tarlecki: Semantics & Verification - 63 - Syntactic
More informationRealizability Semantics of Parametric Polymorphism, General References, and Recursive Types
Realizability Semantics of Parametric Polymorphism, General References, and Recursive Types Lars Birkedal IT University of Copenhagen Joint work with Kristian Støvring and Jacob Thamsborg Oct, 2008 Lars
More informationDeductive Verification
Deductive Verification Mooly Sagiv Slides from Zvonimir Rakamaric First-Order Logic A formal notation for mathematics, with expressions involving Propositional symbols Predicates Functions and constant
More informationTHE UNIVERSITY OF CALGARY FACULTY OF SCIENCE FINAL EXAMINATION COMPUTER SCIENCE 521
P. 1 of 7 THE UNIVERSITY OF CALGARY FACULTY OF SCIENCE FINAL EXAMINATION COMPUTER SCIENCE 521 December, 2016 Time: 2 hrs. Instructions The exam contains questions totaling 100 points. Answer all questions.
More informationG54FOP: Lecture 17 & 18 Denotational Semantics and Domain Theory III & IV
G54FOP: Lecture 17 & 18 Denotational Semantics and Domain Theory III & IV Henrik Nilsson University of Nottingham, UK G54FOP: Lecture 17 & 18 p.1/33 These Two Lectures Revisit attempt to define denotational
More informationConsequence Relations and Natural Deduction
Consequence Relations and Natural Deduction Joshua D Guttman Worcester Polytechnic Institute September 16, 2010 Contents 1 Consequence Relations 1 2 A Derivation System for Natural Deduction 3 3 Derivations
More informationTHE AUSTRALIAN NATIONAL UNIVERSITY Second Semester COMP2600 (Formal Methods for Software Engineering)
THE AUSTRALIAN NATIONAL UNIVERSITY Second Semester 2010 COMP2600 (Formal Methods for Software Engineering) Writing Period: 3 hours duration Study Period: 15 minutes duration Permitted Materials: One A4
More informationTaming Selective Strictness
Taming Selective Strictness Daniel Seidel and Janis Voigtländer Technische Universität Dresden, 01062 Dresden, Germany {seideld,voigt}@tcs.inf.tu-dresden.de Abstract: Free theorems establish interesting
More informationSimply Typed Lambda Calculus
Simply Typed Lambda Calculus Mathias Vorreiter Pedersen November 13, 2015 1 Recalling the untyped lambda calculus 1.1 Syntax t ::= x λ x. t t t 1.2 Evaluation x x t t λx.t λx.t t 1 t 1 t 2 t 2 t 1 t 2
More informationNotes on Inductive Sets and Induction
Notes on Inductive Sets and Induction Finite Automata Theory and Formal Languages TMV027/DIT21 Ana Bove, March 15th 2018 Contents 1 Induction over the Natural Numbers 2 1.1 Mathematical (Simple) Induction........................
More informationCBV and CBN. Eduardo Bonelli. TP para LP 2012C1 1/55
CBV and CBN Eduardo Bonelli TP para LP 2012C1 1/55 Reduction Strategies Call-By-Value Call-by-Name Relating CBN and CBV λ-calculus Continuation Passing Style Bibliography 2/55 Reduction Strategies Reduction
More informationSupercompiler HOSC: proof of correctness
Keldysh Institute Publication search Keldysh Institute preprints Preprint No. 31, 2010 Klyuchnikov I.G. Supercompiler HOSC: proof of correctness Recommended form of bibliographic references: Klyuchnikov
More informationPython. chrysn
Python chrysn 2008-09-25 Introduction Structure, Language & Syntax Strengths & Weaknesses Introduction Structure, Language & Syntax Strengths & Weaknesses Python Python is an interpreted,
More informationBeyond First-Order Logic
Beyond First-Order Logic Software Formal Verification Maria João Frade Departmento de Informática Universidade do Minho 2008/2009 Maria João Frade (DI-UM) Beyond First-Order Logic MFES 2008/09 1 / 37 FOL
More informationOn the Correctness and Efficiency of the Krivine Machine
On the Correctness and Efficiency of the Krivine Machine Mitchell Wand Northeastern University Daniel P. Friedman Indiana University February 12, 2003 Abstract We provide a short derivation of the Krivine
More informationFormal Methods Lecture 6. (B. Pierce's slides for the book Types and Programming Languages )
Formal Methods Lecture 6 (B. Pierce's slides for the book Types and Programming Languages ) Programming in the Lambda-Calculus, Continued Testing booleans Recall: tru = λt. λf. t fls = λt. λf. f We showed
More information