Logic Programming and Prolog
This presentation, led by John Xu on November 9, 2004, at McMaster University, covers the fundamentals of Logic Programming and Prolog. It discusses essential concepts such as the prerequisites for degree attainment in CAS, the structure of logic sentences, and example implementations using Prolog—illustrating the ancestor relationship through a set of rules and queries. The presentation also dives into the SLD-resolution mechanism, covering unification, soundness, completeness, and other key principles. Resources for further learning are included to enhance understanding.
Logic Programming and Prolog
E N D
Presentation Transcript
Logic Programming and Prolog Presenter: John Xu Date: Nov 09, 2004 CAS 701, McMaster
Logic Programming – Example Suppose we have the following sentences 1) A graduate student of CAS must take the core course CAS 701 2) A student can not obtain a degree without passing the required core course I am a graduate student of CAS and want to obtain a degree, should I pass CAS 701? CAS 701, McMaster
Logic Programming – Example Structured solution: S: Being a graduate student of CAS T: Taking core course CAS 701 O: Obtaining a degree P: Passing required core course Σ: S => T, ¬P => ¬O, S Λ O Logic consequence: T Λ P CAS 701, McMaster
Logic Programming – Definition • Logic programming is a declarative approach of writing computer programs based on Logic • Prolog, which stands for PROgramming in LOGic, is the most widely available logic programming language CAS 701, McMaster
/* Filename: ancestor.pro This program creates a small set of facts and rules on who is the ancestor of whom. The user types the desired goal interactively when the program is run.*/ /* ancestor(A, B) means A is an ancestor of B */ ancestor(bob, susan). ancestor(A, X) :- parent(A, X). ancestor(A, X) :- parent(A, C), ancestor(C, X). /* parent(P, C) means P is a parent of C */ parent(fred, sally). parent(tina, sally). parent(sally, diane). parent(sam, bill). CAS 701, McMaster
Logic Programming – Prolog Query Queries: • ancestor(fred, sally). Yes • ancestor(fred, diane). Yes • ancestor(fred, bill). No CAS 701, McMaster
Logic Programming – Implementation SLD-Resolution (inference mechanism) • Unification: a procedure that takes two atomic formulas as input, and either shows how they can be instantiated to identical atoms or, reports a failure • An SLD-derivation of G0 (using P and <) is a finite or infinite sequence of goals: g0->g1->g2…->gn … • SLD-refutation: a finite derivation of the goal g0 • Failed derivation: a derivation of the goal g0 with the last element that is not empty and cannot be resolved by any clause of the program CAS 701, McMaster
Logic Programming – Implementation • Soundness of SLD-resolution • Completeness of SLD-resolution • Cut: Pruning the SLD-tree CAS 701, McMaster
Logic Programming – Reference Book: • Ralph P. Grimaldi, DISCRETE AND COMBINATORIAL MATHEMATICS, 5TH ED, Pearson Education, 2004 • Ulf Nilsson and Jan Ma luszy_nski, LOGIC, PROGRAMMING AND PROLOG, 2ND ED, Ulf Nilsson and Jan Ma luszy_nski, 2000 Web: • http://cis.stvincent.edu/carlsond/prolog.html • http://ktiml.mff.cuni.cz/~bartak/prolog/index.html • http://www.cs.auckland.ac.nz/~j-hamer/07.363/prolog-for-se.html • http://www.swi-prolog.org/ CAS 701, McMaster