src/HOLCF/Up2.ML
changeset 3323 194ae2e0c193
parent 2640 ee4dfce170a0
child 3842 b55686a7b22c
equal deleted inserted replaced
3322:bc4d107fb6dd 3323:194ae2e0c193
    13 \               Inl(y1) => True \
    13 \               Inl(y1) => True \
    14 \             | Inr(y2) => (case Rep_Up(x2) of Inl(z1) => False \
    14 \             | Inr(y2) => (case Rep_Up(x2) of Inl(z1) => False \
    15 \                                            | Inr(z2) => y2<<z2))"
    15 \                                            | Inr(z2) => y2<<z2))"
    16  (fn prems => 
    16  (fn prems => 
    17         [
    17         [
    18         (fold_goals_tac [po_def,less_up_def]),
    18         (fold_goals_tac [less_up_def]),
    19         (rtac refl 1)
    19         (rtac refl 1)
    20         ]);
    20         ]);
    21 
    21 
    22 (* -------------------------------------------------------------------------*)
    22 (* -------------------------------------------------------------------------*)
    23 (* type ('a)u is pointed                                                    *)
    23 (* type ('a)u is pointed                                                    *)
    24 (* ------------------------------------------------------------------------ *)
    24 (* ------------------------------------------------------------------------ *)
    25 
    25 
    26 qed_goal "minimal_up" thy "Abs_Up(Inl ()) << z"
    26 qed_goal "minimal_up" thy "Abs_Up(Inl ()) << z"
    27  (fn prems =>
    27  (fn prems =>
    28         [
    28         [
    29         (simp_tac (!simpset addsimps [po_def,less_up1a]) 1)
    29         (simp_tac (!simpset addsimps [less_up1a]) 1)
    30         ]);
    30         ]);
    31 
    31 
    32 bind_thm ("UU_up_def",minimal_up RS minimal2UU RS sym);
    32 bind_thm ("UU_up_def",minimal_up RS minimal2UU RS sym);
    33 
    33 
    34 qed_goal "least_up" thy "? x::'a u.!y.x<<y"
    34 qed_goal "least_up" thy "? x::'a u.!y.x<<y"
    43 (* ------------------------------------------------------------------------ *)
    43 (* ------------------------------------------------------------------------ *)
    44 
    44 
    45 qed_goal "less_up2b" thy "~ Iup(x) << Abs_Up(Inl ())"
    45 qed_goal "less_up2b" thy "~ Iup(x) << Abs_Up(Inl ())"
    46  (fn prems =>
    46  (fn prems =>
    47         [
    47         [
    48         (simp_tac (!simpset addsimps [po_def,less_up1b]) 1)
    48         (simp_tac (!simpset addsimps [less_up1b]) 1)
    49         ]);
    49         ]);
    50 
    50 
    51 qed_goal "less_up2c" thy "(Iup(x)<<Iup(y)) = (x<<y)"
    51 qed_goal "less_up2c" thy "(Iup(x)<<Iup(y)) = (x<<y)"
    52  (fn prems =>
    52  (fn prems =>
    53         [
    53         [
    54         (simp_tac (!simpset addsimps [po_def,less_up1c]) 1)
    54         (simp_tac (!simpset addsimps [less_up1c]) 1)
    55         ]);
    55         ]);
    56 
    56 
    57 (* ------------------------------------------------------------------------ *)
    57 (* ------------------------------------------------------------------------ *)
    58 (* Iup and Ifup are monotone                                               *)
    58 (* Iup and Ifup are monotone                                               *)
    59 (* ------------------------------------------------------------------------ *)
    59 (* ------------------------------------------------------------------------ *)