PROLOG SYNTAX AND MEANING - PowerPoint PPT Presentation

1 / 35
About This Presentation
Title:

PROLOG SYNTAX AND MEANING

Description:

PROLOG SYNTAX AND MEANING Ivan Bratko University of Ljubljana Faculty of Computer and Info. Sc. Ljubljana, Slovenia DATA OBJECTS ... – PowerPoint PPT presentation

Number of Views:139
Avg rating:3.0/5.0
Slides: 36
Provided by: IvanB157
Category:

less

Transcript and Presenter's Notes

Title: PROLOG SYNTAX AND MEANING


1
PROLOG SYNTAX AND MEANING
  • Ivan Bratko
  • University of Ljubljana
  • Faculty of Computer and Info. Sc.
  • Ljubljana, Slovenia

2
DATA OBJECTS
  • data
    objects
  • simple objects
    structures
  • constants
    variables
  • atoms numbers

3
SYNTAX FOR DATA OBJECS
  • Type of object always recognisable from its
    syntactic form

4
THREE SYNTACIC FORMS FOR ATOMS
  • (1) Strings of letters, digits, and _,
    starting with
  • lowercase letter
  • x x15 x_15
    aBC_CBa7
  • alpha_beta_algorithm taxi_35
  • peter missJones
    miss_Jones2

5
ATOMS, CTD.
  • (2) Strings of special characters
  • ---gt ltgt ltlt
  • . lt gt ! ..
    ..

6
ATOMS, CTD.
  • (3) Strings in single quotes
  • X_35 Peter Britney Spears

7
SYNTAX FOR NUMBERS
  • Integers
  • 1 1313 0 -55
  • Real numbers (floating point)
  • 3.14 -0.0045 1.34E-21
    1.34e-21

8
SYNTAX FOR VARIABLES
  • Strings of letters, digits, and underscores,
    starting with uppercase letter
  • X Results Object2B
    Participant_list
  • _x35 _335
  • Lexical scope of variable names is one clause
  • Underscore stands for an anonymous variable
  • Each appearance of underscore another anon. var.

9
ANONYMOUS VARIABLES
  • visible_block( B) -
  • see( B, _, _).
  • Equivalent to
  • visible_block( B) -
  • see( B, X, Y).

10
STRUCTURES
  • Structures are objects that have several
    components
  • For example dates are structured objects with
    three components
  • Date 17 June 2006 can be represented by term
  • date( 17, june, 2006)
  • functor arguments
  • An argument can be any object, also a structure

11
FUNCTORS
  • Functor name chosen by user
  • Syntax for functors atoms
  • Functor defined by name and arity

12
TREE REPRESENTATION OF STRUCTURES
  • Often, structures are pictured as trees
  • date( 17, june, 2006)
  • date
  • 17 june 2006

13
  • Therefore all structured objects in Prolog can be
    viewed as trees
  • This is the only way of building structured
    objects in Prolog

14
SOME GEOMETRIC OBJECTS
  • P2 (2,3)
    (6,4)
  • S
    T
  • (4,2)
  • P1(1,1)
    (7,1)
  • P1 point( 1, 1) P2 point( 2,
    3)
  • S seg( P1, P2) seg( point(1,1), point(2,3))
  • T triangle( point(4,2), point(5,4), point(7,1))

15
LINE SEGMENT
  • S seg( point(1,1), point(2,3))
  • S seg
  • point
    point
  • 1 1 2
    3

16
ARITHMETIC EXPRESSIONSARE ALSO STRUCTURES
  • For example (a b) (c - 5)
  • Written as term with functors
  • ( ( a, b), -( c, 5))
  • -
  • a b c 5

17
MATCHING
  • Matching is operation on terms (structures)
  • Given two terms, they match if
  • (1) They are identical, or
  • (2) They can be made identical by
    properly
  • instantiating the variables in both
    terms

18
EXAMPLE OF MATCHING
  • Matching two dates
  • date( D1, M1, 2006) date( D2, june,
    Y2)
  • This causes the variables to be instantianted as
  • D1 D2
  • M1 june
  • Y2 2006
  • This is the most general instantiation
  • A less general instantiation would be D1D217,
    ...

19
MOST GENERAL INSTANTIATION
  • In Prolog, matching always results in most
    general instantiation
  • This commits the variables to the least possible
    extent, leaving flexibility for further
    instantiation if required
  • For example
  • ?- date( D1, M1, 2006) date( D2,
    june, Y2),
  • date( D1, M1, 2006) date( 17,
    M3, Y3).
  • D1 17, D2 17, M1 june, M3 june,
  • Y2 2006, Y3 2006

20
MATCHING
  • Matching succeeds or fails if succeeds then it
    results in the most general instantiation
  • To decide whether terms S and T match
  • (1) If S and T are constants then they match
    only if they are identical
  • (2) If S is a variable then matching
    succeeds, S is instantiated to T analogously if
    T is a variable
  • (3) If S and T are structures then they match
    only if
  • (a) they both have the same principal
    functor, and
  • (b) all their corresponding arguments
    match

21
MATCHING UNIFICATION
  • Unification known in predicate logic
  • Unification Matching Occurs check
  • What happens when we ask Prolog
  • ?- X f(X).
  • Matching succeeds, unification fails

22
COMPUTATION WITH MATCHING
  • Definition of vertical and horizontal segments
  • vertical( seg( point( X1,Y1), point( X1, Y2))).
  • horizontal( seg( point( X1,Y1), point( X2, Y1))).
  • ?- vertical( seg( point( 1,1), point( 1, 3))).
  • yes
  • ?- vertical( seg( point( 1,1), point( 2, Y))).
  • no
  • ?- vertical( seg( point( 2,3), P)).
  • P point( 2, _173).

23
AN INTERESTING SEGMENT
  • Is there a segment that is both vertical and
    horizontal?
  • ?- vertical( S), horizontal( S).
  • S seg( point( X,Y), point(X,Y))
  • Note, Prolog may display this with new variables
    names as for example
  • S seg( point( _13,_14), point( _13, _14))

24
DECLARATIVE MEANING
  • Given a program P and a goal G,
  • G is true ( i.e. logically follows from P) if
    and only if
  • (1) There is a clause C in P such that
  • (2) there is a clause instance I of C such
    that
  • (a) the head of I is identical to
    G, and
  • (b) all the goals in the body of I
    are true
  • An instance of a clause C is obtained by renaming
    each variable in C and possibly substituting the
    variable by some term. E.g. an instance of
  • p(X,Y) - q(Y,Z)
  • is
  • p(U,a) - q(a,V).

25
DECLARATIVE vs PROCEDURAL MEANING OF PROLOG
PROGRAMS
  • Consider
  • P - Q, R.
  • Declarative readings of this
  • P is true if Q and R are true.
  • From Q and R follows P.
  • Procedural readings
  • To solve problem P, first solve subproblem Q and
    then R.
  • To satisfy P, first satisfy Q and then R.

26
PROCEDURAL MEANING
  • Specifies how Prolog answers questions
  • Procedural meaning is an algorithm to execute a
    list of goals given a Prolog program
  • program

  • success/failure indication
  • goal list execute

  • instantiation of variables

27
procedure execute( Program, GoalList, Success)
  • execute declarative meaning procedural
    elements
  • G is true ( i.e. logically follows from P) if and
    only if
  • (1) there is a clause C in P such that
  • (2) there is a clause instance I of C such
    that
  • (a) the head of I is identical to
    G, and
  • (b) all the goals in the body of I
    are true

Search program from top to bottom to find such
clause
Match G and head of C
Execute goals in order as they appear in program
28
EXAMPLEQUALITATIVE CIRCUIT ANALYSIS
  • Electric circuits made of resistors and diodes
    through sequential and parallel connections
  • Circuit par( res, seq( res, diode))
  • Current
  • Voltage

29
RELATION CIRC
  • circ( Circuit, Voltage, Current)
  • Current Circuit

  • -
  • Voltage

30
  • Qualitative definition of electric circuits
  • Currents and voltages have qualitative values
    zero, pos or neg
  • All circuits have two terminals
  • A circuit may consist of a simple element,
  • or it can be composed from two circuits through
    parallel or sequential
  • connection
  • circ( Circuit, Voltage, Current)
  • The behaviour of resistor "qualitative" Ohm's
    law
  • circ( res, pos, pos). Both voltage and
    current positive
  • circ( res, zero, zero).
  • circ( res, neg, neg).

31
  • The behaviour of diode
  • circ( diode, zero, pos). Open diode zero
    voltage, any pos. current
  • circ( diode, zero, zero).
  • circ( diode, neg, zero). Closed diode, zero
    current, any neg. voltage
  • Reversed diode
  • circ( revdiode, zero, neg). Open zero
    voltage, any neg. current
  • circ( revdiode, zero, zero).
  • circ( revdiode, pos, zero).

32
  • Sequential composition of circuits
  • circ( seq( Circuit1, Circuit2), Volt, Curr) -
  • circ( Circuit1, Volt1, Curr),
  • circ( Circuit2, Volt2, Curr), The same
    current
  • qsum( Volt1, Volt2, Volt). Add
    voltages
  • Parallel composition of circuits
  • circ( par( Circuit1, Circuit2), Volt, Curr) -
  • circ( Circuit1, Volt, Curr1),
  • circ( Circuit2, Volt, Curr2), The same
    voltage
  • qsum( Curr1, Curr2, Curr). Add
    currents

33
  • qsum( Q1, Q2, Q3)
  • Q3 Q1 Q2, qualitative sum over domain
    pos,zero,neg
  • qsum( pos, pos, pos).
  • qsum( pos, zero, pos).
  • qsum( pos, neg, pos).
  • qsum( pos, neg, zero).
  • qsum( pos, neg, neg).
  • qsum( zero, pos, pos).
  • qsum( zero, zero, zero).
  • qsum( zero, neg, neg).
  • qsum( neg, pos, pos).
  • qsum( neg, pos, zero).
  • qsum( neg, pos, neg).
  • qsum( neg, zero, neg).
  • qsum( neg, neg, neg).

34
SOME QUERIES
  • ?- circ( par( seq( res, res), res), V, C).
  • C pos,V pos ?
  • C zero,V zero ?
  • C neg,V neg ?
  • Construct a circuit
  • ?- circ( C, pos, pos), circ( C, zero, zero),
    circ( C, neg, neg).

35
  • ?- circ( C, pos,pos), circ(C, neg, zero).
  • C seq(res,diode) ?
  • C seq(res,seq(res,diode)) ?
  • C seq(res,seq(res,seq(res,diode))) ?
  • C seq(res,seq(res,seq(res,seq(res,diode)))) ?
  • How about some parallel compositions?
Write a Comment
User Comments (0)
About PowerShow.com