| author | wenzelm | 
| Tue, 26 Feb 2002 21:45:13 +0100 | |
| changeset 12957 | 6b169f497a01 | 
| parent 12338 | de0f4a63baa5 | 
| child 14981 | e73f8140af78 | 
| permissions | -rw-r--r-- | 
| 2841 
c2508f4ab739
Added "discrete" CPOs and modified IMP to use those rather than "lift"
 nipkow parents: diff
changeset | 1 | (* Title: HOLCF/Discrete1.ML | 
| 
c2508f4ab739
Added "discrete" CPOs and modified IMP to use those rather than "lift"
 nipkow parents: diff
changeset | 2 | ID: $Id$ | 
| 
c2508f4ab739
Added "discrete" CPOs and modified IMP to use those rather than "lift"
 nipkow parents: diff
changeset | 3 | Author: Tobias Nipkow | 
| 12030 | 4 | License: GPL (GNU GENERAL PUBLIC LICENSE) | 
| 2841 
c2508f4ab739
Added "discrete" CPOs and modified IMP to use those rather than "lift"
 nipkow parents: diff
changeset | 5 | |
| 
c2508f4ab739
Added "discrete" CPOs and modified IMP to use those rather than "lift"
 nipkow parents: diff
changeset | 6 | Proves that 'a discr is a cpo | 
| 
c2508f4ab739
Added "discrete" CPOs and modified IMP to use those rather than "lift"
 nipkow parents: diff
changeset | 7 | *) | 
| 
c2508f4ab739
Added "discrete" CPOs and modified IMP to use those rather than "lift"
 nipkow parents: diff
changeset | 8 | |
| 12338 
de0f4a63baa5
renamed class "term" to "type" (actually "HOL.type");
 wenzelm parents: 
12030diff
changeset | 9 | Goalw [less_discr_def] "((x::('a::type)discr) << y) = (x=y)";
 | 
| 3018 | 10 | by (rtac refl 1); | 
| 2841 
c2508f4ab739
Added "discrete" CPOs and modified IMP to use those rather than "lift"
 nipkow parents: diff
changeset | 11 | qed "discr_less_eq"; | 
| 
c2508f4ab739
Added "discrete" CPOs and modified IMP to use those rather than "lift"
 nipkow parents: diff
changeset | 12 | AddIffs [discr_less_eq]; | 
| 
c2508f4ab739
Added "discrete" CPOs and modified IMP to use those rather than "lift"
 nipkow parents: diff
changeset | 13 | |
| 11346 | 14 | Goalw [chain_def] | 
| 12338 
de0f4a63baa5
renamed class "term" to "type" (actually "HOL.type");
 wenzelm parents: 
12030diff
changeset | 15 |  "!!S::nat=>('a::type)discr. chain S ==> S i = S 0";
 | 
| 5192 | 16 | by (induct_tac "i" 1); | 
| 3323 
194ae2e0c193
eliminated the constant less by the introduction of the axclass sq_ord
 slotosch parents: 
3018diff
changeset | 17 | by (rtac refl 1); | 
| 3018 | 18 | by (etac subst 1); | 
| 19 | by (rtac sym 1); | |
| 20 | by (Fast_tac 1); | |
| 2841 
c2508f4ab739
Added "discrete" CPOs and modified IMP to use those rather than "lift"
 nipkow parents: diff
changeset | 21 | qed "discr_chain0"; | 
| 
c2508f4ab739
Added "discrete" CPOs and modified IMP to use those rather than "lift"
 nipkow parents: diff
changeset | 22 | |
| 5068 | 23 | Goal | 
| 12338 
de0f4a63baa5
renamed class "term" to "type" (actually "HOL.type");
 wenzelm parents: 
12030diff
changeset | 24 |  "!!S::nat=>('a::type)discr. chain(S) ==> range(S) = {S 0}";
 | 
| 4098 | 25 | by (fast_tac (claset() addEs [discr_chain0]) 1); | 
| 2841 
c2508f4ab739
Added "discrete" CPOs and modified IMP to use those rather than "lift"
 nipkow parents: diff
changeset | 26 | qed "discr_chain_range0"; | 
| 
c2508f4ab739
Added "discrete" CPOs and modified IMP to use those rather than "lift"
 nipkow parents: diff
changeset | 27 | Addsimps [discr_chain_range0]; | 
| 
c2508f4ab739
Added "discrete" CPOs and modified IMP to use those rather than "lift"
 nipkow parents: diff
changeset | 28 | |
| 11346 | 29 | Goalw [is_lub_def,is_ub_def] | 
| 12338 
de0f4a63baa5
renamed class "term" to "type" (actually "HOL.type");
 wenzelm parents: 
12030diff
changeset | 30 |  "!!S. chain S ==> ? x::('a::type)discr. range(S) <<| x";
 | 
| 3018 | 31 | by (Asm_simp_tac 1); | 
| 2841 
c2508f4ab739
Added "discrete" CPOs and modified IMP to use those rather than "lift"
 nipkow parents: diff
changeset | 32 | qed "discr_cpo"; |