Prolog & lisp

16,825 views 24 slides Oct 30, 2011
Slide 1
Slide 1 of 24
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24

About This Presentation

No description available for this slideshow.


Slide Content

LISP and PROLOG AI Programming Language Submitted To: Dr . Hesham El- Zoka Submitted By: Eng. Ismail Fathalla El- Gayar

AI Programming Languages

Features Year Language support programs that could perform general problem solving, including lists, associations , schemas (frames ), dynamic memory allocation , data types , recursion ,, functions as arguments , and cooperative multitasking I nformation P rocessing L anguage 1956. IPL practical mathematical notation for computer programs based on lambda calculus . Linked lists are one of Lisp languages' major data structures LIS t P rocessing 1958, LISP is a hybrid between procedural and logical languages . It gives a procedural interpretation to logical sentences where implications are interpreted with pattern-directed inference . MIT 1969 PLANNER declarative language where programs are expressed in terms of relations, and execution occurs by running queries over these relations. Prolog is particularly useful for symbolic reasoning, database and language parsing applications. pro grammation en log ique 1970s PROLOG language for expressing automated planning problem instances St anford R esearch I nstitute P roblem S olver1971 STRIPS AI Programming Languages

So Why We Learn Logic Programming Languages??? AI applications are also often written in standard languages like C++ and MATLAB.

System Usability PROLOG has many denotation, functional languages other than Lisp

System Usability Why Prolog here? • It is a particularly interesting language - the “feeling” is completely different from Java,C ,... - forces to see programming in a different way - programming as writing a “logic theory” • Recently, renewed interest in Prolog in order to rapidly prototype: – complex algorithms , reasoning-like computations , dynamic structures , XML-like features – governing interaction inside system infrastructures

System Usability Why Prolog here? Conceptual reasons: • new programming idiom – programming is NOT writing in Java language • Prolog as an “engine” to study models and language Practical reasons: • integration between Prolog and Java – Java as the part handling more “in-the-large” aspects network, graphics, connection with the O.S. and libraries – Prolog as the engine to handle (complex) algorithms optimization algorithms, reasoning, core logic, data structures

System Usability Comparing Java / Prolog • Java (C,C++) forces a procedural and deterministic view over computation • Prolog allows for a more declarative way of programming – expressing the problem, not the solution! – it works very well when finding solutions is “exploring a tree ”. • Other applications – dealing with knowledge representation and knowledge inference, typical use in AI

System Usability LISP & PROLOG Programming Language

Atom: One Component Out Of List ex: x , y , k LIST: Brackets Containing Atom ex: ( 2 3 x ) ATOM & LIST

PROLOG LISP Point Of Comparison 2+3 (+ 2 3) Add (5-2) (- 5 2) Subtract (2*3) (* 3 2) Multiplication (6/2) (/ 6 2) Division ( 3 + ( 3 * 2) + 4 ) (+ 3 (* 3 2) 4) braces Arithmetic Operations

PROLOG LISP Point Of Comparison 3<4 Yes (< 3 4) True Smaller 2>5 no (> 2 5) Nil Greater 3 =<2 no (<= 3 2) Nil Smaller than or equal 6=>2 Yes (>= 6 2) True Greater than or equal 3 =:= 4 no (= 3 4) Nil Equal 3 = \ = 4 yes (\= 3 4) True Not Equal Logic Operations

PROLOG LISP Point Of Comparison max([1,2,4,6,53,0],X). X=53 ( max 1 2 4 6 53 0 ) 53 Max min([1,2,46,53,0],X). X = 0 ( min 1 2 4 6 53 0 ) Min sum(X,Y,Z) plus(A, B, C) C is A + B. Sum Functions the both languages are Object Oriented Programming Languages

Since We Said that Lisp Is A List Processing Language we will talk about how we deals with List:- -(list '1 '2 ' foo )  ( 1 2 Foo ) - list 1 2 (list 3 4)) => ( 1 2 (3 4)) - ( + 1 2 3 4)  10 - (if nil (list 1 2 " foo ") (list 3 4"bar"))  if ( var )= nill Do (1 2 Foo ) else (3 4 bar) List Processing Language

Lambda(to assign A variable) (lambda ( arg ) (+ arg 1)) => arg =arg+1 ((lambda ( arg ) (+ arg 1)) 5) => arg =6 List Processing Language

Example : [ mia , vincent , jules , yolanda ] Dealing With List: [Head| Tail] = [ mia , vincent , jules , yolanda ] means:- Head = mia Tail = [ vincent,jules,yolanda ] yes Lists In PROLOG

Example: Concatenation list procedure cat(list a, list b) { list t = list u = copylist (a); while ( t.tail != nil) t = t.tail ; t.tail = b; return u; } In an imperative language In a declarative language In a functional language cat(a,b)  if b = nil then a else cons(head(a), cat(tail(a),b)) cat([], Z, Z). cat([H|T], L, [H|Z]) :- cat(T, L, Z).

Example in PROLOG ( Fact&Rule ) elephant( george ). elephant( mary ). elephant(X) :- grey(X), mammal(X), hasTrunk (X). Procedure for elephant Predicate Clauses Rule Facts

Example in PROLOG ( Fact&Rule ) ?- elephant(george). yes ?- elephant(jane). no Queries Replies

Execution of Prolog Programs Prove that goal is satisfiable Search of facts/rules is top-down Execution of sub-goals is left to right Closed-world assumption: – anything not in database is false Integer calculation, I/O don’t fit well into logical proof search

Applications of Prolog:- Expert systems Relational database queries Parsing of context-free languages Natural language processing Teaching programming , as early as in grade school

LISP Compiler BEE POPLOG LISP WORKS GNU C LISP PROLOG Compiler B-Prolog GNU Prolog C# PROLOG Open Prolog Strawberry Prolog

Paul Brna ,Prolog Programming A First Course. Fernando C. N. Pereira , Stuart M. Shieber ,Prolog and Natural Language Analysis. Ulf Nilsson , Jan Maluszynski ,Logic Programming and Prolog 2 nd edition. Amzi ,Adventure in Prolog. - Patrick Blackburn, Johan Bos , Kristina Striegnitz , Learn Prolog Now! http://en.wikibooks.org/wiki/Prolog/Math,_Functions_and_Equality http://en.wikipedia.org/wiki/Prolog http://en.wikipedia.org/wiki/Lisp_(programming_language) References

Thanks For Attendance