# Three Valued Logic

Another thing that has been bothering me greatly about Zeroth Order Logic is that it makes a closed world assumption: what isn’t stated is assumed to be **false**.

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:

**true**,**false**and**maybe**.

# Connectives

Kleene’s K3 and Priest’s P3 logic have the same truth values for the unary connector:

p | ~p |
---|---|

F | T |

T | F |

? | ? |

And binary connectors:

p | q | p or q | p and q | p => q | p <=> q | p xor q |
---|---|---|---|---|---|---|

F | F | F | F | T | T | F |

F | T | T | F | T | F | T |

F | ? | ? | F | T | ? | ? |

T | F | T | F | F | F | T |

T | T | T | T | T | T | F |

T | ? | T | ? | ? | ? | ? |

? | F | ? | F | ? | ? | ? |

? | T | T | ? | T | ? | ? |

? | ? | ? | ? | ? | ? | ? |

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**.

# Tautologies

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 |
---|---|---|

F | T | T |

T | F | T |

? | ? | ? |

Because of that, P3 has the same tautologies as classical two-valued logic whereas K3 has none.

# Equivalences

Two propositions `p`

and `q`

are logically equivalent when `p <=> q`

is a tautology (i.e. **true** regardless of the values of `p`

and `q`

).
For example, take the **double negation** tautology: `~~p <=> p`

is `true`

or `maybe`

regardless of the value of `p`

:

p | ~p | ~~p | ~~p <=> p |
---|---|---|---|

F | T | F | T |

T | F | T | T |

? | ? | ? | ? |

Do you think the other equivalences of two-valued logic are kept?

# Implications

Implications are tautologies where you establish a sufficiency `=>`

but not a necessity `<=`

.

For example, from the following premises:

`p`

**and**`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 `p`

and `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 |
---|---|---|---|---|

F | F | T | F | T |

F | T | T | F | T |

F | ? | T | F | T |

T | F | F | F | T |

T | T | T | T | T |

T | ? | ? | ? | ? |

? | F | ? | F | T |

? | T | T | ? | T |

? | ? | ? | ? | ? |

# 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 |
---|---|---|---|---|

F | F | T | T | T |

F | T | T | T | T |

T | F | F | F | F |

T | T | T | T | T |

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 |
---|---|---|---|---|

F | F | T | T | T |

F | T | T | T | T |

F | ? | T | T | T |

T | F | F | F | F |

T | T | T | T | T |

T | ? | ? | ? | ? |

? | F | ? | ? | ? |

? | T | T | T | T |

? | ? | ? | ? | ? |

Which, by my calculation, seems to match up.

It is said, though, that **modus ponens** (and others) cannot be used as a rule of deduction in P3 (which seems embarrasingly limiting)*, which makes me wonder if we we defined implications imprecisely.

* same here

WDYT?

So, more to follow!