Download - CS 363 Comparative Programming Languages Logic Programming Languages.

Transcript

CS 363 Comparative Programming Languages

Logic Programming Languages

CS 363 Spring 2005 GMU 2

Chapter 16 Topics

• An Overview of Logic Programming

• The Origins of Prolog

• The Basic Elements of Prolog

• Applications of Logic Programming

CS 363 Spring 2005 GMU 3

Introduction

• Logic (declarative) programming languages express programs in a form of symbolic logic

• Runtime system uses a logical inferencing process to produce results

• Declarative rather that procedural:– only specification of results are stated (not

detailed procedures for producing them)

CS 363 Spring 2005 GMU 4

Example: Sorting a List

• Describe the characteristics of a sorted list, not the process of rearranging a list

sort(old_list, new_list) permute (old_list, new_list) sorted (new_list)

sorted (list) for all j, 1 j < n, list(j) list (j+1)

CS 363 Spring 2005 GMU 5

Overview of Logic Programming

• Declarative semantics– There is a simple way to determine the meaning of each

statement

– Simpler than the semantics of imperative languages

• Programming is nonprocedural– Programs do not state now a result is to be computed,

but rather the form of the result

• Based on Propositional logic

CS 363 Spring 2005 GMU 6

Propositional Logic

A proposition is formed using the following rules:• Constants true and false are propositions• Variables (p,q,r,…) which have values true or

false are propositions• Operators ^, v, , ≡, and ⌐ (conjunction,

disjunction, implication, equilivance and negation) are used to form more complex propositions.

p v q ^ r ⌐ s v t

CS 363 Spring 2005 GMU 7

Predicate Logic Expressions

Include:– Propositions– Variables in domains such as integer, real– Boolean valued functions

• Ex: prime(n), 0 <= x + y,

– Quantifiers (forall, exists)

CS 363 Spring 2005 GMU 8

Properties of Predicate Logic Expressions

Property MeaningCommutativity p v q ≡ q v p p ^ q ≡ q ^ p

Associativity (p v q) v r ≡ p v (q v r ) (p ^ q) ^ r ≡ p ^ (q ^ r )

Distributivity (p v q) ^ r ≡ (p ^ r ) v (q ^ r) (p ^ q) v r ≡ (p v r ) ^ (q v r)

Idempotence p v p ≡ p p ^ p ≡ p

Identity p v ⌐ p ≡ true p ^ ⌐ p ≡ false

deMorgan ⌐(p v q) ≡ ⌐p ^ ⌐q ⌐(p ^ q) ≡ ⌐p v ⌐q

Implication p q ≡ ⌐ p v q

Quantification ⌐ forall x P(x) ≡ exists x ⌐ P(x)

⌐ exists x P(x) ≡ forall x ⌐ P(x)

CS 363 Spring 2005 GMU 9

Horn Clauses

A Horn clause has a head h (which is a predicate), and a body, which is a list of predicates p1, p2, … , pn.

• Predicate p is true only if p1, p2, … , pn are all true.

• Meaning: p1 ^ p2^ … ^ pn h

Many, but not all predicates can be translated into Horn clauses using predicate logic expression properties.

CS 363 Spring 2005 GMU 10

The Origins of Prolog

• University of Aix-Marseille– Natural language processing

• University of Edinburgh– Automated theorem proving

CS 363 Spring 2005 GMU 11

The Basic Elements of Prolog

• Edinburgh Syntax• Term: a constant, variable, or structure• Constant: an atom or an integer• Atom: symbolic value of Prolog• Atom consists of either:

– a string of letters, digits, and underscores beginning with a lowercase letter

– a string of printable ASCII characters delimited by apostrophes

CS 363 Spring 2005 GMU 12

The Basic Elements of Prolog

• Variable: any string of letters, digits, and underscores beginning with an uppercase letter

• Instantiation: binding of a variable to a value– Lasts only as long as it takes to satisfy one

complete goal

• Structure: represents atomic propositionfunctor(parameter list)

CS 363 Spring 2005 GMU 13

Fact Statements

• Used for the hypotheses (assumed information):

• Ex:

student(jonathan).

sophomore(ben).

brother(tyler, cj).

CS 363 Spring 2005 GMU 14

Rule Statements• Give the rules of implication:

– Consequence :- antecedent_expression

• Right side: antecedent (if part)– May be single term or conjunction– Conjunction: multiple terms separated by

logical AND operations (implied)

• Left side: consequent (then part)– Must be single term

CS 363 Spring 2005 GMU 15

Rule StatementsCan use variables (universal objects) to

generalize meaning:

parent(X,Y):- mother(X,Y).parent(X,Y):- father(X,Y).

sibling(X,Y):- mother(M,X), mother(M,Y),father(F,X), father(F,Y).

CS 363 Spring 2005 GMU 16

Examplemother(Susan,Emily).mother(Susan,Lucy).mother(Anne,Susan).mother(Anne,Mary).father(Jim,Emily).father(Jim,Lucy).father(Russell,Susan).father(Russell,Mary).parent(X,Y):-mother(X,Y).parent(X,y):-father(X,y).sibling(X,Y):-mother(M,X),mother(M,Y), father(F,X),father(F,Y).

Facts

Rules

CS 363 Spring 2005 GMU 17

Examplespeed(ford,100).speed(chevy,105).speed(dodge,95).speed(volvo,80).time(ford,20).time(chevy,21).time(dodge,24).time(volvo,24).distance(X,Y) :- speed(X,Speed),

time(X,Time), Y is Speed * Time.

Facts

Rules

CS 363 Spring 2005 GMU 18

Goal Statements

• For theorem proving, theorem is in form of proposition that we want system to prove or disprove – goal statement

• Same format as factsstudent(james).

• Conjunctive propositions and propositions with variables also legal goals

father(X,joe).

CS 363 Spring 2005 GMU 19

Examplemother(Susan,Emily).mother(Susan,Lucy).mother(Anne,Susan).mother(Anne,Mary).father(Jim,Emily).father(Jim,Lucy).father(Russell,Susan).father(Russell,Mary).parent(X,Y):-mother(X,Y).parent(X,y):-father(X,y).sibling(X,Y):-mother(M,X),mother(M,Y), father(F,X),father(F,Y).mother(Anne,Mary). Tmother(Anne,Emily). Nofather(Jim,X). X = Emily, X = Lucy

Facts

Rules

Goals (queries)

CS 363 Spring 2005 GMU 20

Simple Arithmetic

• Prolog supports integer variables and integer arithmetic

• is operator: takes an arithmetic expression as right operand and variable as left operand

• A is B / 10 + C

• Not the same as an assignment statement! For example, k is k + 1 is not solvable.

CS 363 Spring 2005 GMU 21

Examplespeed(ford,100).speed(chevy,105).speed(dodge,95).speed(volvo,80).time(ford,20).time(chevy,21).time(dodge,24).time(volvo,24).distance(X,Y) :- speed(X,Speed),

time(X,Time), Y is Speed * Time.

Distance(ford,S). > S = 2000

Facts

Rules

Goal

CS 363 Spring 2005 GMU 22

Inferencing Process of Prolog

• Queries are called goals

• If a goal is a compound proposition, each of the facts is a subgoal

• To prove a goal is true, must find a chain of inference rules and/or facts. For goal Q:B :- A

C :- B

Q :- P

• Process of proving a subgoal called matching, satisfying, or resolution

CS 363 Spring 2005 GMU 23

Inferencing Process

• Bottom-up resolution, forward chaining– Begin with facts and rules of database and attempt to

find sequence that leads to goal

– works well with a large set of possibly correct answers

• Top-down resolution, backward chaining– begin with goal and attempt to find sequence that leads

to set of facts in database

– works well with a small set of possibly correct answers

• Prolog implementations use backward chaining

CS 363 Spring 2005 GMU 24

Inferencing Process

• When goal has more than one subgoal, can use either– Depth-first search: find a complete proof for

the first subgoal before working on others– Breadth-first search: work on all subgoals in

parallel

• Prolog uses depth-first search– Can be done with fewer computer resources

CS 363 Spring 2005 GMU 25

Inferencing Process

• With a goal with multiple subgoals, if fail to show truth of one of subgoals, reconsider previous subgoal to find an alternative solution: backtracking

• Begin search where previous search left off

• Can take lots of time and space because may find all possible proofs to every subgoal

CS 363 Spring 2005 GMU 26

Examplemother(Susan,Emily).mother(Susan,Lucy).mother(Anne,Susan).mother(Anne,Mary).father(Jim,Emily).father(Jim,Lucy).father(Russell,Susan).father(Russell,Mary).parent(X,Y):-mother(X,Y).parent(X,y):-father(X,y).sibling(X,Y):-mother(M,X),mother(M,Y), father(F,X),father(F,Y).sibling(Emily,Y). Y = LucySibling(Susan,Anne).> no

Facts

Rules

Goals (queries)

CS 363 Spring 2005 GMU 27

sibling(Emily,Y).mother(M,Emily),mother(M,Y),father(F,Emily),

father(F,Y).After searching the db:mother(Susan,Emily),mother(Susan,Y),

father(Jim,Emily),father(Jim,Y).Searching again:mother(Susan,Emily),mother(Susan,Lucy),

father(Jim,Emily),father(Jim,Lucy)So Y = Lucy

CS 363 Spring 2005 GMU 28

sibling(Susan,Anne).mother(M,Susan),mother(M,Anne),

father(F,Susan),father(F,Anne).

If we choose M = Anne, we can’t resolve the second mother clause (similar problem with father) fail

CS 363 Spring 2005 GMU 29

List Structures• Other basic data structure (besides atomic

propositions we have already seen): list• List is a sequence of any number of elements• Elements can be atoms, atomic propositions, or

other terms (including other lists)

[apple, prune, grape, kumquat]

[] (empty list)

[X | Y] (head X and tail Y)

CS 363 Spring 2005 GMU 30

Example

• Definition of member function:

member(Elem,[Elem | _ ).

member(Elem,[ _ | List]) :-

member (Elem,List).

Anonymous variable

CS 363 Spring 2005 GMU 31

member(a,[b,c,d]).

member(a,[b,c,d])

member(a,[c,d])

member(a,[d])

member(a,[]) fails

CS 363 Spring 2005 GMU 32

Example

• Definition of append function:

append([], List, List).

append([Head | List_1], List_2, [Head | List_3]) :-

append (List_1, List_2, List_3).

CS 363 Spring 2005 GMU 33

How append works

append([a,b],[c,d],X).

append([a|b],[c,d],_).

append([b],[c,d],_).

append([],[c,d],[c,d]). first rule!

append([b],[c,d],[b,c,d]).

append([a,b],[c,d],[a,b,c,d]).

X = [a,b,c,d]

CS 363 Spring 2005 GMU 34

Example

• Definition of reverse function:

reverse([], []).

reverse([Head | Tail], List) :-

reverse (Tail, Result),

append (Result, [Head], List).

CS 363 Spring 2005 GMU 35

Cut Operator (!)

• Explicit control of backtracking

• ! Is a goal that always succeeds but cannot be resatisified by backtracking

• a,b,!,c,d – if a and b succeed, but c fails, the whole goal fails.

CS 363 Spring 2005 GMU 36

Deficiencies of Prolog

• Resolution Order control– Prolog always starts at the beginning of DB

when searching– Prolog always starts trying to resolve the

leftmost subgoal (depth first) rule/definition order can affect performance!

CS 363 Spring 2005 GMU 37

Deficiencies of Prolog

• Easy to write infinite loops (due to resolution order)– ancestor(X,X).– ancestor(X,Y) :- ancestor(Z,y),parent(X,Z).

Reversing rules fixes the problem

CS 363 Spring 2005 GMU 38

Deficiencies of Prolog

• Closed World assumption – Prolog can only prove things to be true (based on the info) but it cannot be used to prove a goal is false– Leads to a problem with negation

CS 363 Spring 2005 GMU 39

Deficiencies of Prolog

• Problems with negation:Given: parent(bill,jake). parent(bill, shelley).

sibling(X,Y) :- parent(M,X),parent(M,Y).

For goal: sibling(X,y).

Prolog will respond with: X=jake, Y=jake– sibling(X,Y) :- parent(M,X),parent(M,Y),not(X=Y).

CS 363 Spring 2005 GMU 40

Deficiencies of Prolog

• Problems with negation:Need to write the rule using negation:– sibling(X,Y) :- parent(M,X),parent(M,Y),not(X=Y).

However, must be done carefully – not(not(goal)) is not the same as goal.

CS 363 Spring 2005 GMU 41

Trace

• Built-in structure that displays instantiations at each step

• Tracing model of execution - four events:– Call (beginning of attempt to satisfy goal)– Exit (when a goal has been satisfied)– Redo (when backtrack occurs)– Fail (when goal fails)

CS 363 Spring 2005 GMU 42

Applications of Logic Programming

• Relational database management systems

• Expert systems

• Natural language processing

• Education

CS 363 Spring 2005 GMU 43

Conclusions

• Advantages:– Prolog programs based on logic, so likely to be

more logically organized and written– Processing is naturally parallel, so Prolog

interpreters can take advantage of multi-processor machines

– Programs are concise, so development time is decreased – good for prototyping