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