# Differences between basic, complex and terminological facts in a Knowledge Base using First-Order Logic

I've been reading the excellent book Knowledge Representation and Reasoning by Ronald Brachman and Hector Levesque.

In the beginning of Section 3.2 "Vocabulary" of Chapter 3 "Expressing Knowledge" they state:

In creating a KB (Knowledge Base) it is a good idea to start with the set of domain-dependent predicates and functions that provide the basis for the facts about the KB's domain.

In the same section these facts are separated in three categories:

• Basic facts
• Complex facts
• Terminological facts

After reading the entire chapter I could not entirely understand the differences between these types of facts.

Can someone help me to understand the differences in these concepts?

In §3.2 they distinguish between the following four grammatical categories, with some examples:

Predicates: Woman, Rich, Beautiful, Bankrupt
Functions: fatherOf, bestFriendOf, ceoOf
Individual constants: maryJones, johnQSmith, tomsHouse


In the background they have first-order logic with identity, which means they allow for quantification only over individual variables. Within this machinery, in §§ 3.3–5 they introduce the three types of facts.

Basic facts are the atomic sentences and their negations.

The atomic sentences are those sentences which are made of:

1. a [predicate] + an [individual]. E.g.: Woman(maryJones)
2. an n-ary [relation] + n [individual]s. E.g.: Loves(maryJones, tomsHouse)
3. an [individual] + "=" + an [individual]. E.g.: maryJones = marySmith

Note that functions applied to individual constants also denote individuals (e.g., fatherOf(maryJones) is some individual), that's why clauses (1–3) include the word 'individual' rather than 'individual constant' so as to allow also for functional expressions denoting individuals. The negations of atomic sentences are defined as follows: a sentence ¬S is a negation of an atomic sentence iff S is an atomic sentence.

Complex facts are the basic facts closed under boolean connectives and quantifiers.

That's just a fancy way of saying that: (i) basic facts are complex facts, and (ii) if φ and ψ are complex facts, then ¬φ, (φ ∧ ψ), (φ ∨ ψ), (φ → ψ), and ∀xφ are also complex facts. They give the following example of a complex fact on p. 34: ∀y[Rich(y) ∧ Man(y) → Loves(y, jane)] (every rich man loves Jane).

Beware that on p. 36 they list sentences like "jane ¬= john" among complex facts, suggesting that they're not basic facts. But they are. I suspect that's why you've been having hard time seeing the difference between the types. By the definition of basic facts (see above), sentences like "jane ¬= john" are considered basic, because they're the negations of atomic sentences such as "jane = john".

Terminological facts are complex facts taken to be axiomatically or definitionally true.

A better term for them would be "definitional facts" or "meaning postulates" (as Rudolf Carnap calls them). Consider the predicate Man. If someone is a man, we know, without having to see this person, that he is not a woman; it's definitionally true! We capture that logical relationship between predicates Man and Woman with the terminological fact: ∀x[Man(x) → ¬Woman(x)]. That is only one example of a terminological fact; more can be found on pages 36–7. They're pretty straightforward to understand.

Hope this helps clarify the distinction.