File: NOT_MP.doc

package info (click to toggle)
hol88 2.02.19940316-28
  • links: PTS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 65,924 kB
  • ctags: 21,595
  • sloc: ml: 199,939; ansic: 9,666; sh: 7,118; makefile: 6,075; lisp: 2,747; yacc: 894; sed: 201; cpp: 87; awk: 5
file content (44 lines) | stat: -rw-r--r-- 1,300 bytes parent folder | download | duplicates (11)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
\DOC NOT_MP

\TYPE {NOT_MP : (thm -> thm -> thm)}

\SYNOPSIS
Implements the Modus Ponens inference rule and 
takes negation as an implication.

\KEYWORDS
rule, modus ponens, implication, negation.

\DESCRIBE
When applied to theorems {A1 |- t1 ==> t2} and {A2 |- t1},
the inference rule {NOT_MP} returns the theorem {A1 u A2 |- t2}.
{
    A1 |- t1 ==> t2   A2 |- t1
   ----------------------------  NOT_MP
          A1 u A2 |- t2
}
\noindent This is the same as the primitive inference rule {MP}.
However, the first theorem can also be a negation. In such case,
{NOT_MP} automatically transforms it to an implication with {F} as
conclusion. 
{
    A1 |- ~ t     A2 |- t
   ----------------------- NOT_MP
       A1 u A2 |- F
}
\FAILURE
Fails unless the first theorem is an implication whose antecedent is the
same as the conclusion of the second theorem (up to alpha-conversion),
or it is a negation.

\COMMENTS
The rule {MP} used to behave as what is described in this page due to
some historical reasons. Now, {MP} is the true primitive rule
implementing Modus Ponens. {NOT_MP} is introduced to implement the old
{MP}. The use of {NOT_MP} is discouraged. If the input theorem is
expected to be a negation, use {(MP o NOT_ELIM)}.

\SEEALSO
MP, EQ_MP, LIST_MP, MATCH_MP, MATCH_MP_TAC, MP_TAC.

\ENDDOC