In ordinary English (one direction)
If not A and not B, then not (A or B)
Proof: Suppose not A and not B, and also suppose A or B; we will derive a contradiction. There are two cases. If A holds, then since not A, we have a contradiction. Similarly, if B holds, then since not B, we also have a contradiction. Thus we have a contradiction in either case, so not (A or B)
Type theory translation
( implicates what remains to be done) Goal: find a element of type (see Translation)
Suppose not and not :
- use pattern matching: find a function where and
- OR use recursor: find a function
Also suppose or :
- find a function
There are two cases:
- use pattern matching:
- OR use recursor:
Our eventual definition: - (note that we can write 0 here because 0 is a type, we have to construct an element of 0 (from elimination)) -
We now try to prove the other direction: Goal: find a element of type
let be a element of this type. with with and with
Restrictions
The rule “If not (A and B), then (not A) or (not B)” is not valid: we cannot, in general, construct an element of the corresponding type This is because we do not have LEM (law of excluded middle: ) (we also does not deny LEM)
The propositions-as-types logic of type theory is constructive We cannot always determine a proposition has a proof or not. we can only construct those propositions with a computational meaning.
LEM
we may consistently add it as an assumption, and work conventionally without restriction