# Denotational Semantics. Domain Theory

Save this PDF as:

Size: px
Start display at page:

## Transcription

1 Denotational Semantics and Domain Theory 1 / 51

2 Outline Denotational Semantics Basic Domain Theory Introduction and history Primitive and lifted domains Sum and product domains Function domains Meaning of Recursive Definitions Compositionality and well-definedness Least fixed-point construction Internal structure of domains Denotational Semantics 2 / 51

3 Denotational semantics A denotational semantics relates each term to a denotation an abstract syntax tree a value in some semantic domain Valuation function : abstract syntax semantic domain Valuation function in Haskell eval :: Term -> Value Denotational Semantics 3 / 51

4 Semantic domains Semantic domain: captures the set of possible meanings of a program/term what is a meaning? it depends on the language! Example semantic domains Language Meaning Boolean expressions Boolean value Arithmetic expressions Integer Imperative language State transformation SQL query Set of relations ActionScript Animation MIDI Sound waves Denotational Semantics 4 / 51

5 Defining a language with denotational semantics Example encoding in Haskell: 1. Define the abstract syntax, T data Term =... the set of abstract syntax trees 2. Identify or define the semantic domain, V type Value =... the representation of semantic values 3. Define the valuation function, : T V sem :: Term -> Value the mapping from ASTs to semantic values a.k.a. the semantic function Denotational Semantics 5 / 51

6 Example: simple arithmetic expressions 1. Define abstract syntax n Nat ::= e Exp ::= add e e mul e e neg e n 2. Define semantic domain Use the set of all integers, Int 3. Define the valuation function Exp : Int add e 1 e 2 = e 1 + e 2 mul e 1 e 2 = e 1 e 2 neg e = e n = toint(n) Comes with some operations: +,,, toint : Nat Int,... Denotational Semantics 6 / 51

7 Encoding denotational semantics in Haskell 1. abstract syntax: define a new data type, as usual 2. semantic domain: identify and/or define a new type, as needed 3. valuation function: define a function from ASTs to semantic domain Valuation function in Haskell sem :: Exp -> Int sem (Add l r) = sem l + sem r sem (Mul l r) = sem l * sem r sem (Neg e) = negate (sem e) sem (Lit n) = n Denotational Semantics 7 / 51

8 Desirable properties of a denotational semantics Compositionality: a program s denotation is built from the denotations of its parts supports modular reasoning, extensibility supports proof by structural induction Completeness: every value in the semantics domain is denoted by some program ensures that semantics domain and language align if not, language has expressiveness gaps, or semantics domain is too general Soundness: two programs are equivalent iff they have the same denotation equivalence: same w.r.t. to some other definition, e.g. operational semantics ensures that the denotational semantics is correct Denotational Semantics 8 / 51

9 More on compositionality Compositionality: a program s denotation is built from the denotations of its parts an AST sub-asts Example: What is the meaning of op e 1 e 2 e 3? 1. Determine the meaning of e 1, e 2, e 3 2. Combine these submeanings in some way specific to op Implications: The valuation function is probably recursive We need different valuation functions for each syntactic category Denotational Semantics 9 / 51

10 Example: move language A language describing movements on a 2D plane a step is an n-unit horizontal or vertical movement a move is described by a sequence of steps Abstract syntax n Nat ::= d Dir ::= N S E W s Step ::= go d n m Move ::= ɛ s ; m go N 3; go E 4; go S 1; Denotational Semantics 10 / 51

11 Semantics of move language 1. Abstract syntax n Nat ::= d Dir ::= N S E W s Step ::= go d n m Move ::= ɛ s ; m 2. Semantic domain Pos = Int Int Domain: Pos Pos 3. Valuation function (Step) S Step : Pos Pos S go N k = λ(x, y). (x, y + k) S go S k = λ(x, y). (x, y k) S go E k = λ(x, y). (x + k, y) S go W k = λ(x, y). (x k, y) 3. Valuation function (Move) M Move : Pos Pos M ɛ = λp. p M s ; m = M m S s Denotational Semantics 11 / 51

12 Alternative semantics Often multiple interpretations (semantics) of the same language Example: Database schema One declarative spec, used to: initialize the database generate APIs validate queries normalize layout... Distance traveled S D Step : Int S D go d k = k M D Move : Int M D ɛ = 0 M D s ; m = S D s + M D m Combined trip information M C Move : Int (Pos Pos) M C m = (M D m, M m ) Denotational Semantics 12 / 51

13 Picking the right semantic domain Simple semantics domains can be combined in two ways: product: contains a value from both domains e.g. combined trip information for move language use Haskell (a,b) or define a new data type sum: contains a value from one domain or the other e.g. IntBool language can evaluate to Int or Bool use Haskell Either a b or define a new data type Can errors occur? use Haskell Maybe a or define a new data type Does the language manipulate state or use naming? use a function type Denotational Semantics 13 / 51

14 Outline Denotational Semantics Basic Domain Theory Introduction and history Primitive and lifted domains Sum and product domains Function domains Meaning of Recursive Definitions Compositionality and well-definedness Least fixed-point construction Internal structure of domains Basic Domain Theory 14 / 51

15 What is domain theory? Domain theory: a mathematical framework for constructing semantic domains Recall... A denotational semantics relates each term to a denotation an abstract syntax tree a value in some semantic domain Semantic domain: captures the set of possible meanings of a program/term Basic Domain Theory 15 / 51

16 Historical notes Origins of domain theory: Christopher Strachey, 1964 early work on denotational semantics used lambda calculus for denotations Dana Scott, 1975 goal: denotational semantics for lambda calculus itself created domain theory for meaning of recursive functions Dana Scott More on Dana Scott: Turing award in 1976 for nondeterminism in automata theory PhD advisor: Alonzo Church, 20 years after Alan Turing Basic Domain Theory 16 / 51

17 Two views of denotational semantics View #1: Translation from one formal system to another e.g. translate object language into lambda calculus View #2: True meaning of a program as a mathematical object e.g. map programs to elements of a semantic domain need domain theory to describe set of meanings Basic Domain Theory 17 / 51

18 Domains as semantic algebras A semantic domain can be viewed as an algebraic structure a set of values the meanings of the programs a set of operations on the values used to compose meanings of parts Domains also have internal structure: complete partial ordering like a half-lattice any two elements must have a join (later) Basic Domain Theory 18 / 51

19 Outline Denotational Semantics Basic Domain Theory Introduction and history Primitive and lifted domains Sum and product domains Function domains Meaning of Recursive Definitions Compositionality and well-definedness Least fixed-point construction Internal structure of domains Basic Domain Theory 19 / 51

20 Primitive domains Values are atomic often correspond to built-in types in Haskell nullary operations for naming values explicitly Domain: Bool true : Bool false : Bool not : Bool Bool and : Bool Bool Bool or : Bool Bool Bool Domain: Int 0, 1, 2,... : Int negate : Int Int plus : Int Int Int times : Int Int Int Also: Nat, Name, Addr,... Domain: Unit () : Unit Basic Domain Theory 20 / 51

21 Lifted domains Construction: add (bottom) to an existing domain A = A { } New operations : A map : (A B) A B maybe : B (A B) A B Basic Domain Theory 21 / 51

22 Encoding lifted domains in Haskell Option #1: Maybe data Maybe a = Nothing Just a fmap :: (a -> b) -> Maybe a -> Maybe b maybe :: b -> (a -> b) -> Maybe a -> Maybe b Can also use pattern matching! Option #2: new data type with nullary constructor data Value = Success Int Error Best when combined with other constructions Basic Domain Theory 22 / 51

23 Outline Denotational Semantics Basic Domain Theory Introduction and history Primitive and lifted domains Sum and product domains Function domains Meaning of Recursive Definitions Compositionality and well-definedness Least fixed-point construction Internal structure of domains Basic Domain Theory 23 / 51

24 Sum domains Construction: the disjoint union of two existing domains contains a value from either one domain or the other A B = A B New operations inl : A A B inr : B A B case : (A C) (B D) (A B) C D Basic Domain Theory 24 / 51

25 Encoding sum domains in Haskell Option #1: Either data Either a b = Left a Right b either :: (a -> c) -> (b -> d) -> Either a b -> Either c d Can also use pattern matching! Option #2: new data type with multiple constructors data Value = I Int B Bool Best when combined with other constructions, or more than two options Basic Domain Theory 25 / 51

26 Example: a language with multiple types b Bool ::= true false n Nat ::= e Exp ::= add e e neg e equal e e cond e e e n b Design a denotational semantics for Exp 1. How should we define our semantics domain? 2. Define a valuation semantics function neg negates either a numeric or boolean value equal compares two values of the same type for equality cond equivalent to if then else Basic Domain Theory 26 / 51

27 Solution Exp : (Int Bool) { e1 + e add e 1 e 2 = 2 e 1 Int, e 2 Int otherwise e e Int neg e = e e Bool otherwise e 1 = Int e 2 e 1 Int, e 2 Int equal e 1 e 2 = e 1 = Bool e 2 e 1 Bool, e 2 Bool otherwise e 2 e 1 = true cond e 1 e 2 e 3 = e 3 e 1 = false otherwise n = n b = b Basic Domain Theory 27 / 51

28 Product domains Construction: the cartesian product of two existing domains contains a value from both domains A B = {(a, b) a A, b B} New operations pair : A B A B fst : A B A snd : A B B Basic Domain Theory 28 / 51

29 Encoding product domains in Haskell Option #1: Tuples type Value a b = (a,b) fst :: (a,b) -> a snd :: (a,b) -> b Can also use pattern matching! Option #2: new data type with multiple arguments data Value = V Int Bool Best when combined with other constructions, or more than two Basic Domain Theory 29 / 51

30 Outline Denotational Semantics Basic Domain Theory Introduction and history Primitive and lifted domains Sum and product domains Function domains Meaning of Recursive Definitions Compositionality and well-definedness Least fixed-point construction Internal structure of domains Basic Domain Theory 30 / 51

31 Function space domains Construction: the set of functions from one domain to another A B Create a function: A B Lambda notation: λx. y where Γ, x : A y : B Eliminate a function apply : (A B) A B Basic Domain Theory 31 / 51

32 Denotational semantics of naming Environment: a function associating names with things Env = Name Thing Naming concepts declaration add a new name to the environment binding set the thing associated with a name reference get the thing associated with a name Example semantic domains for expressions with... immutable variables (Haskell) Env Val mutable variables (C/Java/Python) Env Env Val Basic Domain Theory 32 / 51

33 Example: Denotational semantics of let language 1. Abstract syntax i Int ::= (any integer) v Var ::= (any variable name) e Exp ::= i add e e let v e e v 2. Identify semantic domain i. Result of evaluation: Int ii. Environment: Env = Var Int iii. Semantic domain: Env Int 3. Define a valuation function Exp : (Var Int ) Int i = λm. i add e 1 e 2 = λm. e 1 (m) + e 2 (m) let v e 1 e 2 = λm. e 2 (λw. if w = v then e 1 (m) else m(w)) v = λm. m(v) { i + j i Int, j Int i + j = otherwise Basic Domain Theory 33 / 51

34 What is mutable state? Mutable state: stored information that a program can read and write Typical semantic domains with state domain S: S S state mutation as main effect S S Val state mutation as side effect Often: lifted codomain if mutation can fail Examples the memory cell in a calculator the stack in a stack language the store in many programming languages S = Int S = Stack S = Name Val Basic Domain Theory 34 / 51

35 Example: Single register calculator language 1. Abstract syntax i Int ::= (any integer) e Exp ::= i e + e save e load 2. Identify semantic domain i. State (side effect): Int ii. Result (main effect): Int iii. Semantic domain: Int Int Int Examples: save (3+2) + load 10 save 1 + (save 10 + load) + load 31 Basic Domain Theory 35 / 51

36 Example: Single register calculator language 1. Abstract syntax i Int ::= (any integer) e Exp ::= i e + e save e load Examples: save (3+2) + load 10 save 1 + (save 10 + load) + load Define valuation function Exp : Int Int Int i = λs. (s, i) e 1 + e 2 = λs. let (s 1, i 1 ) = e 1 (s) (s 2, i 2 ) = e 2 (s 1 ) in (s 2, i 1 + i 2 ) save e = λs. let (s, i) = e (s) in (i, i) load e = λs. (s, s) Basic Domain Theory 36 / 51

37 Outline Denotational Semantics Basic Domain Theory Introduction and history Primitive and lifted domains Sum and product domains Function domains Meaning of Recursive Definitions Compositionality and well-definedness Least fixed-point construction Internal structure of domains Meaning of Recursive Definitions 37 / 51

38 Compositionality and well-definedness Recall: a denotational semantics must be compositional a term s denotation is built from the denotations of its parts Example: integer expressions i Int ::= (any integer) e Exp ::= i add e e mul e e Exp : Int i = i add e 1 e 2 = e 1 + e 2 mul e 1 e 2 = e 1 e 2 Compositionality ensures the semantics is well-defined by structural induction Each AST has exactly one meaning Meaning of Recursive Definitions 38 / 51

39 A non-compositional (and ill-defined) semantics Anti-example: while statement t Test ::=... c Cmd ::=... while t c T Test : S Bool C Cmd : S S C while t c = λs. if T t (s) then C while t c (C c (s)) else s Meaning of while t c in state s: 1. evaluate t in state s 2. if true: a. run c to get updated state s b. re-evaluate while in state s (not compositional) 3. otherwise return s unchanged Translational view: meaning is an infinite expression! Mathematical view: may have infinitely many meanings! Meaning of Recursive Definitions 39 / 51

40 Extensional vs. operational definitions of a function Mathematical function Defined extensionally: a relation between inputs and outputs Computational function (e.g. Haskell) Usually defined operationally: compute output by sequence of reductions Example (intensional definition) { 1 n = 0 fac(n) = n fac(n 1) otherwise Extensional meaning {..., (2, 2), (3, 6), (4, 24),...} Operational meaning fac(3) 3 fac(2) 3 2 fac(1) fac(0) Meaning of Recursive Definitions 40 / 51

41 Extensional meaning of recursive functions { 1 n = 0 grow(n) = grow(n + 1) 2 otherwise Best extension (use if undefined): {(0, 1), (1, ), (2, ), (3, ), (4, ),...} Other valid extensions: {(0, 1), (1, 2), (2, 4), (3, 6), (4, 8)...} {(0, 1), (1, 5), (2, 7), (3, 9), (4, 11)...}... Goal: best extension = only extension Meaning of Recursive Definitions 41 / 51

42 Connection back to denotational semantics A function space domain is a set of mathematical functions Anti-example: while statement t Test ::=... c Cmd ::=... while t c T Test : S Bool C Cmd : S S C while t c = λs. if T t (s) then C while t c (C c (s)) else s Ideal semantics of Cmd: semantic domain: S S contains (s, s ) if c terminates contains (s, ) if c diverges Meaning of Recursive Definitions 42 / 51

43 Outline Denotational Semantics Basic Domain Theory Introduction and history Primitive and lifted domains Sum and product domains Function domains Meaning of Recursive Definitions Compositionality and well-definedness Least fixed-point construction Internal structure of domains Meaning of Recursive Definitions 43 / 51

44 Least fixed points Basic idea: 1. a recursive function defines a set of non-recursive, finite subfunctions 2. its meaning is the union of the meanings of its subfunctions Iteratively grow the extension until we reach a fixed point essentially encodes computational functions as mathematical functions Meaning of Recursive Definitions 44 / 51

45 Example: unfolding a recursive definition Recursive definition { 1 n = 0 fac(n) = n fac(n 1) otherwise Non-recursive, finite subfunctions fac 0 (n) = { 1 n = 0 fac 1 (n) = n fac 0 (n 1) otherwise { 1 n = 0 fac 2 (n) = n fac 1 (n 1) otherwise... fac 0 = {} fac 1 = {(0, 1)} fac 2 = {(0, 1), (1, 1)} fac 3 = {(0, 1), (1, 1), (2, 2)}... fac = fac i i=0 Fine print: each fac i maps all other values to operation prefers non- mappings Meaning of Recursive Definitions 45 / 51

46 Computing the fixed point In general fac 0 (n) = { 1 n = 0 fac i (n) = n fac i 1 (n 1) otherwise A template to represent all fac i functions: { 1 n = 0 F = λf.λn. n f (n 1) otherwise Fixpoint operator fix : (A A) A fix(g) = let x = g(x) in x fix(h) = h(h(h(h(h(...))))) Factorial as a fixed point fac = fix(f) takes fac i 1 as input Meaning of Recursive Definitions 46 / 51

47 Outline Denotational Semantics Basic Domain Theory Introduction and history Primitive and lifted domains Sum and product domains Function domains Meaning of Recursive Definitions Compositionality and well-definedness Least fixed-point construction Internal structure of domains Meaning of Recursive Definitions 47 / 51

48 Why domains are not flat sets Internal structure of domains supports the least fixed-point construction Recall fine print from factorial example: each fac i maps all other values to operation prefers non- mappings How can we generalize and formalize this idea? Meaning of Recursive Definitions 48 / 51

49 Partial orderings and joins Partial ordering: : D D B reflexive: x D. x x antisymmetric: x, y D. x y y x = x = y transitive: x, y, z D. x y y z = x z Join: : D D D a, b D, the element c = a b D, if it exists, is the smallest element that is larger than both a and b i.e. a c and b c, and there is no d = a b D where d c Meaning of Recursive Definitions 49 / 51

50 Directed-complete partial orderings A directed subset of a domain is a subset of elements related by Every domain is a directed-complete partial ordering (dcpo): every directed subset D has a least element A function is Scott-continuous if it preserves the least element Finally, the meaning of a Scott-continuous recursive function f is: where f i are the finite approximations of f i=0 f i whew! Meaning of Recursive Definitions 50 / 51

51 Well-defined semantics for the while statement Syntax t Test ::=... c Cmd ::=... while t c Semantics T Test : S Bool C Cmd : S S C while t c = fix(λf.λs. if T t (s) then f (C c (s)) else s) Meaning of Recursive Definitions 51 / 51

### Introduction to Functional Programming in Haskell 1 / 56

Introduction to Functional Programming in Haskell 1 / 56 Outline Why learn functional programming? The essence of functional programming What is a function? Equational reasoning First-order vs. higher-order

### 7. Introduction to Denotational Semantics. Oscar Nierstrasz

7. Introduction to Denotational Semantics Oscar Nierstrasz Roadmap > Syntax and Semantics > Semantics of Expressions > Semantics of Assignment > Other Issues References > D. A. Schmidt, Denotational Semantics,

### Syntax and Grammars 1 / 21

Syntax and Grammars 1 / 21 Outline What is a language? Abstract syntax and grammars Abstract syntax vs. concrete syntax Encoding grammars as Haskell data types What is a language? 2 / 21 What is a language?

### CIS 500 Software Foundations Fall September 25

CIS 500 Software Foundations Fall 2006 September 25 The Lambda Calculus The lambda-calculus If our previous language of arithmetic expressions was the simplest nontrivial programming language, then the

### Polymorphic lambda calculus Princ. of Progr. Languages (and Extended ) The University of Birmingham. c Uday Reddy

06-02552 Princ. of Progr. Languages (and Extended ) The University of Birmingham Spring Semester 2016-17 School of Computer Science c Uday Reddy2016-17 Handout 6: Polymorphic Type Systems 1. Polymorphic

### CMSC 330: Organization of Programming Languages. Lambda Calculus Encodings

CMSC 330: Organization of Programming Languages Lambda Calculus Encodings CMSC330 Spring 2018 1 The Power of Lambdas Despite its simplicity, the lambda calculus is quite expressive: it is Turing complete!

### CONVENTIONAL EXECUTABLE SEMANTICS. Grigore Rosu CS422 Programming Language Semantics

CONVENTIONAL EXECUTABLE SEMANTICS Grigore Rosu CS422 Programming Language Semantics Conventional Semantic Approaches A language designer should understand the existing design approaches, techniques and

### Organization of Programming Languages CS3200/5200N. Lecture 11

Organization of Programming Languages CS3200/5200N Razvan C. Bunescu School of Electrical Engineering and Computer Science bunescu@ohio.edu Functional vs. Imperative The design of the imperative languages

### CMSC 330: Organization of Programming Languages

CMSC 330: Organization of Programming Languages Lambda Calculus Encodings CMSC 330 Spring 2017 1 Review A lambda calculus expression is defined as e ::= x variable λx.e abstraction (fun def) e e application

### CS152: Programming Languages. Lecture 7 Lambda Calculus. Dan Grossman Spring 2011

CS152: Programming Languages Lecture 7 Lambda Calculus Dan Grossman Spring 2011 Where we are Done: Syntax, semantics, and equivalence For a language with little more than loops and global variables Now:

### Lambda Calculus.

Lambda Calculus Oded Padon & Mooly Sagiv (original slides by Kathleen Fisher, John Mitchell, Shachar Itzhaky, S. Tanimoto, Stephen A. Edwards) Benjamin Pierce Types and Programming Languages http://www.cs.cornell.edu/courses/cs3110/2008fa/recitations/rec26.html

### CIS 500 Software Foundations Midterm I

CIS 500 Software Foundations Midterm I October 11, 2006 Name: Student ID: Email: Status: Section: registered for the course not registered: sitting in to improve a previous grade not registered: just taking

### 3.4 Deduction and Evaluation: Tools Conditional-Equational Logic

3.4 Deduction and Evaluation: Tools 3.4.1 Conditional-Equational Logic The general definition of a formal specification from above was based on the existence of a precisely defined semantics for the syntax

### Principles of Programming Languages

Principles of Programming Languages www.cs.bgu.ac.il/~ppl172 Collaboration and Management Dana Fisman Lesson 2 - Types with TypeScript 1 Types What are types in programming languages? What types are you

### Programming with Math and Logic

.. Programming with Math and Logic an invitation to functional programming Ed Morehouse Wesleyan University The Plan why fp? terms types interfaces The What and Why of Functional Programming Computing

### Introduction to the λ-calculus

Announcements Prelim #2 issues: o Problem 5 grading guide out shortly o Problem 3 (hashing) issues Will be on final! Friday RDZ office hours are 11-12 not 1:30-2:30 1 Introduction to the λ-calculus Today

### λ calculus Function application Untyped λ-calculus - Basic Idea Terms, Variables, Syntax β reduction Advanced Formal Methods

Course 2D1453, 2006-07 Advanced Formal Methods Lecture 2: Lambda calculus Mads Dam KTH/CSC Some material from B. Pierce: TAPL + some from G. Klein, NICTA Alonzo Church, 1903-1995 Church-Turing thesis First

### Relational Algebra. Study Chapter Comp 521 Files and Databases Fall

Relational Algebra Study Chapter 4.1-4.2 Comp 521 Files and Databases Fall 2010 1 Relational Query Languages Query languages: Allow manipulation and retrieval of data from a database. Relational model

### Abstract Interpretation

Abstract Interpretation Ranjit Jhala, UC San Diego April 22, 2013 Fundamental Challenge of Program Analysis How to infer (loop) invariants? Fundamental Challenge of Program Analysis Key issue for any analysis

### CIS 500 Software Foundations Midterm I Answer key October 8, 2003

CIS 500 Software Foundations Midterm I Answer key October 8, 2003 Inductive Definitions Review: Recall that the function size, which calculates the total number of nodes in the abstract syntax tree of

### Review. CS152: Programming Languages. Lecture 11 STLC Extensions and Related Topics. Let bindings (CBV) Adding Stuff. Booleans and Conditionals

Review CS152: Programming Languages Lecture 11 STLC Extensions and Related Topics e ::= λx. e x ee c v ::= λx. e c (λx. e) v e[v/x] e 1 e 2 e 1 e 2 τ ::= int τ τ Γ ::= Γ,x : τ e 2 e 2 ve 2 ve 2 e[e /x]:

### Whereweare. CS-XXX: Graduate Programming Languages. Lecture 7 Lambda Calculus. Adding data structures. Data + Code. What about functions

Whereweare CS-XXX: Graduate Programming Languages Lecture 7 Lambda Calculus Done: Syntax, semantics, and equivalence For a language with little more than loops and global variables Now: Didn t IMP leave

### Recursive Functions of Symbolic Expressions and Their Application, Part I

Recursive Functions of Symbolic Expressions and Their Application, Part I JOHN MCCARTHY Review: Amit Kirschenbaum Seminar in Programming Languages Recursive Functions of Symbolic Expressions and Their

### COMP 1130 Lambda Calculus. based on slides by Jeff Foster, U Maryland

COMP 1130 Lambda Calculus based on slides by Jeff Foster, U Maryland Motivation Commonly-used programming languages are large and complex ANSI C99 standard: 538 pages ANSI C++ standard: 714 pages Java

### CMSC 330: Organization of Programming Languages. Formal Semantics of a Prog. Lang. Specifying Syntax, Semantics

Recall Architecture of Compilers, Interpreters CMSC 330: Organization of Programming Languages Source Scanner Parser Static Analyzer Operational Semantics Intermediate Representation Front End Back End

### COMP80 Lambda Calculus Programming Languages Slides Courtesy of Prof. Sam Guyer Tufts University Computer Science History Big ideas Examples:

COMP80 Programming Languages Slides Courtesy of Prof. Sam Guyer Lambda Calculus Formal system with three parts Notation for functions Proof system for equations Calculation rules called reduction Idea:

### More Untyped Lambda Calculus & Simply Typed Lambda Calculus

Concepts in Programming Languages Recitation 6: More Untyped Lambda Calculus & Simply Typed Lambda Calculus Oded Padon & Mooly Sagiv (original slides by Kathleen Fisher, John Mitchell, Shachar Itzhaky,

### CS 4110 Programming Languages & Logics. Lecture 27 Recursive Types

CS 4110 Programming Languages & Logics Lecture 27 Recursive Types 4 November 2016 Announcements 2 My office hours are at the normal time today but canceled on Monday Guest lecture by Seung Hee Han on Monday

### 9/23/2014. Why study? Lambda calculus. Church Rosser theorem Completeness of Lambda Calculus: Turing Complete

Dr A Sahu Dept of Computer Science & Engineering IIT Guwahati Why study? Lambda calculus Syntax Evaluation Relationship to programming languages Church Rosser theorem Completeness of Lambda Calculus: Turing

### Meanings of syntax. Norman Ramsey Geoffrey Mainland. COMP 105 Programming Languages Tufts University. January 26, 2015

Meanings of syntax Norman Ramsey Geoffrey Mainland COMP 105 Programming Languages Tufts University January 26, 2015 (COMP 105) Meanings of syntax January 26, 2015 1 / 33 What is the meaning of a while

### Lesson 4 Typed Arithmetic Typed Lambda Calculus

Lesson 4 Typed Arithmetic Typed Lambda 1/28/03 Chapters 8, 9, 10 Outline Types for Arithmetic types the typing relation safety = progress + preservation The simply typed lambda calculus Function types

### These notes are intended exclusively for the personal usage of the students of CS352 at Cal Poly Pomona. Any other usage is prohibited without

These notes are intended exclusively for the personal usage of the students of CS352 at Cal Poly Pomona. Any other usage is prohibited without previous written authorization. 1 2 The simplest way to create

### Chapter 5: The Untyped Lambda Calculus

Chapter 5: The Untyped Lambda Calculus What is lambda calculus for? Basics: syntax and operational semantics Programming in the Lambda Calculus Formalities (formal definitions) What is Lambda calculus

### Type Checking. Outline. General properties of type systems. Types in programming languages. Notation for type rules.

Outline Type Checking General properties of type systems Types in programming languages Notation for type rules Logical rules of inference Common type rules 2 Static Checking Refers to the compile-time

### Outline. General properties of type systems. Types in programming languages. Notation for type rules. Common type rules. Logical rules of inference

Type Checking Outline General properties of type systems Types in programming languages Notation for type rules Logical rules of inference Common type rules 2 Static Checking Refers to the compile-time

### Functional Languages and Higher-Order Functions

Functional Languages and Higher-Order Functions Leonidas Fegaras CSE 5317/4305 L12: Higher-Order Functions 1 First-Class Functions Values of some type are first-class if They can be assigned to local variables

### Denotational Semantics

Denotational Semantics 8 12 lectures for Part II CST 2010/11 Marcelo Fiore Course web page: http://www.cl.cam.ac.uk/teaching/1011/denotsem/ 1 Lecture 1 Introduction 2 What is this course about? General

### More Lambda Calculus and Intro to Type Systems

More Lambda Calculus and Intro to Type Systems Plan Heavy Class Participation Thus, wake up! Lambda Calculus How is it related to real life? Encodings Fixed points Type Systems Overview Static, Dyamic

### GADTs. Wouter Swierstra and Alejandro Serrano. Advanced functional programming - Lecture 7. [Faculty of Science Information and Computing Sciences]

GADTs Advanced functional programming - Lecture 7 Wouter Swierstra and Alejandro Serrano 1 Today s lecture Generalized algebraic data types (GADTs) 2 A datatype data Tree a = Leaf Node (Tree a) a (Tree

### Formal Semantics. Aspects to formalize. Lambda calculus. Approach

Formal Semantics Aspects to formalize Why formalize? some language features are tricky, e.g. generalizable type variables, nested functions some features have subtle interactions, e.g. polymorphism and

### Lambda Calculus. CS 550 Programming Languages Jeremy Johnson

Lambda Calculus CS 550 Programming Languages Jeremy Johnson 1 Lambda Calculus The semantics of a pure functional programming language can be mathematically described by a substitution process that mimics

INTRODUCTION TO HASKELL PRINCIPLES OF PROGRAMMING LANGUAGES Norbert Zeh Winter 2018 Dalhousie University 1/81 HASKELL: A PURELY FUNCTIONAL PROGRAMMING LANGUAGE Functions are first-class values: Can be

### Lecture 9: Typed Lambda Calculus

Advanced Topics in Programming Languages Spring Semester, 2012 Lecture 9: Typed Lambda Calculus May 8, 2012 Lecturer: Mooly Sagiv Scribe: Guy Golan Gueta and Shachar Itzhaky 1 Defining a Type System for

### # true;; - : bool = true. # false;; - : bool = false 9/10/ // = {s (5, "hi", 3.2), c 4, a 1, b 5} 9/10/2017 4

Booleans (aka Truth Values) Programming Languages and Compilers (CS 421) Sasa Misailovic 4110 SC, UIUC https://courses.engr.illinois.edu/cs421/fa2017/cs421a # true;; - : bool = true # false;; - : bool

### Begin at the beginning

Begin at the beginning Expressions (Syntax) Exec-time Dynamic Values (Semantics) Compile-time Static Types 1. Programmer enters expression 2. ML checks if expression is well-typed Using a precise set of

### CMSC330. Objects, Functional Programming, and lambda calculus

CMSC330 Objects, Functional Programming, and lambda calculus 1 OOP vs. FP Object-oriented programming (OOP) Computation as interactions between objects Objects encapsulate mutable data (state) Accessed

### More Lambda Calculus and Intro to Type Systems

#1 More Lambda Calculus and Intro to Type Systems #2 Plan Heavy Class Participation Thus, wake up! (not actually kidding) Lambda Calculus How is it related to real life? Encodings Fixed points Type Systems

### Meta-programming with Names and Necessity p.1

Meta-programming with Names and Necessity Aleksandar Nanevski Carnegie Mellon University ICFP, Pittsburgh, 05 October 2002 Meta-programming with Names and Necessity p.1 Meta-programming Manipulation of

### CMPS 277 Principles of Database Systems. https://courses.soe.ucsc.edu/courses/cmps277/fall11/01. Lecture #11

CMPS 277 Principles of Database Systems https://courses.soe.ucsc.edu/courses/cmps277/fall11/01 Lecture #11 1 Limitations of Relational Algebra & Relational Calculus Outline: Relational Algebra and Relational

### Recursion. Lars-Henrik Eriksson. Functional Programming 1. Based on a presentation by Tjark Weber and notes by Sven-Olof Nyström

Lars-Henrik Eriksson Functional Programming 1 Based on a presentation by Tjark Weber and notes by Sven-Olof Nyström Tjark Weber (UU) Recursion 1 / 41 Comparison: Imperative/Functional Programming Comparison:

### Intro to semantics; Small-step semantics Lecture 1 Tuesday, January 29, 2013

Harvard School of Engineering and Applied Sciences CS 152: Programming Languages Lecture 1 Tuesday, January 29, 2013 1 Intro to semantics What is the meaning of a program? When we write a program, we use

### CMSC 336: Type Systems for Programming Languages Lecture 4: Programming in the Lambda Calculus Acar & Ahmed 22 January 2008.

CMSC 336: Type Systems for Programming Languages Lecture 4: Programming in the Lambda Calculus Acar & Ahmed 22 January 2008 Contents 1 Announcements 1 2 Solution to the Eercise 1 3 Introduction 1 4 Multiple

### Part I. Historical Origins

Introduction to the λ-calculus Part I CS 209 - Functional Programming Dr. Greg Lavender Department of Computer Science Stanford University Historical Origins Foundations of Mathematics (1879-1936) Paradoxes

### Booleans (aka Truth Values) Programming Languages and Compilers (CS 421) Booleans and Short-Circuit Evaluation. Tuples as Values.

Booleans (aka Truth Values) Programming Languages and Compilers (CS 421) Elsa L Gunter 2112 SC, UIUC https://courses.engr.illinois.edu/cs421/fa2017/cs421d # true;; - : bool = true # false;; - : bool =

### A Functorial Query Language. Ryan Wisnesky Harvard University DCP 2014

A Functorial Query Language Ryan Wisnesky ryan@cs.harvard.edu Harvard University DCP 2014 1 History In the early 1990s, Rosebrugh et al noticed that finitely presented categories could be thought of as

### Lambda Calculus. Type Systems, Lectures 3. Jevgeni Kabanov Tartu,

Lambda Calculus Type Systems, Lectures 3 Jevgeni Kabanov Tartu, 13.02.2006 PREVIOUSLY ON TYPE SYSTEMS Arithmetical expressions and Booleans Evaluation semantics Normal forms & Values Getting stuck Safety

### SMURF Language Reference Manual Serial MUsic Represented as Functions

SMURF Language Reference Manual Serial MUsic Represented as Functions Richard Townsend, Lianne Lairmore, Lindsay Neubauer, Van Bui, Kuangya Zhai {rt2515, lel2143, lan2135, vb2363, kz2219}@columbia.edu

### On Meaning Preservation of a Calculus of Records

On Meaning Preservation of a Calculus of Records Emily Christiansen and Elena Machkasova Computer Science Discipline University of Minnesota, Morris Morris, MN 56267 chri1101, elenam@morris.umn.edu Abstract

### Computing Fundamentals 2 Introduction to CafeOBJ

Computing Fundamentals 2 Introduction to CafeOBJ Lecturer: Patrick Browne Lecture Room: K408 Lab Room: A308 Based on work by: Nakamura Masaki, João Pascoal Faria, Prof. Heinrich Hußmann. See notes on slides

### Data Types. (with Examples In Haskell) COMP 524: Programming Languages Srinivas Krishnan March 22, 2011

Data Types (with Examples In Haskell) COMP 524: Programming Languages Srinivas Krishnan March 22, 2011 Based in part on slides and notes by Bjoern 1 Brandenburg, S. Olivier and A. Block. 1 Data Types Hardware-level:

### The Untyped Lambda Calculus

Resources: The slides of this lecture were derived from [Järvi], with permission of the original author, by copy & x = 1 let x = 1 in... paste or by selection, annotation, or rewording. [Järvi] is in turn

### Part II. Hoare Logic and Program Verification. Why specify programs? Specification and Verification. Code Verification. Why verify programs?

Part II. Hoare Logic and Program Verification Part II. Hoare Logic and Program Verification Dilian Gurov Props: Models: Specs: Method: Tool: safety of data manipulation source code logic assertions Hoare

### Goals: Define the syntax of a simple imperative language Define a semantics using natural deduction 1

Natural Semantics Goals: Define the syntax of a simple imperative language Define a semantics using natural deduction 1 1 Natural deduction is an instance of first-order logic; that is, it is the formal

### Introduction to the Lambda Calculus. Chris Lomont

Introduction to the Lambda Calculus Chris Lomont 2010 2011 2012 www.lomont.org Leibniz (1646-1716) Create a universal language in which all possible problems can be stated Find a decision method to solve

### INF 212 ANALYSIS OF PROG. LANGS LAMBDA CALCULUS. Instructors: Crista Lopes Copyright Instructors.

INF 212 ANALYSIS OF PROG. LANGS LAMBDA CALCULUS Instructors: Crista Lopes Copyright Instructors. History Formal mathematical system Simplest programming language Intended for studying functions, recursion

### Lecture 3: Recursion; Structural Induction

15-150 Lecture 3: Recursion; Structural Induction Lecture by Dan Licata January 24, 2012 Today, we are going to talk about one of the most important ideas in functional programming, structural recursion

### Variables and Bindings

Net: Variables Variables and Bindings Q: How to use variables in ML? Q: How to assign to a variable? # let = 2+2;; val : int = 4 let = e;; Bind the value of epression e to the variable Variables and Bindings

### Data types for mcrl2

Data types for mcrl2 Aad Mathijssen April 5, 2018 We provide a syntax for the standard data types of the mcrl2 language. This syntax is intended to be a practical mix between standard mathematical notation

### λ calculus is inconsistent

Content Rough timeline COMP 4161 NICTA Advanced Course Advanced Topics in Software Verification Gerwin Klein, June Andronick, Toby Murray λ Intro & motivation, getting started [1] Foundations & Principles

### Fundamentals of Artificial Intelligence COMP221: Functional Programming in Scheme (and LISP)

Fundamentals of Artificial Intelligence COMP221: Functional Programming in Scheme (and LISP) Prof. Dekai Wu Department of Computer Science and Engineering The Hong Kong University of Science and Technology

### INFOB3TC Solutions for the Exam

Department of Information and Computing Sciences Utrecht University INFOB3TC Solutions for the Exam Johan Jeuring Monday, 13 December 2010, 10:30 13:00 lease keep in mind that often, there are many possible

### 6.821 Programming Languages Handout Fall MASSACHVSETTS INSTITVTE OF TECHNOLOGY Department of Electrical Engineering and Compvter Science

6.821 Programming Languages Handout Fall 2002 MASSACHVSETTS INSTITVTE OF TECHNOLOGY Department of Electrical Engineering and Compvter Science Problem Set 6 Problem 1: cellof Subtyping Do exercise 11.6

### Natural Numbers. We will use natural numbers to illustrate several ideas that will apply to Haskell data types in general.

Natural Numbers We will use natural numbers to illustrate several ideas that will apply to Haskell data types in general. For the moment we will ignore that fact that each type in Haskell includes possible

### Flow Analysis. Data-flow analysis, Control-flow analysis, Abstract interpretation, AAM

Flow Analysis Data-flow analysis, Control-flow analysis, Abstract interpretation, AAM Helpful Reading: Sections 1.1-1.5, 2.1 Data-flow analysis (DFA) A framework for statically proving facts about program

### Relational Database: The Relational Data Model; Operations on Database Relations

Relational Database: The Relational Data Model; Operations on Database Relations Greg Plaxton Theory in Programming Practice, Spring 2005 Department of Computer Science University of Texas at Austin Overview

### Tail Recursion: Factorial. Begin at the beginning. How does it execute? Tail recursion. Tail recursive factorial. Tail recursive factorial

Begin at the beginning Epressions (Synta) Compile-time Static Eec-time Dynamic Types Values (Semantics) 1. Programmer enters epression 2. ML checks if epression is well-typed Using a precise set of rules,

### Introduction to Denotational Semantics

Introduction to Denotational Semantics Overview:! Syntax and Semantics! Approaches to Specifying Semantics! Sets, Semantic Domains, Domain Algebra, and Valuation Functions! Semantics of Expressions! Semantics

### Types for References, Exceptions and Continuations. Review of Subtyping. Γ e:τ τ <:σ Γ e:σ. Annoucements. How s the midterm going?

Types for References, Exceptions and Continuations Annoucements How s the midterm going? Meeting 21, CSCI 5535, Spring 2009 2 One-Slide Summary Review of Subtyping If τ is a subtype of σ then any expression

### Chapter 2 The Language PCF

Chapter 2 The Language PCF We will illustrate the various styles of semantics of programming languages with an example: the language PCF Programming language for computable functions, also called Mini-ML.

### SOFTWARE ARCHITECTURE 6. LISP

1 SOFTWARE ARCHITECTURE 6. LISP Tatsuya Hagino hagino@sfc.keio.ac.jp slides URL https://vu5.sfc.keio.ac.jp/sa/ 2 Compiler vs Interpreter Compiler Translate programs into machine languages Compilers are

### Observational Program Calculi and the Correctness of Translations

Observational Program Calculi and the Correctness of Translations Manfred Schmidt-Schauß a, David Sabel a, Joachim Niehren b, Jan Schwinghammer a Goethe-University Frankfurt am Main, Germany b INRIA Lille,

### 1998 Midterm and Solutions

6.821 Programming Languages Handout Fall 2002 MASSACHVSETTS INSTITVTE OF TECHNOLOGY Department of Electrical Engineering and Compvter Science 1998 Midterm and Solutions There are four problems on this

Advanced Type System Features Tom Schrijvers Leuven Haskell User Group Data Recursion Genericity Schemes Expression Problem Monads GADTs DSLs Type Type Families Classes Lists and Effect Free Other Handlers

### Second-Order Type Systems

#1 Second-Order Type Systems Homework 5 Summary Student : 37.9704 Student : 44.4466 ORIGINAL : 50.2442 Student : 50.8275 Student : 50.8633 Student : 50.9181 Student : 52.1347 Student : 52.1633 Student

### Verifying Safety Property of Lustre Programs: Temporal Induction

22c181: Formal Methods in Software Engineering The University of Iowa Spring 2008 Verifying Safety Property of Lustre Programs: Temporal Induction Copyright 2008 Cesare Tinelli. These notes are copyrighted

### Modules and Representation Invariants

Modules and Representation Invariants COS 326 Andrew W. Appel Princeton University slides copyright 2013-2015 David Walker and Andrew W. Appel In previous classes: Reasoning about individual OCaml expressions.

### 301AA - Advanced Programming [AP-2017]

301AA - Advanced Programming [AP-2017] Lecturer: Andrea Corradini andrea@di.unipi.it Tutor: Lillo GalleBa galleba@di.unipi.it Department of Computer Science, Pisa Academic Year 2017/18 AP-2017-15: Func'onal

### Semantics. A. Demers Jan This material is primarily from Ch. 2 of the text. We present an imperative

CS411 Notes 1: IMP and Large Step Operational Semantics A. Demers 23-25 Jan 2001 This material is primarily from Ch. 2 of the text. We present an imperative language called IMP; wegive a formal definition

### A Semantics for Weakly Encapsulated Search in Functional Logic Programs

A Semantics for Weakly Encapsulated Search in Functional Logic Programs ABSTRACT Jan Christiansen Institut für Informatik University of Kiel, Germany jac@informatik.unikiel.de Fabian Reck Institut für

### Type Checking and Type Inference

Type Checking and Type Inference Principles of Programming Languages CSE 307 1 Types in Programming Languages 2 Static Type Checking 3 Polymorphic Type Inference Version: 1.8 17:20:56 2014/08/25 Compiled

### Writing Evaluators MIF08. Laure Gonnord

Writing Evaluators MIF08 Laure Gonnord Laure.Gonnord@univ-lyon1.fr Evaluators, what for? Outline 1 Evaluators, what for? 2 Implementation Laure Gonnord (Lyon1/FST) Writing Evaluators 2 / 21 Evaluators,

### Analysis of dependent types in Coq through the deletion of the largest node of a binary search tree

Analysis of dependent types in Coq through the deletion of the largest node of a binary search tree Sneha Popley and Stephanie Weirich August 14, 2008 Abstract Coq reflects some significant differences

### Lecture 4: Higher Order Functions

Lecture 4: Higher Order Functions Søren Haagerup Department of Mathematics and Computer Science University of Southern Denmark, Odense September 26, 2017 HIGHER ORDER FUNCTIONS The order of a function

### Introduction to Object-Oriented Programming

Introduction to Object-Oriented Programming Recursion Christopher Simpkins chris.simpkins@gatech.edu CS 1331 (Georgia Tech) Recursion 1 / 11 Recursion A recursive processes or data structure is defined

### K Reference Card. Complete example

K Reference Card Complete example package examples.example1 annotation doc : String class Date class Person { name : String age : Int ssnr : Int @doc("employee inherits from Person") class Employee extends

### More Theories, Formal semantics

Parts are based on slides by Carl Pollard Charles University, 2011-11-12 Optimality Theory Universal set of violable constraints: Faithfulness constraints:surface forms should be as close as to underlying

### Towards a Module System for K

Towards a Module System for Mark Hills and Grigore Roşu {mhills, grosu}@cs.uiuc.edu Department of Computer Science University of Illinois at Urbana-Champaign WADT 08, 14 June 2008 Hills and Roşu WADT 08:

### Program verification. Generalities about software Verification Model Checking. September 20, 2016

Program verification Generalities about software Verification Model Checking Laure Gonnord David Monniaux September 20, 2016 1 / 43 The teaching staff Laure Gonnord, associate professor, LIP laboratory,