| author | paulson | 
| Thu, 25 May 2000 15:15:54 +0200 | |
| changeset 8975 | bcd34d580839 | 
| parent 5192 | 704dd3a6d47d | 
| child 11346 | 0d28bc664955 | 
| 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 | 
| 
c2508f4ab739
Added "discrete" CPOs and modified IMP to use those rather than "lift"
 nipkow parents: diff
changeset | 4 | Copyright 1997 TUM | 
| 
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 | |
| 5068 | 9 | Goalw [less_discr_def] "((x::('a::term)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 | |
| 5068 | 14 | Goalw [chain] | 
| 4721 
c8a8482a8124
renamed is_chain to chain, is_tord to tord, replaced chain_finite by chfin
 oheimb parents: 
4098diff
changeset | 15 |  "!!S::nat=>('a::term)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 | 
| 4721 
c8a8482a8124
renamed is_chain to chain, is_tord to tord, replaced chain_finite by chfin
 oheimb parents: 
4098diff
changeset | 24 |  "!!S::nat=>('a::term)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 | |
| 5068 | 29 | Goalw [is_lub,is_ub] | 
| 4721 
c8a8482a8124
renamed is_chain to chain, is_tord to tord, replaced chain_finite by chfin
 oheimb parents: 
4098diff
changeset | 30 |  "!!S. chain S ==> ? x::('a::term)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"; |