Logic Programming Lecture 8: Term manipulation & Meta-programming.

Slides:



Advertisements
Similar presentations
Artificial Intelligence: Natural Language and Prolog
Advertisements

First Order Logic Logic is a mathematical attempt to formalize the way we think. First-order predicate calculus was created in an attempt to mechanize.
Computer Science CPSC 322 Lecture 25 Top Down Proof Procedure (Ch 5.2.2)
Logic Programming Lecture 9: Constraint logic programming.
Logic Programming Lecture 1: Getting started. Getting started We’ll use SICStus Prolog Free for UofE students Available on all DICE machines
SLD-resolution Introduction Most general unifiers SLD-resolution
Cs7120 (Prasad)L22-MetaPgm1 Meta-Programming
Prolog.
11/10/04 AIPP Lecture 6: Built-in Predicates1 Combining Lists & Built-in Predicates Artificial Intelligence Programming in Prolog Lecturer: Tim Smith Lecture.
Prolog The language of logic. History Kowalski: late 60’s Logician who showed logical proof can support computation. Colmerauer: early 70’s Developed.
1 Introduction to Prolog References: – – Bratko, I., Prolog Programming.
1 Logic Programming. 2 A little bit of Prolog Objects and relations between objects Facts and rules. Upper case are variables. parent(pam, bob).parent(tom,bob).
A Third Look At Prolog Chapter Twenty-TwoModern Programming Languages, 2nd ed.1.
Logic Programming Lecture 3: Recursion, lists, and data structures.
INTRODUCTION TO PROLOG. PROLOG BASICS Atoms - most primitive terms that the language manipulates start with lower case letter includes strings (‘inside.
CPSC 422, Lecture 21Slide 1 Intelligent Systems (AI-2) Computer Science cpsc422, Lecture 21 Mar, 4, 2015 Slide credit: some slides adapted from Stuart.
About prolog  History  Symbolic Programming Language  Logic Programming Language  Declarative Programming Language.
META-INTERPRETERS AND META-PROGRAMMING Ivan Bratko Faculty of Computer and Info. Sc. Univ. of Ljubljana.
TCP1211-Logic Programming Control and Side Effects Programming Faculty of Information Technology Multimedia University.
UNIVERSITY OF SOUTH CAROLINA Department of Computer Science and Engineering Controlling Backtracking Notes for Ch.5 of Bratko For CSCE 580 Sp03 Marco Valtorta.
UNIVERSITY OF SOUTH CAROLINA Department of Computer Science and Engineering More Built-in Predicates Notes for Ch.7 of Bratko For CSCE 580 Sp03 Marco Valtorta.
Catriel Beeri Pls/Winter 2004/5 type reconstruction 1 Type Reconstruction & Parametric Polymorphism  Introduction  Unification and type reconstruction.
© Patrick Blackburn, Johan Bos & Kristina Striegnitz Lecture 9: A closer look at terms Theory –Introduce the == predicate –Take a closer look at term structure.
Logic Programming Part 2: Semantics James Cheney CS 411.
Introduction to Logic for Artificial Intelligence Lecture 2 Erik Sandewall 2010.
(9.1) COEN Logic Programming  Logic programming and predicate calculus  Prolog statements  Facts and rules  Matching  Subgoals and backtracking.
Prolog Programming Lecture Module 13. Objective ● What is Prolog? ● Prolog program ● Syntax of Prolog ● Prolog Control Strategy ● Execution of Prolog.
Formal Models of Computation Part II The Logic Model
FATIH UNIVERSITY Department of Computer Engineering Controlling Backtracking Notes for Ch.5 of Bratko For CENG 421 Fall03.
Introduction to Prolog Terms & Matching Math. Atoms and Terms n mark, alex, di, bob are atoms –Not variables –Not strings –Just things – simple things.
Logics for Data and Knowledge Representation Propositional Logic: Reasoning Originally by Alessandro Agostini and Fausto Giunchiglia Modified by Fausto.
CS 321 Programming Languages and Compilers Prolog part 2.
Logic Programming Programming Lecture 1: Getting started with Prolog.
CS 403: Programming Languages Lecture 19 Fall 2003 Department of Computer Science University of Alabama Joel Jones.
Computational Complexity Theory Lecture 2: Reductions, NP-completeness, Cook-Levin theorem Indian Institute of Science.
14/10/04 AIPP Lecture 7: The Cut1 Controlling Backtracking: The Cut Artificial Intelligence Programming in Prolog Lecturer: Tim Smith Lecture 7 14/10/04.
Chapter Twenty-ThreeModern Programming Languages1 Formal Semantics.
F28PL1 Programming Languages Lecture 16: Prolog 1.
Lecture 9: Constraint logic programming
Formal Semantics Chapter Twenty-ThreeModern Programming Languages, 2nd ed.1.
CSC 270 – Survey of Programming Languages Prolog Lecture 2 – Unification and Proof Search.
1 Knowledge Based Systems (CM0377) Lecture 3 (Last modified 5th February 2001)
1 Prolog and Logic Languages Aaron Bloomfield CS 415 Fall 2005.
Programming Languages. A Logic Programming Language: Prolog This lesson describes the basic structures and functions of the logic programming language:
PROLOG SYNTAX AND MEANING Ivan Bratko University of Ljubljana Faculty of Computer and Info. Sc. Ljubljana, Slovenia.
CS4026 Formal Models of Computation Part II The Logic Model Lecture 2 – Prolog: History and Introduction.
Logic Programming and Prolog Goal: use formalism of first-order logic Output described by logical formula (theorem) Input described by set of formulae.
Ch. 13 Ch. 131 jcmt CSE 3302 Programming Languages CSE3302 Programming Languages (notes?) Dr. Carter Tiernan.
© Patrick Blackburn, Johan Bos & Kristina Striegnitz Lecture 9: A closer look at terms Theory –Introduce the == predicate –Take a closer look at term structure.
CPSC 422, Lecture 21Slide 1 Intelligent Systems (AI-2) Computer Science cpsc422, Lecture 21 Oct, 30, 2015 Slide credit: some slides adapted from Stuart.
Computer Science CPSC 322 Lecture 22 Logical Consequences, Proof Procedures (Ch 5.2.2)
1 Knowledge Based Systems (CM0377) Lecture 6 (last modified 20th February 2002)
David Evans CS200: Computer Science University of Virginia Computer Science Lecture 15: Intractable Problems (Smiley.
Semantics of Predicate Calculus For the propositional calculus, an interpretation was simply an assignment of truth values to the proposition letters of.
Introduction to Prolog What if all we could do was to make assertions (statements) about the world? Example: family tree parent(linda, simon).male(simon).
In The Name Of Allah Lab 03 1Tahani Aldweesh. objectives Searching for the solution’s. Declaration. Query. Comments. Prolog Concepts. Unification. Disjunction.
1 Knowledge Based Systems (CM0377) Lecture 9 (Last modified 11th April 2002)
Prolog 3 Tests and Backtracking 1. Arithmetic Operators Operators for arithmetic and value comparisons are built-in to Prolog = always accessible / don’t.
Logic Programming Lecture 8: Term manipulation & Meta-programming.
Chapter 2 Syntax and meaning of prolog programs Part 1.
Logic Programming Lecture 6: Parsing and Definite Clause Grammars.
Logic Programming Lecture 7: Search Strategies:
Prolog Fundamentals. 2 Review Last Lecture A Prolog program consists of a database of facts and rules, and queries (questions). –Fact:.... –Rule:... :-....
Logic Programming Lecture 8: Term manipulation & Meta-programming.
Logic Programming Lecture 2: Unification and proof search.
Decision Procedures in First Order Logic
Introduction to Logic for Artificial Intelligence Lecture 2
Prolog syntax + Unification
Chapter 2 Syntax and meaning of prolog programs
Presentation transcript:

Logic Programming Lecture 8: Term manipulation & Meta-programming

James CheneyLogic ProgrammingNovember 14, 2010 Outline for today Special predicates for examining & manipulating terms var, nonvar, functor, arg, =.. Meta-programming call/1 Symbolic programming Prolog self-interpretation

James CheneyLogic ProgrammingNovember 14, 2010 var/1 and nonvar/1 var(X) holds var(a) does not hold nonvar(X) does not hold nonvar(a) holds None of these affects binding

James CheneyLogic ProgrammingNovember 14, 2010 Other term structure predicates nonvar/1 atomic/1 atom/1a,b,ac,... number/1 integer/1...,-1,0,1,2,3... float/10.1,10.42,... f(X,a) []

James CheneyLogic ProgrammingNovember 14, 2010 Structural equality The ==/2 operator tests whether two terms are exactly identical Including variable names! (No unification!) ?- X == X. yes ?- X == Y. no

James CheneyLogic ProgrammingNovember 14, 2010 Structural comparison \==/2: tests that two terms are not identical ?- X \== X. no ?- X \== Y. yes

James CheneyLogic ProgrammingNovember 14, 2010 functor/3 Takes a term T, gives back the atom and arity ?- functor(a,F,N). F = a N = 0 ?- functor(f(a,b),F,N). F = f N = 2

James CheneyLogic ProgrammingNovember 14, 2010 arg/3 Given a number N and a complex term T Produce the Nth argument of T ?- arg(1,f(a,b),X). X = a ?- arg(2,f(a,b),X). X = b

James CheneyLogic ProgrammingNovember 14, 2010 =../2 ("univ") We can convert between terms and "universal" representation ?- f(a,f(b,c)) =.. X. X = [f,a,f(b,c)] ?- F =.. [g,a,f(b,c)]. F = g(a,f(b,c))

James CheneyLogic ProgrammingNovember 14, 2010 call/1 Given a Prolog term G, solve it as a goal ?- call(append([1],[2],X)). X = [1,2]. ?- read(X), call(X). |: member(Y,[1,2]). X = member(1,[1,2])

James CheneyLogic ProgrammingNovember 14, 2010 Call + =.. Can do some evil things... callwith(P,Args) :- Atom =.. [P|Args], call(Atom). map(P,[],[]). map(P,[X|Xs],[Y|Ys]) :- callwith(P,[X,Y]), map(P,Xs,Ys) plusone(N,M) :- M is N+1. ?- map(plusone,[1,2,3,4,5],L). L = [2,3,4,5,6].

James CheneyLogic ProgrammingNovember 14, 2010 Symbolic programming Logical formulas prop(true). prop(false). prop(and(P,Q)) :- prop(P), prop(Q). prop(or(P,Q)) :- prop(P), prop(Q). prop(imp(P,Q)) :- prop(P), prop(Q). prop(not(P)) :- prop(P).

James CheneyLogic ProgrammingNovember 14, 2010 Formula simplification simp(and(true,P),P). simp(or(false,P),P). simp(imp(P,false), not(P)). simp(imp(true,P), P). simp(and(P,Q), and(P1,Q)) :- simp(P,P1)....

James CheneyLogic ProgrammingNovember 14, 2010 Satisfiability checking Given a formula, find a satisfying assignment for the atoms in it Assume atoms given [p 1,...,p n ]. A valuation is a list [(p 1,true|false),...] gen([],[]). gen([P|Ps], [(P,V)|PVs]) :- (V=true;V=false), gen(Ps,PVs).

James CheneyLogic ProgrammingNovember 14, 2010 Evaluation sat(V,true). /* V is a valuation */ sat(V,and(P,Q)) :- sat(V,P), sat(V,Q). sat(V,or(P,Q)) :- sat(V,P) ; sat(V,Q). sat(V,imp(P,Q)) :- not (sat(V,P)) ; sat(V,Q). sat(V,not(P)) :- not(sat(V,P)). sat(V,P) :- atom(P), member((P,true),V).

James CheneyLogic ProgrammingNovember 14, 2010 Satisfiability Generate a valuation V (Ps is a list of propositional symbols in V) Test whether it satisfies Q (a formula) satisfy(Ps,Q,V) :- gen(Ps,V), sat(V,Q). (On failure, backtrack & try another valuation)

James CheneyLogic ProgrammingNovember 14, 2010 Prolog in Prolog Represent definite clauses rule(Head,[Body,....,Body]). A Prolog interpreter in Prolog: prolog(Goal) :- rule(Goal,Body), prologs(Body) prologs([]). prologs([Goal|Goals]) :- prolog(Goal), prologs(Goals).

James CheneyLogic ProgrammingNovember 14, 2010 Example rule(p(X,Y), [q(X), r(Y)]). rule(q(1)). rule(r(2)). rule(r(3)). ?- prolog(p(X,Y)). X = 1 Y = 2

James CheneyLogic ProgrammingNovember 14, 2010 OK, but so what? Prolog interpreter already runs programs... Self-interpretation is interesting because we can examine or modify behavior of interpreter.

James CheneyLogic ProgrammingNovember 14, 2010 Witnesses Produce proof trees showing which rules were used prolog_pf(Goal,[Tag|Proof]) :- rule_pf(Goal,Body,Tag), prologs_pf(Body,Proof). prologs_pf([],[]). prologs_pf([Goal|Goals],[Proof|Proofs]) :- prolog_pf(Goal,Proof), prologs_pf(Goals,Proofs).

James CheneyLogic ProgrammingNovember 14, 2010 Rules with "justifications" rule_pf(p(1,2), [], rule1). rule_pf(p(X,Y), [q(X), r(Y)], rule2). rule_pf(q(1),[],rule3). rule_pf(r(2),[],rule4). rule_pf(r(3),[],rule5).

James CheneyLogic ProgrammingNovember 14, 2010 Witnesses "Is there a proof of p(1,2) that doesn't use rule 1?" ?- prolog_pf(p(1,2),Prf), not (member(rule1,Prf)). Prf = [rule2,rule3, rule4].

James CheneyLogic ProgrammingNovember 14, 2010 Other applications Tracing Can implement trace/1 this way Declarative debugging Given an error in output, "zoom in" on input rules that were used These are likely to be the ones with problems

James CheneyLogic ProgrammingNovember 14, 2010 Further reading: LPN, ch. 9 Bratko, ch. 23 Next time Constraint logic programming Course review