Presentation is loading. Please wait.

Presentation is loading. Please wait.

UNIVERSITY OF SOUTH CAROLINA Department of Computer Science and Engineering Lists, Operators, Arithmetic Notes for Ch.3 of Bratko For CSCE 580 Sp03 Marco.

Similar presentations


Presentation on theme: "UNIVERSITY OF SOUTH CAROLINA Department of Computer Science and Engineering Lists, Operators, Arithmetic Notes for Ch.3 of Bratko For CSCE 580 Sp03 Marco."— Presentation transcript:

1 UNIVERSITY OF SOUTH CAROLINA Department of Computer Science and Engineering Lists, Operators, Arithmetic Notes for Ch.3 of Bratko For CSCE 580 Sp03 Marco Valtorta

2 UNIVERSITY OF SOUTH CAROLINA Department of Computer Science and Engineering Representation of Lists Prolog provides a convenient representation of lists [ ann,tennis,tom,skiing] –ann is the head of the list above –[ tennis,tom,skiing] is its tail The head of a list is its first element The tail of a list is the list without its first element

3 UNIVERSITY OF SOUTH CAROLINA Department of Computer Science and Engineering Lists as Terms The empty list: [ ] (a constant) Any other list is a structure whose principal functor is the list constructor, which is represented by the dot (.) in Prolog Any non-empty list matches.( Head,Tail) [ ann, tennis, tom, skiing] is a “cosmetic improvement” (“syntactic sugar”) for.( ann,.( tennis,.(tom,.(skiing, [ ])))) See Fig. 3.1 for a tree representation of this term

4 UNIVERSITY OF SOUTH CAROLINA Department of Computer Science and Engineering More List Notation Prolog converts the internal representation of a list to its “neater” form: ?- L =.( ann,.( tennis,.( tom,.(skiing, []) ) ) ). L = [ann, tennis, tom, skiing] 3 ?- L =.(.( ann, []),.(.( tom, []), [])). L = [[ann], [tom]].. ann [ ].. tom[ ]

5 UNIVERSITY OF SOUTH CAROLINA Department of Computer Science and Engineering More List Notation L = [a | Tail] [ a,b,c] = [ a | [ b,c]] = [ a,b | [c]] = [ a,b,c | [ ]]

6 UNIVERSITY OF SOUTH CAROLINA Department of Computer Science and Engineering Some Operations on Lists Membership: checking whether some object is an element of a list Concatenation of two lists, obtaining a third list, which is the juxtaposition of the first two Adding an element to a list Deleting an element from a list Checking whether a list is a sublist of another Generating permutations of a list There are built-in versions of some of these predicates in SWI: see section 4.29 (p.114) pr3_1.pl

7 UNIVERSITY OF SOUTH CAROLINA Department of Computer Science and Engineering pr3_1.pl Note the non-determinism and reversibility of many of these operations member is built-in; we call ours memb Note that member can be used to generate lists Alternate member: memb1( X,L) :- conc( L1,[ X | L2], L).

8 UNIVERSITY OF SOUTH CAROLINA Department of Computer Science and Engineering Operator Notation 2*a + b*c Infix notation is a convenience for external presentation The principal functor is (one of the) highest precedence operator(s) Fig.3.8 is a table of predefined operators; it is a subset of the predefined operators in SWI (Section E.4, p.255)

9 UNIVERSITY OF SOUTH CAROLINA Department of Computer Science and Engineering Operator Precedence Xfx vs. xfy vs. yfx (a – b) – c or a – (b – c)? Since – is defined as yfx, a – (b – c) Is not not p correct? Yes, because not is defined as fy

10 UNIVERSITY OF SOUTH CAROLINA Department of Computer Science and Engineering Arithmetic Try: ?- X = 1 + 2. Surprise! Try ?- X is 1 + 2. is is not reversible! Notation: -Number is +Expr Moreover, Expr must have a value and Number should be unbound. Do not use is to test for equality See Section 4.26 (p.109) and Appendix E3 of manual

11 UNIVERSITY OF SOUTH CAROLINA Department of Computer Science and Engineering Equality = for unification: tries to match terms by finding a unifier =:= for equality: forces arithmetic evaluation, but no substitution is made Try ?- 1+2 = 2+1 (fails) ?- 1+2 =:= 2+1 (succeeds) ?- 1+A = B+2 (succeeds) ?- 1+A =:= B+2 (fails) 5 ?- 1+A =:= B+2. ERROR: Arguments are not sufficiently instantiated

12 UNIVERSITY OF SOUTH CAROLINA Department of Computer Science and Engineering Euclid’s Algorithm euclid.pl Another non-reversible program 2 ?- gcd( 10, 55, D). D = 5 3 ?- gcd( 10, Y, 5). ERROR: Arguments are not sufficiently instantiated

13 UNIVERSITY OF SOUTH CAROLINA Department of Computer Science and Engineering Just for Fun… Correctness gcd( X,X,X). Obvious Clause 2. Induction. Assume X < Y. –case 1: Y = nX. Obvious –case 2: Y = nX + r. Any divisor D of Y and X is also a divisor of r. Since r < X, the last subgoal in the body of the clause is (eventually) gcd(X,r,D). We only need to show that, if D is a GCD of X and r, it is also a GCD of X and Y. Any divisor of X and r is also a divisor of r. So, the set of divisors of Y and X is the same as the set of divisors of X and r. So, the Greatest CD of X and Y is the same as the GCD of X and r. But r < X, so the last subgoal in the body of the clause is (eventually) set up with X, r, D. Clause 3. Induction. Assume Y < X. Analogous to clause 2 case. See Knuth, vol.1, Section 1.1.

14 UNIVERSITY OF SOUTH CAROLINA Department of Computer Science and Engineering Length A case study in evaluated vs. non-evaluated terms: length.pl length is built-in. It is reversible. Warning: dirty secrets of SWI-Prolog ahead! length(List, Length) :- $length(List, Length), !.% written in C length(List, Length) :- var(Length), length2(List, Length). length2([], 0). length2([_|List], N) :- length2(List, M), succ(M, N).

15 UNIVERSITY OF SOUTH CAROLINA Department of Computer Science and Engineering Length II len1 is interpreted. It is reversible, but it will loop infinitely if asked for multiple lists of some length! len2 fixes this (at the cost of using a cut) len3 returns a not interpreted term len4 does the same with a shorter second clause len5 uses len4 and then interprets the result len6 is to len5 what len2 is to len1

16 UNIVERSITY OF SOUTH CAROLINA Department of Computer Science and Engineering Axiomatizing Arithmetic Unary (“tally”) arithmetic: Giuseppe Peano’s axioms, also known as “Peano’s Postulates.” See Russell and Norvig, Section 8.3 for an informal presentation of the axioms. See http://www-groups.dcs.st- and.ac.uk/~history/Mathematicians/Peano.html for a biographical sketch of Giuseppe Peano)http://www-groups.dcs.st- and.ac.uk/~history/Mathematicians/Peano.html Binary arithmetic: UseDefK7.ppt –Note: examples are in Cilog, a dialect of Prolog, based on an exercise in Poole et al.’s AI Textbook

17 UNIVERSITY OF SOUTH CAROLINA Department of Computer Science and Engineering Peano’s Postulates (P1) 0 is a natural number (P2) If x is natural number, there is another natural number denoted by x’ (and called the successor of x) (P3) 0 != x’ for any natural number x (P4) If x’ = y’, then x = y (P5) If Q is a property that may or may not hold of the natural numbers, and if (I) 0 has the property Q, and (II) whenever a natural number x has the property Q, then x’ has the property Q, then all numbers have the property Q (Principle of Induction) (Mendelson,E. Introduction to Mathematical Logic. Princeton, NJ: Van Nostrand, 1965.)


Download ppt "UNIVERSITY OF SOUTH CAROLINA Department of Computer Science and Engineering Lists, Operators, Arithmetic Notes for Ch.3 of Bratko For CSCE 580 Sp03 Marco."

Similar presentations


Ads by Google