Suppose you have a database, of any type: SQL, NoSQL, not-yet-SQL, a spreadsheet, a bunch of CSV files, or a shoebox full of post-it notes.
I would argue that the database represents a bag (multiset) of facts; even if it does not look like that, it can be verbalized as such.
Let’s name this bag of facts: Γ.
Consider a case when two of these facts contradict each other.
Suppose that in Γ we find a fact: today is Monday; then another fact that states: today is Friday. Let’s see if I can formalize this:
A = Today is Monday. B = Today is Friday. B ⊢ ¬A Γ ⊢ B ----------------- (e1) Γ ⊢ A Γ ⊢ ¬A ------------------------- (i1) Γ ⊢ (A ∧ ¬A)
Rule e1 states that B entails (not A) and given that Γ entails B, from Γ we can conclude that (not A) is true. Rule i1 states that Γ entails A is true and (not A) is true, so we conclude that (A and not A) is true.
According to the database, both propositions — today is Monday, and today is not Monday — are true; hence the contradiction.
Nonsense
There is a problem with contradiction and reasoning. Let’s introduce a proposition, a pure nonsense: pigs can fly.
A,B ∈ Γ A = Today is Monday. B = Today is Friday. N = Pigs can fly. Γ ⊢ B B ⊢ ¬A ---------------------- (e1) Γ ⊢ ¬A Γ ⊢ A ----------- (i2) Γ ⊢ ¬A Γ ⊢ (A ∨ N) ---------------------- (e4) Γ ⊢ N
Rule i2 states that given that Γ entails A is true, we can conclude that (A or N) is true; this is simple: (true or x) evaluates to true.
According to the rule e4, Γ entails A is false, and (A or N) is true; hence from Γ we conclude that N must be true.
Note that initially the proposition N did not come from Γ, but the conclusion that N is true does.
Summary
In general, for a database Γ having a proposition (fact) A that can be considered true and false at the same time, the following holds:
A ∈ Γ, Γ ⊢ (A ∧ ¬A) A = Any fact. N = Any nonsense. Γ ⊢ (A ∧ ¬A) ----------- (e2) Γ ⊢ (A ∧ ¬A) Γ ⊢ A ----------- (e3) ----------- (i2) Γ ⊢ ¬A Γ ⊢ (A ∨ N) ------------------------------ (e4) Γ ⊢ N
This is called the principle of explosion, and is usually stated as: “from contradiction anything follows”. I prefer a bit more dramatic version:
Contradiction leads to nonsense.
How does a contradiction enter a database? Is it possible to prevent it? What are the consequences, if any? About all that, in the remainder of this series.