src/HOLCF/Porder0.ML
changeset 3323 194ae2e0c193
parent 3026 7a5611f66b72
child 3460 5d71eed16fbe
equal deleted inserted replaced
3322:bc4d107fb6dd 3323:194ae2e0c193
     5 
     5 
     6     derive the characteristic axioms for the characteristic constants *)
     6     derive the characteristic axioms for the characteristic constants *)
     7 
     7 
     8 open Porder0;
     8 open Porder0;
     9 
     9 
    10 qed_goalw "refl_less" thy [ po_def ] "x << x"
       
    11 (fn prems =>
       
    12         [
       
    13         (fast_tac (HOL_cs addSIs [ax_refl_less]) 1)
       
    14         ]);
       
    15 
       
    16 AddIffs [refl_less];
    10 AddIffs [refl_less];
    17 
       
    18 qed_goalw "antisym_less" thy [ po_def ] "[| x << y; y << x |] ==> x = y"
       
    19 (fn prems =>
       
    20         [
       
    21         (fast_tac (HOL_cs addSIs prems@[ax_antisym_less]) 1)
       
    22         ]);
       
    23 
       
    24 qed_goalw "trans_less" thy [ po_def ] "[| x << y; y << z |] ==> x << z"
       
    25 (fn prems =>
       
    26         [
       
    27         (fast_tac (HOL_cs addIs prems@[ax_trans_less]) 1)
       
    28         ]);
       
    29 
    11 
    30 (* ------------------------------------------------------------------------ *)
    12 (* ------------------------------------------------------------------------ *)
    31 (* minimal fixes least element                                              *)
    13 (* minimal fixes least element                                              *)
    32 (* ------------------------------------------------------------------------ *)
    14 (* ------------------------------------------------------------------------ *)
    33 bind_thm("minimal2UU",allI RS (prove_goal thy "!x.uu<<x==>uu=(@u.!y.u<<y)"
    15 bind_thm("minimal2UU",allI RS (prove_goal thy "!x::'a::po.uu<<x==>uu=(@u.!y.u<<y)"
    34 (fn prems =>
    16 (fn prems =>
    35         [
    17         [
    36         (cut_facts_tac prems 1),
    18         (cut_facts_tac prems 1),
    37         (rtac antisym_less 1),
    19         (rtac antisym_less 1),
    38         (etac spec 1),
    20         (etac spec 1),
    43 
    25 
    44 (* ------------------------------------------------------------------------ *)
    26 (* ------------------------------------------------------------------------ *)
    45 (* the reverse law of anti--symmetrie of <<                                 *)
    27 (* the reverse law of anti--symmetrie of <<                                 *)
    46 (* ------------------------------------------------------------------------ *)
    28 (* ------------------------------------------------------------------------ *)
    47 
    29 
    48 qed_goal "antisym_less_inverse" thy "x=y ==> x << y & y << x"
    30 qed_goal "antisym_less_inverse" thy "(x::'a::po)=y ==> x << y & y << x"
    49 (fn prems =>
    31 (fn prems =>
    50         [
    32         [
    51         (cut_facts_tac prems 1),
    33         (cut_facts_tac prems 1),
    52         (rtac conjI 1),
    34         (rtac conjI 1),
    53         ((rtac subst 1) THEN (rtac refl_less 2) THEN (atac 1)),
    35         ((rtac subst 1) THEN (rtac refl_less 2) THEN (atac 1)),
    54         ((rtac subst 1) THEN (rtac refl_less 2) THEN (etac sym 1))
    36         ((rtac subst 1) THEN (rtac refl_less 2) THEN (etac sym 1))
    55         ]);
    37         ]);
    56 
    38 
    57 
    39 
    58 qed_goal "box_less" thy
    40 qed_goal "box_less" thy
    59 "[| a << b; c << a; b << d|] ==> c << d"
    41 "[| (a::'a::po) << b; c << a; b << d|] ==> c << d"
    60  (fn prems =>
    42  (fn prems =>
    61         [
    43         [
    62         (cut_facts_tac prems 1),
    44         (cut_facts_tac prems 1),
    63         (etac trans_less 1),
    45         (etac trans_less 1),
    64         (etac trans_less 1),
    46         (etac trans_less 1),