Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CSE240 Lecture 24

CSE240 Lecture 24

Introduction to Programming Languages
Programming with Prolog
(202011)

Javier Gonzalez-Sanchez
PRO

January 24, 2017
Tweet

More Decks by Javier Gonzalez-Sanchez

Other Decks in Programming

Transcript

  1. jgs
    CSE 240
    Introduction to Programming Languages
    Lecture 24: Programming with Prolog
    Dr. Javier Gonzalez-Sanchez
    [email protected]
    javiergs.engineering.asu.edu | javiergs.com
    PERALTA 230U
    Office Hours: By appointment

    View Slide

  2. Javier Gonzalez-Sanchez | CSE240 | Spring 2018 | 2
    jgs
    Announcements
    § Videos for C++ and LISP are available on Canvas (Week 11 to Week 15).
    § Quiz 5 and Homework 5 are due today (Nov 30 at 11:59pm)

    View Slide

  3. jgs
    Logic Programming Paradigm
    PROLOG

    View Slide

  4. Javier Gonzalez-Sanchez | CSE240 | Spring 2018 | 4
    jgs
    Paradigms

    View Slide

  5. Javier Gonzalez-Sanchez | CSE240 | Spring 2018 | 5
    jgs
    Summary
    Logic/Declarative Paradigm
    Key idea:
    A program is a set of facts about
    objects,
    rules about objects, and questions
    (queries) about the relations between
    objects.
    Features:
    • get rid of programming altogether.

    View Slide

  6. Javier Gonzalez-Sanchez | CSE240 | Spring 2018 | 6
    jgs
    Predicate Logic
    § Predicate logic involves statements that contain variables, which may be
    true or false depending on variables' value or values.
    predicates

    View Slide

  7. Javier Gonzalez-Sanchez | CSE240 | Spring 2018 | 7
    jgs
    Predicate Logic
    PROGRAM
    data
    relationships

    View Slide

  8. Javier Gonzalez-Sanchez | CSE240 | Spring 2018 | 8
    jgs
    Logic Paradigm
    § It focus on what is needed (requirements), instead of how to implement
    them. It just describe what the problem is and let the computer find a way to
    solve the problem, instead describing how to solve the problem.

    View Slide

  9. Javier Gonzalez-Sanchez | CSE240 | Spring 2018 | 9
    jgs
    Prolog
    § PROLOG (PROgramming LOGic)
    § Interpreter.
    § Deductive database: set of statements and a deduction system.
    § Facts and Rules
    § Queries
    § Upper-Case variables
    § Lower-Case constants and names

    View Slide

  10. jgs
    Tools
    PROLOG

    View Slide

  11. Javier Gonzalez-Sanchez | CSE240 | Spring 2018 | 11
    jgs
    Install a Prolog Interpreter
    http://www.swi-prolog.org/download/stable

    View Slide

  12. Javier Gonzalez-Sanchez | CSE240 | Spring 2018 | 12
    jgs
    Online Prolog Interpreter

    View Slide

  13. Javier Gonzalez-Sanchez | CSE240 | Spring 2018 | 13
    jgs
    Local Prolog Interpreter
    To enter rules from the command line, type this :
    [user].
    This puts you in a mode where you can enter facts and rules. Otherwise you get this
    kind of message:
    ERROR: Undefined procedure: (DWIM could not correct goal)
    You can then enter facts (or rules) e.g. :
    father(me,sarah).
    After having entered the knowledge, type CONTROL-D to come back to the mode
    where you can enter questions. Then you can ask:
    ?- father(me,X).
    X = sarah
    To quit:
    halt.

    View Slide

  14. jgs
    Getting Started
    PROLOG

    View Slide

  15. Javier Gonzalez-Sanchez | CSE240 | Spring 2018 | 15
    jgs
    Predicate Logic
    § It uses a simplified variation of predicate logic syntax, which is similar to
    natural language.
    § Predicate logic eliminate all unnecessary words from sentences, then
    transform the sentence by placing the relationship (predicate) first and
    grouping the objects (arguments) after the relationship
    predicate (object, object, object ....)

    View Slide

  16. Javier Gonzalez-Sanchez | CSE240 | Spring 2018 | 16
    jgs
    Predicate Logic
    § Facts: What is known, e.g.,
    Bill likes car and bike, and he travels with one of them
    likes(bill, car), likes(bill, bike)
    travels(bill, car); travels(bill, bike)
    § Rules: What you can infer from the given facts. Rules enable you to infer
    facts from other facts, e.g.,
    Bill is the father of Joe, if Joe is the son of bill.
    father(bill, joe) :- son(joe, bill).
    , means AND
    ; means OR

    View Slide

  17. Javier Gonzalez-Sanchez | CSE240 | Spring 2018 | 17
    jgs
    Natural Language Predicate Logic Type of Predicate
    A car is fast. fast(car). fact
    A rose is red. red(rose). fact
    Bill likes the car if the car is fast. likes(bill, car) :- fast(car). rule
    Humidity is high if it rains high(humidity):- rains(). rule
    Jane is mother of Elaine mother_of(jane, elaine). fact
    Jane is mother of Mike mother_of(jane, mike). fact
    David is father of Jesse father_of(david, jesse). fact
    Jesse is father of Obed father_of(jesse, obed). fact
    Grandmother X of Z if (X is mother of Y
    and (Y is mother of Z or Y is father of Z)
    grandmother_of(X, Z) :- mother_of(X, Y),
    ( mother_of(Y, Z); father_of(Y, Z) ).
    rule

    View Slide

  18. Javier Gonzalez-Sanchez | CSE240 | Spring 2018 | 18
    jgs
    Simple Facts
    § Facts and rules creates a database, so, step 1, provide data
    % facts:
    exam_easy.
    arizona_hot.
    july_4_is_independence_day.
    § step 2, run queries
    ?- exam_easy.
    true
    ?- arizona_hot.
    true
    ?- july_4_is_independence_day
    true

    View Slide

  19. Javier Gonzalez-Sanchez | CSE240 | Spring 2018 | 19
    jgs
    Facts with Arguments
    likes(john,mary).
    eats(fred,oranges).
    age(john,32).
    age(ian,2).
    ?- eats(fred,oranges).
    true
    ?- eats(mike,apples).
    false
    ?- age(ian,two).
    false

    View Slide

  20. Javier Gonzalez-Sanchez | CSE240 | Spring 2018 | 20
    jgs
    Facts with Arguments
    likes(john,mary).
    eats(fred,oranges).
    age(john,32).
    age(ian,2).
    ?- eats(fred,X).
    X = oranges
    ?- eats(mike,X).
    false
    ?- age(ian,Y).
    Y = 2
    ?- likes (WhoX, WhoY).
    WhoX = john,
    WhoY = mary

    View Slide

  21. Javier Gonzalez-Sanchez | CSE240 | Spring 2018 | 21
    jgs
    Facts and Rules
    % rules and facts:
    mortal(X) :- human(X).
    human(socrates).
    ?- mortal(socrates).
    true
    ?- mortal(P).
    P = socrates

    View Slide

  22. Javier Gonzalez-Sanchez | CSE240 | Spring 2018 | 22
    jgs
    A program is Facts, Rules …
    % facts
    instructor(john,cs365).
    instructor(mary,cs311).
    instructor(paul,cs446).
    enrolled(joseph,cs311).
    enrolled(joseph,cs365).
    enrolled(joseph,cs446).
    enrolled(danielle,cs365).
    enrolled(danielle,cs446).
    % rules
    teaches(P,S) :- instructor(P,C), enrolled(S,C).
    classmates(S1, S2) :- enrolled(S1, C), enrolled(S2, C).

    View Slide

  23. Javier Gonzalez-Sanchez | CSE240 | Spring 2018 | 23
    jgs
    … and Queries (part 1 / 2)
    ?- enrolled (joseph, cs365).
    true
    ?- enrolled (X, cs365).
    X=joseph
    X=danielle
    ?- teaches (X, joseph).
    X=john
    X=mary
    X=paul
    ?- classmates (joseph, danielle).
    true
    ?- classmates (joseph, jessica).
    false
    ?- classmates (jessica, danielle).
    false

    View Slide

  24. Javier Gonzalez-Sanchez | CSE240 | Spring 2018 | 24
    jgs
    … and Queries (part 2 / 2)
    % An additional rule
    classmates (S1, S2, C) :- enrolled (S1, C), enrolled (S2, C)
    ?- classmates (joseph, danielle, C).
    cs365
    cs446
    ?- classmates (joseph, jessica, C).
    false
    ?- classmates (jessica, danielle, C).
    false

    View Slide

  25. Javier Gonzalez-Sanchez | CSE240 | Spring 2018 | 25
    jgs
    Questions

    View Slide

  26. jgs
    Test Yourselves

    View Slide

  27. Javier Gonzalez-Sanchez | CSE240 | Spring 2018 | 27
    jgs
    Q1
    What is the predicate logic expression equivalent to
    "Charlie owns a computer"
    owns(charlie, computer).

    View Slide

  28. Javier Gonzalez-Sanchez | CSE240 | Spring 2018 | 28
    jgs
    Q2
    instructor(john,cs365).
    instructor(mary,cs311).
    enrolled(danielle,cs365).
    enrolled(danielle,cs446).
    § Which query provides a list of all the students enrolled in cs365?
    enrolled(Who, cs365).

    View Slide

  29. Javier Gonzalez-Sanchez | CSE240 | Spring 2018 | 29
    jgs
    Q3
    If weather is cold, everyone likes it.
    Write this statement as a Prolog clause.
    likes(X, weather) :- cold(weather).
    %notice “weather” in lowercase

    View Slide

  30. Javier Gonzalez-Sanchez | CSE240 | Spring 2018 | 30
    jgs
    Q5
    § Given the following facts
    § cat(tom).
    § black_spots(tom).
    § dog(pluto).
    § white_spots(pluto)
    §
    Which rule defines in Prolog the following sentence:
    § "mary owns a Pet if it is a cat and it has black spots"
    owns(mary, Pet):- cat(Pet), black_spots(Pet).

    View Slide

  31. Javier Gonzalez-Sanchez | CSE240 | Spring 2018 | 31
    jgs
    Q6
    Which rule defines in Prolog the following sentence:
    "If someone owns something, he loves it"
    loves(Who, What):-owns(Who, What).

    View Slide

  32. Javier Gonzalez-Sanchez | CSE240 | Spring 2018 | 32
    jgs
    Q7
    1
    2
    3
    4

    View Slide

  33. jgs
    CSE 240 Introduction to Programming Languages
    Javier Gonzalez-Sanchez, Ph.D.
    [email protected]
    Fall 2021
    Copyright. These slides can only be used as study material for the class CSE240 at Arizona State University.
    They cannot be distributed or used for another purpose.

    View Slide