Controlling Backtracking : Cuts

Slides:



Advertisements
Similar presentations
CS4026 Formal Models of Computation Part II The Logic Model Lecture 6 – Arithmetic, fail and the cut.
Advertisements

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Lecture 10: Cuts and Negation Theory –Explain how to control Prolog`s backtracking behaviour with.
SLD-resolution Introduction Most general unifiers SLD-resolution
1 Introduction to Prolog References: – – Bratko, I., Prolog Programming.
Answer Set Programming Overview Dr. Rogelio Dávila Pérez Profesor-Investigador División de Posgrado Universidad Autónoma de Guadalajara
1 Knowledge Based Systems (CM0377) Lecture 8 (Last modified 5th March 2001)
Prolog OR (disjunction) “;” is same as a logical OR “;” is same as a logical OR It is also equivalent to using separate clauses... It is also equivalent.
CS 2104 – Prog. Lang. Concepts Final wrap-up Dr. Abhik Roychoudhury School of Computing.
Cs774 (Prasad)L7Negation1 Negation by Failure
MB: 2 March 2001CS360 Lecture 31 Programming in Logic: Prolog Prolog’s Declarative & Procedural Semantics Readings: Sections
CMPT 354, Simon Fraser University, Fall 2008, Martin Ester 52 Database Systems I Relational Algebra.
UNIVERSITY OF SOUTH CAROLINA Department of Computer Science and Engineering Controlling Backtracking Notes for Ch.5 of Bratko For CSCE 580 Sp03 Marco Valtorta.
Introduction to Logic for Artificial Intelligence Lecture 2 Erik Sandewall 2010.
Notes for Chapter 12 Logic Programming The AI War Basic Concepts of Logic Programming Prolog Review questions.
FATIH UNIVERSITY Department of Computer Engineering Controlling Backtracking Notes for Ch.5 of Bratko For CENG 421 Fall03.
CS 2104 – Prog. Lang. Concepts Logic Programming - II Dr. Abhik Roychoudhury School of Computing.
Cs7120 (Prasad)L16-Meaning1 Procedural and Declarative Meaning of Prolog
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.
Logical Inference 2 rule based reasoning
1 COMP 205 Introduction to Prolog Dr. Chunbo Chu Week 14.
Prolog Program Style (ch. 8) Many style issues are applicable to any program in any language. Many style issues are applicable to any program in any language.
Resolution Strategies One common strategy for applying resolution is called level saturation. Here you try to resolve every pair of clauses from the original.
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.
Cs774 (Prasad)L6Backtracking1 Controlling Backtracking : Cuts
Negation Chapter 5. Stating Negative Conditions n Sometimes you want to say that some condition does not hold n Prolog allows this –not/1this is a predicate.
CSE (c) S. Tanimoto, 2008 Predicate Calculus II 1 Predicate Calculus 2 Outline: Unification: definitions, algorithm Formal interpretations and satisfiability.
1 Section 8.3 Higher-Order Logic A logic is higher-order if it allows predicate names or function names to be quantified or to be arguments of a predicate.
In The Name Of Allah Lab 03 1Tahani Aldweesh. objectives Searching for the solution’s. Declaration. Query. Comments. Prolog Concepts. Unification. Disjunction.
Answer Extraction To use resolution to answer questions, for example a query of the form  X C(X), we must keep track of the substitutions made during.
Logic Programming Lecture 8: Term manipulation & Meta-programming.
Logic Programming Lecture 8: Term manipulation & Meta-programming.
Logic Programming Lecture 2: Unification and proof search.
Cs7120 (Prasad)L26-ProgTech1 Programming Techniques
1 TP #4: Control Facilities n Last TP exercises solved; n Don’t care variables « _ »; n Or « ; »; n Cut.
CS589 Principles of DB Systems Fall 2008 Lecture 4c: Query Language Equivalence Lois Delcambre
Adding Probabilities 12-5
Prolog Programming.
Introduction to Logic for Artificial Intelligence Lecture 2
Logical Inference 2 Rule-based reasoning
CSC Modeling with FD Constraints
Prolog a declarative language
For Wednesday Read “lectures” 7-10 of Learn Prolog Now:
Prolog: Control, Negation and Cut
Predicate Calculus Discussion #14 Chapter 2, Section 1 1/20.
Discussion #14 Predicate Calculus
Artificial Intelligence Chapter 17 Knowledge-Based Systems
Knowledge-Based Systems Chapter 17.
Artificial Intelligence Chapter 17 Knowledge-Based Systems
Logical Inference 2 Rule-based reasoning
Built-in Predicates cs774 (Prasad) L8BuiltIns.
CS 1502 Formal Methods in Computer Science
Prolog a declarative language
Prolog syntax + Unification
Prolog: cut & fail © Patrick Blackburn, Johan Bos & Kristina Striegnitz.
Prolog a declarative language
Predicate Calculus Discussion #14 Chapter 2, Section 1.
Prolog a declarative language
CSE (c) S. Tanimoto, 2004 Unification
CSE S. Tanimoto Unification
Programming Paradigms and Languages
Artificial Intelligence Chapter 17. Knowledge-Based Systems
Programming Techniques
CSE (c) S. Tanimoto, 2002 Unification
Artificial Intelligence Chapter 17 Knowledge-Based Systems
Predicate Calculus. Predicate Calculus Topics Predicates Variables and instantiation Quantifiers Logical expressions Bound and free variables.
Compilers Principles, Techniques, & Tools Taught by Jing Zhang
First Order Probabilistic Inference, by David Poole (2003)
Logic Programming Part 3: Control Flow
Logical Inference 4 wrap up
Presentation transcript:

Controlling Backtracking : Cuts t.k.prasad@wright.edu http://www.knoesis.org/tkprasad/ cs7120 (Prasad) L19-Backtracking

Motivation Efficiency by preventing needless backtracking Cf. CFL Parsing Lookaheads vs Backtracking vs Dynamic programming Avoiding duplicates or resatisfaction Prolog as programming language Tailoring control strategy Production language parser : linear General parser : cubic cs7120 (Prasad) L19-Backtracking

Efficiency Cut Preventing backtracking when faced with mutually disjoint cases sign(X, positive) :- X > 0. sign(X, negative) :- X < 0. sign(X, zero). cs7120 (Prasad) L19-Backtracking

(cont’d) Good use of cut if declarative reading preserved In general, reordering of clauses may not preserve the declarative meaning. sign(X, positive) :- X > 0, !. sign(X, negative) :- X < 0, !. sign(X, zero). cs7120 (Prasad) L19-Backtracking

Green Cut vs Red Cut A use of a cut which improves only efficiency of a program, without altering its declarative meaning, is referred to as a green cut. In practice, prunes away irrelevant proofs, or proofs bound to fail. In practice, use them when mutually exclusive cases occur, or if non-determinism can be minimized. cs7120 (Prasad) L19-Backtracking

p(f(_),_,_) :- q1(…), …, qn(…). Green Cut vs Red Cut A use of a cut that alters the declarative meaning of a program is referred to as a red cut. In practice, eliminates unwanted logical solutions Note that mature Prolog implementations index clauses for a predicate on the principal functor of the first argument in the head of a clause thereby reducing non-determinism. p(f(_),_,_) :- q1(…), …, qn(…). Program : index on pred sym and first arg choose order of args to exploit this MetaProgram: index o n pred sym cs7120 (Prasad) L19-Backtracking

Implementing Conditional “p(x) :- if c(x) then r(x) else q(x)” p(X) :- c(X), !, r(X). p(X) :- q(X). In this case, reordering of clauses changes the meaning. cs7120 (Prasad) L19-Backtracking

Avoiding Duplicates member(X,[X|L]) :- !. member(X,[_|L]) :- member(X,L). Without cut, the goal ?- member(a, [a, a, a]) will succeed thrice. Note that with cut member-predicate cannot be used to generate/enumerate elements in a list. That is, invertibility is destroyed. cs7120 (Prasad) L19-Backtracking

Bugs with Cuts min(X, Y, X) :- X =< Y, !. min(X, Y, Y). Flaw: the goal ?- min(3,6,6) does not fail. Reason: min(3,6,6) does not unify with min(X,Y,X). Fix : change first rule to: min(X, Y, Z) :- X =< Y,!,Z = X. Important to specify the way calls should be made Expected: Min(?in,?in,^out)  Answer extraction Trouble: Min(?in,?in,?in) - verification MODE DECLARATION cs7120 (Prasad) L19-Backtracking

Effect of Cut Matching Rule: H :- B1, B2, …, Bm,!, …, Bn. Goal: ?-G. When “!” is encountered, the bindings for variables in goals B1, …,Bm, and G are frozen. That is, alternate solutions to B1, …, Bm, and remaining alternatives for G are discarded. Note that the ordering of body literals and clauses becomes significant in the presence of cut. cs7120 (Prasad) L19-Backtracking

Effect of Cut p(X) :- q(X), r(X), !, s(X). p(d). Declarative Reading (ignoring cut): { p(d)} Procedural reading (using cut): { p(d)} ?- p(X). -> one solution ?- p(a). -> no ?- p(d). -> yes p(X) vs p(a) /\ p(d) Declarative meaning essentially same answer all through Procedural meaning keeps changing depending on whether cut is executed or not cs7120 (Prasad) L19-Backtracking

Effect of Cut p(X) :- q(X), r(X), !, s(X). p(d). Additional Facts: {q(a),r(a),s(a)} Declarative Reading : { p(a), p(d)} Procedural reading : { p(a)} ?- p(X). -> X = a ?- p(a). -> yes ?- p(d). -> yes p(X) vs p(a) /\ p(d) cs7120 (Prasad) L19-Backtracking

(cont’d) p(X) :- q(X), r(X), !, s(X). p(d). Additional Facts: {q(b),s(b)} Declarative Reading (ignoring cut): { p(d)} Procedural reading (using cut): { p(d)} ?- p(X). -> X = d ?- p(b). -> no ?- p(d). -> yes p(X) vs p(a) /\ p(d) cs7120 (Prasad) L19-Backtracking

(cont’d) p(X) :- q(X), r(X), !, s(X). p(d). Additional Facts: {q(c),r(c)} Declarative Reading : { p(d)} Procedural reading : { } ?- p(X). -> no ?- p(c). -> no ?- p(d). -> yes p(X) vs p(a) /\ p(d) cs7120 (Prasad) L19-Backtracking

(cont’d) p(X) :- q(X), r(X), !, s(X). p(d). Additional Facts: {q(a),r(a),s(a), q(b),r(b),s(b)} ?- p(X). Declarative Reading (ignoring cut): { p(a), p(b), p(d)} Procedural reading (using cut): { p(a)} p(X) vs p(a) /\ p(d) cs7120 (Prasad) L19-Backtracking

Disadvantages of Cut Destroys the declarative reading : Need to know the behavior of the interpreter to understand the meaning (“side-effects”) p :- a, b. p :- c. p :- a, !, b. cuts useful in programming specialized reasoners cs7120 (Prasad) L19-Backtracking

Conditional vs Cut tp(X,Y) :- q(X) -> r(Y) ; s(Y). tp(m,m). tp(n,n). is not equivalent to sp(X,Y) :- q(X),!,r(Y). sp(X,Y) :- s(Y). sp(m,m). sp(n,n). q(a). q(c). r(e). r(f). s(g). s(h). p(X) vs p(a) /\ p(d) cs7120 (Prasad) L19-Backtracking

(cont’d) ?- tp(X,Y). ?- sp(X,Y). X = a Y = e X = a Y = f X = m Y = m X = n Y = n Local cut ?- sp(X,Y). X = a Y = e X = a Y = f sp-goal is not resatisfied for sp-facts because of the cut. cs7120 (Prasad) L19-Backtracking

Other uses of Cut Implementing default or otherwise clause. a(X,Y) :- p1(X), !, q1(X,Y). … a(X,Y) :- pn(X), !, qn(X,Y). a(X,Y) :- r(X,Y). Cut-Fail combination to formalize conditions under which failure is guaranteed. a(X) :- p(X), !, fail. cs7120 (Prasad) L19-Backtracking