Csci360 12 Logic Programming

Embed Size (px)

Citation preview

  • 8/3/2019 Csci360 12 Logic Programming

    1/49

    1

    CSCI 360

    Survey Of ProgrammingLanguages

    12 Logic Programming

    Spring, 2008Doug L Hoffman, PhD

  • 8/3/2019 Csci360 12 Logic Programming

    2/49

    Page 2

    CSCI 360 Survey Of 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 Prolog

    The Basic Elements of Prolog Deficiencies of Prolog

    Applications of Logic Programming

  • 8/3/2019 Csci360 12 Logic Programming

    3/49

    Page 3

    CSCI 360 Survey Of Programming Languages

    Introduction

    Logicprogramming language or declarativeprogramming language

    Express programs in a form of symbolic logic Use a logical inferencing process to produce

    results

    Declarativerather that procedural:

    Only specification of resultsare stated (not detailedproceduresfor producing them)

  • 8/3/2019 Csci360 12 Logic Programming

    4/49

    4

    Predicate Calculus

    CSCI 360 Survey Of Programming Languages

  • 8/3/2019 Csci360 12 Logic Programming

    5/49

    Page 5

    CSCI 360 Survey Of Programming Languages

    Proposition

    A logical statement that may or may not be true

    Consists of objects and relationships of objects toeach other

  • 8/3/2019 Csci360 12 Logic Programming

    6/49

    Page 6

    CSCI 360 Survey Of Programming Languages

    Symbolic Logic

    Logic which can be used for the basic needs offormal logic:

    Express propositions

    Express relationships between propositions Describe how new propositions can be inferred from

    other propositions

    Particular form of symbolic logic used for logic

    programming called predicatecalculus

  • 8/3/2019 Csci360 12 Logic Programming

    7/49Page 7

    CSCI 360 Survey Of Programming Languages

    Object Representation

    Objects in propositions are represented by simpleterms: either constants or variables

    Constant: a symbol that represents an object Variable: a symbol that can represent different

    objects at different times

    Different from variables in imperative languages

  • 8/3/2019 Csci360 12 Logic Programming

    8/49Page 8

    CSCI 360 Survey Of Programming Languages

    Compound Terms

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

  • 8/3/2019 Csci360 12 Logic Programming

    9/49Page 9

    CSCI 360 Survey Of Programming Languages

    Parts of a Compound Term

    Compound term composed of two parts

    Functor: function symbol that names the relationship

    Ordered list of parameters (tuple)

    Examples:

    student(jon)

    like(seth, OSX)

    like(nick, windows)

    like(jim, linux)

  • 8/3/2019 Csci360 12 Logic Programming

    10/49Page 10

    CSCI 360 Survey Of Programming Languages

    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

  • 8/3/2019 Csci360 12 Logic Programming

    11/49Page 11

    CSCI 360 Survey Of Programming Languages

    Logical Operators

    Name Symbol Example Meaning

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

    a implies b

    b implies a

  • 8/3/2019 Csci360 12 Logic Programming

    12/49Page 12

    CSCI 360 Survey Of Programming Languages

    Quantifiers

    Name Example Meaning

    universal X.P For all X, P is true

    existential X.P There exists a value of X such thatP is true

  • 8/3/2019 Csci360 12 Logic Programming

    13/49Page 13

    CSCI 360 Survey Of Programming Languages

    Clausal Form

    Too many ways to state the same thing

    Use a standard form for propositions

    Clausal form:

    B1 B2 Bn A1 A2 Am

    means if all the As are true, then at least one B is true

    Antecedent: right side

    Consequent: left side

  • 8/3/2019 Csci360 12 Logic Programming

    14/49Page 14

    CSCI 360 Survey Of Programming Languages

    Predicate Calculus and Proving Theorems

    A use of propositions is to discover new theoremsthat can be inferred from known axioms andtheorems

    Resolution: an inference principle that allowsinferred propositions to be computed from givenpropositions

  • 8/3/2019 Csci360 12 Logic Programming

    15/49Page 15

    CSCI 360 Survey Of Programming Languages

    Resolution

    Unification: finding values for variables inpropositions that allows matching process tosucceed

    Instantiation: assigning temporary values tovariables to allow unification to succeed

    After instantiating a variable with a value, ifmatching fails, may need to backtrackandinstantiate with a different value

  • 8/3/2019 Csci360 12 Logic Programming

    16/49Page 16

    CSCI 360 Survey Of Programming Languages

    Proof by Contradiction

    Hypotheses: a set of pertinent propositions

    Goal: negation of theorem stated as a proposition

    Theorem is proved by finding an inconsistency

  • 8/3/2019 Csci360 12 Logic Programming

    17/49Page 17

    CSCI 360 Survey Of Programming Languages

    Theorem Proving

    Basis for logic programming

    When propositions used for resolution, onlyrestricted form can be used

    Horn clause- can have only two forms

    Headed: single atomic proposition on left side

    Headless: empty left side (used to state facts)

    Most propositions can be stated as Horn clauses

  • 8/3/2019 Csci360 12 Logic Programming

    18/49Page 18

    CSCI 360 Survey Of Programming Languages

    Overview of Logic Programming

    Declarative semantics

    There is a simple way to determine the meaning of eachstatement

    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

  • 8/3/2019 Csci360 12 Logic Programming

    19/49Page 19

    CSCI 360 Survey Of Programming Languages

    Example: Sorting a List

    Describe the characteristics of a sorted list, not theprocess of rearranging a list

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

    sorted (list) j such that 1 j < n, list(j) list (j+1)

  • 8/3/2019 Csci360 12 Logic Programming

    20/49Page 20

    CSCI 360 Survey Of Programming Languages

    The Origins of Prolog

    University of Aix-Marseille

    Natural language processing

    University of Edinburgh

    Automated theorem proving

  • 8/3/2019 Csci360 12 Logic Programming

    21/49Page 21

    CSCI 360 Survey Of Programming Languages

    Terms

    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 witha lowercase letter

    a string of printable ASCII characters delimited byapostrophes

  • 8/3/2019 Csci360 12 Logic Programming

    22/49Page 22

    CSCI 360 Survey Of Programming Languages

    Terms: Variables and Structures

    Variable: any string of letters, digits, andunderscores beginning with an uppercase letter

    Instantiation: binding of a variable to a value

    Lasts only as long as it takes to satisfy one completegoal

    Structure: represents atomic proposition

    functor(parameter list)

  • 8/3/2019 Csci360 12 Logic Programming

    23/49Page 23

    CSCI 360 Survey Of Programming Languages

    Fact Statements

    Used for the hypotheses

    Headless Horn clauses

    female(shelley).

    male(bill).

    father(bill, jake).

  • 8/3/2019 Csci360 12 Logic Programming

    24/49

    Page 24

    CSCI 360 Survey Of Programming Languages

    Rule Statements

    Used for the hypotheses

    Headed Horn clause

    Right side: antecedent(ifpart) May be single term or conjunction

    Left side: consequent(thenpart)

    Must be single term

    Conjunction: multiple terms separated by logicalAND operations (implied)

  • 8/3/2019 Csci360 12 Logic Programming

    25/49

    Page 25

    CSCI 360 Survey Of Programming Languages

    Example Rules

    ancestor(mary,shelley):- mother(mary,shelley).

    Can use variables (universalobjects) to generalizemeaning:

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

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

    grandparent(X,Z):- parent(X,Y), parent(Y,Z).sibling(X,Y):- mother(M,X), mother(M,Y),

    father(F,X), father(F,Y).

  • 8/3/2019 Csci360 12 Logic Programming

    26/49

    Page 26

    CSCI 360 Survey Of Programming Languages

    Goal Statements

    For theorem proving, theorem is in form ofproposition that we want system to prove ordisprovegoal statement

    Same format as headless Horn

    man(fred)

    Conjunctive propositions and propositions with

    variables also legal goalsfather(X,mike)

  • 8/3/2019 Csci360 12 Logic Programming

    27/49

    Page 27

    CSCI 360 Survey Of Programming Languages

    Inferencing Process of Prolog

    Queries are called goals

    If a goal is a compound proposition, each of the facts is asubgoal

    To prove a goal is true, must find a chain of inference rulesand/or facts. For goal Q:

    B :- A

    C :- B

    Q :- P Process of proving a subgoal called matching, satisfying, or

    resolution

  • 8/3/2019 Csci360 12 Logic Programming

    28/49

    Page 28

    CSCI 360 Survey Of Programming Languages

    Approaches

    Bottom-up resolution, forward chaining

    Begin with facts and rules of database and attempt to find sequencethat 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 offacts in database

    Works well with a small set of possibly correct answers Prolog implementations use backward chaining

  • 8/3/2019 Csci360 12 Logic Programming

    29/49

    Page 29

    CSCI 360 Survey Of Programming Languages

    Subgoal Strategies

    When goal has more than one subgoal, can useeither

    Depth-first search: find a complete proof for the firstsubgoal 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

  • 8/3/2019 Csci360 12 Logic Programming

    30/49

    Page 30

    CSCI 360 Survey Of Programming Languages

    Backtracking

    With a goal with multiple subgoals, if fail to showtruth of one of subgoals, reconsider previoussubgoal to find an alternative solution: backtracking

    Begin search where previous search left off

    Can take lots of time and space because may findall possible proofs to every subgoal

  • 8/3/2019 Csci360 12 Logic Programming

    31/49

    Page 31

    CSCI 360 Survey Of Programming Languages

    Simple Arithmetic

    Prolog supports integer variables and integerarithmetic

    isoperator: takes an arithmetic expression as

    right operand and variable as left operand

    A is B / 17 + C

    Not the same as an assignment statement!

  • 8/3/2019 Csci360 12 Logic Programming

    32/49

    Page 32

    CSCI 360 Survey Of Programming Languages

    Example

    speed(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 isSpeed * Time.

  • 8/3/2019 Csci360 12 Logic Programming

    33/49

    Page 33

    CSCI 360 Survey Of Programming Languages

    Practical Matters

    Loading a file?- consult('lists.pl').

    ?- reconsult('lists.pro').

    ?- [file1,file2,file3].

    Exiting gprolog?- halt. or ^D

    Manually enter code

    ?- [user].

    ^D

    To see your code

    ?- listing.

  • 8/3/2019 Csci360 12 Logic Programming

    34/49

    Page 34

    CSCI 360 Survey Of Programming Languages

    Trace

    Built-in structure that displays instantiations ateach step

    Tracing modelof 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)

  • 8/3/2019 Csci360 12 Logic Programming

    35/49

    Page 35

    CSCI 360 Survey Of Programming Languages

    Example

    likes(jake,chocolate).

    likes(jake,apricots).

    likes(darcie,licorice).

    likes(darcie,apricots).

    trace.

    likes(jake,X),

    likes(darcie,X).

  • 8/3/2019 Csci360 12 Logic Programming

    36/49

    Page 36

    CSCI 360 Survey Of Programming Languages

    Example: Factorial Definition

    factorial(0,1).

    factorial(N,F) :- N>0,

    N1 is N-1,

    factorial(N1,F1),F is N * F1.

    The Prolog goal to calculate the factorial of the number 3

    responds with a value for W, the goal variable:

    ?- factorial(3,W).

    W=6

  • 8/3/2019 Csci360 12 Logic Programming

    37/49

    Page 37

    CSCI 360 Survey Of Programming Languages

    Example: Factorial Definition with Trace

    ?- trace.% The debugger will first creep -- showing everythingyes[trace]?- factorial(3,X).(1) 0 Call: factorial(3,_8140) ?

    (1) 1 Head [2]: factorial(3,_8140) ?(2) 1 Call (built-in): 3>0 ?(2) 1 Done (built-in): 3>0 ?(3) 1 Call (built-in): _8256 is 3-1 ?(3) 1 Done (built-in): 2 is 3-1 ?

    (4) 1 Call: factorial(2, _8270) ?...(1) 0 Exit: factorial(3,6) ?

    X=6[trace]?- notrace.

    % The debugger is switched off

  • 8/3/2019 Csci360 12 Logic Programming

    38/49

    Page 38

    CSCI 360 Survey Of Programming Languages

    Negation as Failure

    The negation-as-failure 'not' predicate could be defined inprolog as follows:

    not(P) :- call(P), !, fail.

    not(P).

    The goal ?-call(P) forces an attempt to satisfy the goal P.

    Gprolog uses \+ operator instead of not.

    Another way one can write the 'not' definition is using the

    Prolog implication operator '->' :

    not(P) :- (call(P) -> fail ; true).

    The body can be read "if call(P) succeeds (i.e., if P succeeds

    as a goal) then fail, otherwise succeed". The semicolon ';'

    appearing here has the meaning of exclusive logical-or.

  • 8/3/2019 Csci360 12 Logic Programming

    39/49

    Page 39

    CSCI 360 Survey Of Programming Languages

    Example

    It is important to realize that in a goal ?-not(g), if g hasvariables, and some instance of these variables lead tosatisfaction of g, then ?-not(g) fails.

    For example, consider the following 'bachelor program:

    bachelor(P) :- male(P), not(married(P)).

    male(henry).male(tom).

    married(tom).

  • 8/3/2019 Csci360 12 Logic Programming

    40/49

    Page 40

    CSCI 360 Survey Of Programming Languages

    Example

    Then?- bachelor(henry).yes?- bachelor(tom).no?- bachelor(Who).

    Who= henry ;no?- not(married(Who)).no.

    The first three responses are correct and as expected but the answer

    to the fourth query might have been unexpected.The goal ?-not(married(Who)) fails because for the variable bindingWho=tom, married(Who) succeeds, and so the negative goal fails.

    Thus, negative goals ?-not(g) with variables cannot be expected toproduce bindings of the variables for which the goal g fails.

    CSC S O

  • 8/3/2019 Csci360 12 Logic Programming

    41/49

    41

    List Structures

    CSCI 360 Survey Of Programming Languages

    CSCI 360 S Of P i L

  • 8/3/2019 Csci360 12 Logic Programming

    42/49

    Page 42

    CSCI 360 Survey Of Programming Languages

    List Structures

    Other basic data structure (besides atomicpropositions we have already seen): list

    Listis a sequence of any number of elements

    Elements can be atoms, atomic propositions, orother terms (including other lists)

    [apple, prune, grape, kumquat]

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

    CSCI 360 S Of P i L

  • 8/3/2019 Csci360 12 Logic Programming

    43/49

    Page 43

    CSCI 360 Survey Of Programming Languages

    Append Example

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

    append (List_1, List_2, List_3).

    CSCI 360 S Of P i L

  • 8/3/2019 Csci360 12 Logic Programming

    44/49

    Page 44

    CSCI 360 Survey Of Programming Languages

    Reverse Example

    reverse([], []).

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

    reverse (Tail, Result),

    append (Result, [Head], List).

    CSCI 360 S Of P i L

  • 8/3/2019 Csci360 12 Logic Programming

    45/49

    Page 45

    CSCI 360 Survey Of Programming Languages

    Deficiencies of Prolog

    Resolution order control

    The closed-world assumption

    The negation problem

    Intrinsic limitations

    CSCI 360 S Of P i L

  • 8/3/2019 Csci360 12 Logic Programming

    46/49

    Page 46

    CSCI 360 Survey Of Programming Languages

    Applications of Logic Programming

    Relational database managementsystems

    Expert systems

    Natural language processing

    CSCI 360 S r e Of Programming Lang ages

  • 8/3/2019 Csci360 12 Logic Programming

    47/49

    47

    Summary

    CSCI 360 Survey Of Programming Languages

    CSCI 360 Survey Of Programming Languages

  • 8/3/2019 Csci360 12 Logic Programming

    48/49

    Page 48

    CSCI 360 Survey Of Programming Languages

    Summary

    Symbolic logic provides basis for logicprogramming

    Logic programs should be nonprocedural

    Prolog statements are facts, rules, or goals Resolution is the primary activity of a Prolog

    interpreter

    Although there are a number of drawbacks with thecurrent state of logic programming it has been usedin a number of areas

    CSCI 360 Survey Of Programming Languages

  • 8/3/2019 Csci360 12 Logic Programming

    49/49

    CSCI 360 Survey Of Programming Languages

    Next Time

    Exception Handling

    and

    Event Handling