equal
deleted
inserted
replaced
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 |