File: STRIP_THM_THEN.doc

package info (click to toggle)
hol88 2.02.19940316dfsg-5
  • links: PTS
  • area: main
  • in suites: bookworm
  • size: 65,816 kB
  • sloc: ml: 199,939; ansic: 9,666; sh: 6,913; makefile: 6,032; lisp: 2,747; yacc: 894; sed: 201; cpp: 87; awk: 5
file content (70 lines) | stat: -rw-r--r-- 2,305 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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
\DOC STRIP_THM_THEN

\TYPE {STRIP_THM_THEN : thm_tactical}

\SYNOPSIS
{STRIP_THM_THEN} applies the given theorem-tactic using the result of
stripping off one outer connective from the given theorem.

\KEYWORDS
theorem-tactic.

\DESCRIBE
Given a theorem-tactic {ttac}, a theorem {th} whose conclusion is a
conjunction, a disjunction or an existentially quantified term, and a goal
{(A,t)}, {STRIP_THM_THEN ttac th} first strips apart the conclusion of {th},
next applies {ttac} to the theorem(s) resulting from the stripping and then
applies the resulting tactic to the goal.

In particular, when stripping a conjunctive theorem {A'|- u /\ v}, the tactic
{
   ttac(u|-u) THEN ttac(v|-v)
}
\noindent resulting from applying {ttac} to the conjuncts, is applied to the
goal.  When stripping a disjunctive theorem {A'|- u \/ v}, the tactics
resulting from applying {ttac} to the disjuncts, are applied to split the goal
into two cases. That is, if
{
    A ?- t                           A ?- t
   =========  ttac (u|-u)    and    =========  ttac (v|-v)
    A ?- t1                          A ?- t2
}
\noindent then:
{
         A ?- t
   ==================  STRIP_THM_THEN ttac (A'|- u \/ v)
    A ?- t1  A ?- t2
}
\noindent When stripping an existentially quantified theorem {A'|- ?x.u}, the
tactic {ttac(u|-u)}, resulting from applying {ttac} to the body of the
existential quantification, is applied to the goal.  That is, if:
{
    A ?- t
   =========  ttac (u|-u)
    A ?- t1
}
\noindent then:
{
      A ?- t
   =============  STRIP_THM_THEN ttac (A'|- ?x. u)
      A ?- t1
}
The assumptions of the theorem being split are not added to the assumptions of
the goal(s) but are recorded in the proof.  If {A'} is not a subset of the
assumptions {A} of the goal (up to alpha-conversion), {STRIP_THM_THEN ttac th}
results in an invalid tactic.

\FAILURE
{STRIP_THM_THEN ttac th} fails if the conclusion of {th} is not a conjunction,
a disjunction or an existentially quantified term.  Failure also occurs if the
application of {ttac} fails, after stripping the outer connective from the
conclusion of {th}.

\USES
{STRIP_THM_THEN} is used enrich the assumptions of a goal with a stripped
version of a previously-proved theorem.

\SEEALSO
CHOOSE_THEN, CONJUNCTS_THEN, DISJ_CASES_THEN, STRIP_ASSUME_TAC.

\ENDDOC