Many people have seen formal proofs only during courses
in logic. Most such courses begin with rules in which
the propositional connectives and
correspond to
the natural language connectives ``and'',``or'',``not'' and ``implies'',
respectively. If the nature of propositions is left
unanalyzed except for their propositional structure, and if
the unanalyzed parts are denoted by variables such as P, Q and R,
then the resulting forms are called
propositional formulas.
For example,
is an instance of a propositional formula.
Let us take a propositional formula which we recognize to be true and
analyze why we believe it. We will then
translate the argument into Nuprl
. Consider
the formula
.
We argue for its truth in the following fashion.
If we assume
then we
need to show
.
Supposing
is also
true, we need to show
;
that is, we must
show that P is true if Q is. Therefore assume Q is true.
Now we know
,
so we can consider two cases;
if we establish the truth of P in each case then we have
finished the proof.
In the first case, where P is true, we are done immediately.
If
is true, then because
holds we know that
is true, for
that is the meaning of
implication.
Therefore, both Q and
follow from our assumptions.
This, of course, is a contradiction, and since
from a contradiction we can derive anything,
P again is true.
This finishes the argument.
To formalize this argument we use the definitions
given in chapter 3 of the constructive propositional connectives
and of all.
We also recognize that to say P and
Q are arbitrary propositions can be taken to mean that they are
arbitrary members of the universe .
A reasonable formalization of the assertion to be proved, then,
is
all P:U1. all Q:U1. (P|~P) => (~P=>~Q) => (Q=>P).
Following are a few snapshots from a session in which this theorem is proved. Note the similarity between the steps of the formal proof and the steps of the informal proof given above. In the first two windows below, we see the use of the intro rule as the formal analogue of the ``assume'' or ``suppose'' of the informal argument.
,--------------------------------------, |EDIT THM prop1 | |--------------------------------------| |# top 1 | |1. P:(U1) | |>> (all Q:U1. | | (P|~P)=>(~P=>~Q)=>(Q=>P)) | | | |BY intro at U2 | | | |1# 1. P:(U1) | | 2. Q:(U1) | | >> ( (P|~P)=>(~P=>~Q)=>(Q=>P) ) | | | |2* 1. P:(U1) | | >> (U1) in U2 | '--------------------------------------'
,--------------------------------------, |EDIT THM prop1 | |--------------------------------------| |# top 1 1 1 | |1. P:(U1) | |2. Q:(U1) | |3. (P|~P) | |>> (~P=>~Q)=>(Q=>P) | | | |BY intro at U1 | | | |1# 1. P:(U1) | | 2. Q:(U1) | | 3. (P|~P) | | 4. (~P=>~Q) | | >> (Q=>P) | | | |2* 1. P:(U1) | | 2. Q:(U1) | | 3. (P|~P) | | >> (~P=>~Q) in U1 | '--------------------------------------'
In the main goal of the next window is the result of five consecutive intros. The step shown below uses elim to do the case analysis of the informal argument.
,----------------------------------------------, |EDIT THM prop1 | |----------------------------------------------| |# top 1 1 1 1 1 | |1. P:(U1) | |2. Q:(U1) | |3. (P|~P) | |4. (~P=>~Q) | |5. Q | |>> P | | | |BY elim 3 | | | |1* 1. P:(U1) | | 2. Q:(U1) | | 3. (P|~P) | | 4. (~P=>~Q) | | 5. Q | | 6. P | | >> P | | | |2# 1. P:(U1) | | 2. Q:(U1) | | 3. (P|~P) | | 4. (~P=>~Q) | | 5. Q | | 6. ~P | | >> P | '----------------------------------------------'
In the main goal of the next window we see that the conclusion follows from hypotheses 4, 5 and 6. To use hypothesis 4 we elim it.
,---------------------------,--------------------------, |EDIT THM prop1 |EDIT rule of prop1 | |---------------------------|--------------------------| |# top 1 1 1 1 1 2 |elim 4 | |1. P:(U1) | | |2. Q:(U1) | | |3. (P|~P) | | |4. (~P=>~Q) | | |5. Q | | |6. ~P | | |>> P '--------------------------' | | |BY <refinement rule> | '-----------------------------------------------'
Nuprl will then require us to prove P, which is trivial since it is a hypothesis, and then to prove P given the new hypothesis Q, which is also trivial, since we will have two contradictory hypotheses. The auto--tactic will handle both of these subgoals. This completes the proof.
The preceding proof gave a few examples of
the application of intro and elim rules to propositional
formulas. A more complete account is given in figure
, which shows a set of rules for the
constructive propositional
calculus in a format suitable to a refinement logic, with the
premises (subgoals) below the conclusion (goal).
If a goal has the form of one of the goals
in the table, then specifying
intro or elim
as the Nuprl
rule will generate
the subgoals shown
with the exception that => intro will have a
second subgoal, P in U1, which will usually be proved
by the auto--tactic.
The hypotheses shown in the
goals of the elim rules will in general be
surrounded by other hypotheses, and in
all of the rules the entire hypothesis list is copied to the
subgoals with any new hypotheses added to the end.
Recall that P is really P => false, so rules
dealing with negation can be derived from the given rules.
Figure: Refinement Rules for the Constructive Propositional Logic