Sad news: Herb Simon, the most important founder of artificial intelligence, died today. He won the Turing award in 1975 and the Nobel prize in economics in 1978. He was born in 1916 and an active professor in many departments at Carnegie Mellon University from 1949 until today.
Today and next week we'll be talking about first-order logic. For a more formal presentation of this topic, the book Logic and Structure by Dirk Van Dalen, published by Springer, is especially recommended.
For an online reference, see the slides based on Chapter 4 of Logic for Mathematics and Computer Science by Stanley Burris, Prentice Hall, 1998, available here.
For the history of first-order logic and an overview of what research
in mathematical logic is about, see the article on Formal
Logic in the Encyclopedia Britannica.
A KBS is a software system that contains a great quantity of knowledge, e.g. facts like "CSE100 is a prerequisite for CSE151."
Nowadays, many KBSs are not identified as such to the user. As with other technologies inside and outside AI, the technology of KBSs has lost its magic and become routine. For an example of a very simple web-based expert system that is not identified as such, see the E-Loan mortgage recommender.
Typically KBSs do not contain all the knowledge that a human who is an expert in the same domain would possess. The varieties of knowledge that a human expert possesses can be classified as follows:
We shall talk about the practicalities of KBSs later. Our topic now will be the mathematical foundation of many KBSs, namely first-order logic, and how to use it to express factual knowledge explicitly.
A KBS uses reasoning algorithms to make deductions from its knowledge to solve a particular problem like "Which courses should Martha take this quarter?" We shall also study these algorithms.
The leading advocate of knowledge-based systems is Edward
A. Feigenbaum, a professor at Stanford and Chief Scientist of the U.S.
Air Force from 1994 to 1997. Feigenbaum was the 1994 winner of the
Turing award.
Remember that a proposition is a primitive sentence, i.e. a fact. In the predicate calculus propositions are "decomposed" into predicates and arguments.
A predicate is a relationship such as loves. An argument is an object such as a person. Objects are a primitive notion, in the same way that propositions are primitive in propositional logic. A constant is a name for an object, e.g. John.
So in predicate calculus a proposition might be loves(Mary,John) and a compound sentence might be loves(Mary,John) & loves(John,Mary)
Predicates allow us to talk about properties of single objects and relationships between two or more objects. A predicate applied to argument objects yields a truth value.
First-order logic does not allow us to state knowledge that is
perceptual or procedural. It also cannot represent knowledge that
is declarative but numerical, probabilistic, or tentative. We shall
look at formalisms for these types of knowledge later.
Every variable is "universal" or "existential", meaning that it refers to all objects or at least one.
A quantifier is a symbol that introduces a variable and says whether it is universal or existential. The universal quantifier is an upside-down A, written "forall" in ascii. The existential quantifier is a backwards E, written "exists" in ascii.
Every variable in a sentence must be introduced by a quantifier. For example: forall x loves(Mary,x) says "for every semantic object, call it x, Mary loves x"
A more plausible sentence is forall x isacat(x) -> loves(Mary,x)
which says "for every semantic object, call it x, if x is a cat then Mary
loves x." The majority of universally quantified sentences that are
true are implications.
A "term" is any syntactic expression that designates an object. As a name, we say that "Mary" is a primitive term, i.e. a constant-symbol. Compound terms are made up of function-symbols applied to constant-symbols, e.g. "father(Mary)".
The function-symbol "father" is the name of a function that maps semantic objects to semantic objects.
A function maps a fixed number of objects to another object. For example, + is a binary function: it maps two objects to one object.
A predicate maps a fixed number of objects to a truth value (true or false).
We covered the following notions: