concepts of programming languagesfac.ksu.edu.sa/sites/default/files/16-logicprogramming.pdf ·...
TRANSCRIPT
![Page 1: Concepts of Programming Languagesfac.ksu.edu.sa/sites/default/files/16-logicprogramming.pdf · Logic programming language or declarative programming language Express programs in a](https://reader033.vdocuments.us/reader033/viewer/2022051107/600a34c381c31047df1d8da3/html5/thumbnails/1.jpg)
Concepts of Programming LanguagesLecture 16 - Logic Programming
Patrick Donnelly
Montana State University
Spring 2014
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 1 / 22
![Page 2: Concepts of Programming Languagesfac.ksu.edu.sa/sites/default/files/16-logicprogramming.pdf · Logic programming language or declarative programming language Express programs in a](https://reader033.vdocuments.us/reader033/viewer/2022051107/600a34c381c31047df1d8da3/html5/thumbnails/2.jpg)
Administrivia
Assignments:
Programming #3 : due 04.14
Homework #3 : due 04.16
Reading:
Chapter 16
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 2 / 22
![Page 3: Concepts of Programming Languagesfac.ksu.edu.sa/sites/default/files/16-logicprogramming.pdf · Logic programming language or declarative programming language Express programs in a](https://reader033.vdocuments.us/reader033/viewer/2022051107/600a34c381c31047df1d8da3/html5/thumbnails/3.jpg)
Q: How many legs does a dog have if you call its tail a leg?A: Four. Calling a tail a leg doesn’t make it one.
Abraham Lincoln
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 3 / 22
![Page 4: Concepts of Programming Languagesfac.ksu.edu.sa/sites/default/files/16-logicprogramming.pdf · Logic programming language or declarative programming language Express programs in a](https://reader033.vdocuments.us/reader033/viewer/2022051107/600a34c381c31047df1d8da3/html5/thumbnails/4.jpg)
Introduction
Logic programming language or declarative programming language
Express programs in a form of symbolic logic
Use a logical inferencing process to produce results
Declarative rather that procedural:
DefinitionDeclarative languages only specify the results desired rather than adetailed procedures for producing them.
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 4 / 22
![Page 5: Concepts of Programming Languagesfac.ksu.edu.sa/sites/default/files/16-logicprogramming.pdf · Logic programming language or declarative programming language Express programs in a](https://reader033.vdocuments.us/reader033/viewer/2022051107/600a34c381c31047df1d8da3/html5/thumbnails/5.jpg)
Proposition
DefinitionA logical statement that may or may not be true.
Consists of objects and relationships of objects to each other
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 5 / 22
![Page 6: Concepts of Programming Languagesfac.ksu.edu.sa/sites/default/files/16-logicprogramming.pdf · Logic programming language or declarative programming language Express programs in a](https://reader033.vdocuments.us/reader033/viewer/2022051107/600a34c381c31047df1d8da3/html5/thumbnails/6.jpg)
Symbolic Logic
DefinitionLogic which can be used for the basic needs of formal logic:
Express propositionsExpress relationships between propositionsDescribe how new propositions can be inferred from otherpropositions
Particular form of symbolic logic used for logic programming calledpredicate calculus.
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 6 / 22
![Page 7: Concepts of Programming Languagesfac.ksu.edu.sa/sites/default/files/16-logicprogramming.pdf · Logic programming language or declarative programming language Express programs in a](https://reader033.vdocuments.us/reader033/viewer/2022051107/600a34c381c31047df1d8da3/html5/thumbnails/7.jpg)
Object Representation
Objects in propositions are represented by simple terms: eitherconstants or variables
Constant: a symbol that represents an object
Variable: a symbol that can represent different objects at differenttimes
Different from variables in imperative languages
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 7 / 22
![Page 8: Concepts of Programming Languagesfac.ksu.edu.sa/sites/default/files/16-logicprogramming.pdf · Logic programming language or declarative programming language Express programs in a](https://reader033.vdocuments.us/reader033/viewer/2022051107/600a34c381c31047df1d8da3/html5/thumbnails/8.jpg)
Compound Terms
Atomic propositions consist of compound terms
Compound term: one element of a mathematical relation,written like a mathematical function
Mathematical function is a mapping
Can be written as a table
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 8 / 22
![Page 9: Concepts of Programming Languagesfac.ksu.edu.sa/sites/default/files/16-logicprogramming.pdf · Logic programming language or declarative programming language Express programs in a](https://reader033.vdocuments.us/reader033/viewer/2022051107/600a34c381c31047df1d8da3/html5/thumbnails/9.jpg)
Compound Terms
Compound term composed of two parts
Functor: function symbol that names the relationship
Ordered list of parameters (tuple)
Examplestudent(jon)like(seth, OSX)like(nick, windows)like(jim, linux)
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 9 / 22
![Page 10: Concepts of Programming Languagesfac.ksu.edu.sa/sites/default/files/16-logicprogramming.pdf · Logic programming language or declarative programming language Express programs in a](https://reader033.vdocuments.us/reader033/viewer/2022051107/600a34c381c31047df1d8da3/html5/thumbnails/10.jpg)
Forms of a Proposition
Propositions can be stated in two forms:
Fact: proposition is assumed to be true
Query: truth of proposition is to be determined
Compound proposition:
Have two or more atomic propositions
Propositions are connected by operators
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 10 / 22
![Page 11: Concepts of Programming Languagesfac.ksu.edu.sa/sites/default/files/16-logicprogramming.pdf · Logic programming language or declarative programming language Express programs in a](https://reader033.vdocuments.us/reader033/viewer/2022051107/600a34c381c31047df1d8da3/html5/thumbnails/11.jpg)
Logical Operators and QuantifiersName Symbol Example Meaningnegation ¬ ¬ a not a
conjunction ∩ a ∩ b a and b
disjunction ∪ a ∪ b a or b
equivalence ≡ a ≡ b a is equivalent to b
implication ⊃ a ⊃ b a implies b⊂ a ⊂ b b implies a
universal ∀ ∀ X.P For all X, P is true
existential ∃ ∃ X.P There exists a value of Xsuch that P is true
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 11 / 22
![Page 12: Concepts of Programming Languagesfac.ksu.edu.sa/sites/default/files/16-logicprogramming.pdf · Logic programming language or declarative programming language Express programs in a](https://reader033.vdocuments.us/reader033/viewer/2022051107/600a34c381c31047df1d8da3/html5/thumbnails/12.jpg)
Clausal Form
Too many ways to state the same thing
Use a standard form for propositions
Clausal form example:
B1 ∪ B2 ∪ . . . ∪ Bn ⊂ A1 ∩ A2 ∩ . . . ∩ Am
means if all the A’s are true, then at least one B is true
Antecedent: right side
Consequent: left side
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 12 / 22
![Page 13: Concepts of Programming Languagesfac.ksu.edu.sa/sites/default/files/16-logicprogramming.pdf · Logic programming language or declarative programming language Express programs in a](https://reader033.vdocuments.us/reader033/viewer/2022051107/600a34c381c31047df1d8da3/html5/thumbnails/13.jpg)
Horn Clauses
DefinitionA Horn clause has a head h, which is a predicate, and a body, whichis a list of predicates p1,p2, . . . ,pn.
It is written as: h← p1,p2, . . . ,pn
This means, “h is true only if p1,p2, . . . , and pn are simultaneouslytrue.”
ExampleThe Horn clause:
snowing(C)→ precipitation(C), freezing(C)
says, “it is snowing in city C only if there is precipitation in city C and itis freezing in city C.”
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 13 / 22
![Page 14: Concepts of Programming Languagesfac.ksu.edu.sa/sites/default/files/16-logicprogramming.pdf · Logic programming language or declarative programming language Express programs in a](https://reader033.vdocuments.us/reader033/viewer/2022051107/600a34c381c31047df1d8da3/html5/thumbnails/14.jpg)
Horn Clauses
DefinitionA Horn clause has a head h, which is a predicate, and a body, whichis a list of predicates p1,p2, . . . ,pn.
It is written as: h← p1,p2, . . . ,pn
This means, “h is true only if p1,p2, . . . , and pn are simultaneouslytrue.”
ExampleThe Horn clause:
snowing(C)→ precipitation(C), freezing(C)
says, “it is snowing in city C only if there is precipitation in city C and itis freezing in city C.”
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 13 / 22
![Page 15: Concepts of Programming Languagesfac.ksu.edu.sa/sites/default/files/16-logicprogramming.pdf · Logic programming language or declarative programming language Express programs in a](https://reader033.vdocuments.us/reader033/viewer/2022051107/600a34c381c31047df1d8da3/html5/thumbnails/15.jpg)
Horn Clauses and Predicates
Any Horn clause
h← p1,p2, . . . ,pn
can be written as a predicate:
p1 ∩ p2 ∩ . . . ∩ pn ⊃ h
or equivalently:
¬(p1 ∩ p2 ∩ . . . ∩ pn) ∪ h
But not every predicate can be written as a Horn clause.
E.g., literate(x) ⊃ reads(x) ∪ writes(x)
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 14 / 22
![Page 16: Concepts of Programming Languagesfac.ksu.edu.sa/sites/default/files/16-logicprogramming.pdf · Logic programming language or declarative programming language Express programs in a](https://reader033.vdocuments.us/reader033/viewer/2022051107/600a34c381c31047df1d8da3/html5/thumbnails/16.jpg)
Theorem Proving
A use of propositions is to discover new theorems that can be inferredfrom known axioms and theorems.
Basis for logic programming
When propositions used for resolution, only restricted form can beused.
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 15 / 22
![Page 17: Concepts of Programming Languagesfac.ksu.edu.sa/sites/default/files/16-logicprogramming.pdf · Logic programming language or declarative programming language Express programs in a](https://reader033.vdocuments.us/reader033/viewer/2022051107/600a34c381c31047df1d8da3/html5/thumbnails/17.jpg)
Resolution
DefinitionResolution is an inference principle that allows inferred propositions tobe computed from given propositions
If h is the head of a Horn clause
h← terms
and it matches one of the terms of another Horn clause:
t ← t1,h, t2
then that term can be replaced by h’s terms to form:
t ← t1, terms, t2
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 16 / 22
![Page 18: Concepts of Programming Languagesfac.ksu.edu.sa/sites/default/files/16-logicprogramming.pdf · Logic programming language or declarative programming language Express programs in a](https://reader033.vdocuments.us/reader033/viewer/2022051107/600a34c381c31047df1d8da3/html5/thumbnails/18.jpg)
ResolutionDefinitionUnification is a pattern-matching process that determines whatparticular instantiations can be made to variables during a series ofresolutions.
During resolution, assignment of variables to values is calledinstantiation.
DefinitionInstantiation is the assigning temporary values to variables to allowunification to succeed
DefinitionAfter instantiating a variable with a value, if matching fails, may need tobacktrack and instantiate with a different value
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 17 / 22
![Page 19: Concepts of Programming Languagesfac.ksu.edu.sa/sites/default/files/16-logicprogramming.pdf · Logic programming language or declarative programming language Express programs in a](https://reader033.vdocuments.us/reader033/viewer/2022051107/600a34c381c31047df1d8da3/html5/thumbnails/19.jpg)
Resolution Example
The two clauses:
speaks(Mary ,English)talkswith(X ,Y )← speaks(X ,L), speaks(Y ,L),X 6= Y
can resolve to:
talkswith(Mary ,Y )← speaks(Mary ,English),speaks(Y ,English),Mary 6= Y
The assignment of values Mary and English to the variables X and L isan instantiation for which this resolution can be made.
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 18 / 22
![Page 20: Concepts of Programming Languagesfac.ksu.edu.sa/sites/default/files/16-logicprogramming.pdf · Logic programming language or declarative programming language Express programs in a](https://reader033.vdocuments.us/reader033/viewer/2022051107/600a34c381c31047df1d8da3/html5/thumbnails/20.jpg)
Proof by Contradiction
DefinitionHypotheses: a set of pertinent propositions
DefinitionGoal : negation of theorem stated as a proposition
Theorem is proved by finding an inconsistency
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 19 / 22
![Page 21: Concepts of Programming Languagesfac.ksu.edu.sa/sites/default/files/16-logicprogramming.pdf · Logic programming language or declarative programming language Express programs in a](https://reader033.vdocuments.us/reader033/viewer/2022051107/600a34c381c31047df1d8da3/html5/thumbnails/21.jpg)
Overview of Logic Programming
Declarative semanticsThere is a simple way to determine the meaning of each statementSimpler than the semantics of imperative languages
Programming is nonproceduralPrograms do not state now a result is to be computed, but ratherthe form of the result
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 20 / 22
![Page 22: Concepts of Programming Languagesfac.ksu.edu.sa/sites/default/files/16-logicprogramming.pdf · Logic programming language or declarative programming language Express programs in a](https://reader033.vdocuments.us/reader033/viewer/2022051107/600a34c381c31047df1d8da3/html5/thumbnails/22.jpg)
Example: Sorting a List
Describe the characteristics of a sorted list, not the process ofrearranging a list
sort(old_list ,new_list) ⊂permute(old_list ,new_list) ∩ sorted(new_list)
sorted(list) ⊂ ∀j | 1 ≤ j < n, list(j) ≤ list(j + 1)
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 21 / 22
![Page 23: Concepts of Programming Languagesfac.ksu.edu.sa/sites/default/files/16-logicprogramming.pdf · Logic programming language or declarative programming language Express programs in a](https://reader033.vdocuments.us/reader033/viewer/2022051107/600a34c381c31047df1d8da3/html5/thumbnails/23.jpg)
Logic Programming
Logic programming has applications in AI and databases:Natural language processing (NLP)Automated reasoning and theorem provingExpert systems (e.g., MYCIN)Database searching, as in SQL (Structured Query Language)
Prolog emerged in the 1970s.
Distinguishing features:NondeterminismBacktracking
Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014 22 / 22