src/HOLCF/Discrete1.ML
changeset 2841 c2508f4ab739
child 3018 e65b60b28341
equal deleted inserted replaced
2840:7e03e61612b0 2841:c2508f4ab739
       
     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";