Improving type-error messages in functional languages

Size: px
Start display at page:

Download "Improving type-error messages in functional languages"

Transcription

1 Improving type-error messages in Bastiaan Heeren Universiteit Utrecht January 5, 200

2 Contents Introduction Constraints Type inference rules Solving constraints Solving inconsistencies Future work Conclusion 2

3 Introduction Example of an erroneous expression: f = \x -> case x of 0 -> False -> one 2 -> two 3 -> three Error message produced by Hugs: ERROR example.hs (line ): Type error in case expression *** Term : one *** Type : String *** Does not match : Bool 3

4 Introduction Problems in current type inferencing algorithms: local approach error message is only a brief explanation only one error message is reported Improvements: global approach a better explanation of the type conflict multiple error messages are reported 4

5 Expression language Expression language: data Expr = Variable String Literal String Apply Expr Expr Lambda String Expr Case Expr Alternatives Let String Expr Expr data Alternatives = Empty Alternative Expr Expr Alternatives no syntactic sugar simplified let expression 5

6 Type language Type language: data Type = TVar Int TCon String TApp Type Type type arrow ( ) is represented as a constant no quantifiers 6

7 Constraints Equality constraint: represents the unification of two types for example : a Int b Instance constraint: represents an instantiation of a (polymorphic) type contains a set of monomorphic variables for example : a< Int b 7

8 Type inference rules [VAR] [LIT] aisfresh - x : a, [x a] - literal : primitive type, no constraints no constraints [APP] aisfresh - f : tf, Af - e : te, Ae [ABS] aisfresh - e : t, A - (f e) : a, Af Ae - (\x e) : a t,a\ x tf te a {s a (x s) A} 8

9 Type inference rules [CASE] aandbarefresh - p : tp, Ap - pi :tpi,api for i [..n] - ei :tei,aei for i [..n] - (case p of p e; ;pn en;) : b, Ap (Ae -Ap) (Aen -Apn) a tp a tpi b tei {s t (x s) Api,(x t) Aei } for i [..n] for i [..n] for i [..n] 9

10 Type inference rules [LET] aisfresh - e : te, Ae - b : tb, Ab - (let x = e in b) : tb, (Ae Ab) \ x a te {s a (x s) Ae } {s<m a (x s) Ab } where M=Ae\x 0

11 Example [VAR] [VAR] - i : t3, [i t3] - i : t4, [i t4] - ii:,[i t3, i t4] [APP] t3 t4 - x :, [x ] - \x x:t, [VAR] [ABS] t - let i = \x xinii:, t3 < t2 t4 < t2 t2 t [LET]

12 Solving constraints Equality graph: vertex edge : type variable or type constant : equality constraint Each type variable occurs exactly once in a vertex Initial state for the expression let i = \x xinii result type errors set of constraints : t : t2 t #3 : t3 t4 : t3 < t2 #5 : t4 < t2 equality graph t t2 t3 t4 2

13 Solving constraints Equality constraints: a rule for each combination TCon c TCon c2 if c and c2 are equal then remove else error TCon c TVar v addanedgebetweencandv TCon c TApp t t2 error TVar v TVar v2 addanedgebetweenvandv2 TApp t t2 TApp t3 t4 split constraint into (t t3) and (t2 t4) TVar v TApp t t2 decomposition of v 3

14 Solving constraints result type t3 errors set of constraints : t Int Int... equality graph t t2 t3 #7 t4 Substitution: [t := t6, t2 := t7 t8, t3 := t9 t0, t4 := t t2] result type set of constraints equality graph t9 t0 : t6 Int Int... t7 t6 t8 errors t9 #7 t t0 #7 t2 substituted 4

15 Solving constraints Instance constraints: t <M t2 is changed into an equality constraint as soon as t2 is fixed (a fixed type does not change during the rest of the computation) A type is fixed if all the type variables it contains are fixed. A type variable is fixed if: - it does not occur in an equality constraint - it does not occur on the left hand side of an instance constraint - all the type variables in its connected component are fixed 5

16 Example simplify #3 #5 t t2 t3 t3 t4 < < t t4 t2 t2 t t3 t2 t4 6

17 Example decompose #3 #5 t t2 t3 t3 t4 < < t t4 t2 t2 t t3 t2 substitution t2 := t6 t7 t4 7

18 Example simplify #3 #5 t t6 t7 t3 t3 t4 < < t t4 t6 t7 t6 t7 t t3 t7 t6 substitution t2 := t6 t7 t4 8

19 Example instantiate #3 #5 t t6 t7 t3 t3 t4 < < t t4 t6 t7 t6 t7 t t3 t7 t6 t4 9

20 Example decompose #3 #5 t t6 t7 t3 t3 t4 t t4 t8 t8 t9 t9 t t3 t7 t6 t8 substitution t9 t4 t3 := t0 t 20

21 Example simplify #3 #5 t t6 t7 t0 t t0 t t4 t t4 t8 t8 t9 t9 t t7 t6 t0 t8 t substitution t9 t4 t3 := t0 t 2

22 Example simplify #3 #5 t t6 t7 t0 t t0 t t4 t t4 t8 t8 t9 t9 t t7 t6 t9 t0 t8 t #3 #3 t4 22

23 Example decompose #3 #5 t t6 t7 t0 t t0 t t4 t t4 t8 t8 t9 t9 substitution t t7 t4 := t2 t3 := t4 t8 := t6 t7 t0 := t8 t9 t := t20 t2 t6 t9 t0 t8 t #3 #3 t4 23

24 Example simplify #3 #5 t t6 t7 t0 t t0 t t2 t3 t4 t t4 t8 t8 t9 t9 t t8 t6 t20 #3 #3 t7 t6 t2 t4 substitution t4 := t2 t3 := t4 t8 := t6 t7 t0 := t8 t9 t := t20 t2 t9 t9 t7 t2 #3 #3 t3 24

25 Example result type #3 #5 t t6 t7 t0 t t0 t t2 t3 t4 t t4 t8 t8 t9 t9 a a t t8 t6 t20 #3 #3 t7 t6 t2 t4 #5 t9 #5 t9 t7 t2 #3 #3 t3 25

26 Solving inconsistencies Int : t Int Int t #3 t2 t3 Int Bool wrong paths: {,,#3,} {,,#3,} decompose paths: {,,} {,,} {,#3,} 26

27 Solving inconsistencies Int : t Int Int t #3 t2 t3 Int Bool wrong paths: {,,#3,} {,,#3,} decompose paths: {,,} {,,} {,#3,} minimal set {,} {,} {,} {,#3} {,} {#3,} 27

28 Solving inconsistencies Int : t Int Int t #3 t2 t3 Int Bool removal cost minimal set #3 good good paths: {,} {,} {,} {,} {,#3} {,} {#3,} 28

29 Solving inconsistencies Int : t Int Int t #3 t2 t3 Int Bool removal cost minimal set #3 good trust 5 5 each constraint has a trust value {,} {,} {,} {,#3} {,} {#3,} 29

30 Solving inconsistencies Int : t Int Int t #3 t2 t3 Int Bool removal cost minimal set #3 good trust 5 5 cost ( + good) * trust {,} {,} {,} {,#3} {,} {#3,} 30

31 Solving inconsistencies Int : t Int Int t #3 t2 t3 Int Bool removal cost minimal set total cost #3 good trust 5 5 cost remove the constraints in the set with the lowest total cost {,} {,} {,} {,#3} {,} {#3,}

32 Solving inconsistencies Int t t2 t3 Int Bool the inconsistency is removed 32

33 Future work Explicit typing Type synonyms Type classes Kindinferencing Type tracing Advanced output BANE 33

34 Conclusion Left-to-right bias is completely removed Several heuristics increase the exactness of the error message considerably Possibility to add more heuristics 34

Chapter 7: Functional Programming Languages

Chapter 7: Functional Programming Languages Chapter 7: Functional Programming Languages Aarne Ranta Slides for the book Implementing Programming Languages. An Introduction to Compilers and Interpreters, College Publications, 2012. Fun: a language

More information

The Clean programming language. Group 25, Jingui Li, Daren Tuzi

The Clean programming language. Group 25, Jingui Li, Daren Tuzi The Clean programming language Group 25, Jingui Li, Daren Tuzi The Clean programming language Overview The Clean programming language first appeared in 1987 and is still being further developed. It was

More information

Adding GADTs to OCaml the direct approach

Adding GADTs to OCaml the direct approach Adding GADTs to OCaml the direct approach Jacques Garrigue & Jacques Le Normand Nagoya University / LexiFi (Paris) https://sites.google.com/site/ocamlgadt/ Garrigue & Le Normand Adding GADTs to OCaml 1

More information

AP CALCULUS AB 2007 SCORING GUIDELINES (Form B)

AP CALCULUS AB 2007 SCORING GUIDELINES (Form B) AP CALCULUS AB 2007 SCORING GUIDELINES (Form B) Question 4 Let f be a function defined on the closed interval 5 x 5 with f ( 1) = 3. The graph of f, the derivative of f, consists of two semicircles and

More information

Top Quality Type Error Messages

Top Quality Type Error Messages Top Quality Type Error Messages Top Kwaliteit Typeringsfoutmeldingen (met een samenvatting in het Nederlands) Proefschrift ter verkrijging van de graad van doctor aan de Universiteit Utrecht op gezag van

More information

Moving from CS 61A Scheme to CS 61B Java

Moving from CS 61A Scheme to CS 61B Java Moving from CS 61A Scheme to CS 61B Java Introduction Java is an object-oriented language. This document describes some of the differences between object-oriented programming in Scheme (which we hope you

More information

Types, Polymorphism, and Type Reconstruction

Types, Polymorphism, and Type Reconstruction Types, Polymorphism, and Type Reconstruction Sources This material is based on the following sources: Pierce, B.C., Types and Programming Languages. MIT Press, 2002. Kanellakis, P.C., Mairson, H.G. and

More information

Satisfiability Checking

Satisfiability Checking Satisfiability Checking SAT-Solving Prof. Dr. Erika Ábrahám Theory of Hybrid Systems Informatik 2 WS 10/11 Prof. Dr. Erika Ábrahám - Satisfiability Checking 1 / 40 A basic SAT algorithm Assume the CNF

More information

MAT12X Intermediate Algebra

MAT12X Intermediate Algebra MAT12X Intermediate Algebra Workshop I - Exponential Functions LEARNING CENTER Overview Workshop I Exponential Functions of the form y = ab x Properties of the increasing and decreasing exponential functions

More information

3.1 Solving Systems Using Tables and Graphs

3.1 Solving Systems Using Tables and Graphs Algebra 2 Chapter 3 3.1 Solve Systems Using Tables & Graphs 3.1 Solving Systems Using Tables and Graphs A solution to a system of linear equations is an that makes all of the equations. To solve a system

More information

TECHNICAL UNIVERSITY OF CRETE DATA STRUCTURES FILE STRUCTURES

TECHNICAL UNIVERSITY OF CRETE DATA STRUCTURES FILE STRUCTURES TECHNICAL UNIVERSITY OF CRETE DEPT OF ELECTRONIC AND COMPUTER ENGINEERING DATA STRUCTURES AND FILE STRUCTURES Euripides G.M. Petrakis http://www.intelligence.tuc.gr/~petrakis Chania, 2007 E.G.M. Petrakis

More information

Why? A central concept in Computer Science. Algorithms are ubiquitous.

Why? A central concept in Computer Science. Algorithms are ubiquitous. Analysis of Algorithms: A Brief Introduction Why? A central concept in Computer Science. Algorithms are ubiquitous. Using the Internet (sending email, transferring files, use of search engines, online

More information

Outline Basic concepts of Python language

Outline Basic concepts of Python language Data structures: lists, tuples, sets, dictionaries Basic data types Examples: int: 12, 0, -2 float: 1.02, -2.4e2, 1.5e-3 complex: 3+4j bool: True, False string: "Test string" Conversion between types int(-2.8)

More information

Shortest Inspection-Path. Queries in Simple Polygons

Shortest Inspection-Path. Queries in Simple Polygons Shortest Inspection-Path Queries in Simple Polygons Christian Knauer, Günter Rote B 05-05 April 2005 Shortest Inspection-Path Queries in Simple Polygons Christian Knauer, Günter Rote Institut für Informatik,

More information

Chapter 15 Functional Programming Languages

Chapter 15 Functional Programming Languages Chapter 15 Functional Programming Languages Introduction - The design of the imperative languages is based directly on the von Neumann architecture Efficiency (at least at first) is the primary concern,

More information

TypeScript for C# developers. Making JavaScript manageable

TypeScript for C# developers. Making JavaScript manageable TypeScript for C# developers Making JavaScript manageable Agenda What is TypeScript OO in TypeScript Closure Generics Iterators Asynchronous programming Modularisation Debugging TypeScript 2 What is TypeScript

More information

Compiler Construction

Compiler Construction Compiler Construction Regular expressions Scanning Görel Hedin Reviderad 2013 01 23.a 2013 Compiler Construction 2013 F02-1 Compiler overview source code lexical analysis tokens intermediate code generation

More information

Advanced Functional Programming (9) Domain Specific Embedded Languages

Advanced Functional Programming (9) Domain Specific Embedded Languages Advanced Functional Programming (9) Domain Specific Embedded Languages Advanced Functional Programming (9) Domain Specific Embedded Languages, Universiteit Utrecht http://www.cs.uu.nl/groups/st/ February

More information

Programming Language Rankings. Lecture 15: Type Inference, polymorphism & Type Classes. Top Combined. Tiobe Index. CSC 131! Fall, 2014!

Programming Language Rankings. Lecture 15: Type Inference, polymorphism & Type Classes. Top Combined. Tiobe Index. CSC 131! Fall, 2014! Programming Language Rankings Lecture 15: Type Inference, polymorphism & Type Classes CSC 131 Fall, 2014 Kim Bruce Top Combined Tiobe Index 1. JavaScript (+1) 2. Java (-1) 3. PHP 4. C# (+2) 5. Python (-1)

More information

Temporal Logics. Computation Tree Logic

Temporal Logics. Computation Tree Logic Temporal Logics CTL: definition, relationship between operators, adequate sets, specifying properties, safety/liveness/fairness Modeling: sequential, concurrent systems; maximum parallelism/interleaving

More information

Section IV.1: Recursive Algorithms and Recursion Trees

Section IV.1: Recursive Algorithms and Recursion Trees Section IV.1: Recursive Algorithms and Recursion Trees Definition IV.1.1: A recursive algorithm is an algorithm that solves a problem by (1) reducing it to an instance of the same problem with smaller

More information

Obfuscation: know your enemy

Obfuscation: know your enemy Obfuscation: know your enemy Ninon EYROLLES neyrolles@quarkslab.com Serge GUELTON sguelton@quarkslab.com Prelude Prelude Plan 1 Introduction What is obfuscation? 2 Control flow obfuscation 3 Data flow

More information

6.2 Permutations continued

6.2 Permutations continued 6.2 Permutations continued Theorem A permutation on a finite set A is either a cycle or can be expressed as a product (composition of disjoint cycles. Proof is by (strong induction on the number, r, of

More information

Network (Tree) Topology Inference Based on Prüfer Sequence

Network (Tree) Topology Inference Based on Prüfer Sequence Network (Tree) Topology Inference Based on Prüfer Sequence C. Vanniarajan and Kamala Krithivasan Department of Computer Science and Engineering Indian Institute of Technology Madras Chennai 600036 vanniarajanc@hcl.in,

More information

Section 9.5: Equations of Lines and Planes

Section 9.5: Equations of Lines and Planes Lines in 3D Space Section 9.5: Equations of Lines and Planes Practice HW from Stewart Textbook (not to hand in) p. 673 # 3-5 odd, 2-37 odd, 4, 47 Consider the line L through the point P = ( x, y, ) that

More information

Type Inference for First-Class Messages with Match-Functions

Type Inference for First-Class Messages with Match-Functions Type Inference for First-Class Messages with Match-Functions Paritosh Shroff Scott F. Smith Johns Hopkins University {pari, scott}@cs.jhu.edu Abstract Messages that can be treated as first-class entities

More information

each college c i C has a capacity q i - the maximum number of students it will admit

each college c i C has a capacity q i - the maximum number of students it will admit n colleges in a set C, m applicants in a set A, where m is much larger than n. each college c i C has a capacity q i - the maximum number of students it will admit each college c i has a strict order i

More information

Cassandra. References:

Cassandra. References: Cassandra References: Becker, Moritz; Sewell, Peter. Cassandra: Flexible Trust Management, Applied to Electronic Health Records. 2004. Li, Ninghui; Mitchell, John. Datalog with Constraints: A Foundation

More information

Basic Polymorphic Typechecking

Basic Polymorphic Typechecking Science of Computer Programming 8/2 (April 1987) Revised 6/21/88 Basic Polymorphic Typechecking Luca Cardelli AT&T Bell Laboratories, Murray Hill, NJ 07974 (current address: DEC SRC, 130 Lytton Ave, Palo

More information

Recursion. Slides. Programming in C++ Computer Science Dept Va Tech Aug., 2001. 1995-2001 Barnette ND, McQuain WD

Recursion. Slides. Programming in C++ Computer Science Dept Va Tech Aug., 2001. 1995-2001 Barnette ND, McQuain WD 1 Slides 1. Table of Contents 2. Definitions 3. Simple 4. Recursive Execution Trace 5. Attributes 6. Recursive Array Summation 7. Recursive Array Summation Trace 8. Coding Recursively 9. Recursive Design

More information

Introduction to type systems

Introduction to type systems Introduction to type systems p. 1/5 Introductory Course on Logic and Automata Theory Introduction to type systems Polyvios.Pratikakis@imag.fr Based on slides by Jeff Foster, UMD Introduction to type systems

More information

Fuld Skolerapport for Søhusskolen, i Odense kommune, for skoleår 2013/2014 for klassetrin(ene) 9. med reference Tilsvarende klassetrin i kommunen

Fuld Skolerapport for Søhusskolen, i Odense kommune, for skoleår 2013/2014 for klassetrin(ene) 9. med reference Tilsvarende klassetrin i kommunen Side 1 af 41 Side 2 af 41 Side 3 af 41 Side 4 af 41 Side 5 af 41 Side 6 af 41 Side 7 af 41 Side 8 af 41 Side 9 af 41 Side 10 af 41 Side 11 af 41 Side 12 af 41 Side 13 af 41 Side 14 af 41 Side 15 af 41

More information

Fuld Skolerapport for Hunderupskolen, i Odense kommune, for skoleår 2013/2014 for klassetrin(ene) 7. med reference Tilsvarende klassetrin i kommunen

Fuld Skolerapport for Hunderupskolen, i Odense kommune, for skoleår 2013/2014 for klassetrin(ene) 7. med reference Tilsvarende klassetrin i kommunen Side 1 af 43 Side 2 af 43 Side 3 af 43 Side 4 af 43 Side 5 af 43 Side 6 af 43 Side 7 af 43 Side 8 af 43 Side 9 af 43 Side 10 af 43 Side 11 af 43 Side 12 af 43 Side 13 af 43 Side 14 af 43 Side 15 af 43

More information

CS 141: Introduction to (Java) Programming: Exam 1 Jenny Orr Willamette University Fall 2013

CS 141: Introduction to (Java) Programming: Exam 1 Jenny Orr Willamette University Fall 2013 Oct 4, 2013, p 1 Name: CS 141: Introduction to (Java) Programming: Exam 1 Jenny Orr Willamette University Fall 2013 1. (max 18) 4. (max 16) 2. (max 12) 5. (max 12) 3. (max 24) 6. (max 18) Total: (max 100)

More information

THREE DIMENSIONAL GEOMETRY

THREE DIMENSIONAL GEOMETRY Chapter 8 THREE DIMENSIONAL GEOMETRY 8.1 Introduction In this chapter we present a vector algebra approach to three dimensional geometry. The aim is to present standard properties of lines and planes,

More information

Software Testing. Definition: Testing is a process of executing a program with data, with the sole intention of finding errors in the program.

Software Testing. Definition: Testing is a process of executing a program with data, with the sole intention of finding errors in the program. Software Testing Definition: Testing is a process of executing a program with data, with the sole intention of finding errors in the program. Testing can only reveal the presence of errors and not the

More information

How to Write a Checker in 24 Hours

How to Write a Checker in 24 Hours How to Write a Checker in 24 Hours Clang Static Analyzer Anna Zaks and Jordan Rose Apple Inc. What is this talk about? The Clang Static Analyzer is a bug finding tool It can be extended with custom checkers

More information

Translating Generalized Algebraic Data Types to System F

Translating Generalized Algebraic Data Types to System F Translating Generalized Algebraic Data Types to System F Martin Sulzmann and Meng Wang {sulzmann,wangmeng}@comp.nus.edu.sg School of Computing, National University of Singapore S16 Level 5, 3 Science Drive

More information

Software Testing & Verification 2013/2014 Universiteit Utrecht

Software Testing & Verification 2013/2014 Universiteit Utrecht Software Testing & Verification 2013/2014 Universiteit Utrecht 2nd Jul. 2014, 13:30-16:30, BBL 001 Lecturer: Wishnu Prasetya You are allowed to bring along the Appendix of the LN. Part I [3pt (6 0.5)]

More information

Synthesizing Proof Planning Methods and ΩANTS Agents from Mathematical Knowledge

Synthesizing Proof Planning Methods and ΩANTS Agents from Mathematical Knowledge Synthesizing Proof Planning Methods and ΩANTS Agents from Mathematical Knowledge Serge Autexier, Dominik Dietrich dietrich@ags.uni-sb.de Saarland University, Saarbrücken MKM 06 p.1 Motivation Knowledge-based

More information

Deterministic Discrete Modeling

Deterministic Discrete Modeling Deterministic Discrete Modeling Formal Semantics of Firewalls in Isabelle/HOL Cornelius Diekmann, M.Sc. Dr. Heiko Niedermayer Prof. Dr.-Ing. Georg Carle Lehrstuhl für Netzarchitekturen und Netzdienste

More information

Aspect-Oriented Programming with Type Classes

Aspect-Oriented Programming with Type Classes Aspect-Oriented Programming with Type Classes Martin Sulzmann School of Computing, National University of Singapore S16 Level 5, 3 Science Drive 2, Singapore 117543 sulzmann@comp.nus.edu.sg Meng Wang School

More information

Improving Knowledge-Based System Performance by Reordering Rule Sequences

Improving Knowledge-Based System Performance by Reordering Rule Sequences Improving Knowledge-Based System Performance by Reordering Rule Sequences Neli P. Zlatareva Department of Computer Science Central Connecticut State University 1615 Stanley Street New Britain, CT 06050

More information

Well-Separated Pair Decomposition for the Unit-disk Graph Metric and its Applications

Well-Separated Pair Decomposition for the Unit-disk Graph Metric and its Applications Well-Separated Pair Decomposition for the Unit-disk Graph Metric and its Applications Jie Gao Department of Computer Science Stanford University Joint work with Li Zhang Systems Research Center Hewlett-Packard

More information

Economics 326: Duality and the Slutsky Decomposition. Ethan Kaplan

Economics 326: Duality and the Slutsky Decomposition. Ethan Kaplan Economics 326: Duality and the Slutsky Decomposition Ethan Kaplan September 19, 2011 Outline 1. Convexity and Declining MRS 2. Duality and Hicksian Demand 3. Slutsky Decomposition 4. Net and Gross Substitutes

More information

Reducing Clocks in Timed Automata while Preserving Bisimulation

Reducing Clocks in Timed Automata while Preserving Bisimulation Reducing Clocks in Timed Automata while Preserving Bisimulation Shibashis Guha Chinmay Narayan S. Arun-Kumar Indian Institute of Technology Delhi {shibashis, chinmay, sak}@cse.iitd.ac.in arxiv:1404.6613v2

More information

Absolute Value Equations and Inequalities

Absolute Value Equations and Inequalities Key Concepts: Compound Inequalities Absolute Value Equations and Inequalities Intersections and unions Suppose that A and B are two sets of numbers. The intersection of A and B is the set of all numbers

More information

Complexity Theory. IE 661: Scheduling Theory Fall 2003 Satyaki Ghosh Dastidar

Complexity Theory. IE 661: Scheduling Theory Fall 2003 Satyaki Ghosh Dastidar Complexity Theory IE 661: Scheduling Theory Fall 2003 Satyaki Ghosh Dastidar Outline Goals Computation of Problems Concepts and Definitions Complexity Classes and Problems Polynomial Time Reductions Examples

More information

Plan-Space Search. Searching for a Solution Plan in a Graph of Partial Plans

Plan-Space Search. Searching for a Solution Plan in a Graph of Partial Plans Plan-Space Search Searching for a Solution Plan in a Graph of Partial Plans Literature Malik Ghallab, Dana Nau, and Paolo Traverso. Automated Planning Theory and Practice, chapter 2 and 5. Elsevier/Morgan

More information

Jedd: A BDD-based Relational Extension of Java

Jedd: A BDD-based Relational Extension of Java Jedd: A BDD-based Relational Extension of Java Ondřej Lhoták Laurie Hendren Sable Research Group, School of Computer Science McGill University, Montreal, Canada {olhotak,hendren}@sable.mcgill.ca ABSTRACT

More information

Python Programming: An Introduction To Computer Science

Python Programming: An Introduction To Computer Science Python Programming: An Introduction To Computer Science Chapter 8 Booleans and Control Structures Python Programming, 2/e 1 Objectives æ To understand the concept of Boolean expressions and the bool data

More information

Unix Shell Scripts. Contents. 1 Introduction. Norman Matloff. July 30, 2008. 1 Introduction 1. 2 Invoking Shell Scripts 2

Unix Shell Scripts. Contents. 1 Introduction. Norman Matloff. July 30, 2008. 1 Introduction 1. 2 Invoking Shell Scripts 2 Unix Shell Scripts Norman Matloff July 30, 2008 Contents 1 Introduction 1 2 Invoking Shell Scripts 2 2.1 Direct Interpretation....................................... 2 2.2 Indirect Interpretation......................................

More information

A Static Analyzer for Large Safety-Critical Software. Considered Programs and Semantics. Automatic Program Verification by Abstract Interpretation

A Static Analyzer for Large Safety-Critical Software. Considered Programs and Semantics. Automatic Program Verification by Abstract Interpretation PLDI 03 A Static Analyzer for Large Safety-Critical Software B. Blanchet, P. Cousot, R. Cousot, J. Feret L. Mauborgne, A. Miné, D. Monniaux,. Rival CNRS École normale supérieure École polytechnique Paris

More information

GREATEST COMMON DIVISOR

GREATEST COMMON DIVISOR DEFINITION: GREATEST COMMON DIVISOR The greatest common divisor (gcd) of a and b, denoted by (a, b), is the largest common divisor of integers a and b. THEOREM: If a and b are nonzero integers, then their

More information

Translating to Java. Translation. Input. Many Level Translations. read, get, input, ask, request. Requirements Design Algorithm Java Machine Language

Translating to Java. Translation. Input. Many Level Translations. read, get, input, ask, request. Requirements Design Algorithm Java Machine Language Translation Translating to Java Introduction to Computer Programming The job of a programmer is to translate a problem description into a computer language. You need to be able to convert a problem description

More information

GCE. Computing. Mark Scheme for January 2011. Advanced Subsidiary GCE Unit F452: Programming Techniques and Logical Methods

GCE. Computing. Mark Scheme for January 2011. Advanced Subsidiary GCE Unit F452: Programming Techniques and Logical Methods GCE Computing Advanced Subsidiary GCE Unit F452: Programming Techniques and Logical Methods Mark Scheme for January 2011 Oxford Cambridge and RSA Examinations OCR (Oxford Cambridge and RSA) is a leading

More information

Note: This App is under development and available for testing on request. Note: This App is under development and available for testing on request. Note: This App is under development and available for

More information

Iteration CHAPTER 6. Topic Summary

Iteration CHAPTER 6. Topic Summary CHAPTER 6 Iteration TOPIC OUTLINE 6.1 while Loops 6.2 for Loops 6.3 Nested Loops 6.4 Off-by-1 Errors 6.5 Random Numbers and Simulations 6.6 Loop Invariants (AB only) Topic Summary 6.1 while Loops Many

More information

Seminar. Path planning using Voronoi diagrams and B-Splines. Stefano Martina stefano.martina@stud.unifi.it

Seminar. Path planning using Voronoi diagrams and B-Splines. Stefano Martina stefano.martina@stud.unifi.it Seminar Path planning using Voronoi diagrams and B-Splines Stefano Martina stefano.martina@stud.unifi.it 23 may 2016 This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International

More information

Extending Dependencies with Conditions

Extending Dependencies with Conditions Extending Dependencies with Conditions Loreto Bravo University of Edinburgh lbravo@inf.ed.ac.uk Wenfei Fan Univ. of Edinburgh & Bell Labs wenfei@inf.ed.ac.uk Shuai Ma University of Edinburgh sma1@inf.ed.ac.uk

More information

Journal of Functional Programming, volume 3 number 4, 1993. Dynamics in ML

Journal of Functional Programming, volume 3 number 4, 1993. Dynamics in ML Journal of Functional Programming, volume 3 number 4, 1993. Dynamics in ML Xavier Leroy École Normale Supérieure Michel Mauny INRIA Rocquencourt Abstract Objects with dynamic types allow the integration

More information

Part I. Multiple Choice Questions (2 points each):

Part I. Multiple Choice Questions (2 points each): Part I. Multiple Choice Questions (2 points each): 1. Which of the following is NOT a key component of object oriented programming? (a) Inheritance (b) Encapsulation (c) Polymorphism (d) Parallelism ******

More information

A production system monitor for parallel computers

A production system monitor for parallel computers Carnegie Mellon University Research Showcase @ CMU Computer Science Department School of Computer Science 1977 A production system monitor for parallel computers Charles L.(Charles Lanny) Forgy Carnegie

More information

Chapter 2: Algorithm Discovery and Design. Invitation to Computer Science, C++ Version, Third Edition

Chapter 2: Algorithm Discovery and Design. Invitation to Computer Science, C++ Version, Third Edition Chapter 2: Algorithm Discovery and Design Invitation to Computer Science, C++ Version, Third Edition Objectives In this chapter, you will learn about: Representing algorithms Examples of algorithmic problem

More information

COMP 356 Programming Language Structures Notes for Chapter 4 of Concepts of Programming Languages Scanning and Parsing

COMP 356 Programming Language Structures Notes for Chapter 4 of Concepts of Programming Languages Scanning and Parsing COMP 356 Programming Language Structures Notes for Chapter 4 of Concepts of Programming Languages Scanning and Parsing The scanner (or lexical analyzer) of a compiler processes the source program, recognizing

More information

POLYTYPIC PROGRAMMING OR: Programming Language Theory is Helpful

POLYTYPIC PROGRAMMING OR: Programming Language Theory is Helpful POLYTYPIC PROGRAMMING OR: Programming Language Theory is Helpful RALF HINZE Institute of Information and Computing Sciences Utrecht University Email: ralf@cs.uu.nl Homepage: http://www.cs.uu.nl/~ralf/

More information

Chapter 7: Relational Database Design

Chapter 7: Relational Database Design Chapter 7: Relational Database Design Pitfalls in Relational Database Design Decomposition Normalization Using Functional Dependencies Normalization Using Multivalued Dependencies Normalization Using Join

More information

Spark. Fast, Interactive, Language- Integrated Cluster Computing

Spark. Fast, Interactive, Language- Integrated Cluster Computing Spark Fast, Interactive, Language- Integrated Cluster Computing Matei Zaharia, Mosharaf Chowdhury, Tathagata Das, Ankur Dave, Justin Ma, Murphy McCauley, Michael Franklin, Scott Shenker, Ion Stoica UC

More information

APPROACHES TO SOFTWARE TESTING PROGRAM VERIFICATION AND VALIDATION

APPROACHES TO SOFTWARE TESTING PROGRAM VERIFICATION AND VALIDATION 1 APPROACHES TO SOFTWARE TESTING PROGRAM VERIFICATION AND VALIDATION Validation: Are we building the right product? Does program meet expectations of user? Verification: Are we building the product right?

More information

Euler Paths and Euler Circuits

Euler Paths and Euler Circuits Euler Paths and Euler Circuits An Euler path is a path that uses every edge of a graph exactly once. An Euler circuit is a circuit that uses every edge of a graph exactly once. An Euler path starts and

More information

Functional Dependencies and Finding a Minimal Cover

Functional Dependencies and Finding a Minimal Cover Functional Dependencies and Finding a Minimal Cover Robert Soulé 1 Normalization An anomaly occurs in a database when you can update, insert, or delete data, and get undesired side-effects. These side

More information

Three Effective Top-Down Clustering Algorithms for Location Database Systems

Three Effective Top-Down Clustering Algorithms for Location Database Systems Three Effective Top-Down Clustering Algorithms for Location Database Systems Kwang-Jo Lee and Sung-Bong Yang Department of Computer Science, Yonsei University, Seoul, Republic of Korea {kjlee5435, yang}@cs.yonsei.ac.kr

More information

CHAPTER 4 LINEAR SCHEDULING METHOD (LSM) AND ITS APPLICATIONS

CHAPTER 4 LINEAR SCHEDULING METHOD (LSM) AND ITS APPLICATIONS 33 CHAPTER 4 LINEAR SCHEDULING METHOD (LSM) AND ITS APPLICATIONS 4.1 BASICS OF LINEAR SCHEDULING The LSM is a graphical technique in which the locations or the length of the linear project is indicated

More information

Introduction to Programming (in C++) Loops. Jordi Cortadella, Ricard Gavaldà, Fernando Orejas Dept. of Computer Science, UPC

Introduction to Programming (in C++) Loops. Jordi Cortadella, Ricard Gavaldà, Fernando Orejas Dept. of Computer Science, UPC Introduction to Programming (in C++) Loops Jordi Cortadella, Ricard Gavaldà, Fernando Orejas Dept. of Computer Science, UPC Example Assume the following specification: Input: read a number N > 0 Output:

More information

Example. Introduction to Programming (in C++) Loops. The while statement. Write the numbers 1 N. Assume the following specification:

Example. Introduction to Programming (in C++) Loops. The while statement. Write the numbers 1 N. Assume the following specification: Example Introduction to Programming (in C++) Loops Assume the following specification: Input: read a number N > 0 Output: write the sequence 1 2 3 N (one number per line) Jordi Cortadella, Ricard Gavaldà,

More information

Mathematics 205 HWK 6 Solutions Section 13.3 p627. Note: Remember that boldface is being used here, rather than overhead arrows, to indicate vectors.

Mathematics 205 HWK 6 Solutions Section 13.3 p627. Note: Remember that boldface is being used here, rather than overhead arrows, to indicate vectors. Mathematics 205 HWK 6 Solutions Section 13.3 p627 Note: Remember that boldface is being used here, rather than overhead arrows, to indicate vectors. Problem 5, 13.3, p627. Given a = 2j + k or a = (0,2,

More information

Name: Class: Date: 9. The compiler ignores all comments they are there strictly for the convenience of anyone reading the program.

Name: Class: Date: 9. The compiler ignores all comments they are there strictly for the convenience of anyone reading the program. Name: Class: Date: Exam #1 - Prep True/False Indicate whether the statement is true or false. 1. Programming is the process of writing a computer program in a language that the computer can respond to

More information

Section 8.8. 1. The given line has equations. x = 3 + t(13 3) = 3 + 10t, y = 2 + t(3 + 2) = 2 + 5t, z = 7 + t( 8 7) = 7 15t.

Section 8.8. 1. The given line has equations. x = 3 + t(13 3) = 3 + 10t, y = 2 + t(3 + 2) = 2 + 5t, z = 7 + t( 8 7) = 7 15t. . The given line has equations Section 8.8 x + t( ) + 0t, y + t( + ) + t, z 7 + t( 8 7) 7 t. The line meets the plane y 0 in the point (x, 0, z), where 0 + t, or t /. The corresponding values for x and

More information

The Needle Programming Language

The Needle Programming Language The Needle Programming Language The Needle Programming Language 1 What is Needle? Needle is an object-oriented functional programming language with a multimethod-based OO system, and a static type system

More information

Test case design techniques I: Whitebox testing CISS

Test case design techniques I: Whitebox testing CISS Test case design techniques I: Whitebox testing Overview What is a test case Sources for test case derivation Test case execution White box testing Flowgraphs Test criteria/coverage Statement / branch

More information

Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science

Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science 6.035, Fall 2005 Handout 7 Scanner Parser Project Wednesday, September 7 DUE: Wednesday, September 21 This

More information

On Testing Image Processing Applications With Statistical Methods

On Testing Image Processing Applications With Statistical Methods On Testing Image Processing Applications With Statistical Methods Johannes Mayer Abteilung Angewandte Informationsverarbeitung Universität Ulm D 89069 Ulm mayer@mathematik.uni-ulm.de Abstract: Testing

More information

Outline. Conditional Statements. Logical Data in C. Logical Expressions. Relational Examples. Relational Operators

Outline. Conditional Statements. Logical Data in C. Logical Expressions. Relational Examples. Relational Operators Conditional Statements For computer to make decisions, must be able to test CONDITIONS IF it is raining THEN I will not go outside IF Count is not zero THEN the Average is Sum divided by Count Conditions

More information

Introduction to Python for Text Analysis

Introduction to Python for Text Analysis Introduction to Python for Text Analysis Jennifer Pan Institute for Quantitative Social Science Harvard University (Political Science Methods Workshop, February 21 2014) *Much credit to Andy Hall and Learning

More information

An Introduction to The A* Algorithm

An Introduction to The A* Algorithm An Introduction to The A* Algorithm Introduction The A* (A-Star) algorithm depicts one of the most popular AI methods used to identify the shortest path between 2 locations in a mapped area. The A* algorithm

More information

The Goldberg Rao Algorithm for the Maximum Flow Problem

The Goldberg Rao Algorithm for the Maximum Flow Problem The Goldberg Rao Algorithm for the Maximum Flow Problem COS 528 class notes October 18, 2006 Scribe: Dávid Papp Main idea: use of the blocking flow paradigm to achieve essentially O(min{m 2/3, n 1/2 }

More information

Algebra I Vocabulary Cards

Algebra I Vocabulary Cards Algebra I Vocabulary Cards Table of Contents Expressions and Operations Natural Numbers Whole Numbers Integers Rational Numbers Irrational Numbers Real Numbers Absolute Value Order of Operations Expression

More information

A Constraint Programming based Column Generation Approach to Nurse Rostering Problems

A Constraint Programming based Column Generation Approach to Nurse Rostering Problems Abstract A Constraint Programming based Column Generation Approach to Nurse Rostering Problems Fang He and Rong Qu The Automated Scheduling, Optimisation and Planning (ASAP) Group School of Computer Science,

More information

Y. Xiang, Constraint Satisfaction Problems

Y. Xiang, Constraint Satisfaction Problems Constraint Satisfaction Problems Objectives Constraint satisfaction problems Backtracking Iterative improvement Constraint propagation Reference Russell & Norvig: Chapter 5. 1 Constraints Constraints are

More information

Output: 12 18 30 72 90 87. struct treenode{ int data; struct treenode *left, *right; } struct treenode *tree_ptr;

Output: 12 18 30 72 90 87. struct treenode{ int data; struct treenode *left, *right; } struct treenode *tree_ptr; 50 20 70 10 30 69 90 14 35 68 85 98 16 22 60 34 (c) Execute the algorithm shown below using the tree shown above. Show the exact output produced by the algorithm. Assume that the initial call is: prob3(root)

More information

Programming and Reasoning with Side-Effects in IDRIS

Programming and Reasoning with Side-Effects in IDRIS Programming and Reasoning with Side-Effects in IDRIS Edwin Brady 19th October 2014 Contents 1 Introduction 3 1.1 Hello world............................................. 3 1.2 Outline................................................

More information

Form Validation. Server-side Web Development and Programming. What to Validate. Error Prevention. Lecture 7: Input Validation and Error Handling

Form Validation. Server-side Web Development and Programming. What to Validate. Error Prevention. Lecture 7: Input Validation and Error Handling Form Validation Server-side Web Development and Programming Lecture 7: Input Validation and Error Handling Detecting user error Invalid form information Inconsistencies of forms to other entities Enter

More information

Math 2280 - Assignment 6

Math 2280 - Assignment 6 Math 2280 - Assignment 6 Dylan Zwick Spring 2014 Section 3.8-1, 3, 5, 8, 13 Section 4.1-1, 2, 13, 15, 22 Section 4.2-1, 10, 19, 28 1 Section 3.8 - Endpoint Problems and Eigenvalues 3.8.1 For the eigenvalue

More information

SOLUTION Trial Test Grammar & Parsing Deficiency Course for the Master in Software Technology Programme Utrecht University

SOLUTION Trial Test Grammar & Parsing Deficiency Course for the Master in Software Technology Programme Utrecht University SOLUTION Trial Test Grammar & Parsing Deficiency Course for the Master in Software Technology Programme Utrecht University Year 2004/2005 1. (a) LM is a language that consists of sentences of L continued

More information

University of Toronto Department of Electrical and Computer Engineering. Midterm Examination. CSC467 Compilers and Interpreters Fall Semester, 2005

University of Toronto Department of Electrical and Computer Engineering. Midterm Examination. CSC467 Compilers and Interpreters Fall Semester, 2005 University of Toronto Department of Electrical and Computer Engineering Midterm Examination CSC467 Compilers and Interpreters Fall Semester, 2005 Time and date: TBA Location: TBA Print your name and ID

More information

Solutions. Updated 2013-12-13. 1 of 6

Solutions. Updated 2013-12-13. 1 of 6 CHALMERS UNIVERSITY OF TECHNOLOGY Department of Computer Science and Engineering Examination in Databases, TDA357/DIT620 Saturday 19 December 2009, 08:30-12:30 Solutions Updated 2013-12-13 1 of 6 Question

More information

DATABASE NORMALIZATION

DATABASE NORMALIZATION DATABASE NORMALIZATION Normalization: process of efficiently organizing data in the DB. RELATIONS (attributes grouped together) Accurate representation of data, relationships and constraints. Goal: - Eliminate

More information

Solving Linear Equations in One Variable. Worked Examples

Solving Linear Equations in One Variable. Worked Examples Solving Linear Equations in One Variable Worked Examples Solve the equation 30 x 1 22x Solve the equation 30 x 1 22x Our goal is to isolate the x on one side. We ll do that by adding (or subtracting) quantities

More information