1 - Logic Programming: A Case Study
Published online by Cambridge University Press: 12 January 2010
Summary
A semantics of logic programming can be derived from the Skolem-Herbrand-Gödel Theorem of the first-order predicate calculus.
We trace the developments which led to logic programming from automations of theorem proving which used this fundamental result, especially those based on the resolution principle. We also discuss some criteria by which logic programming can be considered to be a programming language, and some of its limitations.
This case study motivates our approach to higher-order logic programming: a higher-order Skolem-Herbrand-Gödel Theorem would give a basis for a more expressive logic programming language.
From Theorem Provers to Logic Programming
A main task of automated theorem provers is to find whether or not a formula An+1 is a logical consequence of a conjunction of formulas A1 Λ … Λ An. For first-order classical logic [28], this is a recursively undecidable problem in general [25, 26], however there are semi-decision procedures for testing the validity of a formula which will halt if the formula being tested is valid, but may not halt if the formula is not valid.
Automated theorem provers have been used to answer questions such as “Does there exist a finite semigroup which simultaneously admits a non-trivial antiautomorphism without admitting a non-trivial involution?” [202], to prove Cantor's Theorem [9] and others in set theory, and to verify the correctness of a microprocessor [33].
The Skolem-Herbrand-Gödel Theorem
A fundamental result used in some of these procedures is the Skolem-Herbrand-Gödel Theorem [125].
- Type
- Chapter
- Information
- The Clausal Theory of Types , pp. 1 - 16Publisher: Cambridge University PressPrint publication year: 1993