2278
|
1 |
(* Title: HOLCF/Up1.thy
|
|
2 |
ID: $Id$
|
|
3 |
Author: Franz Regensburger
|
|
4 |
Copyright 1993 Technische Universitaet Muenchen
|
|
5 |
|
|
6 |
|
|
7 |
Lifting
|
|
8 |
|
|
9 |
*)
|
|
10 |
|
|
11 |
Up1 = Cfun3 + Sum +
|
|
12 |
|
|
13 |
(* new type for lifting *)
|
|
14 |
|
2640
|
15 |
typedef (Up) ('a) "u" = "{x::(unit + 'a).True}"
|
2278
|
16 |
|
|
17 |
consts
|
|
18 |
Iup :: "'a => ('a)u"
|
|
19 |
Ifup :: "('a->'b)=>('a)u => 'b"
|
|
20 |
|
|
21 |
defs
|
|
22 |
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"
|
2640
|
24 |
less_up_def "less == (%x1 x2.case Rep_Up(x1) of
|
2278
|
25 |
Inl(y1) => True
|
|
26 |
| Inr(y2) => (case Rep_Up(x2) of Inl(z1) => False
|
|
27 |
| Inr(z2) => y2<<z2))"
|
|
28 |
end
|