Clause and Effect Prolog Programming for the Working Programmer

This book is for people who have done some programming, either in Prolog or in a language other than Prolog, and who can find their way around a reference manual. The emphasis of this book is on a simplified and disciplined methodology for discerning the mathematical structures related to a problem,...

Full description

Bibliographic Details
Main Author: Clocksin, William F.
Format: eBook
Language:English
Published: Berlin, Heidelberg Springer Berlin Heidelberg 1997, 1997
Edition:1st ed. 1997
Subjects:
Online Access:
Collection: Springer Book Archives -2004 - Collection details see MPG.ReNa
Table of Contents:
  • 1. Getting Started
  • 1.1 Syntax
  • 1.2 Programs
  • 1.3 Unification
  • 1.4 Execution Model
  • 2. Data Structures
  • 2.1 Square Bracket Notation
  • 2.2 Arithmetic
  • 3. Mapping
  • Worksheet 10: Full Maps
  • Worksheet 11: Multiple Choices
  • Worksheet 12: Partial Maps
  • Worksheet 13: Removing Duplicates
  • Worksheet 14: Partial Maps with a Parameter
  • Worksheet 15: Multiple Disjoint Partial Maps
  • Worksheet 16: Multiple Disjoint Partial Maps
  • Worksheet 17: Full Maps with State
  • Worksheet 18: Sequential Maps with State
  • Worksheet 19: Scattered Maps with State
  • 4. Choice and Commitment
  • 4.1 The ‘Cut’
  • 4.2 A Disjoint Partial Map with Cut
  • 4.3 Taming Cut
  • 4.4 Cut and Negation-as-Failure
  • 4.5 Negation-as-Failure Can Be Misleading
  • 5. Difference Structures
  • Worksheet 25: Concatenating Lists
  • Worksheet 26: Rotations of a List
  • Worksheet 27: Linearising
  • 5.1 Difference Lists
  • 5.2 Solution to Max Tree
  • 6. Case Study: Term Rewriting
  • 6.1 Symbolic Differentiation
  • 6.2 Matrix Products by Symbolic Algebra
  • 6.3 The Simplifier
  • 7. Case Study: Manipulation of Combinational Circuits
  • 7.1 Representing Circuits
  • 7.2 Simulation of Circuits
  • 7.3 Sums and Products
  • 7.4 Simplifying SOP Expressions
  • 7.5 Alternative Representation
  • 8. Case Study: Clocked Sequential Circuits
  • 8.1 Divide-by-Two Pulse Divider
  • 8.2 Sequential Parity Checker
  • 8.3 Four-Stage Shift Register
  • 8.4 Gray Code Counter
  • 8.5 Specification of Cascaded Components
  • 9. Case Study: A Compiler forThree Model Computers
  • 9.1 The Register Machine
  • 9.2 The Single-Accumulator Machine
  • 9.3 The Stack Machine
  • 9.4 Optimisation: Preprocessing the Syntax Tree
  • 9.5 Peephole Optimisation
  • 10. Case Study: The Fast Fourier Transform in Prolog
  • 10.1 Introduction
  • 10.2 Notation for Polynomials
  • 10.3 The DFT
  • 10.4Example: 8-point DFT
  • 10.5 Naive Implementation of the DFT
  • 10.6 From DFT to FFT
  • 10.7 Merging Common Subexpressions
  • 10.8 The Graph Generator
  • 10.9 Example Run: 8-point FFT
  • 10.10 Bibliographic Notes
  • 11. Case Study: Higher-Order Functional Programming
  • 11.1 Introduction
  • 11.2 A Notation for Functions
  • 11.3 The Evaluator
  • 11.4 Using Higher-Order Functions
  • 11.5 Discussion
  • 11.6 Bibliographic Notes