author | paulson |
Wed, 13 Nov 1996 10:47:08 +0100 | |
changeset 2183 | 8d42a7bccf0b |
parent 2031 | 03a843f0f447 |
permissions | -rw-r--r-- |
1465 | 1 |
(* Title: HOL/ex/lex-prod.ML |
969 | 2 |
ID: $Id$ |
1465 | 3 |
Author: Tobias Nipkow, TU Munich |
969 | 4 |
Copyright 1993 TU Munich |
5 |
||
6 |
For lex-prod.thy. |
|
7 |
The lexicographic product of two wellfounded relations is again wellfounded. |
|
8 |
*) |
|
9 |
||
972
e61b058d58d2
changed syntax of tuples from <..., ...> to (..., ...)
clasohm
parents:
969
diff
changeset
|
10 |
val prems = goal Prod.thy "!a b. P((a,b)) ==> !p.P(p)"; |
969 | 11 |
by (cut_facts_tac prems 1); |
12 |
by (rtac allI 1); |
|
2031 | 13 |
by (stac surjective_pairing 1); |
1820 | 14 |
by (Fast_tac 1); |
969 | 15 |
qed "split_all_pair"; |
16 |
||
17 |
val [wfa,wfb] = goalw LexProd.thy [wf_def,LexProd.lex_prod_def] |
|
18 |
"[| wf(ra); wf(rb) |] ==> wf(ra**rb)"; |
|
19 |
by (EVERY1 [rtac allI,rtac impI, rtac split_all_pair]); |
|
20 |
by (rtac (wfa RS spec RS mp) 1); |
|
21 |
by (EVERY1 [rtac allI,rtac impI]); |
|
22 |
by (rtac (wfb RS spec RS mp) 1); |
|
1820 | 23 |
by (fast_tac (!claset addSEs [Pair_inject]) 1); |
969 | 24 |
qed "wf_lex_prod"; |