Three Valued Logic
There is much that we don't explicitly state (often for brevity, but sometimes because we genuinely do not know), so finding a way to reason over propositions using an open world assumption is needed: what isn't stated should be assumed as maybe.
There are many variations of three value logics, but all of them assume that propositions can take three values:
- false and
Kleene's K3 and Priest's P3 logic have the same truth values for the unary connector:
And binary connectors:
|p||q||p or q||p and q||p => q||p <=> q||p xor q|
Notably, only lines 1, 2, 4 and 5 are exactly the ones in zeroth order logic, since p and q don't assume values of maybe.
A logical formula is considered a tautology if it evaluates to a designated truth value in every possible interpretation.
K3 and P3, however, differ in how tautologies are defined. In K3, only true is a designed truth value, whereas in P3, both true and maybe are. So, K3 does not have any tautologies, while P3 has the same tautologies as classical two-valued logic.
For example, p or ~p is a tautology in P3 but it is not in K3.
|p||~p||p or ~p|
Because of that, P3 has the same tautologies as classical two-valued logic whereas K3 has none.
q are logically equivalent when
p <=> q is a tautology (i.e. true regardless of the values of
For example, take the double negation tautology:
~~p <=> p is
maybe regardless of the value of
|p||~p||~~p||~~p <=> p|
Do you think the other equivalences of two-valued logic are kept?
Implications are tautologies where you establish a sufficiency
=> but not a necessity
For example, from the following premises:
p => q
Can we conclude
q? That is, does
(p and p => q) => q?
If modus ponens was a tautology in P3, you'd be able to enumerate all possible interpretation of
q and verify that it is true or maybe for any permutation.
|p||q||p => q||(p and p => q)||(p and p => q) => q|
Rules of Deduction
Recall that in the two-valued propositional logic the implication could also be written as "not (p and not q)" and "(not a) or b":
|p||q||p => q||not (p and not q)||(not a) or b|
But if we take that to the three-valued logic, we get:
|p||q||p => q||not (p and not q)||(not p) or q|
Which, by my calculation, seems to match up.
* same here
So, more to follow!