Logical Foundation of Logic Programming
Logic programming is an approach to computer science in which the first order predicate logic is used as a high level programming language. The use of symbolic logic as a programming language has a history of not more than thirty years, but the study of the symbolic logic goes back to the work of Aristotle in the fourth century B. C. First Order Predicate Logic is a branch of symbolic logic that has evolved largely in the twentieth century.
The history of logic programming started with symbolic logic, and then First Order Predicate Logic emerged from symbolic logic to form the base for Logic Programming. The history of logic programming can be classified into three eras. The first era was the era of the pioneers in founding a symbolic language. The real development of the symbolic logic occurred in the second era, where the third era is the era of transition from symbolic logic to logic programming.
In each of the three eras many people contributed to the journey of developing Logic Programming, but we are going to mention only those who had deep influence on this development.
Early Ideas of Symbolic Logic
What is now known as traditional logic began at the time of Aristotle over 22 centuries ago. Aristotle work was assembled by his students after his death in 322 B. C. Aristotle attempted to codify the knowledge into scientific system. His work is best understood as a theoretical study of successful reasoning techniques. Syllogism was Aristotle major reasoning technique to reach a rational conclusion. The syllogism is a set of rules governing what conclusion can be reached from a set of statements written in four statement forms.
Based on the syllogism, students of Aristotle were able to isolate principles of deductive inference on a restricted form of statements called propositions. A proposition is any statement that can be assigned a truth value. Aristotle approach to logic became sacred, especially in the Middle Ages that no one even considered trying to improve until the seventeenth century.
In unpublished writings, Leibniz (1646-1716) expressed his doubt about the perfection of Aristotelian logic. Leibniz found certain points where the syllogism seemed to be wrong or incomplete. Leibniz wrote about a new, universal language of mathematical logic to replace the syllogism. He anticipated that such a language would be able to solve philosophical problems in a mechanical way, and thereby bring peace to the world. He imagined a time when two people having a disagreement would, instead of fighting, use this language to calculate the answer to their problem. Leibniz universal language suggested by the idea of decomposing concepts into "prime factors".
Leibniz distinguished universal language from logical calculus and desired to base his language on a thorough analysis of speech. He categorized the speech into various, tenses, suffixes, prefixes, etc. This categorization of speech into parts considered being an early anticipation of modern theories of syntactical categories. In saying that nouns express ideas and verbs express propositions Leibniz radically altered the Aristotelian logic, and gave the concept of a prepositional function. Leibniz distinction of speech into ideas and propositions led him to reduce adverbs to adjectives and adjectives to nouns. Leibniz regarded copula as the fundamental verb.