Foundation of logic historically dates back to the times of Aristotle,
who pioneered the concept of truth/falsehood paradigm in reasoning.
Mathematical logic of propositions and predicates, which are based on
the classical models of Aristotle, underwent a dramatic evolution during
the last 50 years for its increasing applications in automated reasoning
on digital computers. The subject of Logic Programming is concerned with
automated reasoning with facts and knowledge to answer a user's query
following the syntax and semantics of the logic of
propositions/predicates. The credit of automated reasoning by logic
programs goes to Professor Robinson for his well-known resolution
theorem that provides a general scheme to select two program clauses for
deriving an inference. Until now Robinson's theorem is being used in
PROLOG/DATALOG compilers to automatically build a Select Linear Definite
(SLD) clause based resolution tree for answering a user's query. The
SLD-tree based scheme for reasoning undoubtedly opened a new era in
logic programming for its simplicity in implementation in the compilers.
In fact, SLD-tree construction suffices the need for users with a
limited set of program clauses. But with increase in the number of
program clauses, the execution time of the program also increases
linearly by the SLD-tree based approach. An inspection of a large number
of logic programs, however, reveals that more than one pair of program
clauses can be resolved simultaneously without violating the syntax and
the semantics of logic programming. This book employs this principle to
speed up the execution time of logic programs.