A Prolog-based Proof Tool for Type Theory TA λ and Implicational Intuitionistic-Logic
|
|
- Richard Woods
- 5 years ago
- Views:
Transcription
1 for Type Theory TA λ and Implicational Intuitionistic-Logic L. Yohanes Stefanus University of Indonesia Depok 16424, Indonesia and Ario Santoso Technische Universität Dresden Dresden 01187, Germany Abstract Studies on type theory have brought numerous important contributions to computer science. In this paper we present a GUI-based proof tool that provides assistance in constructing deductions in type theory and validating implicational intuitionistic-logic formulas. As such, this proof tool is a testbed for learning type theory and implicational intuitionistic-logic. This proof tool focuses on an important variant of type theory named TA λ, especially on its two core algorithms: the principal-type algorithm and the type inhabitant search algorithm. The former algorithm finds a most general type assignable to a given λ-term, while the latter finds inhabitants (closed λ-terms in β-normal form) to which a given type can be assigned. By the Curry Howard correspondence, the latter algorithm provides provability for implicational formulas in intuitionistic logic. We elaborate on how to implement those two algorithms declaratively in Prolog and the overall GUI-based program architecture. In our implementation, we make some modification to improve the performance of the principal-type algorithm. We have also built a web-based version of the proof tool called λ-guru. 1 Introduction In 1902, Russell revealed the inconsistency in naive set theory. This inconsistency challenged the foundation of mathematics at that time. To solve that problem, type theory was introduced [1, 5]. As time goes on, type theory becomes widely used, it becomes a logician s standard tool, especially in proof theory. Since 1970s, the need for robust programming languages has made type theory the center of attention among computer scientists. Many practical programming languages have been developed based on type theory [4, 6]. Type theory has many variants, one of them is called TA λ (for type-assignment in λ- calculus). TA λ is one of the simplest type-theories. Many complex techniques for analyzing the structures of complex type-theories appear in TA λ in an easier form and hence easier to understand. Therefore, TA λ is a good vehicle for learning more complex techniques in type theory. By learning TA λ, one can obtain a good foundation to study other type-systems [4]. The importance of TA λ and its relation to type theory in general drive this research project. This work focuses on two most important algorithms in TA λ, i.e., the principal-type algorithm and the type inhabitant search algorithm. The former algorithm finds a most general type (principal type) assignable to a given λ-term, while the latter finds inhabitants (i.e., closed λ-terms in β-normal form) to which a given type can be assigned. Those two algorithms are implemented using Prolog and exploiting the ability of definite clause grammars (DCG) Supported by the European Master s Program in Computational Logic (EMCL) G. Sutcliffe, S. Schulz, E. Ternovska (eds.), IWIL 2010 (EPiC Series, vol. 2), pp. 41
2 for processing linguistic expressions. DCG is a Prolog feature for expressing grammar rules [2]. In addition, a graphical user interface (GUI) is developed for helping users try those two algorithms. Therefore, the resulting software can be used as a testbed for learning TA λ and, by the Curry Howard correspondence, as a proof assistant for implicational formulas in intuitionistic logic. 2 The Principal-Type Algorithm Implementation The principal-type algorithm decides whether a λ-term is typable or not. It takes a λ-term as an input. If the given λ-term is typable, this algorithm will produce its principal (most general) type and its TA λ -deduction tree. If the given λ-term is not typable, this algorithm will give a correct statement that the given λ-term is not typable. Here are some examples of input and output of this algorithm: 1. Input: λyz.(yz)z Output: y : a a b y : a a b z : a z : a ( E) y : a a b, z : a yz : a b z : a z : a ( E) y : a a b, z : a (yz)z : b ( I) y : a a b λz.(yz)z : a b ( I) λyz.(yz)z : (a a b) a b 2. Input: λxz.(xz)x Output: The term is not typable We do not explain the details of the algorithm in this paper due to space limitation. Please check the details in [, 4]. In this implementation, we use a definite clause grammar (DCG) in Prolog for parsing the input as a λ-term. While parsing the λ-term, the parser constructs a tree that represents the given λ-term. If the given λ-term is valid, the program will apply the principal-type algorithm to decide whether the given λ-term is typable or not and produce a deduction for the typable case. Generally the process is described by the flowchart in Figure 1. The principal-type algorithm consists of four cases: (1) when the λ-term is a term variable, (2) when the λ-term is an application, () when the λ-term is an abstraction λx.p with x F reev ariable(p ), and (4) when the λ-term is an abstraction λx.p with x / F reev ariable(p ). The four cases are distinguished in the predicate pta/5 which implements the algorithm by recursively analyzing the structure of the tree which represents the input λ-term. The five arguments of the predicate are as follows: 4 1. The λ-term M which we want to assign a type. 2. The TA λ -deduction for the λ-term M.. The result of the algorithm, i.e. the statement which says that the λ-term M is typable or not.
3 Figure 1: Flowchart for the Implementation of the Principal-Type Algorithm 4. The list of variables used during deduction. 5. The tree which represents the deduction. The case distinction happens in the first argument. For example, we represent an abstraction λx.m as abstraction(termvar(x),m). Then if the λ-term in the current recursion has that form, then we apply the algorithm for an abstraction. Improvement on the Principal-Type Algorithm In our implementation, we make some modification to improve the performance of the principaltype algorithm given in [4]. The improvement is obtained by combining case II and case III. This modification eliminates the need for checking whether an abstraction variable is free in the abstraction body or not. The Type Inhabitant Search Algorithm Implementation The type inhabitant search algorithm is a core procedure for answering the question given a type τ, how many inhabitants (closed λ-terms in β-normal form) can receive τ in TA λ? [8, 4]. This algorithm can be used as a tester whether the number of closed λ-terms that can receive a certain type τ is zero or not. As a consequence, by the Curry Howard correspondence, it can be used to test whether a certain implicational formula in intuitionistic logic is provable or not. The algorithm takes a type as input and searches for closed λ-terms in β-normal form that can receive the given type in TA λ through several steps. For example, given τ (((c d) c a) b) (d a) b as input, the algorithm will produce the following sets: A (τ, 0) = {V τ }, A (τ, 1) = {λx ((c d) c a) b 1 x d a 2.x ((c d) c a) b 1 V (c d) c a 1 }, A (τ, 2) = {λx ((c d) c a) b 1 x2 d a.x ((c d) c a) b 1 (λx c d x c 4.xd a 2 V2 d)}, 5
4 A (τ, ) = {λx ((c d) c a) b 1 x d a 2.x ((c d) c a) b 1 (λx c d x c 4.xd a 2 (x c d V c))}, A (τ, 4) = {λx ((c d) c a) b 1 x2 d a.x ((c d) c a) b 1 (λx c d x c 4.xd a 2 (x c d x c 4 ))} as it searches for closed λ-terms in β-normal form. The λ-terms are written here in full typed-notation where each term variable is decorated with its type explicitly at the superscript position. The sequence of A -sets shows the approximation from initially unknown λ-terms (containing meta-variables V, V 1, V 2, etc.) toward closed λ-terms in β-normal form. In the example above, type τ has the λ-term λx ((c d) c a) b 1 x d a 2.x ((c d) c a) b 1 (λx c d x c 4.xd a 2 (x c d x c 4 )) as its inhabitant. By the Curry Howard correspondence, the existence of this inhabitant means that the formula (((c d) c a) b) (d a) b is valid in intuitionistic logic. In our implementation, we use definite clause grammars in Prolog for parsing the input as a type expression. The parser constructs a tree that represents the given type expression. If it is valid, the program will run the type inhabitant search algorithm to search for its inhabitants. In general, the process is described by the flowchart in Figure 2. Figure 2: Flowchart for the Implementation of the Type Inhabitant Search Algorithm The main idea of the type inhabitant search algorithm is to iterate through the approximation of the λ-term and to produce A-sets with certain depth (A(τ, 0), A(τ, 1),..., A(τ, n)) during the iteration. In this implementation, we model the iteration as recursion which constructs the A-sets. We define a predicate searchihbt/ with the following arguments: 1. an A-set, i.e. A(τ, d) for a certain type τ and depth d. 2. the list of previous A-sets, i.e. the list of A(τ, t) with t = 0, 1,..., d 1.. the list of all A-sets that we get during the iteration (searching). 6
5 4 User Interface To help users interact with the implementation of those two algorithms, we provide a userfriendly GUI (graphical user interface). The design of our user interface follows the golden rules in designing user interface [7]. Figure and Figure 4 show an overview of our GUI design. Figure : Overview of GUI Design for the Principal-Type Algorithm 7
6 Figure 4: Overview of GUI Design for the Type Inhabitant Search Algorithm The user interface consists of two main tabs: Principal-Type Algorithm tab and Type Inhabitant Search Algorithm tab. In the Principal-Type Algorithm tab, there is a textbox where user can input a λ-term and a panel where the type deduction is shown. In the Type Inhabitant Search Algorithm tab, there is a textbox where user can input a type and a panel where the algorithm result is shown. This GUI is implemented using Java with Prolog in the back end. We also use LaTeX to help generating tidy output from the algorithms, i.e. deduction trees and steps of type inhabitants searching. In general, the program works as follows. The Java program takes the user input and calls the Prolog programs implementing the algorithms declaratively. The Prolog programs generate the output of the algorithms as LaTeX code. After the algorithms finish execution, the Java program calls LaTeX to compile the algorithm output into a PDF file. Lastly, the Java program reads the generated PDF file and displays it to the user as output. The flowchart of this architecture is shown in Figure 5 and the explanation is as follows: 8 1. User writes a λ-term into the input textbox. 2. The Java GUI program parses the input λ-term using the parser implemented in Prolog.. The parser passes the parsed λ-term to the program implementing the principal-type algorithm. 4. The Java GUI program gets back the deduction result for the given λ-term. 5. The Java GUI program writes the deduction in LaTeX format into a file. 6. The Java GUI program calls the LaTeX program to convert the LaTeX file into a PDF file.
7 Figure 5: Illustration of the Scenario for the Principal-Type Algorithm Program 7. The Java GUI program reads the PDF file. 8. The Java GUI program displays the solution to the user. For the program of the type inhabitant search algorithm implementation, the flowchart is similar. The difference is only on the parser and the main Prolog program for computing the final result. As a package, this GUI-based implementation of the principal-type algorithm and the type inhabitant search algorithm can play the role of a proof tool that provides assistance in constructing deductions in type theory and establishing the validity of implicational intuitionisticlogic formulas. The intuitive interface helps people study and understand the two algorithms and the related theories. A web-based version of the software, called λ-guru, has also been built. It can be accessed at Generally, to construct the λ-guru, we convert the Java GUI program, which is developed under the Java Swing library, into a JApplet. We also create a PHP program which accepts HTTP POST requests from the JApplet. This PHP program then calls the Prolog program which parses the input and applies the principal-type algorithm or the type inhabitant search algorithm. After the PHP program gets the result back from the Prolog program, it then forwards the algorithm result to the JApplet program. Finally, the JApplet program displays the result to the user. The flowchart of this process is shown in Figure 6. 5 Conclusion and Future Work We have presented a Prolog-based implementation of a proof tool that provides assistance in constructing deductions in type theory and establishing the validity of implicational intuitionisticlogic formulas. With this functionality, this proof tool is useful for learning type theory. This 9
8 Figure 6: λ-guru Web-based Architecture proof tool focuses on an important variant of type theory named TA λ, especially on its two core algorithms: the principal-type algorithm and the type inhabitant search algorithm. We have elaborated on how to implement those two algorithms declaratively in Prolog and the overall GUI-based program architecture. We have also described the graphical user interface that can help users interact with the program. Furthermore, we have built a web-based version of the proof tool called λ-guru. The next step of this work is to implement declaratively the converse principal-type algorithm. It is shown in [4] that if a type τ is assignable to a closed λ-term M but is not the principal type of M, then it is the principal type of another closed λ-term M. The task of the converse principal-type algorithm is to construct M when τ and M are given. Acknowledgments The authors would like to thank the anonymous reviewers of this paper for their helpful comments and suggestions. References [1] A. N. Whitehead and B. Russell. Principia Mathematica. Cambridge University Press, Cambridge, revised edition, [2] L. Sterling and E. Shapiro. The Art of PROLOG. MIT Press, Massachusetts, second edition, [] J. R. Hindley. The Principal Type-Scheme of an Object in Combinatory Logic. Trans. American Math. Soc., [4] J. R. Hindley. Basic Simple Type Theory. Cambridge University Press, Cambridge, first edition, [5] C. Munoz. Type theory and its applications to computer science. Quarterly News Letter of Institute for Computer Application in Science and Engineering (ICASE), Vol 8, No 4, [6] Benjamin C. Pierce. Types and Programming Languages. The MIT Press, Cambridge, Massachusetts, [7] B. Shneiderman and C. Plaisant. Designing The User Interface. Pearson Education, fourth edition,
9 [8] B. Yelles. Type-assignment in the lambda-calculus; syntax and semantic. Technical report, Mathemathics Dept. University of Wales Swansea, Swansea SA2 8PP, UK,
Less naive type theory
Institute of Informatics Warsaw University 26 May 2007 Plan 1 Syntax of lambda calculus Why typed lambda calculi? 2 3 Syntax of lambda calculus Why typed lambda calculi? origins in 1930s (Church, Curry)
More informationTyped Lambda Calculus for Syntacticians
Department of Linguistics Ohio State University January 12, 2012 The Two Sides of Typed Lambda Calculus A typed lambda calculus (TLC) can be viewed in two complementary ways: model-theoretically, as a
More informationTyped Lambda Calculus
Department of Linguistics Ohio State University Sept. 8, 2016 The Two Sides of A typed lambda calculus (TLC) can be viewed in two complementary ways: model-theoretically, as a system of notation for functions
More informationLecture slides & distribution files:
Type Theory Lecture slides & distribution files: http://www.cs.rhul.ac.uk/home/zhaohui/ttlectures.html Zhaohui Luo Department of Computer Science Royal Holloway, University of London April 2011 2 Type
More information1. true / false By a compiler we mean a program that translates to code that will run natively on some machine.
1. true / false By a compiler we mean a program that translates to code that will run natively on some machine. 2. true / false ML can be compiled. 3. true / false FORTRAN can reasonably be considered
More informationChapter 3. Describing Syntax and Semantics
Chapter 3 Describing Syntax and Semantics Chapter 3 Topics Introduction The General Problem of Describing Syntax Formal Methods of Describing Syntax Attribute Grammars Describing the Meanings of Programs:
More informationCMSC 330: Organization of Programming Languages. Operational Semantics
CMSC 330: Organization of Programming Languages Operational Semantics Notes about Project 4, Parts 1 & 2 Still due today (7/2) Will not be graded until 7/11 (along with Part 3) You are strongly encouraged
More informationAutomata and Formal Languages - CM0081 Introduction to Agda
Automata and Formal Languages - CM0081 Introduction to Agda Andrés Sicard-Ramírez Universidad EAFIT Semester 2018-2 Introduction Curry-Howard correspondence Dependent types Constructivism Martin-Löf s
More informationContents. Chapter 1 SPECIFYING SYNTAX 1
Contents Chapter 1 SPECIFYING SYNTAX 1 1.1 GRAMMARS AND BNF 2 Context-Free Grammars 4 Context-Sensitive Grammars 8 Exercises 8 1.2 THE PROGRAMMING LANGUAGE WREN 10 Ambiguity 12 Context Constraints in Wren
More informationλ 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
More informationIntroduction to the Lambda Calculus
Introduction to the Lambda Calculus Overview: What is Computability? Church s Thesis The Lambda Calculus Scope and lexical address The Church-Rosser Property Recursion References: Daniel P. Friedman et
More informationHarvard School of Engineering and Applied Sciences Computer Science 152
Harvard School of Engineering and Applied Sciences Computer Science 152 Lecture 17 Tuesday, March 30, 2010 1 Polymorph means many forms. Polymorphism is the ability of code to be used on values of different
More informationCS152: Programming Languages. Lecture 11 STLC Extensions and Related Topics. Dan Grossman Spring 2011
CS152: Programming Languages Lecture 11 STLC Extensions and Related Topics Dan Grossman Spring 2011 Review e ::= λx. e x e e c v ::= λx. e c τ ::= int τ τ Γ ::= Γ, x : τ (λx. e) v e[v/x] e 1 e 1 e 1 e
More informationBasic Foundations of Isabelle/HOL
Basic Foundations of Isabelle/HOL Peter Wullinger May 16th 2007 1 / 29 1 Introduction into Isabelle s HOL Why Type Theory Basic Type Syntax 2 More HOL Typed λ Calculus HOL Rules 3 Example proof 2 / 29
More informationLecture 3: Typed Lambda Calculus and Curry-Howard
Lecture 3: Typed Lambda Calculus and Curry-Howard H. Geuvers Radboud University Nijmegen, NL 21st Estonian Winter School in Computer Science Winter 2016 H. Geuvers - Radboud Univ. EWSCS 2016 Typed λ-calculus
More informationIntroduction 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
More informationHarvard School of Engineering and Applied Sciences CS 152: Programming Languages. Lambda calculus
Harvard School of Engineering and Applied Sciences CS 152: Programming Languages Tuesday, February 19, 2013 The lambda calculus (or λ-calculus) was introduced by Alonzo Church and Stephen Cole Kleene in
More informationChapter 3 (part 3) Describing Syntax and Semantics
Chapter 3 (part 3) Describing Syntax and Semantics Chapter 3 Topics Introduction The General Problem of Describing Syntax Formal Methods of Describing Syntax Attribute Grammars Describing the Meanings
More informationFormal Systems and their Applications
Formal Systems and their Applications Dave Clarke (Dave.Clarke@cs.kuleuven.be) Acknowledgment: these slides are based in part on slides from Benjamin Pierce and Frank Piessens 1 Course Overview Introduction
More informationDependent Types and Irrelevance
Dependent Types and Irrelevance Christoph-Simon Senjak Technische Universität München Institut für Informatik Boltzmannstraße 3 85748 Garching PUMA Workshop September 2012 Dependent Types Dependent Types
More information1.3. Conditional expressions To express case distinctions like
Introduction Much of the theory developed in the underlying course Logic II can be implemented in a proof assistant. In the present setting this is interesting, since we can then machine extract from a
More informationCS 4110 Programming Languages & Logics. Lecture 17 Programming in the λ-calculus
CS 4110 Programming Languages & Logics Lecture 17 Programming in the λ-calculus 10 October 2014 Announcements 2 Foster Office Hours 11-12 Enjoy fall break! Review: Church Booleans 3 We can encode TRUE,
More informationProgramming Language Concepts: Lecture 19
Programming Language Concepts: Lecture 19 Madhavan Mukund Chennai Mathematical Institute madhavan@cmi.ac.in http://www.cmi.ac.in/~madhavan/courses/pl2009 PLC 2009, Lecture 19, 01 April 2009 Adding types
More informationLambda Calculus. Variables and Functions. cs3723 1
Lambda Calculus Variables and Functions cs3723 1 Lambda Calculus Mathematical system for functions Computation with functions Captures essence of variable binding Function parameters and substitution Can
More informationLisp History. Lisp and Prolog Background. Lisp Use. Lisp Availability
Lisp and Prolog Background Thank you to Prof. Roosen-Runge and Prof. Gotshalks for the slides that I will be using throughout the course. Lisp History Lisp - invented (about 1958) by the logician and AI
More informationHarvard School of Engineering and Applied Sciences CS 152: Programming Languages
Harvard School of Engineering and Applied Sciences CS 152: Programming Languages Lecture 17 Tuesday, April 1, 2014 1 Modules Some languages, including C and FORTRAN, have a single global namespace. This
More informationIntroductory logic and sets for Computer scientists
Introductory logic and sets for Computer scientists Nimal Nissanke University of Reading ADDISON WESLEY LONGMAN Harlow, England II Reading, Massachusetts Menlo Park, California New York Don Mills, Ontario
More informationMathematics for Computer Scientists 2 (G52MC2)
Mathematics for Computer Scientists 2 (G52MC2) L07 : Operations on sets School of Computer Science University of Nottingham October 29, 2009 Enumerations We construct finite sets by enumerating a list
More informationKurt Gödel and Computability Theory
University of Calgary, Canada www.ucalgary.ca/ rzach/ CiE 2006 July 5, 2006 Importance of Logical Pioneers to CiE Wilhelm Ackermann Paul Bernays Alonzo Church Gerhard Gentzen Kurt Gödel Stephen Kleene
More informationCompiler Construction
Compiler Construction WWW: http://www.cs.uu.nl/wiki/cco Contact: J.Hage@uu.nl Edition 2016/2017 Course overview 2 What is compiler construction about? Programs are usually written in a high-level programming
More informationQUTE: A PROLOG/LISP TYPE LANGUAGE FOR LOGIC PROGRAMMING
QUTE: A PROLOG/LISP TYPE LANGUAGE FOR LOGIC PROGRAMMING Masahiko Sato Takafumi Sakurai Department of Information Science, Faculty of Science University of Tokyo 7-3-1 Hongo, Bunkyo-ku, Tokyo 113, JAPAN
More information5. Introduction to the Lambda Calculus. Oscar Nierstrasz
5. Introduction to the Lambda Calculus Oscar Nierstrasz Roadmap > What is Computability? Church s Thesis > Lambda Calculus operational semantics > The Church-Rosser Property > Modelling basic programming
More informationConclusions and further reading
Chapter 18 Conclusions and further reading We have not been exhaustive in the description of the Caml Light features. We only introduced general concepts in functional programming, and we have insisted
More informationFoundations of AI. 9. Predicate Logic. Syntax and Semantics, Normal Forms, Herbrand Expansion, Resolution
Foundations of AI 9. Predicate Logic Syntax and Semantics, Normal Forms, Herbrand Expansion, Resolution Wolfram Burgard, Andreas Karwath, Bernhard Nebel, and Martin Riedmiller 09/1 Contents Motivation
More informationCom S 541. Programming Languages I
Programming Languages I Lecturer: TA: Markus Lumpe Department of Computer Science 113 Atanasoff Hall http://www.cs.iastate.edu/~lumpe/coms541.html TR 12:40-2, W 5 Pramod Bhanu Rama Rao Office hours: TR
More informationComputational Linguistics: Syntax-Semantics Interface
Computational Linguistics: Syntax-Semantics Interface Raffaella Bernardi KRDB, Free University of Bozen-Bolzano P.zza Domenicani, Room: 2.28, e-mail: bernardi@inf.unibz.it Contents 1 Lambda terms and DCG...................................
More informationComputer Science 190 (Autumn Term, 2010) Semantics of Programming Languages
Computer Science 190 (Autumn Term, 2010) Semantics of Programming Languages Course instructor: Harry Mairson (mairson@brandeis.edu), Volen 257, phone (781) 736-2724. Office hours Monday and Wednesday,
More informationThe Truth about Types. Bartosz Milewski
The Truth about Types Bartosz Milewski Truth Truth Logic Types Categories Truth intro Unit type Terminal object true I () : () Proofs Logic Types Categories Proof of proposition A Type A is inhabited Morphism
More information1 Scope, Bound and Free Occurrences, Closed Terms
CS 6110 S18 Lecture 2 The λ-calculus Last time we introduced the λ-calculus, a mathematical system for studying the interaction of functional abstraction and functional application. We discussed the syntax
More informationIntroduction to Type Theory August 2007 Types Summer School Bertinoro, It. Herman Geuvers Nijmegen NL
Introduction to Type Theory August 2007 Types Summer School Bertinoro, It Herman Geuvers Nijmegen NL Lecture 2: Dependent Type Theory, Logical Framework 1 For λ : Direct representation (shallow embedding)
More informationLisp and Prolog Background
Lisp and Prolog Background Thank you to Prof. Roosen-Runge for the slides on background and history. BH2-1 Lisp History Lisp--invented (about 1958) by the logician and AI researcher John McCarthy Widely
More informationDesigning a Semantic Ground Truth for Mathematical Formulas
Designing a Semantic Ground Truth for Mathematical Formulas Alan Sexton 1, Volker Sorge 1, and Masakazu Suzuki 2 1 School of Computer Science, University of Birmingham, UK, A.P.Sexton V.Sorge@cs.bham.ac.uk,
More informationLexicografie computationala Feb., 2012
Lexicografie computationala Feb., 2012 Anca Dinu University of Bucharest Introduction When we construct meaning representations systematically, we integrate information from two different sources: 1. The
More informationChapter 3. Describing Syntax and Semantics ISBN
Chapter 3 Describing Syntax and Semantics ISBN 0-321-49362-1 Chapter 3 Topics Introduction The General Problem of Describing Syntax Formal Methods of Describing Syntax Attribute Grammars Describing the
More informationLogical Verification Course Notes. Femke van Raamsdonk Vrije Universiteit Amsterdam
Logical Verification Course Notes Femke van Raamsdonk femke@csvunl Vrije Universiteit Amsterdam autumn 2008 Contents 1 1st-order propositional logic 3 11 Formulas 3 12 Natural deduction for intuitionistic
More informationChapter 2 & 3: Representations & Reasoning Systems (2.2)
Chapter 2 & 3: A Representation & Reasoning System & Using Definite Knowledge Representations & Reasoning Systems (RRS) (2.2) Simplifying Assumptions of the Initial RRS (2.3) Datalog (2.4) Semantics (2.5)
More informationCS 6110 S14 Lecture 1 Introduction 24 January 2014
CS 6110 S14 Lecture 1 Introduction 24 January 2014 1 Introduction What is a program? Is it just something that tells the computer what to do? Yes, but there is much more to it than that. The basic expressions
More informationAn Introduction to Type Inference
Sebastian Zimmeck An Introduction to Type Inference Professor Alfred V. Aho - COMS E6998-2 Advanced Topics in Programming Languages and Compilers November 29, 2011 Presentation Overview 1. Introduction
More informationReview. 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]:
More informationComp 411 Principles of Programming Languages Lecture 3 Parsing. Corky Cartwright January 11, 2019
Comp 411 Principles of Programming Languages Lecture 3 Parsing Corky Cartwright January 11, 2019 Top Down Parsing What is a context-free grammar (CFG)? A recursive definition of a set of strings; it is
More informationLOGIC AND DISCRETE MATHEMATICS
LOGIC AND DISCRETE MATHEMATICS A Computer Science Perspective WINFRIED KARL GRASSMANN Department of Computer Science University of Saskatchewan JEAN-PAUL TREMBLAY Department of Computer Science University
More informationIntroduction to Lambda Calculus. Lecture 7 CS /08/09
Introduction to Lambda Calculus Lecture 7 CS 565 02/08/09 Lambda Calculus So far, we ve explored some simple but non-interesting languages language of arithmetic expressions IMP (arithmetic + while loops)
More informationA Quick Overview. CAS 701 Class Presentation 18 November Department of Computing & Software McMaster University. Church s Lambda Calculus
A Quick Overview CAS 701 Class Presentation 18 November 2008 Lambda Department of Computing & Software McMaster University 1.1 Outline 1 2 3 Lambda 4 5 6 7 Type Problem Lambda 1.2 Lambda calculus is a
More informationn λxy.x n y, [inc] [add] [mul] [exp] λn.λxy.x(nxy) λmn.m[inc]0 λmn.m([add]n)0 λmn.n([mul]m)1
LAMBDA CALCULUS 1. Background λ-calculus is a formal system with a variety of applications in mathematics, logic, and computer science. It examines the concept of functions as processes, rather than the
More informationGraph Representation of Declarative Languages as a Variant of Future Formal Specification Language
Economy Informatics, vol. 9, no. 1/2009 13 Graph Representation of Declarative Languages as a Variant of Future Formal Specification Language Ian ORLOVSKI Technical University of Moldova, Chisinau, Moldova
More information11/6/17. Outline. FP Foundations, Scheme. Imperative Languages. Functional Programming. Mathematical Foundations. Mathematical Foundations
Outline FP Foundations, Scheme In Text: Chapter 15 Mathematical foundations Functional programming λ-calculus LISP Scheme 2 Imperative Languages We have been discussing imperative languages C/C++, Java,
More informationThe 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
More informationAUTOMATIC ACQUISITION OF DIGITIZED NEWSPAPERS VIA INTERNET
AUTOMATIC ACQUISITION OF DIGITIZED NEWSPAPERS VIA INTERNET Ismael Sanz, Rafael Berlanga, María José Aramburu and Francisco Toledo Departament d'informàtica Campus Penyeta Roja, Universitat Jaume I, E-12071
More informationA computer implemented philosophy of mathematics
A computer implemented philosophy of mathematics M. Randall Holmes May 14, 2018 This paper presents a philosophical view of the basic foundations of mathematics, which is implemented in actual computer
More informationType Systems Winter Semester 2006
Type Systems Winter Semester 2006 Week 4 November 8 November 15, 2006 - version 1.1 The Lambda Calculus The lambda-calculus If our previous language of arithmetic expressions was the simplest nontrivial
More informationType Checking and Inference Are Equivalent in Lambda Calculi with Existential Types
Type Checking and Inference Are Equivalent in Lambda Calculi with Existential Types Yuki Kato and Koji Nakazawa Graduate School of Informatics, Kyoto University, Kyoto 606-8501, Japan Abstract. This paper
More informationLambda Calculus. Lambda Calculus
Lambda Calculus Formalism to describe semantics of operations in functional PLs Variables are free or bound Function definition vs function abstraction Substitution rules for evaluating functions Normal
More informationProgramming Languages Third Edition
Programming Languages Third Edition Chapter 12 Formal Semantics Objectives Become familiar with a sample small language for the purpose of semantic specification Understand operational semantics Understand
More informationSJTU SUMMER 2014 SOFTWARE FOUNDATIONS. Dr. Michael Clarkson
SJTU SUMMER 2014 SOFTWARE FOUNDATIONS Dr. Michael Clarkson e Story Begins Gottlob Frege: a German mathematician who started in geometry but became interested in logic and foundations of arithmetic. 1879:
More informationWhich of the following is not true of FORTRAN?
PART II : A brief historical perspective and early high level languages, a bird's eye view of programming language concepts. Syntax and semantics-language definition, syntax, abstract syntax, concrete
More informationDeclarative programming. Logic programming is a declarative style of programming.
Declarative programming Logic programming is a declarative style of programming. Declarative programming Logic programming is a declarative style of programming. The programmer says what they want to compute,
More informationCompilers Project Proposals
Compilers Project Proposals Dr. D.M. Akbar Hussain These proposals can serve just as a guide line text, it gives you a clear idea about what sort of work you will be doing in your projects. Still need
More informationType Systems COMP 311 Rice University Houston, Texas
Rice University Houston, Texas 1 Type Systems for Programming Language were invented by mathematicians before electronic computers were invented. What is a type? A meaningful subset of the set of the domain
More informationProgramming Proofs and Proving Programs. Nick Benton Microsoft Research, Cambridge
Programming Proofs and Proving Programs Nick Benton Microsoft Research, Cambridge Coffee is does Greek 1. To draw a straight line from any point to any point. 2. To produce a finite straight line continuously
More informationContext-free Grammars
1 contents of Context-free Grammars Phrase Structure Everyday Grammars for Programming Language Formal Definition of Context-free Grammars Definition of Language Left-to-right Application cfg ects Transforming
More informationConstructive Coherent Translation of Propositional Logic
Constructive Coherent Translation of Propositional Logic JRFisher@cpp.edu (started: 2009, latest: January 18, 2016) Abstract Propositional theories are translated to coherent logic rules using what are
More informationHomework. Lecture 7: Parsers & Lambda Calculus. Rewrite Grammar. Problems
Homework Lecture 7: Parsers & Lambda Calculus CSC 131 Spring, 2019 Kim Bruce First line: - module Hmwk3 where - Next line should be name as comment - Name of program file should be Hmwk3.hs Problems How
More informationType Theory. Lecture 2: Dependent Types. Andreas Abel. Department of Computer Science and Engineering Chalmers and Gothenburg University
Type Theory Lecture 2: Dependent Types Andreas Abel Department of Computer Science and Engineering Chalmers and Gothenburg University Type Theory Course CM0859 (2017-1) Universidad EAFIT, Medellin, Colombia
More informationTransformation of structured documents with the use of grammar
ELECTRONIC PUBLISHING, VOL. 6(4), 373 383 (DECEMBER 1993) Transformation of structured documents with the use of grammar EILA KUIKKA MARTTI PENTTONEN University of Kuopio University of Joensuu P. O. Box
More informationCMSC 330: Organization of Programming Languages. Lambda Calculus
CMSC 330: Organization of Programming Languages Lambda Calculus 1 Turing Completeness Turing machines are the most powerful description of computation possible They define the Turing-computable functions
More informationSemantics of programming languages
Semantics of programming languages Informatics 2A: Lecture 27 John Longley School of Informatics University of Edinburgh jrl@inf.ed.ac.uk 21 November, 2011 1 / 19 1 2 3 4 2 / 19 Semantics for programming
More informationType raising, continuations, and classical logic
Type raising, continuations, and classical logic Philippe de Groote Inria-Lorraine Abstract. There is a striking analogy between type raising, as introduced by Montague (973), and the notion of continuation
More informationCMSC 330: Organization of Programming Languages
CMSC 330: Organization of Programming Languages Lambda Calculus CMSC 330 Summer 2017 1 100 years ago Albert Einstein proposed special theory of relativity in 1905 In the paper On the Electrodynamics of
More informationc 2004 Society for Industrial and Applied Mathematics
SIAM J. MATRIX ANAL. APPL. Vol. 26, No. 2, pp. 390 399 c 2004 Society for Industrial and Applied Mathematics HERMITIAN MATRICES, EIGENVALUE MULTIPLICITIES, AND EIGENVECTOR COMPONENTS CHARLES R. JOHNSON
More informationType Systems. Today. 1. Organizational Matters. 1. Organizational Matters. Lecture 1 Oct. 20th, 2004 Sebastian Maneth. 1. Organizational Matters
Today Type Systems 1. Organizational Matters 2. What is this course about? 3. Where do types come from? 4. Def. of the small language Expr. Its syntax and semantics. Lecture 1 Oct. 20th, 2004 Sebastian
More informationSémantique des Langages de Programmation (SemLP) DM : Region Types
Sémantique des Langages de Programmation (SemLP) DM : Region Types I) Submission Submission Date : 21/05/2017 Submission Format : Submit a virtual machine (.ova) 1 with 1. an executable of the interpreter,
More informationCMSC 330: Organization of Programming Languages. Lambda Calculus
CMSC 330: Organization of Programming Languages Lambda Calculus 1 100 years ago Albert Einstein proposed special theory of relativity in 1905 In the paper On the Electrodynamics of Moving Bodies 2 Prioritätsstreit,
More informationOn Agda JAIST/AIST WS CVS/AIST Yoshiki Kinoshita, Yoriyuki Yamagata. Agenda
On Agda 2009.3.12 JAIST/AIST WS CVS/AIST Yoshiki Kinoshita, Yoriyuki Yamagata Agenda On Agda Agda as a programming language Agda as a proof system Further information. 2 1 Agenda On Agda Agda as a programming
More informationPropositional Calculus: Boolean Functions and Expressions. CS 270: Mathematical Foundations of Computer Science Jeremy Johnson
Propositional Calculus: Boolean Functions and Expressions CS 270: Mathematical Foundations of Computer Science Jeremy Johnson Propositional Calculus Objective: To provide students with the concepts and
More informationThe Lambda Calculus. 27 September. Fall Software Foundations CIS 500. The lambda-calculus. Announcements
CIS 500 Software Foundations Fall 2004 27 September IS 500, 27 September 1 The Lambda Calculus IS 500, 27 September 3 Announcements Homework 1 is graded. Pick it up from Cheryl Hickey (Levine 502). We
More informationSTRUCTURES AND STRATEGIES FOR STATE SPACE SEARCH
Slide 3.1 3 STRUCTURES AND STRATEGIES FOR STATE SPACE SEARCH 3.0 Introduction 3.1 Graph Theory 3.2 Strategies for State Space Search 3.3 Using the State Space to Represent Reasoning with the Predicate
More informationWhat if current foundations of mathematics are inconsistent? Vladimir Voevodsky September 25, 2010
What if current foundations of mathematics are inconsistent? Vladimir Voevodsky September 25, 2010 1 Goedel s second incompleteness theorem Theorem (Goedel) It is impossible to prove the consistency of
More informationExtracting the Range of cps from Affine Typing
Extracting the Range of cps from Affine Typing Extended Abstract Josh Berdine, Peter W. O Hearn Queen Mary, University of London {berdine, ohearn}@dcs.qmul.ac.uk Hayo Thielecke The University of Birmingham
More informationMLW. Henk Barendregt and Freek Wiedijk assisted by Andrew Polonsky. March 26, Radboud University Nijmegen
1 MLW Henk Barendregt and Freek Wiedijk assisted by Andrew Polonsky Radboud University Nijmegen March 26, 2012 inductive types 2 3 inductive types = types consisting of closed terms built from constructors
More informationArbitrary-rank polymorphism in (GHC) Haskell
Arbitrary-rank polymorphism in (GHC) Haskell CAS 743 Stephen Forrest 20 March 2006 Damas-Milner Type System A Damas-Milner type system (also called Hindley-Milner) is a traditional type system for functional
More informationThe Metalanguage λprolog and Its Implementation
The Metalanguage λprolog and Its Implementation Gopalan Nadathur Computer Science Department University of Minnesota (currently visiting INRIA and LIX) 1 The Role of Metalanguages Many computational tasks
More informationProgramming Language Pragmatics
Chapter 10 :: Functional Languages Programming Language Pragmatics Michael L. Scott Historical Origins The imperative and functional models grew out of work undertaken Alan Turing, Alonzo Church, Stephen
More informationyacc, lex Source Code (C) compile Executable Parser Test on HOL Examples, TPTP Library, and TSTP Library
Extending the TPTP Language to Higher-Order Logic with Automated Parser Generation Allen Van Gelder 1 and Geoff Sutcliffe 2 1 University of California at Santa Cruz, USA, http://www.cse.ucsc.edu/~avg 2
More informationDenotational semantics
1 Denotational semantics 2 What we're doing today We're looking at how to reason about the effect of a program by mapping it into mathematical objects Specifically, answering the question which function
More informationComputing 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
More informationThe Formal Semantics of Programming Languages An Introduction. Glynn Winskel. The MIT Press Cambridge, Massachusetts London, England
The Formal Semantics of Programming Languages An Introduction Glynn Winskel The MIT Press Cambridge, Massachusetts London, England Series foreword Preface xiii xv 1 Basic set theory 1 1.1 Logical notation
More informationTHE HALTING PROBLEM. Joshua Eckroth Chautauqua Nov
THE HALTING PROBLEM Joshua Eckroth Chautauqua Nov 10 2015 The year is 1928 Sliced bread is invented. Calvin Coolidge is President. David Hilbert challenged mathematicians to solve the Entscheidungsproblem:
More informationAn Implementation of the Language Lambda Prolog Organized around Higher-Order Pattern Unification
An Implementation of the Language Lambda Prolog Organized around Higher-Order Pattern Unification SUBMITTED TO THE FACULTY OF THE GRADUATE SCHOOL OF THE UNIVERSITY OF MINNESOTA BY Xiaochu Qi IN PARTIAL
More informationLecture 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
More informationThe Typed λ Calculus and Type Inferencing in ML
Notes on Types S. Arun-Kumar Department of Computer Science and Engineering Indian Institute of Technology New Delhi, 110016 email: sak@cse.iitd.ernet.in April 14, 2002 2 Chapter 1 The Typed λ Calculus
More information