Cs7120 (Prasad)L14-LP1 Programming Paradigms Logic Programming Paradigm Correctness > Efficiency...
-
Upload
chastity-booth -
Category
Documents
-
view
245 -
download
2
Transcript of Cs7120 (Prasad)L14-LP1 Programming Paradigms Logic Programming Paradigm Correctness > Efficiency...
![Page 1: Cs7120 (Prasad)L14-LP1 Programming Paradigms Logic Programming Paradigm Correctness > Efficiency t.k.prasad@wright.edu](https://reader035.fdocuments.net/reader035/viewer/2022062300/56649d0b5503460f949def5c/html5/thumbnails/1.jpg)
cs7120 (Prasad) L14-LP 1
Programming Paradigms
Logic Programming Paradigm
Correctness > Efficiency
http://www.knoesis.org/tkprasad/
![Page 2: Cs7120 (Prasad)L14-LP1 Programming Paradigms Logic Programming Paradigm Correctness > Efficiency t.k.prasad@wright.edu](https://reader035.fdocuments.net/reader035/viewer/2022062300/56649d0b5503460f949def5c/html5/thumbnails/2.jpg)
cs7120 (Prasad) L14-LP 2
Programming Paradigm
A way of conceptualizing what it means to perform computation and how tasks to be carried out on the computer should be structured and organized.
• Imperative : Machine-model based
• Functional : Equations; Expression Evaluation
• Logical : First-order Logic Deduction
• Object-Oriented : Programming with Data Types
![Page 3: Cs7120 (Prasad)L14-LP1 Programming Paradigms Logic Programming Paradigm Correctness > Efficiency t.k.prasad@wright.edu](https://reader035.fdocuments.net/reader035/viewer/2022062300/56649d0b5503460f949def5c/html5/thumbnails/3.jpg)
cs7120 (Prasad) L14-LP 3
Imperative Style vs Declarative Style
• Imperative programs– Description of WHAT is to be computed is
inter-twined with HOW it is to be computed.– The latter involves organization of data and the
sequencing of instructions.
• Declarative Programs– Separates WHAT from HOW.– The former is programmer’s responsibility; the
latter is interpreter’s/compiler’s responsibility.
![Page 4: Cs7120 (Prasad)L14-LP1 Programming Paradigms Logic Programming Paradigm Correctness > Efficiency t.k.prasad@wright.edu](https://reader035.fdocuments.net/reader035/viewer/2022062300/56649d0b5503460f949def5c/html5/thumbnails/4.jpg)
cs7120 (Prasad) L14-LP 4
• What : Intent
– Value to be computed: a + b + c• How : Details
– Recipe for computing the value• Intermediate Code
– T := a + b; T := T + c;
– T := b + c; T := a + T;
• Accumulator Machine– Load a; Add b; Add c;
• Stack Machine– Push a; Push b; Add; Push c; Add;
![Page 5: Cs7120 (Prasad)L14-LP1 Programming Paradigms Logic Programming Paradigm Correctness > Efficiency t.k.prasad@wright.edu](https://reader035.fdocuments.net/reader035/viewer/2022062300/56649d0b5503460f949def5c/html5/thumbnails/5.jpg)
cs7120 (Prasad) L14-LP 5
Role of variable• In declarative style, a
variable stands for an arbitrary value , and is used to abbreviate an infinite collection of equations.
0 + 0 = 0
0 + 1 = 1
…
for all x : 0 + x = x
• In imperative style, a variable is a location that can hold a value, and can be changed through an assignment.
x := x + 1;
� Declarative variable can be viewed as assign-only- once imperative variable.
![Page 6: Cs7120 (Prasad)L14-LP1 Programming Paradigms Logic Programming Paradigm Correctness > Efficiency t.k.prasad@wright.edu](https://reader035.fdocuments.net/reader035/viewer/2022062300/56649d0b5503460f949def5c/html5/thumbnails/6.jpg)
cs7120 (Prasad) L14-LP 6
Logic Programming Paradigm
• Integrates Data and Control Structures
edge(a,b).
edge(a,c).
edge(c,a).
path(X,X).
path(X,Y) :- edge(X,Y).
path(X,Y) :- edge(X,Z), path(Z,Y).
![Page 7: Cs7120 (Prasad)L14-LP1 Programming Paradigms Logic Programming Paradigm Correctness > Efficiency t.k.prasad@wright.edu](https://reader035.fdocuments.net/reader035/viewer/2022062300/56649d0b5503460f949def5c/html5/thumbnails/7.jpg)
cs7120 (Prasad) L14-LP 7
Logic Programming
• A logic program defines a set of relations.
This “knowledge” can be used in various ways by the interpreter to solve different queries.
• In contrast, the programs in other languagesIn contrast, the programs in other languages
also make explicit also make explicit HOWHOW the the ““declarative declarative knowledgeknowledge”” is used to solve the query. is used to solve the query.
![Page 8: Cs7120 (Prasad)L14-LP1 Programming Paradigms Logic Programming Paradigm Correctness > Efficiency t.k.prasad@wright.edu](https://reader035.fdocuments.net/reader035/viewer/2022062300/56649d0b5503460f949def5c/html5/thumbnails/8.jpg)
cs7120 (Prasad) L14-LP 8
AppendAppend in Prolog
append([], L, L).append([], L, L).
append([ H | T ], L, [ H | R ]) :-append([ H | T ], L, [ H | R ]) :-
append(T, L, R).append(T, L, R).
• True statements about appendappend relation.• “.” and “:-” are logical connectives that stand for
“and” and “if” respectively.
• Uses pattern matching.• “[]” and “|” stand for empty list and cons operation.
![Page 9: Cs7120 (Prasad)L14-LP1 Programming Paradigms Logic Programming Paradigm Correctness > Efficiency t.k.prasad@wright.edu](https://reader035.fdocuments.net/reader035/viewer/2022062300/56649d0b5503460f949def5c/html5/thumbnails/9.jpg)
cs7120 (Prasad) L14-LP 9
Different Kinds of Queries
• Verification– sig: list x list x list -> boolean
• append([1], [2,3], [1,2,3]).
• Concatenation– sig: list x list -> list
• append([1], [2,3], R).
![Page 10: Cs7120 (Prasad)L14-LP1 Programming Paradigms Logic Programming Paradigm Correctness > Efficiency t.k.prasad@wright.edu](https://reader035.fdocuments.net/reader035/viewer/2022062300/56649d0b5503460f949def5c/html5/thumbnails/10.jpg)
cs7120 (Prasad) L14-LP 10
More Queries
• Constraint solving– sig: list x list -> list
• append( R, [2,3], [1,2,3]).
– sig: list -> list x list• append(A, B, [1,2,3]).
• Generation– sig: -> list x list x list
• append(X, Y, Z).
![Page 11: Cs7120 (Prasad)L14-LP1 Programming Paradigms Logic Programming Paradigm Correctness > Efficiency t.k.prasad@wright.edu](https://reader035.fdocuments.net/reader035/viewer/2022062300/56649d0b5503460f949def5c/html5/thumbnails/11.jpg)
cs7120 (Prasad) L14-LP 11
GCD : functional vs imperativePrecondition: n > m >= 0
fun gcd(m,n) = if m=0 then n else gcd(n mod m, m);
function gcd(m,n: int) : int; var pm:int; begin while m<>0 do begin pm := m; m := n mod m; n := pm end; return n end;
![Page 12: Cs7120 (Prasad)L14-LP1 Programming Paradigms Logic Programming Paradigm Correctness > Efficiency t.k.prasad@wright.edu](https://reader035.fdocuments.net/reader035/viewer/2022062300/56649d0b5503460f949def5c/html5/thumbnails/12.jpg)
GCD: logicPrecondition: n > m >= 0
gcd(M, N, N):- M = 0.
gcd(M, N, G):- M \= 0, M =< N,
T is N mod M, gcd(T, M, G).
?-gcd(3,4,G)
G = 1;
false
cs7120 (Prasad) L14-LP 12
![Page 13: Cs7120 (Prasad)L14-LP1 Programming Paradigms Logic Programming Paradigm Correctness > Efficiency t.k.prasad@wright.edu](https://reader035.fdocuments.net/reader035/viewer/2022062300/56649d0b5503460f949def5c/html5/thumbnails/13.jpg)
Recursion + Logic Variables• Convenient way of defining functions over
inductively defined sets (e.g., numbers, lists, trees, etc)
• Implicit Stack
• No aliasing problems • Same location cannot be accessed and modified
using two different names
• Use semantics preserving transformations for efficiency
• Role of the interpreter
cs7120 (Prasad) L14-LP 13
![Page 14: Cs7120 (Prasad)L14-LP1 Programming Paradigms Logic Programming Paradigm Correctness > Efficiency t.k.prasad@wright.edu](https://reader035.fdocuments.net/reader035/viewer/2022062300/56649d0b5503460f949def5c/html5/thumbnails/14.jpg)
Progression of values bound to a variable as computation progresses
• Imperative language– Essentially independent (subject to typing
constraints)
• Logic language– Values are in instance-of/sub-structure relation
(general -> specific)
cs7120 (Prasad) L14-LP 14
![Page 15: Cs7120 (Prasad)L14-LP1 Programming Paradigms Logic Programming Paradigm Correctness > Efficiency t.k.prasad@wright.edu](https://reader035.fdocuments.net/reader035/viewer/2022062300/56649d0b5503460f949def5c/html5/thumbnails/15.jpg)
cs7120 (Prasad) L14-LP 15
OOPL: Expressive Power vs Naturalness
Object-oriented techniques do not provide any new computational power that permits problems to be solved that cannot, in theory, be solved by other means (Church-Turing Hypothesis).
But object-oriented techniques do make it easier and more natural to address problems in a fashion that tends to favor the management of large software projects.
![Page 16: Cs7120 (Prasad)L14-LP1 Programming Paradigms Logic Programming Paradigm Correctness > Efficiency t.k.prasad@wright.edu](https://reader035.fdocuments.net/reader035/viewer/2022062300/56649d0b5503460f949def5c/html5/thumbnails/16.jpg)
cs7120 (Prasad) L14-LP 16
Other Benefits of Programming in a Declarative Language
• Abstraction – Convenient to code symbolic computations and
list processing applications.• Meta-programming (which exploits uniform syntax)
• Automatic storage management • Improves program reliability.• Enhances programmer productivity.
• Ease of prototyping using interactive development environments.
• Executable Specification
![Page 17: Cs7120 (Prasad)L14-LP1 Programming Paradigms Logic Programming Paradigm Correctness > Efficiency t.k.prasad@wright.edu](https://reader035.fdocuments.net/reader035/viewer/2022062300/56649d0b5503460f949def5c/html5/thumbnails/17.jpg)
Logic Programming Paradigm(cont’d)
cs7120 (Prasad) L14-LP 17
![Page 18: Cs7120 (Prasad)L14-LP1 Programming Paradigms Logic Programming Paradigm Correctness > Efficiency t.k.prasad@wright.edu](https://reader035.fdocuments.net/reader035/viewer/2022062300/56649d0b5503460f949def5c/html5/thumbnails/18.jpg)
Logic Program
• Integrates data structures with programs
• Involves asserting properties satisfied by relationships among individuals in a logic language
• Computation is logical deduction – make explicit facts that are implicit, that is, are
logical consequence of input
cs7120 (Prasad) L14-LP 18
![Page 19: Cs7120 (Prasad)L14-LP1 Programming Paradigms Logic Programming Paradigm Correctness > Efficiency t.k.prasad@wright.edu](https://reader035.fdocuments.net/reader035/viewer/2022062300/56649d0b5503460f949def5c/html5/thumbnails/19.jpg)
Example
• Prolog Facts (asserting relationships among objects) (cf. ABox)– child(c,p) holds if c is a child of p.
child(tom, john).
child(tom, mary).• Prolog Rules (formalizing relationships) (cf.
TBox)– parent(p,c) holds if p is a parent of c.
parent(P,C) :- child(C,P).cs7120 (Prasad) L14-LP 19
![Page 20: Cs7120 (Prasad)L14-LP1 Programming Paradigms Logic Programming Paradigm Correctness > Efficiency t.k.prasad@wright.edu](https://reader035.fdocuments.net/reader035/viewer/2022062300/56649d0b5503460f949def5c/html5/thumbnails/20.jpg)
Querying as Deduction
?- child(tom, john).– Is Tom a child of John?
?- child(X, john).– List children of John, one by one
?- child(X, Y).– List all child-parent pairs, one by one
?- parent(tom, X).– List children of Tom, one by one
cs7120 (Prasad) L14-LP 20
![Page 21: Cs7120 (Prasad)L14-LP1 Programming Paradigms Logic Programming Paradigm Correctness > Efficiency t.k.prasad@wright.edu](https://reader035.fdocuments.net/reader035/viewer/2022062300/56649d0b5503460f949def5c/html5/thumbnails/21.jpg)
Two definitions of ancestor relation
• Ancestor-relation is the reflexive transitive closure of the parent-relation.
ancestor(X,X).
ancestor(X,Y) :- parent(X,Y).
ancestor(X,Y) :- parent(X,T), ancestor(T,Y).
ancestor(X,X).
ancestor(X,Y) :- parent(X,Y).
ancestor(X,Y) :- ancestor(X,T), ancestor(T,Y).cs7120 (Prasad) L14-LP 21
![Page 22: Cs7120 (Prasad)L14-LP1 Programming Paradigms Logic Programming Paradigm Correctness > Efficiency t.k.prasad@wright.edu](https://reader035.fdocuments.net/reader035/viewer/2022062300/56649d0b5503460f949def5c/html5/thumbnails/22.jpg)
Prolog is not an ideal logic programming language
• In traditional Prolog implementations (e.g., SWI-Prolog), the query ancestor(tom,X) terminates (with correct answers), while the query ancestor(tom,X) does not terminate.
• In tabled Prolog (e.g., XSB), both queries terminate.
• Left-recursion causes a depth-first search strategy to loop for ever, while both breadth-first search and tabling strategy terminate.
cs7120 (Prasad) L14-LP 22
![Page 23: Cs7120 (Prasad)L14-LP1 Programming Paradigms Logic Programming Paradigm Correctness > Efficiency t.k.prasad@wright.edu](https://reader035.fdocuments.net/reader035/viewer/2022062300/56649d0b5503460f949def5c/html5/thumbnails/23.jpg)
cs7120 (Prasad) L14-LP 23
expressivenessmechanization
Logic Programming Paradigm
Knowledge Representation
Knowledge Representation
Theorem Proving
Theorem Proving
Attribute Grammars / Compilers (DCGs)Attribute Grammars / Compilers (DCGs)
Relational DatabasesRelational Databases
Programming Languages
Programming Languages
Problem Solving in AI(i)Search
(ii)Divide and Conquer
Problem Solving in AI(i)Search
(ii)Divide and Conquer
unification
declarativeness
efficiency
Trading expressiveness for efficiency :Executable specification
![Page 24: Cs7120 (Prasad)L14-LP1 Programming Paradigms Logic Programming Paradigm Correctness > Efficiency t.k.prasad@wright.edu](https://reader035.fdocuments.net/reader035/viewer/2022062300/56649d0b5503460f949def5c/html5/thumbnails/24.jpg)
• Knowledge Representation– LP provides a sufficiently rich subset of first-
order logic that is computationally tractable.– Supports non-monotonic reasoning via
negation-by-failure.
• Deductive Databases– LP adds expressive power by extending
relational query language (to support recursion) without sacrificing computational efficiency
• E.g., expression of transitive closure
cs7120 (Prasad) L14-LP 24
![Page 25: Cs7120 (Prasad)L14-LP1 Programming Paradigms Logic Programming Paradigm Correctness > Efficiency t.k.prasad@wright.edu](https://reader035.fdocuments.net/reader035/viewer/2022062300/56649d0b5503460f949def5c/html5/thumbnails/25.jpg)
Divide and Conquer Strategy
• AND-OR Graphs
Goal_k :-
subgoal_1, subgoal_2, …, subgoal_n
…
subgoal_i :- Alt_i1.
subgoal_i :- Alt_i2.
…
subgoal_i :- Alt_im.cs7120 (Prasad) L14-LP 25
![Page 26: Cs7120 (Prasad)L14-LP1 Programming Paradigms Logic Programming Paradigm Correctness > Efficiency t.k.prasad@wright.edu](https://reader035.fdocuments.net/reader035/viewer/2022062300/56649d0b5503460f949def5c/html5/thumbnails/26.jpg)
cs7120 (Prasad) L14-LP 26
![Page 27: Cs7120 (Prasad)L14-LP1 Programming Paradigms Logic Programming Paradigm Correctness > Efficiency t.k.prasad@wright.edu](https://reader035.fdocuments.net/reader035/viewer/2022062300/56649d0b5503460f949def5c/html5/thumbnails/27.jpg)
State-Space SearchinitialState(_).
finalStates(_). …
finalStates(_).
transitions(_,_). …
transitions(_,_).
solved :-
finalStates(Y), reachable(Y).
reachable(Y) :-
initialState(Y).
reachable(Y) :-
transitions(X,Y), reachable(X).
cs7120 (Prasad) L14-LP 27
![Page 28: Cs7120 (Prasad)L14-LP1 Programming Paradigms Logic Programming Paradigm Correctness > Efficiency t.k.prasad@wright.edu](https://reader035.fdocuments.net/reader035/viewer/2022062300/56649d0b5503460f949def5c/html5/thumbnails/28.jpg)
cs7120 (Prasad) L14-LP 28
![Page 29: Cs7120 (Prasad)L14-LP1 Programming Paradigms Logic Programming Paradigm Correctness > Efficiency t.k.prasad@wright.edu](https://reader035.fdocuments.net/reader035/viewer/2022062300/56649d0b5503460f949def5c/html5/thumbnails/29.jpg)
Declarative Programming
cs7120 (Prasad) L14-LP 29
![Page 30: Cs7120 (Prasad)L14-LP1 Programming Paradigms Logic Programming Paradigm Correctness > Efficiency t.k.prasad@wright.edu](https://reader035.fdocuments.net/reader035/viewer/2022062300/56649d0b5503460f949def5c/html5/thumbnails/30.jpg)
Definite Clause Grammars
Program
abcLst -->
abc, abcLst.
abcLst -->
[].
abc --> [a].
abc --> [b].
abc --> [c].
Queries
?-abcLst([b,c],[]).
true
?-abcLst([b,c,d],[]).
false
?-abcLst([b,c,d],[d]).
true
cs7120 (Prasad) L14-LP 30