Manipulating atomics and clauses

Size: px
Start display at page:

Download "Manipulating atomics and clauses"

Transcription

1 Manipulating atomics and clauses This lecture revisits recursion, showing how to read input. Then it introduces type testing predicates, atomic term processing term creation and decomposition and clause retrieval and information. Examples used are morphological processing and pretty printing.

2 Type testing predicates Prolog includes a number of type testing predicates. All are evil in the sense that they are less to do with the declarative meaning of the program and more to process of getting a program to work. Some examples are: compound/1 compound(foo(a,b,2)) atomic/1 atomic(foo) var/1 var(a_variable) 5 - Manipulating atomics and clauses 1

3 Atomic term processing - 1 ISO Standard Prolog includes several predicates for doing things to atomics. Finding the length of an atom: atom_length/2 atom_length(foo,length) Constructing/deconstructing atoms: atom_concat/3 atom_concat(abc,xyz,atm) atom_concat(a1, A2, xyz) 5 - Manipulating atomics and clauses 2

4 Atomic term processing - 2 Finding sub-atoms in an atom: sub_atom/5 sub_atom(abcde, X, Y, Z, Sub) sub_atom(abcde, 0, 3, 2, Sub) Length of presub-atom Length of sub-atom Length of postsub-atom 5 - Manipulating atomics and clauses 3

5 Atomic term processing - 3 Breaking atomics into characters: atom_chars/2 atom_codes/2 number_chars/2 number_codes/2 These all run atom_chars(abc, [a,b,c]) both ways atom_codes(abc, [97,98,99]) number_chars(12.3, ['1','2','.','3']) number_codes(12.3, [49,50,46,51]) 5 - Manipulating atomics and clauses 4

6 Reading input from the keyboard Suppose we want to read input from the keyboard until we type a stopping symbol. Thoughts: This will have to be recursive; It is similar to the operation of an while loop stop when a certain input is reached; We should write the terminating clause before the recursive clause. 5 - Manipulating atomics and clauses 5

7 Always write the base (terminating) case first. read_text('.'). (That s all that is needed.) Terminating 5 - Manipulating atomics and clauses 6

8 Recursive The input is the parameter; We need to process the current input; We need to get the next input; We carry on (recursively). read_text(current_word) :- look_up(current_word), read(next_word), read_text(next_word). 5 - Manipulating atomics and clauses 7

9 But where does the first input come from? This procedure assumes that there is always some input in the parameter. Where does the first input come from? start_read_text :- write('enter text: end with ''.'''), nl, read(word), read_text(word). 5 - Manipulating atomics and clauses 8

10 What does look_up/1 do? In the following slides, look_up/1 will be developed into something more ambitious: 1. simple dictionary look-up/unknown word detection; 2. simple-minded morphological analyser. 5 - Manipulating atomics and clauses 9

11 Simple dictionary look-up - 1 First we need a dictionary: lexical_entry(plays, pos(verb), number(singular), person('3rd'), Part-of-speech tense(present)). Grammatical person Grammatical number Tense (of verbs) 5 - Manipulating atomics and clauses 10

12 Simple dictionary look-up - 2 Second the word is found: look_up(word) :- lexical_entry(word, pos(syntactic_category), _Number, _Person, _Tense), write_message(message('word is: ', Word)), write_message(message('pos is: ', Syntactic_Category)), nl. 5 - Manipulating atomics and clauses 11

13 Simple dictionary look-up - 3 Third the word is not found: look_up(word) :- \+ lexical_entry(word, pos(syntactic_category), _Number, _Person, _Tense), write('the word '), write_message(message(word, 'hasn''t been found.')), nl. 5 - Manipulating atomics and clauses 12

14 Introducing morphology But it is very wasteful to have to write dictionary entries for each form of a word. We can use morphological processing to reduce the number of entries. Regular English verbs have standard ending: play plays playing - played A language like Bulgarian can have up to 1,000-3,000 verb forms (depending how you count them). 5 - Manipulating atomics and clauses 13

15 Morphology the idea 1. Have a dictionary of base forms (lemmas) of words. 2. Have a much smaller dictionary of suffixes (morphological endings). 3. Process words by taking off any suffix. Using sub_atom/5 4. Look-up the stem word in the dictionary. 5 - Manipulating atomics and clauses 14

16 The morphological dictionary This looks much the same as the normal dictionary except that the word is now a suffix. morphology(s, pos(noun), number(plural), person('3rd'), tense(_tense)). morphology(s, pos(verb), number(singular) person('3rd'),tense(present)). 5 - Manipulating atomics and clauses 15

17 Morphological matching - 1 The first step is to look-up the word in the dictionary in case the word is not inflected or is a special case. % 1 - word is in the dictionary look_up(word) :- the same code as in the previous example 5 - Manipulating atomics and clauses 16

18 Morphological matching - 2 If the word is not there: look_up(word) :- morphology(suffix, pos(syntactic_category), number(number1), person(person1), tense(tense1)), sub_atom(word, Lemma_Length, Suffix_Length, 0, Suffix), 5 - Manipulating atomics and clauses 17

19 Morphological matching - 3 The end of the word matches a suffix, so look-up the beginning of the word in the dictionary: lexical_entry(lemma, pos(syntactic_category), _Number1, _Person1, _Tense1), write_messages and unknown word code is the same as last time. 5 - Manipulating atomics and clauses 18

20 Making code more readable This query is not like normal Prolog:?- X is 3-2 * / 8. This is the query in normal Prolog:?- X is +(-(3,*(2,4)), /(1,8)). This is not a natural way of writing arithmetic. 5 - Manipulating atomics and clauses 19

21 Making code more readable Sometimes we want to make our code more readable to users. Here, we ll write the sub-category information: pos(noun), number(plural) as: pos : noun, number : plural But Prolog won t like this 5 - Manipulating atomics and clauses 20

22 Operator notation Directives are code that is executed as soon as the compiler reads and compiles it. We need to add a directive to the program: :- op(500, xfy, :). The new operator s functor. Ranking of the operator (1200 is highest) Associativity (Term, Functor More Terms) 5 - Manipulating atomics and clauses 21

23 The dictionary reformatted Now we can rewrite all the dictionary and morphological entries (and the rules that use them) using the new notation: morphology(s, pos : noun, number : plural, person : '3rd', tense : _Tense ). 5 - Manipulating atomics and clauses 22

24 Pretty printing The idea of pretty printing is to output a program in some format that is visually useful. It s easy to write pretty printers in languages like LISP and Prolog because there is a very close relationship between program and data. :- dynamic offset_increment/1, pp_clause/0, etc. offset_increment(5). 5 - Manipulating atomics and clauses 23

25 Displaying terms We need to be able to display terms: pp_term(term, Offset) :- atomic(term), writenl_offset(term, Offset). pp_term(variable, Offset) :- var(variable), writenl_offset(variable, Offset). pp_term(structure, Offset) :- compound(structure), pp_compound(structure,offset). 5 - Manipulating atomics and clauses 24

26 functor/3 and arg/3 functor/3 and arg/3 Decompose a term into parts or build a term from parts:?- functor(foo(a,b), Functor, Arity). Arity = 2, Functor = foo? ;?- functor(term,foo,1), arg(1,term, z). Term = foo(z)? ; 5 - Manipulating atomics and clauses 25

27 Displaying a compound structure Display the head and then the arguments: pp_compound(structure, Offset) :- functor(structure, Functor, Arity), pp_term(functor, Offset), offset_increment(increment), Offset1 is Offset + Increment, writenl_offset('(', Offset1), pp_args(structure, 0,Arity,Offset1), writenl_offset(')', Offset1). 5 - Manipulating atomics and clauses 26

28 Displaying the arguments Display the first then display the rest (like finding friends): pp_args(_structure, Arity,Arity,_Offset). % 2 - recursive pp_args(structure, Count,Arity,Offset) :- Count < Arity, Count1 is Count + 1, arg(count1, Structure, Argument), pp_term(argument, Offset), pp_args(structure, Count1, Arity, Offset). 5 - Manipulating atomics and clauses 27

29 Displaying the whole clause We can develop the search using a stack: clause/2 retrieves a pp_clause(head) :- clause from the program clause(head, Body), pp_compound(head, 0), offset_increment(offset), writenl_offset(' :-', Offset), writenl_offset('(', Offset), pp_body(body, Offset). 5 - Manipulating atomics and clauses 28

30 All that is left is the bodies Recursive clause before terminating here! pp_body((subgoal, Subgoals), Offset) :- pp_compound(subgoal, Offset), pp_body(subgoals, Offset). pp_body(subgoal, Offset) :- Subgoal \= (_,_), pp_compound(subgoal, Offset), writenl_offset(')', Offset). 5 - Manipulating atomics and clauses 29

31 Try the code You should download the code from the module WWW page and run it. Here are some examples:?- pp_clause(offset_increment(_)).?- pp_clause(pp_body(_, _)).?- pp_clause(pp_clause(_)). 5 - Manipulating atomics and clauses 30

32 What this has been about - 1 Type testing predicates Prolog has several: var/1, atomic/1, compound/1 (and others) Not theoretically elegant but useful in getting programs to work efficiently. 5 - Manipulating atomics and clauses 31

33 What this has been about - 2 Atomic term processing Atomics can be manipulated in several ways. Dividing atomics into chars and codes or building them from chars and codes atom_codes/2, number_chars/2, Finding sub atoms: sub_atom/5 5 - Manipulating atomics and clauses 32

34 What this has been about - 3 Clause retrieval and information Clauses can be retrieved from the program database and manipulated, using: clause/2 5 - Manipulating atomics and clauses 33

35 Recursion What this has been about - 4 More of the basic pattern: pp_args/3 Specialized ways of writing recursion when reading input: read_text/1 5 - Manipulating atomics and clauses 34

36 For next time Revise your knowledge of: propositional calculus. 5 - Manipulating atomics and clauses 35

This lecture covers: Prolog s execution strategy explained more precisely. Revision of the elementary Prolog data types

This lecture covers: Prolog s execution strategy explained more precisely. Revision of the elementary Prolog data types This lecture covers: Prolog s execution strategy explained more precisely The execution strategy has been presented as simply placing all matching clauses onto the stack. In fact, Prolog is slightly more

More information

Lecture 9. Exercises. Theory. Solutions to exercises LPN 8.1 & 8.2. Patrick Blackburn, Johan Bos & Kristina Striegnitz

Lecture 9. Exercises. Theory. Solutions to exercises LPN 8.1 & 8.2. Patrick Blackburn, Johan Bos & Kristina Striegnitz Lecture 9 Exercises Solutions to exercises LPN 8.1 & 8.2 Theory Solution to Exercise 8.1 Suppose we add the noun ``men'' (which is plural) and the verb ``shoot''. Then we would want a DCG which says that

More information

Lecture 9: A closer look at terms

Lecture 9: A closer look at terms Lecture 9: A closer look at terms Theory Introduce the == predicate Take a closer look at term structure Introduce strings in Prolog Introduce operators Exercises Exercises of LPN: 9.1, 9.2, 9.3, 9.4,

More information

Operators (2A) Young Won Lim 10/2/13

Operators (2A) Young Won Lim 10/2/13 Operators (2A) Copyright (c) 2013 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version

More information

6.184 Lecture 4. Interpretation. Tweaked by Ben Vandiver Compiled by Mike Phillips Original material by Eric Grimson

6.184 Lecture 4. Interpretation. Tweaked by Ben Vandiver Compiled by Mike Phillips Original material by Eric Grimson 6.184 Lecture 4 Interpretation Tweaked by Ben Vandiver Compiled by Mike Phillips Original material by Eric Grimson 1 Interpretation Parts of an interpreter Arithmetic calculator

More information

Logic Languages. Hwansoo Han

Logic Languages. Hwansoo Han Logic Languages Hwansoo Han Logic Programming Based on first-order predicate calculus Operators Conjunction, disjunction, negation, implication Universal and existential quantifiers E A x for all x...

More information

PRINCIPLES OF COMPILER DESIGN UNIT I INTRODUCTION TO COMPILING

PRINCIPLES OF COMPILER DESIGN UNIT I INTRODUCTION TO COMPILING PRINCIPLES OF COMPILER DESIGN 2 MARKS UNIT I INTRODUCTION TO COMPILING 1. Define compiler? A compiler is a program that reads a program written in one language (source language) and translates it into

More information

Implementação de Linguagens 2016/2017

Implementação de Linguagens 2016/2017 Implementação de Linguagens Ricardo Rocha DCC-FCUP, Universidade do Porto ricroc @ dcc.fc.up.pt Ricardo Rocha DCC-FCUP 1 Logic Programming Logic programming languages, together with functional programming

More information

STRUCTURES AND STRATEGIES FOR STATE SPACE SEARCH

STRUCTURES 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 information

Operators (2A) Young Won Lim 10/5/13

Operators (2A) Young Won Lim 10/5/13 Operators (2A) Copyright (c) 2013 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version

More information

Recursion, Structures, and Lists

Recursion, Structures, and Lists Recursion, Structures, and Lists Artificial Intelligence Programming in Prolog Lecturer: Tim Smith Lecture 4 04/10/04 30/09/04 AIPP Lecture 3: Recursion, Structures, and Lists 1 The central ideas of Prolog

More information

Research Report AI A Numerical Equation Solver in Prolog Michael A. Covington Artificial Intelligence Programs The University of Georgia

Research Report AI A Numerical Equation Solver in Prolog Michael A. Covington Artificial Intelligence Programs The University of Georgia Research Report AI 1989 02 A Numerical Equation Solver in Prolog Michael A. Covington Artificial Intelligence Programs The University of Georgia Athens, Georgia 30602 U.S.A. A Numerical Equation Solver

More information

CS101 Introduction to Programming Languages and Compilers

CS101 Introduction to Programming Languages and Compilers CS101 Introduction to Programming Languages and Compilers In this handout we ll examine different types of programming languages and take a brief look at compilers. We ll only hit the major highlights

More information

What are Operators? - 1. Operators. What are Operators? - 2. Properties. » Position» Precedence class» associativity. » x + y * z. » +(x, *(y, z)).

What are Operators? - 1. Operators. What are Operators? - 2. Properties. » Position» Precedence class» associativity. » x + y * z. » +(x, *(y, z)). What are Operators? - 1 Functors Introduce operators to improve the readability of programs Operators syntactic sugar Based on Clocksin & Mellish Sections 2.3, 5.5 O-1 O-2 The arithmetic expression:» x

More information

The object level in Prolog. Meta-level predicates and operators. Contents. The flow of computation. The meta level in Prolog

The object level in Prolog. Meta-level predicates and operators. Contents. The flow of computation. The meta level in Prolog Lecture 8 Meta-level predicates and operators Contents Object level vs. meta level Controlling flow of computation Checking and dismantling expressions Comparison operators The object level in Prolog Prolog

More information

This lecture presents ordered lists. An ordered list is one which is maintained in some predefined order, such as alphabetical or numerical order.

This lecture presents ordered lists. An ordered list is one which is maintained in some predefined order, such as alphabetical or numerical order. 6.1 6.2 This lecture presents ordered lists. An ordered list is one which is maintained in some predefined order, such as alphabetical or numerical order. A list is numerically ordered if, for every item

More information

Wan Hussain Wan Ishak

Wan Hussain Wan Ishak February 2 nd Session 2014/2015 (A142) Wan Hussain Wan Ishak School of Computing UUM College of Arts and Sciences Universiti Utara Malaysia (P) 04-9285150 (E) hussain@uum.edu.my (U) http://wanhussain.com

More information

:~ read_str(string) : geto(char),

:~ read_str(string) : geto(char), Sec. 3.13. Inputting a Line as a String or Atom 81 3.13. INPUTTING A LINE AS A STRING OR ATOM It s easy to make Prolog read a whole line of input into a single string without caring whether the input follows

More information

Chapter 3:: Names, Scopes, and Bindings

Chapter 3:: Names, Scopes, and Bindings Chapter 3:: Names, Scopes, and Bindings Programming Language Pragmatics Michael L. Scott Some more things about NFAs/DFAs We said that a regular expression can be: A character (base case) A concatenation

More information

Prolog Introduction. Gunnar Gotshalks PI-1

Prolog Introduction. Gunnar Gotshalks PI-1 Prolog Introduction PI-1 Physical Symbol System Hypothesis A physical symbol system has the necessary and sufficient means for general intelligent action. Allen Newell and Herbert A. Simon PI-2 Physical

More information

Introduction to Scheme

Introduction to Scheme How do you describe them Introduction to Scheme Gul Agha CS 421 Fall 2006 A language is described by specifying its syntax and semantics Syntax: The rules for writing programs. We will use Context Free

More information

More Planning and Prolog Operators

More Planning and Prolog Operators More Planning and Prolog Operators Artificial Intelligence Programming in Prolog Lecturer: Tim Smith Lecture 16 22/11/04 22/11/04 AIPP Lecture 16: More Planning and Operators 1 Planning continued Contents

More information

Fundamentals of Prolog

Fundamentals of Prolog Fundamentals of Prolog Prof. Geraint A. Wiggins Centre for Cognition, Computation and Culture Goldsmiths College, University of London Contents Summary of Lecture 1 What makes a good Prolog program? What

More information

Part I Logic programming paradigm

Part I Logic programming paradigm Part I Logic programming paradigm 1 Logic programming and pure Prolog 1.1 Introduction 3 1.2 Syntax 4 1.3 The meaning of a program 7 1.4 Computing with equations 9 1.5 Prolog: the first steps 15 1.6 Two

More information

Discussion 12 The MCE (solutions)

Discussion 12 The MCE (solutions) Discussion 12 The MCE (solutions) ;;;;METACIRCULAR EVALUATOR FROM CHAPTER 4 (SECTIONS 4.1.1-4.1.4) of ;;;; STRUCTURE AND INTERPRETATION OF COMPUTER PROGRAMS ;;;from section 4.1.4 -- must precede def of

More information

CS 251 Intermediate Programming Methods and Classes

CS 251 Intermediate Programming Methods and Classes CS 251 Intermediate Programming Methods and Classes Brooke Chenoweth University of New Mexico Fall 2018 Methods An operation that can be performed on an object Has return type and parameters Method with

More information

CS 251 Intermediate Programming Methods and More

CS 251 Intermediate Programming Methods and More CS 251 Intermediate Programming Methods and More Brooke Chenoweth University of New Mexico Spring 2018 Methods An operation that can be performed on an object Has return type and parameters Method with

More information

Functional abstraction. What is abstraction? Eating apples. Readings: HtDP, sections Language level: Intermediate Student With Lambda

Functional abstraction. What is abstraction? Eating apples. Readings: HtDP, sections Language level: Intermediate Student With Lambda Functional abstraction Readings: HtDP, sections 19-24. Language level: Intermediate Student With Lambda different order used in lecture section 24 material introduced much earlier sections 22, 23 not covered

More information

Functional abstraction

Functional abstraction Functional abstraction Readings: HtDP, sections 19-24. Language level: Intermediate Student With Lambda different order used in lecture section 24 material introduced much earlier sections 22, 23 not covered

More information

Lecture 11: Feb. 10, 2016

Lecture 11: Feb. 10, 2016 CS323: AI (Hands on with Prolog) Spring 2016 Lecturer: K.R. Chowdhary Lecture 11: Feb. 10, 2016 : Professor of CS (VF) Disclaimer: These notes have not been subjected to the usual scrutiny reserved for

More information

Defining! Binary & Unary! Operators!

Defining! Binary & Unary! Operators! Defining! Binary & Unary! Operators! DO-1 English-French Dictionary! Can use compound terms to represent a dictionary! > list is a structure that contains an entry followed by the rest of the list! > For

More information

A Small Interpreted Language

A Small Interpreted Language A Small Interpreted Language What would you need to build a small computing language based on mathematical principles? The language should be simple, Turing equivalent (i.e.: it can compute anything that

More information

Logic Programming. Efficiency Issues. Temur Kutsia

Logic Programming. Efficiency Issues. Temur Kutsia Logic Programming Efficiency Issues Temur Kutsia Research Institute for Symbolic Computation Johannes Kepler University of Linz, Austria kutsia@risc.uni-linz.ac.at Efficiency Issues in Prolog Narrow the

More information

Processing lists in Prolog - 2

Processing lists in Prolog - 2 Processing lists in Prolog - 2 This lecture shows that techniques introduced before (analysing terminating conditions and recursive programming) can be used to develop more complex procedures. This lecture

More information

PL Revision overview

PL Revision overview PL Revision overview Course topics Parsing G = (S, P, NT, T); (E)BNF; recursive descent predictive parser (RDPP) Lexical analysis; Syntax and semantic errors; type checking Programming language structure

More information

Algorithms & Data Structures

Algorithms & Data Structures GATE- 2016-17 Postal Correspondence 1 Algorithms & Data Structures Computer Science & Information Technology (CS) 20 Rank under AIR 100 Postal Correspondence Examination Oriented Theory, Practice Set Key

More information

Predicate Calculus. Problems? Syntax. Atomic Sentences. Complex Sentences. Truth

Predicate Calculus. Problems? Syntax. Atomic Sentences. Complex Sentences. Truth Problems? What kinds of problems exist for propositional logic? Predicate Calculus A way to access the components of an individual assertion Predicate Calculus: used extensively in many AI programs, especially

More information

Principles of Programming Languages COMP251: Syntax and Grammars

Principles of Programming Languages COMP251: Syntax and Grammars Principles of Programming Languages COMP251: Syntax and Grammars Prof. Dekai Wu Department of Computer Science and Engineering The Hong Kong University of Science and Technology Hong Kong, China Fall 2007

More information

CS61A Discussion Notes: Week 11: The Metacircular Evaluator By Greg Krimer, with slight modifications by Phoebus Chen (using notes from Todd Segal)

CS61A Discussion Notes: Week 11: The Metacircular Evaluator By Greg Krimer, with slight modifications by Phoebus Chen (using notes from Todd Segal) CS61A Discussion Notes: Week 11: The Metacircular Evaluator By Greg Krimer, with slight modifications by Phoebus Chen (using notes from Todd Segal) What is the Metacircular Evaluator? It is the best part

More information

CST-402(T): Language Processors

CST-402(T): Language Processors CST-402(T): Language Processors Course Outcomes: On successful completion of the course, students will be able to: 1. Exhibit role of various phases of compilation, with understanding of types of grammars

More information

CS 480. Lisp J. Kosecka George Mason University. Lisp Slides

CS 480. Lisp J. Kosecka George Mason University. Lisp Slides CS 480 Lisp J. Kosecka George Mason University Lisp Slides Symbolic Programming Symbols: +, -, 1, 2 etc. Symbolic expressions: (+ 1 2), (+ (* 3 4) 2) Symbolic programs are programs that manipulate symbolic

More information

Information technology Programming languages Prolog Part 1: General core

Information technology Programming languages Prolog Part 1: General core INTERNATIONAL STANDARD ISO/IEC 13211-1:1995 TECHNICAL CORRIGENDUM 2 Published 2012-02-15 INTERNATIONAL ORGANIZATION FOR STANDARDIZATION МЕЖДУНАРОДНАЯ ОРГАНИЗАЦИЯ ПО СТАНДАРТИЗАЦИИ ORGANISATION INTERNATIONALE

More information

Defining Binary & Unary Operators

Defining Binary & Unary Operators Defining Binary & Unary Operators DO-1 English-French Dictionary Can use compound terms to represent a dictionary > list is a structure that contains an entry followed by the rest of the list > For example

More information

IKI30820 Logic Programming Input and Output Slide 07

IKI30820 Logic Programming Input and Output Slide 07 IKI30820 Logic Programming Input and Output Slide 07 Ari Saptawijaya (slides) Adila A. Krisnadhi (L A T E Xadaptation) Fakultas Ilmu Komputer Universitas Indonesia 2009/2010 Semester Gasal AS,AAK (Fasilkom

More information

Introduction to C++ Introduction. Structure of a C++ Program. Structure of a C++ Program. C++ widely-used general-purpose programming language

Introduction to C++ Introduction. Structure of a C++ Program. Structure of a C++ Program. C++ widely-used general-purpose programming language Introduction C++ widely-used general-purpose programming language procedural and object-oriented support strong support created by Bjarne Stroustrup starting in 1979 based on C Introduction to C++ also

More information

Computer Science 21b: Structure and Interpretation of Computer Programs (Spring Term, 2004)

Computer Science 21b: Structure and Interpretation of Computer Programs (Spring Term, 2004) Computer Science 21b: Structure and Interpretation of Computer Programs (Spring Term, 2004) There are only 5 ideas in Computer Science, and by the end of this course, you ll know 3 of them --Harry Mairson

More information

COMP2411 Lecture 20: Logic Programming Examples. (This material not in the book)

COMP2411 Lecture 20: Logic Programming Examples. (This material not in the book) COMP2411 Lecture 20: Logic Programming Examples (This material not in the book) There are several distinct but often equivalent ways to think about logic programs 1. As computing logical consequences of

More information

Introduction to C: Pointers

Introduction to C: Pointers Introduction to C: Pointers Nils Moschüring PhD Student (LMU) Nils Moschüring PhD Student (LMU), Introduction to C: Pointers 1 1 Introduction 2 Pointers Basics Useful: Function

More information

Logic Programming (PLP 11.3) Prolog: Arithmetic, Equalities, Operators, I/O, Natural Language Parsing

Logic Programming (PLP 11.3) Prolog: Arithmetic, Equalities, Operators, I/O, Natural Language Parsing Logic Programming (PLP 11.3) Prolog: Arithmetic, Equalities, Operators, I/O, Natural Language Parsing Carlos Varela Rennselaer Polytechnic Institute February 3, 2011 C. Varela 1 Arithmetic Goals N>M N

More information

Introduction to C++ with content from

Introduction to C++ with content from Introduction to C++ with content from www.cplusplus.com 2 Introduction C++ widely-used general-purpose programming language procedural and object-oriented support strong support created by Bjarne Stroustrup

More information

Types and Type Inference

Types and Type Inference CS 242 2012 Types and Type Inference Notes modified from John Mitchell and Kathleen Fisher Reading: Concepts in Programming Languages, Revised Chapter 6 - handout on Web!! Outline General discussion of

More information

MPATE-GE 2618: C Programming for Music Technology. Unit 4.1

MPATE-GE 2618: C Programming for Music Technology. Unit 4.1 MPATE-GE 2618: C Programming for Music Technology Unit 4.1 Memory Memory in the computer can be thought of as a long string of consecutive bytes. Each byte has a corresponding address. When we declare

More information

Department of Computer Science, University of Otago

Department of Computer Science, University of Otago Department of Computer Science, University of Otago Technical Report OUCS-2017-06 Logic Programming Modules as Possible Worlds Author: Richard O Keefe Department of Computer Science, University of Otago,

More information

6.037 Lecture 4. Interpretation. What is an interpreter? Why do we need an interpreter? Stages of an interpreter. Role of each part of the interpreter

6.037 Lecture 4. Interpretation. What is an interpreter? Why do we need an interpreter? Stages of an interpreter. Role of each part of the interpreter 6.037 Lecture 4 Interpretation Interpretation Parts of an interpreter Meta-circular Evaluator (Scheme-in-scheme!) A slight variation: dynamic scoping Original material by Eric Grimson Tweaked by Zev Benjamin,

More information

6.001 Notes: Section 4.1

6.001 Notes: Section 4.1 6.001 Notes: Section 4.1 Slide 4.1.1 In this lecture, we are going to take a careful look at the kinds of procedures we can build. We will first go back to look very carefully at the substitution model,

More information

Symbolic Programming. Dr. Zoran Duric () Symbolic Programming 1/ 89 August 28, / 89

Symbolic Programming. Dr. Zoran Duric () Symbolic Programming 1/ 89 August 28, / 89 Symbolic Programming Symbols: +, -, 1, 2 etc. Symbolic expressions: (+ 1 2), (+ (* 3 4) 2) Symbolic programs are programs that manipulate symbolic expressions. Symbolic manipulation: you do it all the

More information

LOGIC AND DISCRETE MATHEMATICS

LOGIC 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 information

Programming Paradigms

Programming Paradigms PP 2017/18 Unit 6 Prolog Basics 1/42 Programming Paradigms Unit 6 Prolog Basics J. Gamper Free University of Bozen-Bolzano Faculty of Computer Science IDSE PP 2017/18 Unit 6 Prolog Basics 2/42 Outline

More information

PROgramming in LOGic. Part II. By Forrest Pepper 12/7/07

PROgramming in LOGic. Part II. By Forrest Pepper 12/7/07 PROgramming in LOGic Part II By Forrest Pepper 12/7/07 Anatomy of a Program We discussed the three main constructs of a Prolog program Facts contain a property or state a relationship between two or more

More information

Logic Programming (PLP 11) Prolog: Arithmetic, Equalities, Operators, I/O, Natural Language Parsing

Logic Programming (PLP 11) Prolog: Arithmetic, Equalities, Operators, I/O, Natural Language Parsing Logic Programming (PLP 11) Prolog: Arithmetic, Equalities, Operators, I/O, Natural Language Parsing Carlos Varela Rennselaer Polytechnic Institute February 9, 2015 C. Varela 1 Arithmetic Goals N>M N

More information

Programming Languages

Programming Languages Programming Languages Jörg Kreiker Chair for Theoretical Computer Science Prof. Esparza TU München winter term 2010/2011 Lecture 13 Databases 3 Organizational Issues assignments corrected today: final

More information

Defining Binary & Unary Operators DO-1

Defining Binary & Unary Operators DO-1 Defining Binary & Unary Operators DO-1 English-French Dictionary 1 Can use compound terms to represent a dictionary» list is a structure that contains an entry followed by the rest of the list» For example

More information

Lecture 10 Parsing 10.1

Lecture 10 Parsing 10.1 10.1 The next two lectures cover parsing. To parse a sentence in a formal language is to break it down into its syntactic components. Parsing is one of the most basic functions every compiler carries out,

More information

Intro to Haskell Notes: Part 5

Intro to Haskell Notes: Part 5 Intro to Haskell Notes: Part 5 Adrian Brasoveanu October 5, 2013 Contents 1 Curried functions and related issues 1 1.1 Curried functions......................................... 1 1.2 Partially applied

More information

Lecture 5: Declarative Programming. The Declarative Kernel Language Machine. September 12th, 2011

Lecture 5: Declarative Programming. The Declarative Kernel Language Machine. September 12th, 2011 Lecture 5: Declarative Programming. The Declarative Kernel Language Machine September 12th, 2011 1 Lecture Outline Declarative Programming contd Dataflow Variables contd Expressions and Statements Functions

More information

Final-Term Papers Solved MCQS with Reference

Final-Term Papers Solved MCQS with Reference Solved MCQ(S) From FinalTerm Papers BY Arslan Jan 14, 2018 V-U For Updated Files Visit Our Site : Www.VirtualUstaad.blogspot.com Updated. Final-Term Papers Solved MCQS with Reference 1. The syntax of PHP

More information

CS1622. Semantic Analysis. The Compiler So Far. Lecture 15 Semantic Analysis. How to build symbol tables How to use them to find

CS1622. Semantic Analysis. The Compiler So Far. Lecture 15 Semantic Analysis. How to build symbol tables How to use them to find CS1622 Lecture 15 Semantic Analysis CS 1622 Lecture 15 1 Semantic Analysis How to build symbol tables How to use them to find multiply-declared and undeclared variables. How to perform type checking CS

More information

proof through refutation

proof through refutation Prolog's logic; resolution grammars & parsing 1 proof through refutation we saw that Prolog uses the strategy: test the claim that a query is false by (1) finding it is immediately true (matches a fact

More information

COP4020 Programming Languages. Functional Programming Prof. Robert van Engelen

COP4020 Programming Languages. Functional Programming Prof. Robert van Engelen COP4020 Programming Languages Functional Programming Prof. Robert van Engelen Overview What is functional programming? Historical origins of functional programming Functional programming today Concepts

More information

COMPUTER SCIENCE TRIPOS

COMPUTER SCIENCE TRIPOS CST1.2017.3.1 COMPUTER SCIENCE TRIPOS Part IB Monday 5 June 2017 1.30 to 4.30 COMPUTER SCIENCE Paper 3 Answer five questions. Submit the answers in five separate bundles, each with its own cover sheet.

More information

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 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

More information

Hoare Logic. COMP2600 Formal Methods for Software Engineering. Rajeev Goré

Hoare Logic. COMP2600 Formal Methods for Software Engineering. Rajeev Goré Hoare Logic COMP2600 Formal Methods for Software Engineering Rajeev Goré Australian National University Semester 2, 2016 (Slides courtesy of Ranald Clouston) COMP 2600 Hoare Logic 1 Australian Capital

More information

McGill University School of Computer Science COMP-202A Introduction to Computing 1

McGill University School of Computer Science COMP-202A Introduction to Computing 1 McGill University School of Computer Science COMP-202A Introduction to Computing 1 Midterm Exam Thursday, October 26, 2006, 18:00-20:00 (6:00 8:00 PM) Instructors: Mathieu Petitpas, Shah Asaduzzaman, Sherif

More information

CS558 Programming Languages

CS558 Programming Languages CS558 Programming Languages Winter 2017 Lecture 7b Andrew Tolmach Portland State University 1994-2017 Values and Types We divide the universe of values according to types A type is a set of values and

More information

Summer 2017 Discussion 10: July 25, Introduction. 2 Primitives and Define

Summer 2017 Discussion 10: July 25, Introduction. 2 Primitives and Define CS 6A Scheme Summer 207 Discussion 0: July 25, 207 Introduction In the next part of the course, we will be working with the Scheme programming language. In addition to learning how to write Scheme programs,

More information

Combining Lists & Built-in Predicates

Combining Lists & Built-in Predicates Combining Lists & Built-in Predicates Artificial Intelligence Programming in Prolog Lecturer: Tim Smith Lecture 6 11/10/04 11/10/04 AIPP Lecture 6: Built-in Predicates 1 Collecting Results Last time we

More information

1 Lexical Considerations

1 Lexical Considerations Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science 6.035, Spring 2013 Handout Decaf Language Thursday, Feb 7 The project for the course is to write a compiler

More information

Lecture Overview Prolog 1. Introduction Interaction Terms 2. Clauses and predicates Clauses Predicates Variables 3.

Lecture Overview Prolog 1. Introduction Interaction Terms 2. Clauses and predicates Clauses Predicates Variables 3. 1 Lecture Overview Prolog 1. Introduction Interaction Terms 2. Clauses and predicates Clauses Predicates Variables 3. Satisfying goals 2 Prolog A standard free Prolog can be downloaded from http://www.swi-prolog.org

More information

6.001 Notes: Section 6.1

6.001 Notes: Section 6.1 6.001 Notes: Section 6.1 Slide 6.1.1 When we first starting talking about Scheme expressions, you may recall we said that (almost) every Scheme expression had three components, a syntax (legal ways of

More information

Programming Language Concepts, cs2104 Lecture 01 ( )

Programming Language Concepts, cs2104 Lecture 01 ( ) Programming Language Concepts, cs2104 Lecture 01 (2003-08-15) Seif Haridi Department of Computer Science, NUS haridi@comp.nus.edu.sg 2002-08-15 S. Haridi, CS2104, L01 (slides: C. Schulte, S. Haridi) 1

More information

LECTURE 16. Functional Programming

LECTURE 16. Functional Programming LECTURE 16 Functional Programming WHAT IS FUNCTIONAL PROGRAMMING? Functional programming defines the outputs of a program as a mathematical function of the inputs. Functional programming is a declarative

More information

Derived from PROgramming in LOGic (1972) Prolog and LISP - two most popular AI languages. Prolog programs based on predicate logic using Horn clauses

Derived from PROgramming in LOGic (1972) Prolog and LISP - two most popular AI languages. Prolog programs based on predicate logic using Horn clauses Prolog Programming Derived from PROgramming in LOGic (1972) Good at expressing logical relationships between concepts Prolog and LISP - two most popular AI languages Execution of a Prolog program is a

More information

Scheme: Data. CS F331 Programming Languages CSCE A331 Programming Language Concepts Lecture Slides Monday, April 3, Glenn G.

Scheme: Data. CS F331 Programming Languages CSCE A331 Programming Language Concepts Lecture Slides Monday, April 3, Glenn G. Scheme: Data CS F331 Programming Languages CSCE A331 Programming Language Concepts Lecture Slides Monday, April 3, 2017 Glenn G. Chappell Department of Computer Science University of Alaska Fairbanks ggchappell@alaska.edu

More information

CS 342 Lecture 7 Syntax Abstraction By: Hridesh Rajan

CS 342 Lecture 7 Syntax Abstraction By: Hridesh Rajan CS 342 Lecture 7 Syntax Abstraction By: Hridesh Rajan 1 Reading SICP, page 11-19, Section 1.1.6 Little Schemer, Chapter 2 2 The Idea of Syntax Abstraction Problem. Often programming tasks are repetitive,

More information

Chapter 6 Fundamentals of the Logical Paradigm. Programming Languages and Paradigms J. Fenwick, B. Kurtz, C. Norris (to be published in 2012)

Chapter 6 Fundamentals of the Logical Paradigm. Programming Languages and Paradigms J. Fenwick, B. Kurtz, C. Norris (to be published in 2012) Chapter 6 Fundamentals of the Logical Paradigm Programming Languages and Paradigms J. Fenwick, B. Kurtz, C. Norris (to be published in 2012) Introduction In this second part of chapter 6 you will learn

More information

Consider a description of arithmetic. It includes two equations that define the structural types of digit and operator:

Consider a description of arithmetic. It includes two equations that define the structural types of digit and operator: Syntax A programming language consists of syntax, semantics, and pragmatics. We formalize syntax first, because only syntactically correct programs have semantics. A syntax definition of a language lists

More information

Linguistic Graph Similarity for News Sentence Searching

Linguistic Graph Similarity for News Sentence Searching Lingutic Graph Similarity for News Sentence Searching Kim Schouten & Flavius Frasincar schouten@ese.eur.nl frasincar@ese.eur.nl Web News Sentence Searching Using Lingutic Graph Similarity, Kim Schouten

More information

CS 370 The Pseudocode Programming Process D R. M I C H A E L J. R E A L E F A L L

CS 370 The Pseudocode Programming Process D R. M I C H A E L J. R E A L E F A L L CS 370 The Pseudocode Programming Process D R. M I C H A E L J. R E A L E F A L L 2 0 1 5 Introduction At this point, you are ready to beginning programming at a lower level How do you actually write your

More information

Introduction to Prolog

Introduction to Prolog Introduction to Prolog David Woods dwoods@scss.tcd.ie Week 3 - HT Declarative Logic The Prolog programming language is, at its theoretical core, a declarative language. This is unlike more commonly used

More information

Lexical Considerations

Lexical Considerations Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science 6.035, Spring 2010 Handout Decaf Language Tuesday, Feb 2 The project for the course is to write a compiler

More information

Building a system for symbolic differentiation

Building a system for symbolic differentiation Computer Science 21b Structure and Interpretation of Computer Programs Building a system for symbolic differentiation Selectors, constructors and predicates: (constant? e) Is e a constant? (variable? e)

More information

Object-Oriented Design and Analysis

Object-Oriented Design and Analysis Object-Oriented Design and Analysis 1 Lecture 07 Summary What we know so far Objects Encapsulation Object Relationships Object Model Object-Oriented Analysis Classes Class Model 2 By the end of this lecture,

More information

A History of the Erlang VM

A History of the Erlang VM Erlang Solutions Ltd. A History of the Erlang VM Robert Virding Pre-history AXE programmed in PLEX PLEX - programming language for exchanges - proprietary - blocks (processes) and signals - in-service

More information

Chapter 6. Predefined Predicates

Chapter 6. Predefined Predicates Advanced Logic Programming https://sewiki.iai.uni-bonn.de/teaching/lectures/alp/2017/ Chapter 6. Predefined Predicates Updated: 12 June, 2017 Reorganized entire chapter Input and output Exception handling

More information

Programming. We will be introducing various new elements of Python and using them to solve increasingly interesting and complex problems.

Programming. We will be introducing various new elements of Python and using them to solve increasingly interesting and complex problems. Plan for the rest of the semester: Programming We will be introducing various new elements of Python and using them to solve increasingly interesting and complex problems. We saw earlier that computers

More information

Introduction to Functional Programming and basic Lisp

Introduction to Functional Programming and basic Lisp Introduction to Functional Programming and basic Lisp Based on Slides by Yves Lespérance & Peter Roosen-Runge 1 Functional vs Declarative Programming declarative programming uses logical statements to

More information

Syntax Errors; Static Semantics

Syntax Errors; Static Semantics Dealing with Syntax Errors Syntax Errors; Static Semantics Lecture 14 (from notes by R. Bodik) One purpose of the parser is to filter out errors that show up in parsing Later stages should not have to

More information

Monty Python and the Holy Grail (1975) BBM 101. Introduction to Programming I. Lecture #03 Introduction to Python and Programming, Control Flow

Monty Python and the Holy Grail (1975) BBM 101. Introduction to Programming I. Lecture #03 Introduction to Python and Programming, Control Flow BBM 101 Monty Python and the Holy Grail (1975) Introduction to Programming I Lecture #03 Introduction to Python and Programming, Control Flow Aykut Erdem, Fuat Akal & Aydın Kaya // Fall 2018 Last time

More information

6.001 Notes: Section 15.1

6.001 Notes: Section 15.1 6.001 Notes: Section 15.1 Slide 15.1.1 Our goal over the next few lectures is to build an interpreter, which in a very basic sense is the ultimate in programming, since doing so will allow us to define

More information

1. 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. 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 information