ACSC300: Logic Programming

Size: px
Start display at page:

Download "ACSC300: Logic Programming"

Transcription

1 ACSC300: Logic Programming Lecture 1: Introduction to Logic Programming and Prolog Harris Papadopoulos Course Aims This course aims to help you to: Understand a radically different programming paradigm: Declarative programming See how logic programming contributes to the quest for Artificial Intelligence Learn a new programming language called Prolog Appreciate the strengths and weaknesses of Prolog Useful Books Course Details Textbook: Ivan Bratko, Prolog-Programming for Artificial Intelligence, 3rd Edition, Addison Wesley, Optional books for further reading: Leon Sterling and Ehud Shapiro, The Art of Prolog, 2nd Edition, MIT Press, W. F. Clocksin, C. S. Mellish, Programming in Prolog: Using the Iso Standard, 5th edition, Springer-Verlag, Books: You are expected to have access to the textbook. The optional books on slide 3 have contributed material to the course, and are appropriate for further reading. Lectures: You will be able to find copies of all slides on the course homepage: However, further examinable material will be presented in lectures, and you will be expected to take notes. Course Details Workload 36 hours of classes 70 hours coursework and private study Coursework (40% of final mark) Test 50% Assignments 40% Practical participation 10% How to Succeed in this Course Attend all classes and make sure you understand everything covered in each class before coming to the next. If you need help come to see me during my office hours. In case you miss a class, make sure you cover the material of that class at home from the notes and the textbook. 1

2 How to Succeed in this Course Do all homework and assignments these are designed to help you understand and use the material taught. Read the relevant sections of the textbook Practice with Prolog at home Logic Programming Problem Solving = Problem Description + Logical Deductions How do we build in the ability to do the deductions? Ideally we would like to be able to tell the computer what we want it to do and not how we want it to do it. Imperative vs Declarative Programming In imperative programming (e.g. Java, Pascal, C++), you tell the computer HOW to solve the problem, i.e. do this, then do that. In declarative programming (e.g. Prolog), you declare WHAT the problem is, and leave it to the computer to use built-in reasoning to solve the problem. Introducing Prolog Prolog is the first attempt to design a purely declarative programming language. It is short for Programmation en Logique. It was developed in the 1970 s by Robert Kowalski and Maarten Van Emden (Edinburgh) Alain Colmerauer (Marseille) It was efficiently implemented by David Warren. Introducing Prolog When you write a Prolog program, you are writing down your knowledge of the problem you are modelling the problem. Prolog is widely used for specifying and modelling systems (e.g. software prototyping, design of circuits), and for many artificial intelligence applications such as expert systems and natural language processing. Prolog Concepts For a powerful, all-purpose programming language prolog has remarkably few concepts. A Prolog program consists of a set of clauses Each clause is either a fact or a rule 2

3 Facts: Rules: Examples of Clauses female(anne). parent(philip,anne). father(x,y) :- parent(x,y), male(x). ancestor(x,y) :- parent(x,y). ancestor(x,y) :- ancestor(x,z), parent(z,y). Terms A term represents some object or class of objects we want to talk about. It may be: A constant, which can be A number 37, 12.4, -5 A string hello world, Pete An atom philip, monkey Terms A variable X, Person, _3 (variable names begin with an upper-case letter or underscore) A compound term date (may, 1, 2004) In general a compound term is an expression of the form ƒ(t 1, T 2,, T n ), where ƒ is called a functor and T 1, T 2,, T n are terms. Facts A fact represents a unit of information that is assumed to be true. its_raining. Often, a fact asserts some property of a term, or a list of terms. parent(philip,anne). Facts In general a fact is an expression of the form p(t 1, T 2,, T n ), where p is called a predicate symbol and T 1, T 2,, T n are terms. (Predicate symbols start with a lower-case letter) Rules A rule represents a conditional assertion ( this is true if this is true ). need_umbrella :- its_raining. father(x,y) :- parent(x,y), male(x). IF AND 3

4 Rules In general a rule is an expression of the form A :- B 1, B 2,, B n, where A and B 1, B 2,, B n are atomic formulas. Rules An atomic formula is an expression of the form p(t 1, T 2,, T n ), where p is a predicate symbol and T 1, T 2,, T n are terms. A is called the head of the rule. B 1, B 2,, B n is called the body of the rule. Example cat(349, Dickens, Oliver Twist ). cat(487, Bronte, Jane Eyre ). cat(187, Boole, Laws of Thought ).. fiction(author, Title) :- cat(num, Author, Title), Num > 200, Num < 600. Variables Always begin with upper case letters or underscores (e.g. X, TimeTable, _24). Anything that begins with an upper case letter in Prolog is a variable (unless in quotes). A variable such as X in one clause is completely independent of variables with the same name in another clause each clause stands alone. Can take any value There are no types in Prolog Note Remember: A clause is a Prolog statement (i.e. a fact or a rule). All clauses in Prolog must end with a dot. Many Prolog systems require all the clauses for a particular predicate to appear together. The group of clauses for a predicate pred is called the procedure of pred. Queries Once we have a Prolog program we can use it to answer a query.?- parent(philip, anne).?- border(wales, scotland). The Prolog interpreter responds yes or no. Note that all queries must end with a dot. 4

5 Queries A query may contain variables:?- parent(philip, Who). The Prolog interpreter will respond with the values for the variables which make the query true (if any).?- parent(philip, Who). Who = anne; Who = charles; Who = andrew; no Example Otherwise it will respond with a no. Queries In general a query is an expression of the form?- A 1, A 2,, A n, where A 1, A 2,, A n are atomic formulas, known as goals. Queries The Prolog system will try to find values for the variables which make all the goals true. The same variable may occur in more than one goal. After each answer, typing a semi-colon (;) asks for any further answers. Example If we have the Prolog program: male(charles). male(edward). parent(philip, anne). parent(philip, edward). parent(philip, charles). Example (cont.) And we enter the query:?- parent(x, charles), parent(x,y), male(y). Then we get the response X = philip, Y = edward; What happens next? 5

6 Side-effects Some queries may cause the system to carry out certain actions.?- halt. this causes the Prolog system to exit.?- consult( myfile ). this causes the Prolog system to read the contents of myfile and add the clauses to the current program. Side-effects?- consult(user). this causes the Prolog system to read the user input as a Prolog program until terminated by a CTRL-D.?- listing(predname). this causes the Prolog system to output a listing of the clauses defining the predicate predname in the current program. Exercise Suppose we have the following Prolog program: male(charles). : parent(philip, anne). parent(elizabeth, edward). : wife(elizabeth, philip). wife(mary, george). Write queries to find: Exercise (cont.) 1. The parents of charles. 2. The father of charles. 3. The grandparents of charles. 4. All the grandchildren of the grandparents of charles. 6

will take you everywhere.

will take you everywhere. Prolog COMP360 Logic will get you from A to B. Imagination will take you everywhere. Albert Einstein Prolog Assignment A programming assignment in Prolog has been posted on Blackboard Upload your.pl file

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

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

COMP219: Artificial Intelligence. Lecture 6: Recursion in Prolog

COMP219: Artificial Intelligence. Lecture 6: Recursion in Prolog COMP219: Artificial Intelligence Lecture 6: Recursion in Prolog 1 Overview Last time Introduction to Prolog: facts, rules, queries; family tree program Today: Recursive rules in Prolog; writing and evaluating

More information

Prolog. Logic Programming vs Prolog

Prolog. Logic Programming vs Prolog Language constructs Prolog Facts, rules, queries through examples Horn clauses Goal-oriented semantics Procedural semantics How computation is performed? Comparison to logic programming 1 Logic Programming

More information

Introduction to predicate calculus

Introduction to predicate calculus Logic Programming Languages Logic programming systems allow the programmer to state a collection of axioms from which theorems can be proven. Express programs in a form of symbolic logic Use a logical

More information

Advanced Logic and Functional Programming

Advanced Logic and Functional Programming Advanced Logic and Functional Programming Lecture 1: Programming paradigms. Declarative programming. From first-order logic to Logic Programming. Programming paradigms Programming paradigm (software engineering)

More information

CS 360: Programming Languages Lecture 10: Logic Programming with Prolog

CS 360: Programming Languages Lecture 10: Logic Programming with Prolog CS 360: Programming Languages Lecture 10: Logic Programming with Prolog Geoffrey Mainland Drexel University Section 1 Administrivia Midterm Tuesday Midterm is Tuesday, February 14! Study guide is on the

More information

Introduction to Prolog

Introduction to Prolog Introduction to Prolog York University Department of Computer Science and Engineering York University- CSE 3401- V. Movahedi 03_Prolog 1 Overview Introduction & Preliminaries Syntax Characters Constants

More information

Introduction to Prolog by

Introduction to Prolog by to Prolog by a talk given to The Linux Supporters Group Adelaide July 2009 Slide 1 Choice Points in Prolog Slide 2 Prolog s run-time stack does not function as procedural language stacks do. It isn t even

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

For Wednesday. No reading Chapter 9, exercise 9. Must be proper Horn clauses

For Wednesday. No reading Chapter 9, exercise 9. Must be proper Horn clauses For Wednesday No reading Chapter 9, exercise 9 Must be proper Horn clauses Same Variable Exact variable names used in sentences in the KB should not matter. But if Likes(x,FOPC) is a formula in the KB,

More information

Prolog. Intro to Logic Programming

Prolog. Intro to Logic Programming Prolog Logic programming (declarative) Goals and subgoals Prolog Syntax Database example rule order, subgoal order, argument invertibility, backtracking model of execution, negation by failure, variables

More information

Announcements. The current topic: Prolog. Logic programming. Logic programming. Lab 2 has been marked.

Announcements. The current topic: Prolog. Logic programming. Logic programming. Lab 2 has been marked. The current topic: Prolog! Introduction! Object-oriented programming: Python! Functional programming: Scheme! Python GUI programming (Tkinter)! Types and values Logic programming: Prolog Next up: Introduction

More information

Introduction to Logic Programming, April 3, 2017

Introduction to Logic Programming, April 3, 2017 Introduction to Logic Programming, 16-17 April 3, 2017 Bibliography Leon Sterling and Ehud Shapiro, The Art of Prolog, MIT Press. Ivan Bratko, Prolog Programming for Artificial Intelligence, Addison-Wesley.

More information

Prolog. Artificial Intelligence. Lecture 2 Karim Bouzoubaa

Prolog. Artificial Intelligence. Lecture 2 Karim Bouzoubaa Prolog Artificial Intelligence Lecture 2 Karim Bouzoubaa Content Introduction Declarative and logic programming Example Computational model Prolog reasoning Structure of prolog programs Prolog concepts

More information

Week 7 Prolog overview

Week 7 Prolog overview Week 7 Prolog overview A language designed for A.I. Logic programming paradigm Programmer specifies relationships among possible data values. User poses queries. What data value(s) will make this predicate

More information

Brief Introduction to Prolog

Brief Introduction to Prolog CSC384: Intro to Artificial Intelligence Brief Introduction to Prolog Prolog Programming for Artificial Intelligence by Ivan Bratko. Prolog is a language that is useful for doing symbolic and logic based

More information

Chapter 16. Logic Programming Languages

Chapter 16. Logic Programming Languages Chapter 16 Logic Programming Languages Chapter 16 Topics Introduction A Brief Introduction to Predicate Calculus Predicate Calculus and Proving Theorems An Overview of Logic Programming The Origins of

More information

What is Prolog? - 1. A Prolog Tutorial. What is Prolog? - 2. Prolog Programming. » Declaring some facts about objects and their relationships

What is Prolog? - 1. A Prolog Tutorial. What is Prolog? - 2. Prolog Programming. » Declaring some facts about objects and their relationships What is Prolog? - 1 Prolog is an example of a logic programming language Invented by Alain Colmeraurer in 1972 A Prolog Tutorial Based on Clocksin and Mellish Chapter 1 The version implemented at the University

More information

Logic Programming, 16-17

Logic Programming, 16-17 Logic Programming, 16-17 Inês Dutra DCC-FCUP ines@dcc.fc.up.pt (room: 1.31) September 21, 2016 Contents ˆ Introduction to logic languages. ˆ Differences between logic languages and other languages. ˆ Introduction

More information

Logic Programming Languages

Logic Programming Languages Logic Programming Languages Introduction Logic programming languages, sometimes called declarative programming languages Express programs in a form of symbolic logic Use a logical inferencing process to

More information

What is Prolog? - 1. A Prolog Tutorial. Prolog Programming. What is Prolog? - 2. » Declaring some facts about objects and their relationships

What is Prolog? - 1. A Prolog Tutorial. Prolog Programming. What is Prolog? - 2. » Declaring some facts about objects and their relationships What is Prolog? - 1 Prolog is an example of a logic programming language A Prolog Tutorial Based on Clocksin and Mellish Chapter 1 Invented by Alain Colmeraurer in 1972 The version implemented at the University

More information

Chapter 2 Preview. Preview. History of Programming Languages. History of Programming Languages. History of Programming Languages

Chapter 2 Preview. Preview. History of Programming Languages. History of Programming Languages. History of Programming Languages Chapter 2 Preview Evolution of the Major Programming Languages The Beginnings of Data Abstraction: SIMULA 67 Orthogonal Design: ALGOL 68 Some Early Descendants of the ALGOLs Programming Based on Logic:

More information

Chapter 16. Logic Programming Languages ISBN

Chapter 16. Logic Programming Languages ISBN Chapter 16 Logic Programming Languages ISBN 0-321-49362-1 Chapter 16 Topics Introduction A Brief Introduction to Predicate Calculus Predicate Calculus and Proving Theorems An Overview of Logic Programming

More information

Introducing Prolog. Chapter THE IDEA OF PROLOG

Introducing Prolog. Chapter THE IDEA OF PROLOG Chapter 1 Introducing Prolog 1.1. THE IDEA OF PROLOG Until recently, programming a computer meant giving it a list of things to do, step by step, in order to solve a problem. In Prolog, this is no longer

More information

CSEN403 Concepts of Programming Languages. Topics: Logic Programming Paradigm: PROLOG Search Tree Recursion Arithmetic

CSEN403 Concepts of Programming Languages. Topics: Logic Programming Paradigm: PROLOG Search Tree Recursion Arithmetic CSEN403 Concepts of Programming Languages Topics: Logic Programming Paradigm: PROLOG Search Tree Recursion Arithmetic Prof. Dr. Slim Abdennadher 8.2.2015 c S. Abdennadher 1 Logic Programming versus Prolog

More information

Last Week COMP219: Artificial Intelligence Lecture 8 Prolog Lecture 2 Recursive Definitions Recursion The Ancestor Relation

Last Week COMP219: Artificial Intelligence Lecture 8 Prolog Lecture 2 Recursive Definitions Recursion The Ancestor Relation COMP219: Artificial Intelligence Lecture 8 Prolog Lecture 2 Recursive Definitions Dr. Annabel Latham Ashton Building Room 2.05 http://www.csc.liv.ac.uk/~alatham/comp219.html Last Week Prolog programs comprised

More information

arxiv: v1 [cs.pl] 1 May 2017

arxiv: v1 [cs.pl] 1 May 2017 arxiv:1705.00556v1 [cs.pl] 1 May 2017 Mapping Objects to Persistent Predicates. José E. Zalacain Llanes Abstract The Logic Programming through Prolog has been widely used for supply persistence in many

More information

Prolog Programming. Lecture Module 8

Prolog Programming. Lecture Module 8 Prolog Programming Lecture Module 8 Prolog Language Prolog is unique in its ability to infer facts from the given facts and rules. In Prolog, an order of clauses in the program and goals in the body of

More information

Introduction to Prolog. CS181: Programming Languages

Introduction to Prolog. CS181: Programming Languages Introduction to Prolog CS181: Programming Languages Topics: Facts, rules, questions Operators Variables, constants Interpreter environment Vladimir Vacic, Christos Koufogiannakis, University of California

More information

Declarative 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. Declarative programming Logic programming is a declarative style of programming. The programmer says what they want to compute,

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

10. Logic Programming. Oscar Nierstrasz

10. Logic Programming. Oscar Nierstrasz 10. Logic Programming Oscar Nierstrasz Roadmap > Facts and Rules > Resolution and Unification > Searching and Backtracking > Recursion, Functions and Arithmetic > Lists and other Structures References

More information

The Beauty and Joy of Computing

The Beauty and Joy of Computing The Beauty and Joy of Computing Lecture #5 Programming Paradigms UC Berkeley EECS Sr Lecturer SOE Dan Quest (first exam) in in 14 days!! A new non-profit foundation is dedicated to growing computer programming

More information

Introduction to LISP. York University Department of Computer Science and Engineering. York University- CSE V.

Introduction to LISP. York University Department of Computer Science and Engineering. York University- CSE V. Introduction to LISP York University Department of Computer Science and Engineering York University- CSE 3401- V. Movahedi 11_LISP 1 Introduction to LISP Evaluation and arguments S- expressions Lists Numbers

More information

Chapter 16. Logic Programming. Topics. Unification. Resolution. Prolog s Search Strategy. Prolog s Search Strategy

Chapter 16. Logic Programming. Topics. Unification. Resolution. Prolog s Search Strategy. Prolog s Search Strategy Topics Chapter 16 Logic Programming Summary (resolution, unification, Prolog search strategy ) Disjoint goals The cut operator Negative goals Predicate fail Debugger / tracer Lists 2 Resolution Resolution

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

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

Wan Hussain Wan Ishak

Wan Hussain Wan Ishak September 1 st Session 2014/2015 (A141) 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

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

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

Lecture 05 I/O statements Printf, Scanf Simple statements, Compound statements

Lecture 05 I/O statements Printf, Scanf Simple statements, Compound statements Programming, Data Structures and Algorithms Prof. Shankar Balachandran Department of Computer Science and Engineering Indian Institute of Technology, Madras Lecture 05 I/O statements Printf, Scanf Simple

More information

Programming Paradigms and Languages Introduction. dr Robert Kowalczyk WMiI UŁ

Programming Paradigms and Languages Introduction. dr Robert Kowalczyk WMiI UŁ Programming Paradigms and Languages Introduction dr Robert Kowalczyk WMiI UŁ What is a programming paradigm? A programming paradigm is a fundamental style of computer programming, a way of building the

More information

4.3 FURTHER PROGRAMMING

4.3 FURTHER PROGRAMMING 4.3 FURTHER PROGRAMMING 4.3.1 PROGRAMMING PARADIGMS PROGRAMMING PARADIGMS Programming paradigms are simply methods of programming. Initially, computers were programmed using binary language. This was difficult

More information

Principles of Programming Languages Topic: Logic Programming Professor Lou Steinberg

Principles of Programming Languages Topic: Logic Programming Professor Lou Steinberg Principles of Programming Languages Topic: Logic Programming Professor Lou Steinberg 1 Logic Programming True facts: If I was born in year B, then in year Y on my birthday I turned Y-B years old I turned

More information

Quick n Dirty Prolog Tutorial

Quick n Dirty Prolog Tutorial CSc 245 Introduction to Discrete Structures Quick n Dirty Prolog Tutorial (McCann) Last Revised: February 2014 Background: Prolog, whose name is from the phrase PROgramming in LOGic, is a special purpose

More information

Prolog. Prolog: Programmation en Logique R.A. Kowalski: Predicate logic as a programming language, Proc IFIP 1974, pp.

Prolog. Prolog: Programmation en Logique R.A. Kowalski: Predicate logic as a programming language, Proc IFIP 1974, pp. Prolog Prolog: Programmation en Logique 1974 - R.A. Kowalski: Predicate logic as a programming language, Proc IFIP 1974, pp. 569-574: First-order predicate logic for the specification of data and relationships

More information

CSC4504/Prolog. : Formal Languages & Applications. J Paul Gibson, D311. An Introduction To Prolog

CSC4504/Prolog. : Formal Languages & Applications. J Paul Gibson, D311. An Introduction To Prolog CSC4504/Prolog. : Formal Languages & Applications J Paul Gibson, D311 paul.gibson@telecom-sudparis.eu http://www-public.telecom-sudparis.eu/~gibson/teaching/csc4504/ An Introduction To Prolog /~gibson/teaching/csc4504/problem8-prolog.pdf

More information

Chapter 16. Logic Programming Languages ISBN

Chapter 16. Logic Programming Languages ISBN Chapter 16 Logic Programming Languages ISBN 0-321-49362-1 Chapter 16 Topics Introduction A Brief Introduction to Predicate Calculus Predicate Calculus and Proving Theorems An Overview of Logic Programming

More information

UNIT 2 A. I. LANGUAGES-2: PROLOG

UNIT 2 A. I. LANGUAGES-2: PROLOG UNIT 2 A. I. LANGUAGES-2: Structure Page Nos. 2.0 Introduction 42 2.1 Objectives 43 2.2 Foundations of Prolog 43 2.3 Notations in Prolog for Building Blocks 46 2.4 How Prolog System Solves Problems 50

More information

Prolog is a Declarative Language used mainly for Artificial Intelligence because

Prolog is a Declarative Language used mainly for Artificial Intelligence because Bobby Gagliardi Prolog is a Declarative Language used mainly for Artificial Intelligence because the language makes the task of manipulation of symbols and inference about these symbols easier. Unlike

More information

Using Prolog as a CAS

Using Prolog as a CAS Using Prolog as a CAS Kharkiv Pedagogical University A. Stolyarevska July 2002 References 1) Robinson J.A. A machine-oriented logic based on the resolution principle. J. ACM, 12, 23-41. 2) Colmerauer A.

More information

IF/Prolog V5.3. User s Guide. Siemens AG Austria

IF/Prolog V5.3. User s Guide. Siemens AG Austria IF/Prolog V5.3 User s Guide Siemens AG Austria Is there anything you would like to tell us about this manual? Please send us your comments. Siemens AG Austria PSE KB B3 Gudrunstrasse 11 A-1100 Vienna Austria

More information

CS10 : The Beauty and Joy of Computing

CS10 : The Beauty and Joy of Computing CS10 : The Beauty and Joy of Computing UC Berkeley EECS Lecturer SOE Dan Garcia Lecture #5 Programming Paradigms 2012-02-01 Story details the move to Digital of many things precious to us music, photos,

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

4 Programing Paradigms in 45 Minutes

4 Programing Paradigms in 45 Minutes 4 Programing Paradigms in 45 Minutes Aja Hammerly () Ruby Conf 2017 1 Aja Hammerly http://github.com/thagomizer http://www.thagomizer.com Lawyer Cat Says: Any code is copyright Google and licensed Apache

More information

Sec Negative Goals ( Not ) 21

Sec Negative Goals ( Not ) 21 Sec. 1.11. Negative Goals ( Not ) 21?- non_parent(elmo,cathy). yes? non_parent(sharon,cathy). yes?- non_parent(charles,cathy). yes and non_parent fails if its arguments are in fact a parent and his or

More information

Programming in Logic

Programming in Logic Programming in Logic Would you be interested in a class of programming languages that have no assignment statements, no control constructs and no types? Unlikely! Yet logic programming languages provides

More information

Database Systems (INFR10070) Dr Paolo Guagliardo. University of Edinburgh. Fall 2016

Database Systems (INFR10070) Dr Paolo Guagliardo. University of Edinburgh. Fall 2016 Database Systems (INFR10070) Dr Paolo Guagliardo University of Edinburgh Fall 2016 Databases are everywhere Electronic commerce, websites (e.g., Wordpress blogs) Banking applications, booking systems,

More information

The current topic: Prolog. Announcements. Meaning of a Prolog rule. Prolog syntax. Reminder: The deadline for Lab 2 re-mark requests is Friday.

The current topic: Prolog. Announcements. Meaning of a Prolog rule. Prolog syntax. Reminder: The deadline for Lab 2 re-mark requests is Friday. The current topic: Prolog! Introduction! Object-oriented programming: Python! Functional programming: Scheme! Python GUI programming (Tkinter)! Types and values Logic programming: Prolog! Introduction

More information

Principles of Programming Languages Lecture 13: Paradigms: Logic Programming.

Principles of Programming Languages Lecture 13: Paradigms: Logic Programming. Principles of Programming Languages Lecture 13: Paradigms: Logic Programming. Andrei Arusoaie 1 1 Department of Computer Science January 16, 2018 Outline Paradigms Outline Paradigms Logic Programming Paradigms

More information

4 Programing Paradigms in 45 Minutes

4 Programing Paradigms in 45 Minutes 4 Programing Paradigms in 45 Minutes Aja Hammerly () RubyHACK 2018 1 Aja Hammerly http://github.com/thagomizer http://www.thagomizer.com Lawyer Cat Says: Any code is copyright Google and licensed Apache

More information

Chapter 16. Logic Programming. Topics. Predicate Calculus and Proving Theorems. Resolution. Resolution: example. Unification and Instantiation

Chapter 16. Logic Programming. Topics. Predicate Calculus and Proving Theorems. Resolution. Resolution: example. Unification and Instantiation Topics Chapter 16 Logic Programming Proving Theorems Resolution Instantiation and Unification Prolog Terms Clauses Inference Process Backtracking 2 Predicate Calculus and Proving Theorems A use of propositions

More information

CS10 : The Beauty and Joy of Computing

CS10 : The Beauty and Joy of Computing UC Berkeley EECS Summer Instructor Ben Chun TURING TURNS 100 CS10 : The Beauty and Joy of Computing Lecture #5 Programming Paradigms 2012-06-25 If you visited google.com on Saturday, you saw a tribute

More information

Programming Language Concepts (20013) Preparation for the Final Exam

Programming Language Concepts (20013) Preparation for the Final Exam Programming Language Concepts (20013 Preparation for the Final Exam This is a collection of 12 questions which are close to what is to be expected within the final exams for PLC. Attached are sample solutions.

More information

Logic Programming. Let us have airline flight information of the form: 1. Application Domains: 2. Definitions

Logic Programming. Let us have airline flight information of the form: 1. Application Domains: 2. Definitions Logic Programming 1. Application Domains: Logic programming language application areas include natural language processing, expert systems, specifications checking, theorem proving, and control systems

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

Part (04) Introduction to Programming

Part (04) Introduction to Programming Part (04) Introduction to Programming Dr. Ahmed M. ElShafee 1 Dr. Ahmed ElShafee, ACU : Summer 2014, Introduction to CS 1 EVOLUTION To write a program for a computer, we must use a computer language. A

More information

Prolog Lecture 1. David Eyers Michaelmas Notes derived from those created by Andy Rice and Kate Taylor, used with permission

Prolog Lecture 1. David Eyers Michaelmas Notes derived from those created by Andy Rice and Kate Taylor, used with permission Prolog Lecture 1 David Eyers Michaelmas 2009 Notes derived from those created by Andy Rice and Kate Taylor, used with permission Course aims Introduce a declarative style of programming Explain fundamental

More information

PROgramming in LOGic PROLOG Recursion, Lists & Predicates

PROgramming in LOGic PROLOG Recursion, Lists & Predicates PROgramming in LOGic PROLOG Recursion, Lists & Predicates CSC9Y4 1 Recursion Recursion in Prolog means placing in the body of a rule a call to the predicate which occurs in the head of the rule. Here is

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

Declarative Programming Prolog CS360

Declarative Programming Prolog CS360 Declaratie Programming Prolog CS360 Terms Numerical literals String literals Ø By default, any string that starts is all lowercase Ø Use single quotes for anything else Atoms Ø Essentially, strings Ø Also,

More information

Artificial Intelligence Course Sharif University of Technology

Artificial Intelligence Course Sharif University of Technology Artificial Intelligence Course Sharif University of Technology Outline Data objects Matching Declarative meaning of Prolog programs Procedural meaning Example: monkey and banana Order of clauses and goals

More information

Databases and MySQL: The Basics

Databases and MySQL: The Basics Databases and MySQL: The Basics CISC 282 November 8, 2017 Definitions Database "Collection of related facts" (Pat Martin, CISC 332) Organized data set Used for large quantities of information Relational

More information

Lecture 12: Working with Files

Lecture 12: Working with Files Lecture 12: Working with Files This lecture is concerned with various aspects of file handling and modularity We will learn three things: How predicate definitions can be spread across different files

More information

CPS 506 Comparative Programming Languages. Programming Language Paradigm

CPS 506 Comparative Programming Languages. Programming Language Paradigm CPS 506 Comparative Programming Languages Logic Programming Language Paradigm Topics Introduction A Brief Introduction to Predicate Calculus Predicate Calculus and Proving Theorems An Overview of Logic

More information

to read: Chapter 10, Russel & Norvig

to read: Chapter 10, Russel & Norvig to read: Chapter 10, Russel & Norvig What will be discussed Inference machines Logic programming (Prolog) and theorem provers Next Production systems Semantic networks and Frames 2 3 Necessary to implement

More information

Logic programming I. Henrik Boström Stockholm University. Facts Queries Rules Terms Recursion Lists Negation

Logic programming I. Henrik Boström Stockholm University. Facts Queries Rules Terms Recursion Lists Negation Logic programming I Henrik Boström Stockholm University Facts Queries Rules Terms Recursion Lists Negation Logic programs A logic program consists of facts and rules. A logic program is executed by responding

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

A PROLOG Tool for Slicing Source Code

A PROLOG Tool for Slicing Source Code A PROLOG Tool for Slicing Source Code Marbod Hopfner, Dietmar Seipel, and Joachim Baumeister University of Würzburg, Institute for Computer Science Am Hubland, D 97074 Würzburg, Germany {hopfner, seipel,

More information

Knowledge Representation

Knowledge Representation Knowledge Representation B. Dwyer, University of Adelaide 2004 1. Introduction 3 1.1. What is Knowledge Representation? 3 2. Prolog Basics 5 2.1. Facts 5 2.2. Rules 6 2.2.1. Conjunction (AND) 7 2.2.2.

More information

Symbolic Programming Declarative Programming

Symbolic Programming Declarative Programming CS370 Symbolic Programming Declarative Programming LECTURE 2: Introduction to Prolog park@cs.kaist.ac.kr Computer Science Department Korea Advanced Institute of Science and Technology http://nlp.kaist.ac.kr/~cs370

More information

Prolog Programming. Chapter 2. Syntax and Meaning of Prolog Programs 1/16/2010

Prolog Programming. Chapter 2. Syntax and Meaning of Prolog Programs 1/16/2010 Prolog Programming Chapter 2 Syntax and Meaning of Prolog Programs 1/16/2010 1 Chapter 2 Syntax and Meaning of Prolog Programs Data Objects Matching Declarative meaning of Prolog programs Procedural meaning

More information

An introduction to logic programming with Prolog

An introduction to logic programming with Prolog An introduction to logic programming with Prolog Dr. Constantinos Constantinides Department of Computer Science and Software Engineering Concordia University A running example: A family genealogy tree

More information

Lisp History. Lisp and Prolog Background. Lisp Use. Lisp Availability

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

Roman Barták Charles University, Prague (CZ)

Roman Barták Charles University, Prague (CZ) 1 Programming with Logic and Constraints Roman Barták Charles University, Prague (CZ) roman.bartak@mff.cuni.cz http://ktiml.mff.cuni.cz/~bartak Constraint programming represents one of the closest approaches

More information

Incremental Flow Analysis. Andreas Krall and Thomas Berger. Institut fur Computersprachen. Technische Universitat Wien. Argentinierstrae 8

Incremental Flow Analysis. Andreas Krall and Thomas Berger. Institut fur Computersprachen. Technische Universitat Wien. Argentinierstrae 8 Incremental Flow Analysis Andreas Krall and Thomas Berger Institut fur Computersprachen Technische Universitat Wien Argentinierstrae 8 A-1040 Wien fandi,tbg@mips.complang.tuwien.ac.at Abstract Abstract

More information

What is programming? Elements of Programming Languages. From machine code to programming languages. What is a programming language?

What is programming? Elements of Programming Languages. From machine code to programming languages. What is a programming language? What is programming? Elements of Programming Languages Lecture 0: Introduction and Course Outline James Cheney University of Edinburgh September 18, 2017 Computers are deterministic machines, controlled

More information

CS 455: INTRODUCTION TO DISTRIBUTED SYSTEMS [DISTRIBUTED MUTUAL EXCLUSION] Frequently asked questions from the previous class survey

CS 455: INTRODUCTION TO DISTRIBUTED SYSTEMS [DISTRIBUTED MUTUAL EXCLUSION] Frequently asked questions from the previous class survey CS 455: INTRODUCTION TO DISTRIBUTED SYSTEMS [DISTRIBUTED MUTUAL EXCLUSION] Shrideep Pallickara Computer Science Colorado State University L23.1 Frequently asked questions from the previous class survey

More information

Artificial Intelligence Lecture 1

Artificial Intelligence Lecture 1 Artificial Intelligence Lecture 1 istrative Matters Webpage: www.aass.oru.se/~ali/ai2008 Teacher: Amy Loutfi Hours: Fridays 10 12 Lab Assistant: Marcello Cirillo 2 istrative Matters Course book: Alison

More information

CSC384: Intro to Artificial Intelligence Prolog Tutorials 3&4. Hojjat Ghaderi, Fall 2006, University of Toronto

CSC384: Intro to Artificial Intelligence Prolog Tutorials 3&4. Hojjat Ghaderi, Fall 2006, University of Toronto CSC384: Intro to Artificial Intelligence Prolog Tutorials 3&4 1 Debugging Programs in Prolog We talked about the graphical debugger under Windows. Now, the text-based debugger: You can put a breakpoint

More information

CS455: Introduction to Distributed Systems [Spring 2018] Dept. Of Computer Science, Colorado State University

CS455: Introduction to Distributed Systems [Spring 2018] Dept. Of Computer Science, Colorado State University CS 455: INTRODUCTION TO DISTRIBUTED SYSTEMS [DISTRIBUTED MUTUAL EXCLUSION] Frequently asked questions from the previous class survey Yes. But what really is a second? 1 second ==time for a cesium 133 atom

More information

CS 321 Programming Languages and Compilers. Prolog

CS 321 Programming Languages and Compilers. Prolog CS 321 Programming Languages and Compilers Prolog Prolog PROgramming LOGic Algorithm = Logic + Control Logic programming deals with computing relations rather than functions. To understand Prolog one must

More information

ITS336 Lecture 7 Prolog

ITS336 Lecture 7 Prolog Lecture 7 Prolog Prolog is a language for logic programming. Its concept is based on the First Order Logic. 7.1 Prolog Syntax Constant Symbols a word starting with a lowercase letter, or numbers e.g. john,

More information

Prolog (cont d) Remark. Using multiple clauses. Intelligent Systems and HCI D7023E

Prolog (cont d) Remark. Using multiple clauses. Intelligent Systems and HCI D7023E Intelligent Systems and HCI D703E Lecture : More Prolog Paweł Pietrzak Prolog (cont d) 1 Remark The recent version of SWI- Prolog displays true and false rather than and no Using multiple clauses Different

More information

Course Syllabus. Programming Language Paradigms. Spring - DIS Copenhagen. Semester & Location: Elective Course - 3 credits.

Course Syllabus. Programming Language Paradigms. Spring - DIS Copenhagen. Semester & Location: Elective Course - 3 credits. Course Syllabus Programming Language Paradigms Semester & Location: Type & Credits: Spring - DIS Copenhagen Elective Course - 3 credits Major Disciplines: Faculty Members: Computer Science, Mathematics

More information

documenting programs, including: A traditional, command line interactive top level.

documenting programs, including: A traditional, command line interactive top level. Computational Logic Developing Programs with a Logic Programming System 1 Our Development Environment: The Ciao System We use the (ISO-Prolog subset of the) Ciao multiparadigm programming system. In particular,

More information

A Motivational Introduction to Computational Logic and (Constraint) Logic Programming

A Motivational Introduction to Computational Logic and (Constraint) Logic Programming A Motivational Introduction to Computational Logic and (Constraint) Logic Programming The following people have contributed to this course material: Manuel Hermenegildo (editor), Technical University of

More information

CS 242. Fundamentals. Reading: See last slide

CS 242. Fundamentals. Reading: See last slide CS 242 Fundamentals Reading: See last slide Syntax and Semantics of Programs Syntax The symbols used to write a program Semantics The actions that occur when a program is executed Programming language

More information