COP4020 Programming Languages. Logical programming with Prolog Prof. Xin Yuan

Size: px
Start display at page:

Download "COP4020 Programming Languages. Logical programming with Prolog Prof. Xin Yuan"

Transcription

1 COP4020 Programming Languages Logical programming with Prolog Prof. Xin Yuan

2 Topics Logic programming with Prolog COP4020 Spring

3 Definitions: Prolog Terms Terms are symbolic expressions that are Prolog s building blocks A Prolog program consists of Horn clauses (axioms) that consist of terms Data structures processed by a Prolog program are terms A term is either a variable: a name beginning with an upper case letter a constant: a number or string an atom: a symbol or a name beginning with a lower case letter a structure of the form: functor(arg 1, arg 2,..., arg n ) where functor is an atom and arg i are sub-terms a list (also a structure with a functor) of the form [term 1, term 2,, term n ] Examples: X, Y, ABC, and Alice are variables 7, 3.14, and hello are constants foo, barfly, and + are atoms bin_tree(foo, bin_tree(bar, glarch)) and +(3,4) are structures COP4020 Spring

4 Term Manipulation Terms can be analyzed and constructed Built-in predicates functor and arg, for example:?- functor(foo(a,b,c), foo, 3). yes?- functor(bar(a,b,c), F, N). F = bar N = 3?- functor(t, bee, 2). T = bee(_g1,_g2)?- functor(t, bee, 2), arg(1, T, a), arg(2, T, b). T = bee(a,b) The univ operator =.. Break up a term into a list or form a term from a list.?- foo(a,b,c) =.. L L = [foo,a,b,c]?- T =.. [bee,a,b] T = bee(a,b) COP4020 Spring

5 Unification and Variable Instantiation Variables are used in clauses: A variable is instantiated to a term as a result of unification, which takes place when goals are matched to head predicates Goal in query: rainy(c) Fact: rainy(seattle) Unification is the result of the goal-fact match: C=seattle Unification is recursive: An uninstantiated variable unifies with anything, even with other variables which makes them identical (aliases) An atom unifies with an identical atom A constant unifies with an identical constant A structure unifies with another structure if the functor and number of arguments are the same and the arguments unify recursively Once a variable is instantiated to a non-variable term, it cannot be changed: proofs cannot be tampered with COP4020 Spring

6 Examples of Unification The built-in predicate =(A,B) succeeds if and only if A and B can be unified, where the goal =(A,B) may be written as A = B?- a = a. yes?- a = 5. No?- 5 = 5.0. No?- a = X. X = a?- foo(a,b) = foo(a,b). Yes?- foo(a,b) = foo(x,b). X = a?- foo(x,b) = Y. Y = foo(x,b)?- foo(z,z) = foo(a,b). no COP4020 Spring

7 Prolog Lists A list is of the form: [elt 1,elt 2,..., elt n ] where elt i are terms The special list form [elt 1,elt 2,..., elt n tail] denotes a list whose tail list is tail Examples?- [a,b,c] = [a T]. T = [b,c]?- [a,b,c] = [a,b T]. T = [c]?- [a,b,c] = [a,b,c T]. T = [] COP4020 Spring

8 List Operations: List Membership List membership definitions: member(x, [X T]). member(x, [H T]) :- member(x, T).?- member(b, [a,b,c]). Execution: member(b,[a,b,c]) does not match member(x,[x T]) member(b,[a,b,c]) matches predicate member(x 1,[H 1 T 1 ]) with X 1 =b, H 1 =a, and T 1 =[b,c] Sub-goal to prove: member(b, [b,c]) member(b,[b,c]) matches predicate member(x 2,[X 2 T 2 ]) with X 2 =b and T 2 =[c] The sub-goal is proven, so member(b,[a,b,c]) is proven (deduced) Note: variables can be "local" to a clause (like the formal arguments of a function) Local variables such as X 1 and X 2 are used to indicate a match of a (sub)-goal and a head predicate of a clause COP4020 Spring

9 Predicates and Relations Predicates are not functions with distinct inputs and outputs Predicates are more general and define relationships between objects (terms) member(b,[a,b,c]) relates term b to the list that contains b?- member(x, [a,b,c]). X = a ; % type ';' to try to find more solutions X = b ; %... try to find more solutions X = c ; %... try to find more solutions no?- member(b, [a,y,c]). Y = b?- member(b, L). L = [b _G255] where L is a list with b as head and _G255 as tail, where _G255 is a new variable COP4020 Spring

10 Predicates and Relations?- member(b, L). L = [b _G545] ; L = [_G544, b _G548] ; L = [_G544, _G547, b _G551] ; L = [_G544, _G547, _G550, b _G554] ; L = [_G544, _G547, _G550, _G553, b _G557] ; L = [_G544, _G547, _G550, _G553, _G556, b _G560] ; L = [_G544, _G547, _G550, _G553, _G556, _G559, b _G563]. COP4020 Spring

11 Example: List Append L3 = L1 L2. How to write this in Prolog? Predicates do not have return value Implication? L1, L2, L3 must be arguments to a predicate, the programming will then specify the relation. Append(L1, L2, L3). Define this recursively Case 1: when L1 is empty Case 2: when L1 is not empty Prolog has not if constructs, how to do two cases? COP4020 Spring

12 Example: List Append Append(L1, L2, L3). %L3 = L1 L2 Define this recursively Case 1: when L1 is empty append([], L2, L2). Case 2: when L1 is not empty append([h T], L2, [H append(t, L2) ]) of course this is incorrect, append does not have a return value. Solution: append ([H T], L2, [H L]) :- append(t, L2, L). Final solution: append([], A, A). append([h T], A, [H L]) :- append(t, A, L). COP4020 Spring

13 Example: List Append List append predicate definitions: append([], A, A). append([h T], A, [H L]) :- append(t, A, L). Prolog append is more power then the append function in other languages?- append([a,b,c], [d,e], X). X = [a,b,c,d,e]?- append(y, [d,e], [a,b,c,d,e]). Y = [a,b,c]?- append([a,b,c], Z, [a,b,c,d,e]). Z = [d,e]?- append([a,b],[],[a,b,c]). No?- append([a,b],[x Y],[a,b,c]). X = c Y = [] COP4020 Spring

14 Example: take out one element from a list predicate prototype: takeout(item, SrcL, DstL) Three cases: SrcL is empty SrcL is not empty: the first element is Item (take out this item) SrcL is not empty: the first element is not Item (Keep this item) COP4020 Spring

15 Example: take out one element from a list Example6.pl Item may or may not be in SrcL Three cases: SrcL is empty: takeout(item, [], []). SrcL is not empty: the first element is Item (take out this item) takeout(item, [Item L], L). SrcL is not empty: the first element is not Item (Keep this item) Takeout(Item, [X L], [X L1]) :- takeout(item, L, L1). Item must be in SrcL? COP4020 Spring

16 Permutation of a list perm(l1, L2). %L2 is a permutation of L1 perm([], []). perm([x Y], Z) :- perm(y, W), takeout(x, Z, W). Example7.pl COP4020 Spring

17 Example: sorting Interface: sort(list, Sortedlist). All variables must start with a capital letter. Naïve_sort (very inefficient sorting) naive_sort(list,sorted):-perm(list,sorted),is_sorted(sorted). How to write is_sorted? COP4020 Spring

18 Example: sorting How to write is_sorted? is_sorted([]). is_sorted([_]). is_sorted([x, Y L]) :- X < Y, is_sorted([y L]). COP4020 Spring

LECTURE 22. Logic Programming

LECTURE 22. Logic Programming LECTURE 22 Logic Programming LOGIC PROGRAMMING Logic programming is a form of declarative programming. A program is a collection of axioms. Each axiom is a Horn clause of the form: H B 1, B 2,, B n. where

More information

10. Logic Programming With Prolog

10. Logic Programming With Prolog Copyright (C) R.A. van Engelen, FSU Department of Computer Science, 2000 10. Logic Programming With Overview Logic Programming Logic Programming Logic programming is a form of declarative programming A

More information

COP4020 Programming Languages. Prolog Chris Lacher Based on Robert van Engelen

COP4020 Programming Languages. Prolog Chris Lacher Based on Robert van Engelen COP4020 Programming Languages Prolog Chris Lacher Based on Robert van Engelen Overview Logic programming principles Prolog Logic Programming Logic programming is a form of declarative programming A program

More information

COP4020 Programming Languages. Prolog Prof. Robert van Engelen

COP4020 Programming Languages. Prolog Prof. Robert van Engelen COP4020 Programming Languages Prolog Prof. Robert van Engelen Overview Logic programming principles Prolog COP4020 Spring 2011 2 Logic Programming Logic programming is a form of declarative programming

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

Lecture 16: Logic Programming in Prolog

Lecture 16: Logic Programming in Prolog Lecture 16: Logic Programming in Prolog COMP 524 Programming Language Concepts Stephen Olivier March 26, 2009 Based on slides by A. Block, notes by N. Fisher, F. Hernandez-Campos, and D. Stotts Goal of

More information

3 Lists. List Operations (I)

3 Lists. List Operations (I) 3 Lists. List Operations (I) The list is the simplest yet the most useful Prolog structure. A list is a sequence of any number of objects. Example 3.1: L = [1, 2, 3], R = [a, b, c], T = [john, marry, tim,

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

Logic Programming (PLP 11) Prolog Imperative Control Flow: Backtracking, Cut, Fail, Not

Logic Programming (PLP 11) Prolog Imperative Control Flow: Backtracking, Cut, Fail, Not Logic Programming (PLP 11) Prolog Imperative Control Flow: Backtracking, Cut, Fail, Not Carlos Varela Rennselaer Polytechnic Institute September 2, 2014 C. Varela 1 Backtracking Forward chaining goes from

More information

Topic B: Backtracking and Lists

Topic B: Backtracking and Lists Topic B: Backtracking and Lists 1 Recommended Exercises and Readings From Programming in Prolog (5 th Ed.) Readings: Chapter 3 2 Searching for the Answer In order for a Prolog program to report the correct

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

Exercises on the Fundamentals of Prolog

Exercises on the Fundamentals of Prolog 1 Introduction Exercises on the Fundamentals of Prolog These exercises are intended to help reinforce material taught in the lectures of CIS335 course in Prolog. They do not contribute any marks to the

More information

Logic Programming: The Prolog Language

Logic Programming: The Prolog Language Logic Programming: The Prolog Language Stephen A. Edwards Columbia University Fall 2012 Logic All Caltech graduates are nerds. Stephen is a Caltech graduate. Is Stephen a nerd? Logic All Caltech graduates

More information

Logic Programming: Prolog

Logic Programming: Prolog Logic Programming: Prolog COMS W4115 Aristotle Prof. Stephen A. Edwards Fall 2006 Columbia University Department of Computer Science Logic All Caltech graduates are nerds. Stephen is a Caltech graduate.

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

CAP 5602 Summer, Lesson 5: Lists. The topics 1. updating a counter 2. the list structure 3. some useful built-in predicates for lists

CAP 5602 Summer, Lesson 5: Lists. The topics 1. updating a counter 2. the list structure 3. some useful built-in predicates for lists CAP 5602 Summer, 20 Lesson 5: Lists The topics. updating a counter 2. the list structure 3. some useful built-in predicates for lists. Updating a counter Let us try to implement the increse the counter

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

COP4020 Programming Languages. Logic programming and Prolog Prof. Xin Yuan

COP4020 Programming Languages. Logic programming and Prolog Prof. Xin Yuan COP4020 Programming Languages Logic programming and Prolog Prof. Xin Yuan Overview Logic programming principles Introduction to Prolog COP4020 Spring 2013 2 Logic Programming Logic programming is a form

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

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

Introduction. CSc 372. Comparative Programming Languages. 22 : Prolog Lists. Department of Computer Science University of Arizona.

Introduction. CSc 372. Comparative Programming Languages. 22 : Prolog Lists. Department of Computer Science University of Arizona. CSc 372 Comparative Programming Languages 22 : Prolog Lists Introduction Department of Computer Science University of Arizona collberg@gmail.com Copyright c 2011 Christian Collberg Christian Collberg Prolog

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

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

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

The Idea Underlying Logic Programming. CSci 8980, Fall 2012 Specifying and Reasoning About Computational Systems An Introduction to Logic Programming

The Idea Underlying Logic Programming. CSci 8980, Fall 2012 Specifying and Reasoning About Computational Systems An Introduction to Logic Programming The Idea Underlying CSci 8980, Fall 2012 Specifying and Reasoning About Computational Systems An Introduction to Department of Computer Science and Engineering University of Minnesota Lectures in Fall

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

First-Order Logic (FOL)

First-Order Logic (FOL) First-Order Logic (FOL) FOL consists of the following parts: Objects/terms Quantified variables Predicates Logical connectives Implication Objects/Terms FOL is a formal system that allows us to reason

More information

Chapter 5. Pure PROLOG. Foundations of Logic Programming

Chapter 5. Pure PROLOG. Foundations of Logic Programming Chapter 5 1 Outline vs. logic programming Lists in Adding Arithmetics to Adding the Cut to 2 Syntax of Pure Prolog p(x,a) :- q(x), r(x,yi). p(x, a) q(x), r(x,y i ) % Comment Ambivalent syntax: p(p(a,b),

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

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

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

Logical reasoning systems

Logical reasoning systems Logical reasoning systems Theorem provers and logic programming languages Production systems Frame systems and semantic networks Description logic systems CS 561, Session 19 1 Logical reasoning systems

More information

INTRODUCTION TO PROLOG

INTRODUCTION TO PROLOG INTRODUCTION TO PROLOG PRINCIPLES OF PROGRAMMING LANGUAGES Norbert Zeh Winter 2018 Dalhousie University 1/44 STRUCTURE OF A PROLOG PROGRAM Where, declaratively, Haskell expresses a computation as a system

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

CMSC 330: Organization of Programming Languages

CMSC 330: Organization of Programming Languages CMSC 330: Organization of Programming Languages Logic Programming with Prolog Lists CMSC 330 Spring 2017 1 Review: Execution = Search Prolog execution: Goal-directed search Query = predicate you wish to

More information

The Logic Paradigm. Joseph Spring. 7COM1023 Programming Paradigms

The Logic Paradigm. Joseph Spring. 7COM1023 Programming Paradigms The Logic Paradigm Joseph Spring 7COM1023 Programming Paradigms 1 Discussion The Logic Paradigm Propositional and Predicate Logic See also notes and slides on PP website Horn Clauses Definition, Examples

More information

Connection between Lists and Terms. Prolog-Lecture 2. Unifying Lists. Unifying Lists. Steps to a Recursive Predicate. List Predicates.

Connection between Lists and Terms. Prolog-Lecture 2. Unifying Lists. Unifying Lists. Steps to a Recursive Predicate. List Predicates. Prolog-Lecture 2 Iqbal Mohomed Connection between Lists and Terms [H T] is just syntactic sugaring for the term.(h,t)?-.(h,t) = [a,b,c]. H = a T = [b, c] ; The dot operator or functor. corresponds to cons

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

Tests, Backtracking, and Recursion

Tests, Backtracking, and Recursion Tests, Backtracking, and Recursion Artificial Intelligence Programming in Prolog Lecture 3 30/09/04 30/09/04 AIPP Lecture 3: Rules, Results, and Backtracking 1 Re-cap A Prolog program consists of predicate

More information

Concepts of programming languages

Concepts of programming languages Concepts of programming languages Prolog Winand, Roald, Sjoerd, Alexey and Anvar 1 What is logic programming? Logic programming is a type of programming paradigm which is largely based on formal logic.

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

Logic Programming: Lecture 1

Logic Programming: Lecture 1 Logic Programming: Lecture 1 Madhavan Mukund Chennai Mathematical Institute madhavan@cmi.ac.in PLC, 3 April 2017 Logic programming Programming with relations Variables Names starting with a capital letter

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

CS 360: Programming Language Concepts Lecture 15 Logic Programming

CS 360: Programming Language Concepts Lecture 15 Logic Programming Reference: Ch. 12.1-12.5 CS 360: Programming Language Concepts Lecture 15 Logic Programming I. Logic Programming (Generally) What is logic programming? A logic program is a collection of declarations,

More information

a little more on macros sort of like functions, but..

a little more on macros sort of like functions, but.. a little more on macros 1 sort of like functions, but.. one of the most interesting but tricky aspects of Lisp. unlike functions, macros don't evaluate their arguments; they compute on unevaluated expressions

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

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

Logic (or Declarative) Programming Foundations: Prolog. Overview [1]

Logic (or Declarative) Programming Foundations: Prolog. Overview [1] Logic (or Declarative) Programming Foundations: Prolog In Text: Chapter 12 Formal logic Logic programming Prolog Overview [1] N. Meng, S. Arthur 2 1 Logic Programming To express programs in a form of symbolic

More information

QUTE: A PROLOG/LISP TYPE LANGUAGE FOR LOGIC PROGRAMMING

QUTE: 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 information

Programming Language Concepts: Lecture 22

Programming Language Concepts: Lecture 22 Programming Language Concepts: Lecture 22 Madhavan Mukund Chennai Mathematical Institute madhavan@cmi.ac.in http://www.cmi.ac.in/~madhavan/courses/pl2009 PLC 2009, Lecture 22, 15 April 2009 Logic programming

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

Agenda. CS301 Session 20. A logic programming trick. A simple Prolog program. Introduction to logic programming Examples Semantics

Agenda. CS301 Session 20. A logic programming trick. A simple Prolog program. Introduction to logic programming Examples Semantics CS301 Session 20 Introduction to logic programming Examples Semantics Agenda 1 2 A logic programming trick A two-way translator in two lines of code: translate([],[]). translate([word Words],[Mot Mots])

More information

Prolog. the structure Ref: Learn Prolog Now! On line Prolog Documentation. Blackburn, Bos, Striegnitz.

Prolog. the structure Ref: Learn Prolog Now! On line Prolog Documentation. Blackburn, Bos, Striegnitz. Prolog the structure Ref: Learn Prolog Now! On line Prolog Documentation. Blackburn, Bos, Striegnitz. Prolog Summary (1 page) Prolog programs consist of Facts Rules Queries a rule with no right hand side

More information

CSI 2165 Winter Diana Inkpen SITE University of Ottawa. Prolog Part III. Input and output. Prolog databases

CSI 2165 Winter Diana Inkpen SITE University of Ottawa. Prolog Part III. Input and output. Prolog databases Prolog Part III CSI 2165 Winter 2006 Diana Inkpen SITE University of Ottawa Input and output Prolog databases Abstract data structures Tree, stacks, queues, graphs Part III 1 2 Character Input get(char)

More information

Prolog - 3 Prolog search trees + traces

Prolog - 3 Prolog search trees + traces Prolog - 3 Prolog search trees + traces 1 Review member(a, [A B]). member(a, [B C]) :- member (A,C). goal-oriented semantics: can get value assignment for goal member(a,[b C]) by showing truth of subgoal

More information

Map coloring example

Map coloring example Map coloring example A B C D E F Database for map coloring coloring(a,b,c,d,e,f) :- different(a,b), different(a,c), different(a,d), different(a,f), different(b,c), different(b,e), different(c,d), different(c,e),

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

Lecture 6: More Lists

Lecture 6: More Lists Lecture 6: More Lists Theory Define append/3, a predicate for concatenating two lists, and illustrate what can be done with it Discuss two ways of reversing a list A naïve way using append/3 A more efficient

More information

Logic Programming and PROLOG (III)

Logic Programming and PROLOG (III) Logic Programming and PROLOG (III) Dr. Antonio L. Bajuelos Note: The most of the information of these slides was extracted and adapted from Bratko s book, Prolog Programming for Artificial Intelligence".

More information

PROLOG PROgramming in LOGic

PROLOG PROgramming in LOGic PROLOG PROgramming in LOGic 1 Knowledge-Based Information Systems (Relational) database systems are very efficient in the handling of data. Information is data together with a suitable interpretation.

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

Topic 1: Introduction to Knowledge- Based Systems (KBSs)

Topic 1: Introduction to Knowledge- Based Systems (KBSs) Topic 1: Introduction to Knowledge- Based Systems (KBSs) 1.5 Introduction to Logic Programming (Prolog) 32 Simple example: Algorithm for checking sorted list? We all know how to check if a list is sorted:

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

Module 7. Knowledge Representation and Logic (Rule based Systems) Version 2 CSE IIT, Kharagpur

Module 7. Knowledge Representation and Logic (Rule based Systems) Version 2 CSE IIT, Kharagpur Module 7 Knowledge Representation and Logic (Rule based Systems) Lesson 18 Rule based Systems - II 7.2.5 Programs in PROLOG These minimal notes on Prolog show only some of its flavor. Here are facts plays(ann,fido).

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

Constraint Solving. Systems and Internet Infrastructure Security

Constraint Solving. Systems and Internet Infrastructure Security Systems and Internet Infrastructure Security Network and Security Research Center Department of Computer Science and Engineering Pennsylvania State University, University Park PA Constraint Solving Systems

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

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

List of lectures. Lecture content. Symbolic Programming. TDDA69 Data and Program Structure Symbolic and Logic Programming Cyrille Berger

List of lectures. Lecture content. Symbolic Programming. TDDA69 Data and Program Structure Symbolic and Logic Programming Cyrille Berger List of lectures TDDA69 Data and Program Structure Symbolic and Logic Programming Cyrille Berger 1Introduction and Functional Programming 2Imperative Programming and Data Structures 3Parsing 4Evaluation

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

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

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 3 Published 2017-07 INTERNATIONAL ORGANIZATION FOR STANDARDIZATION МЕЖДУНАРОДНАЯ ОРГАНИЗАЦИЯ ПО СТАНДАРТИЗАЦИИ ORGANISATION INTERNATIONALE

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

Logic Programming and Resolution Lecture notes for INF3170/4171

Logic Programming and Resolution Lecture notes for INF3170/4171 Logic Programming and Resolution Lecture notes for INF3170/4171 Leif Harald Karlsen Autumn 2015 1 Introduction This note will explain the connection between logic and computer programming using Horn Clauses

More information

Baby Steps Toward an Implementation of Axiomatic Language

Baby Steps Toward an Implementation of Axiomatic Language Baby Steps Toward an Implementation of Axiomatic Language Extended Abstract Walter W. Wilson Lockheed Martin, P.O. Box 748, Fort Worth TX 76101, USA wwwilson@acm.org Abstract. This paper describes an initial

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

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

CS 561: Artificial Intelligence

CS 561: Artificial Intelligence CS 561: Artificial Intelligence Instructor: TAs: Sofus A. Macskassy, macskass@usc.edu Nadeesha Ranashinghe (nadeeshr@usc.edu) William Yeoh (wyeoh@usc.edu) Harris Chiu (chiciu@usc.edu) Lectures: MW 5:00-6:20pm,

More information

Advances in Analyzing Coroutines by Abstract Conjunctive Partial Deduction

Advances in Analyzing Coroutines by Abstract Conjunctive Partial Deduction Technical Communications of ICLP 2015. Copyright with the Authors. 1 Advances in Analyzing Coroutines by Abstract Conjunctive Partial Deduction Vincent Nys submitted 29 April 2015; accepted 5 June 2015

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

Lecture 4: January 12, 2015

Lecture 4: January 12, 2015 32002: AI (First Order Predicate Logic, Interpretation and Inferences) Spring 2015 Lecturer: K.R. Chowdhary Lecture 4: January 12, 2015 : Professor of CS (VF) Disclaimer: These notes have not been subjected

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

LOGIC PROGRAMMING A Hands-on Approach

LOGIC PROGRAMMING A Hands-on Approach Camelia LEMNARU Rodica POTOLEA LOGIC PROGRAMMING A Hands-on Approach U.T. PRESS CLUJ-NAPOCA, 2018 ISBN 978-606-737-292-2 Editura U.T. PRESS Str. Observatorului nr. 34 C.P. 42, O.P. 2, 400775 Cluj-Napoca

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

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

AI2 Remedial Prolog Tutorial 2

AI2 Remedial Prolog Tutorial 2 AI2 Remedial Prolog Tutorial 2 Rules The Prolog interpreter is able to make inferences (i.e. reasoning of the form If Alan drinks beer, then he must like it). This is done by way of using rules. There

More information

Logic Programming. CITS 3242 Programming Paradigms. Topic 16: Part IV: Advanced Topics

Logic Programming. CITS 3242 Programming Paradigms. Topic 16: Part IV: Advanced Topics CITS 3242 Programming Paradigms Part IV: Advanced Topics Topic 16: Logic Programming Logic Programming is a paradigm for programming by declaring facts and rules. Programs are executed by querying whether

More information

Logic Programming in Prolog

Logic Programming in Prolog Cristian Giumale / Lecture Notes 1 Logic Programming in Prolog There are important advantages of using programming systems based on logic: Data are neatly separated from the inference engine, which is

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

A Language for Specifying Type Contracts in Erlang and its Interaction with Success Typings

A Language for Specifying Type Contracts in Erlang and its Interaction with Success Typings A Language for Specifying Type Contracts in Erlang and its Interaction with Success Typings Miguel Jiménez 1, Tobias Lindahl 1,2, Konstantinos Sagonas 3,1 1 Department of Information Technology, Uppsala

More information

Computational Logic Prolog Programming Basics

Computational Logic Prolog Programming Basics Computational Logic Prolog Programming Basics 1 Overview 1. Using unification 2. Data structures 3. Recursion, backtracking, and search 4. Control of execution 2 Role of Unification in Execution As mentioned

More information

Prolog Programming Basics. Computational Logic. Overview. 3. Recursion, backtracking, and search. 2. Data structures. 1.

Prolog Programming Basics. Computational Logic. Overview. 3. Recursion, backtracking, and search. 2. Data structures. 1. Computational Logic Prolog Programming Basics 1 Overview 1. Using unification 2. Data structures 3. Recursion, backtracking, and search 4. Control of execution 2 Role of Unification in Execution As mentioned

More information

CMSC 331 Final Exam Section 0201 December 18, 2000

CMSC 331 Final Exam Section 0201 December 18, 2000 CMSC 331 Final Exam Section 0201 December 18, 2000 Name: Student ID#: You will have two hours to complete this closed book exam. We reserve the right to assign partial credit, and to deduct points for

More information

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

CS 314 Principles of Programming Languages. Lecture 16

CS 314 Principles of Programming Languages. Lecture 16 CS 314 Principles of Programming Languages Lecture 16 Zheng Zhang Department of Computer Science Rutgers University Friday 28 th October, 2016 Zheng Zhang 1 CS@Rutgers University Class Information Reminder:

More information

IKI30820 Logic Programming Programming Style and Techniques Slide 09

IKI30820 Logic Programming Programming Style and Techniques Slide 09 IKI30820 Logic Programming Programming Style and Techniques Slide 09 Ari Saptawijaya (slides) Adila A. Krisnadhi (L A T E Xadaptation) Fakultas Ilmu Komputer Universitas Indonesia 2009/2010 Semester Gasal

More information

Unification Algorithms

Unification Algorithms King s College London December 2007 Motivations Unification algorithms have become popular in recent years, due to their key role in the fields of logic programming and theorem proving. Logic Programming

More information

Lecture Notes on Prolog

Lecture Notes on Prolog Lecture Notes on Prolog 15-317: Constructive Logic Frank Pfenning Lecture 14 October 15, 2009 In this lecture we introduce some simple data structures such as lists, and simple algorithms on them such

More information

Logic Programming. fac(n-1,m) fac(n,n m) fac(1,1) ex) factorial program query. cf) in procedural programming. ?- fac(5,120). yes?- fac(5,x).

Logic Programming. fac(n-1,m) fac(n,n m) fac(1,1) ex) factorial program query. cf) in procedural programming. ?- fac(5,120). yes?- fac(5,x). Logic Programming Logic Programming = ex) factorial program query fac(1,1) fac(n-1,m) fac(n,n m)?- fac(5,120). yes?- fac(5,x). X=120 cf) in procedural programming x=1; for (i=1;i

More information

Introduction (1A) Young Won Lim 9/12/13

Introduction (1A) Young Won Lim 9/12/13 Introduction (1A) 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

More information