Book review
Agostino Dovier
Dip. di Matematica e Informatica,
Univ. di Udine (IT).
Set Theory for Computing:
From Decision Procedures to Declarative Programming with Sets
Domenico Cantone, Eugenio Omodeo, and Alberto Policriti
Monographs in Computer Science, Springer-Verlag, 2001
ISBN 0-387-95197-0, hardcover, $ 69.95
xviii + 409 pages
http://turing.dipmat.unict.it/
cantone/SetTheoryForComputing
This book is an up-to-date and well-organized
collection of techniques and results concerning the problem of
dealing with sets in computer science.
Being an intuitive and widespread notion,
sets are commonly used by scientists for formalizing
problems.
Thus, this notion can be included as a first-class citizen
in a programming language, allowing a set-based declarative style of
programming.
However, when implementing such a language,
one need to face satisfiability problems involving
set-based formulas.
Set-based notations can be naturally used to assign abstract semantics to
programs: verification of program properties
in this case amounts at checking the satisfiability of a set-based formula.
Moreover, it is well-known that
Modal/Temporal logics can serve as a tool for program verification.
Satisfiability in these logics can be mapped into set-based
satisfiability (such a translation technique is described in the book).
Thus, it goes without saying that
a good starting point for dealing with sets in computer
science is to study the satisfiability test
for set-based formulae. Although this problem is
in general undecidable, finding decidable classes of
formulas whose test is decidable
and finding suitable axiomatizations for them
are two challenging activities
and they are the main concern of the so-called
Computable Set Theory (CST) area.
The authors of the book have worked in this field
for nearly twenty years and they are
co-authors of most of the results and techniques presented.
However, the book does not only deal with CST, but also
with inference techniques suitable for reasoning with sets
(e.g.,
-resolution, Semantic tableaux) and
with programming languages developed for dealing with sets
(in particular, the imperative language
SETL and the constraint logic programming language {log}).
The book presents several algorithms
written in these languages and, moreover,
it is described how common programming data structures can be
naturally encoded in set theory.
Jacob T. Schwartz, the undisputed father of CST, writes in his excellent
foreword to the book:
``this range of mathematical investigation must be approached with a
cautious respect for the bottomless pit of undecidability that lies near.''
Thus, it is not astonishing that some parts of the book are, for their
intrinsic nature, rather difficult and addressed prevailingly to mature readers.
In particular, the book can be very interesting for
postgraduate students and researchers in computer science and logic.
Graduate students can also cheat fruitful ideas from the reading of
the general parts of the book and can learn a lot by carring out some
of the several proposed exercises.
The book is largely self-contained and
the style of presentation is extremely rigorous and accurate.
Nevertheless, some more examples could help the
comprehension of some, extremely concise, definitions.
The book consists of 14 chapters, divided into four parts:
- I.
- Introduction
- 1.
- What is Computable Set Theory?
- 2.
- Logical Background
- II.
- Basics for Set-Theoretic Reasoning
- 3.
- Axiomatic Views of Aggregates
- 4.
- Semantic Views of Aggregates
- 5.
- Sets for Problem Solving
- 6.
- Decision Problems and Some Solutions
- 7.
- Inference Techniques and Methods
- III.
- Decision Methods
- 8.
- Set/Hyperset Unification Algorithms
- 9.
- A Syllogistic Solitaire
- 10.
- Stratified Syllogistics
- IV.
- Set-specific Inference Engines
- 11.
- Quantitative Set Reasoning
- 12.
- Set Theory for Nonclassic Logics
- 13.
- Logic Programming with Sets
- 14.
- Syllogistic Tableaux
In this part of the book the authors describe
what is Computable Set Theory and its possible impact on
``traditional'' computer science (Chapter 1).
Chapter 2 presents
the propositional calculus, the first-order calculus, and
the (perhaps less known) ``map'' calculus.
I appreciate very much the complete descriptions
of the algorithms for reaching normal forms
(often only sketched in logic surveys): for propositional
calculus, how to obtain an equisatisfiable disjunctive/conjunctive
normal form avoiding inessential size
exponential growth; for first-order calculus, how eliminating
quantifiers using Skolem functors (this part can be also read together
with Section 6.3.1: ``Reduction to prenex normal form'').
I find very instructive the inclusion of
the Hilbert descriptor
(
means ``an
s.t.'')
and of the Peano descriptor
(
means ``the
s.t.'')
in the set of quantifiers.
This part touches on several foundamental issues and takes up
more or less half of the book. In Chapters 3 and 4 the notion
of ``aggregate'' is presented both axiomatically and semantically.
Aggregate is a term that embodies the notion of set as well as
some possible variants of it emerging from different axiomatizations.
For instance, it can be used to address in one word sets, multisets, and
lists.
In Chapter 5 the authors show how to use sets for implementing tuples,
graphs, functions, deterministic and non-deterministic automata.
Moreover, some interesting puzzles are encoded in set-based formalisms,
some classical algorithms are implemented in (tiny) SETL,
and the notion of ``declarative specification'' is presented.
Section 5.6 deals with ``Sets for Program Verification''. The section
is very interesting but it lacks of a comparison to the similar approach
of the community of ``Set Constraints'', born and developed with that
specific aim.
Chapter 6 presents the satisfiability and validity problem for set-based
formulas and the main classes of formulas that have been successfully faced
in the past, while Chapter 7 introduces the notion of
-resolution.
In
-resolution, syntactic unification can be
replaced by a more complex inference mechanism (e.g.,
a simple set-based theorem prover) in the derivation step
and it is therefore well-suited for set-based reasoning.
Moreover, semantic tableaux are
introduced (they are used next in the book for decision methods).
The chapter also presents a
self-contained, quite traditional, introduction to
logic programming.
In Chapter 8 the authors present the set and hyperset-unification problem
and some algorithms for solving it: a guess and verify
method that works with few changes in the two cases,
and a goal-driven method for each problem.
Chapter 9 is labeled by (*) and addressed, using the words of the
authors, to ``more mature readers'': the decision problem for a
class of formulas is presented as a (syllogistic) game.
Chapter 10 is devoted to show algorithms for solving the
satisfiability problem for ``stratified'' sets. Basically,
sets in this case can have elements that are non-sets (level 1).
Then there are sets that can have as elements sets of level 1 and
other, possibly different, non-sets (level 2), and so on.
Several classes involving particular operators are studied.
In Chapter 11 it is shown how to transform the satisfiability
problem for a class of set-formulas into a problem of integer linear
programming. Since decision algorithms for sets are often intractable,
one can take advantage from the efficiency of branch-and-bound,
cutting planes, or approximated methods developed for this field.
Chapter 12 presents modal logics and the so-called
-as-
translation of propositional modal formulas into set terms.
This chapter establishes an important link between CST and the
typical applications of modal/temporal logics, e.g.,
analysis and verification of programs and reactive systems.
In Chapter 13 the authors present the constraint logic programming
language {log} and show its expressive power on some examples.
In the ``Commentary'' at the end of the chapter they also
give references to the recent development of that language
(also known as
, being now an instance of
the CLP scheme) whose running implementation can be freely obtained
from the Web.
Chapter 14 shows the elegance of tableaux-like methods for proving
decidability of the class of formulas known as MLSS (and of some
of its extensions). It looks very promising both for proving new
results and for restating known decidability results in a
general framework.
The book is a deep and self-contained collection of
topics concerning Sets in Computer Science and,
in particular, a general and up-to-date survey
of Computable Set Theory. I guess that it will become a
sort of classic work for automated deduction and declarative
programming and surely it deserves to find its place in all
scientific libraries.
The book is supported by a WWW page which contains
the solution of some exercises, the implemented code,
an errata corrige list, and various related material.
The book contains a very long list of references (more than 250 items)
and several historical quotations that allow the interested reader
to increase his knowledge of the history of set
theory and automated deduction.