src/HOLCF/Up1.thy
changeset 3323 194ae2e0c193
parent 2640 ee4dfce170a0
child 3842 b55686a7b22c
equal deleted inserted replaced
3322:bc4d107fb6dd 3323:194ae2e0c193
    12 
    12 
    13 (* new type for lifting *)
    13 (* new type for lifting *)
    14 
    14 
    15 typedef (Up) ('a) "u" = "{x::(unit + 'a).True}"
    15 typedef (Up) ('a) "u" = "{x::(unit + 'a).True}"
    16 
    16 
       
    17 instance u :: (sq_ord)sq_ord
       
    18 
    17 consts
    19 consts
    18   Iup         :: "'a => ('a)u"
    20   Iup         :: "'a => ('a)u"
    19   Ifup        :: "('a->'b)=>('a)u => 'b"
    21   Ifup        :: "('a->'b)=>('a)u => 'b"
    20 
    22 
    21 defs
    23 defs
    22   Iup_def     "Iup x == Abs_Up(Inr(x))"
    24   Iup_def     "Iup x == Abs_Up(Inr(x))"
    23   Ifup_def    "Ifup(f)(x)== case Rep_Up(x) of Inl(y) => UU | Inr(z) => f`z"
    25   Ifup_def    "Ifup(f)(x)== case Rep_Up(x) of Inl(y) => UU | Inr(z) => f`z"
    24   less_up_def "less == (%x1 x2.case Rep_Up(x1) of                 
    26   less_up_def "(op <<) == (%x1 x2.case Rep_Up(x1) of                 
    25                Inl(y1) => True          
    27                Inl(y1) => True          
    26              | Inr(y2) => (case Rep_Up(x2) of Inl(z1) => False       
    28              | Inr(y2) => (case Rep_Up(x2) of Inl(z1) => False       
    27                                             | Inr(z2) => y2<<z2))"
    29                                             | Inr(z2) => y2<<z2))"
    28 end
    30 end