equal
deleted
inserted
replaced
|
1 (* Title: HOLCF/Discrete1.ML |
|
2 ID: $Id$ |
|
3 Author: Tobias Nipkow |
|
4 Copyright 1997 TUM |
|
5 |
|
6 Proves that 'a discr is a cpo |
|
7 *) |
|
8 |
|
9 goalw thy [po_def,less_discr_def] "((x::('a::term)discr) << y) = (x=y)"; |
|
10 br refl 1; |
|
11 qed "discr_less_eq"; |
|
12 AddIffs [discr_less_eq]; |
|
13 |
|
14 goalw thy [is_chain] |
|
15 "!!S::nat=>('a::term)discr. is_chain S ==> S i = S 0"; |
|
16 by(nat_ind_tac "i" 1); |
|
17 br refl 1; |
|
18 be subst 1; |
|
19 br sym 1; |
|
20 by(Fast_tac 1); |
|
21 qed "discr_chain0"; |
|
22 |
|
23 goal thy |
|
24 "!!S::nat=>('a::term)discr. is_chain(S) ==> range(S) = {S 0}"; |
|
25 by(fast_tac (!claset addEs [discr_chain0]) 1); |
|
26 qed "discr_chain_range0"; |
|
27 Addsimps [discr_chain_range0]; |
|
28 |
|
29 goalw thy [is_lub,is_ub] |
|
30 "!!S. is_chain S ==> ? x::('a::term)discr. range(S) <<| x"; |
|
31 by(Asm_simp_tac 1); |
|
32 qed "discr_cpo"; |