author | paulson |
Tue, 16 Jul 1996 15:49:46 +0200 | |
changeset 1868 | 836950047d85 |
parent 1820 | e381e1c51689 |
child 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); |
|
13 |
by (rtac (surjective_pairing RS ssubst) 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"; |