Tecnologia
A Tutorial Introduction
James Lu Jerud J. Mead
Computer Science Department Bucknell University Lewisburg, PA 17387
1
Contents
1 Introduction 2 Easing into Prolog 2.1 Logic Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 The SWI-Prolog Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 A Closer Look at Prolog 3.1 Facts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3 Computation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Lists in Prolog 1 2 2 3 6 6 6 7 12
5 Data Input in Prolog 17 5.1 Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 5.2 Building a Tokenizer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 6 Parsing 6.1 Low-level Parsing with Prolog . 6.2 High-level Parsing with Prolog 6.3 Parsing Expressions . . . . . . 6.4 Parsing Optional Structures . . 7 Building a Symbol Table 8 Prolog Semantics - The Computational 8.1 Unification . . . . . . . . . . . . . . . 8.2 Resolution . . . . . . . . . . . . . . . . 8.3 Queries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 22 22 24 25 27 Model 32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
i
1
Introduction
Logic programming is a programming paradigm based on mathematical logic. In this