File: SIMPLE_DISJ_CASES.doc

package info (click to toggle)
hol-light 20170109-1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 36,568 kB
  • ctags: 8,549
  • sloc: ml: 540,018; cpp: 439; lisp: 286; java: 279; makefile: 262; sh: 229; yacc: 108; perl: 78; ansic: 57; sed: 39
file content (44 lines) | stat: -rw-r--r-- 1,184 bytes parent folder | download | duplicates (4)
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 SIMPLE_DISJ_CASES

\TYPE {SIMPLE_DISJ_CASES : thm -> thm -> thm}

\SYNOPSIS
Disjoins hypotheses of two theorems with same conclusion.

\DESCRIBE
The rule {SIMPLE_DISJ_CASES} takes two `case' theorems with alpha-equivalent
conclusions and returns a theorem with the first hypotheses disjoined:
{

              A u {{p}} |- r    B u {{q}} |- r
         ----------------------------------------- SIMPLE_DISJ_CASES
           (A - {{p}}) u (B - {{q}}) u {{p \/ q}} |- r
}
To avoid dependency on the order of the hypotheses, it is only recommended when
each theorem has exactly one hypothesis:
{
         {{p}} |- r    {{q}} |- r
      ---------------------------- SIMPLE_DISJ_CASES
              {{p \/ q}} |- r
}
For more sophisticated or-elimination, use {DISJ_CASES}.

\FAILURE
Fails if the conclusions of the theorems are not alpha-equivalent.

\EXAMPLE
{
  # let [th1; th2] = map (UNDISCH o TAUT)
      [`~p ==> p ==> q`; `q ==> p ==> q`];;
  ...
  val th1 : thm = ~p |- p ==> q
  val th2 : thm = q |- p ==> q

  # SIMPLE_DISJ_CASES th1 th2;;
  val it : thm = ~p \/ q |- p ==> q
}

\SEEALSO
DISJ_CASES, DISJ_CASES_TAC, DISJ_CASES_THEN, DISJ_CASES_THEN2, DISJ1, DISJ2.

\ENDDOC