equal
deleted
inserted
replaced
8 |
8 |
9 Denotational = HOLCF + Natural + |
9 Denotational = HOLCF + Natural + |
10 |
10 |
11 constdefs |
11 constdefs |
12 dlift :: "(('a::term) discr -> 'b::pcpo) => ('a lift -> 'b)" |
12 dlift :: "(('a::term) discr -> 'b::pcpo) => ('a lift -> 'b)" |
13 "dlift f == (LAM x. case x of Undef => UU | Def(y) => f`(Discr y))" |
13 "dlift f == (LAM x. case x of Undef => UU | Def(y) => f$(Discr y))" |
14 |
14 |
15 consts D :: "com => state discr -> state lift" |
15 consts D :: "com => state discr -> state lift" |
16 |
16 |
17 primrec |
17 primrec |
18 "D(SKIP) = (LAM s. Def(undiscr s))" |
18 "D(SKIP) = (LAM s. Def(undiscr s))" |
19 "D(X :== a) = (LAM s. Def((undiscr s)[X ::= a(undiscr s)]))" |
19 "D(X :== a) = (LAM s. Def((undiscr s)[X ::= a(undiscr s)]))" |
20 "D(c0 ; c1) = (dlift(D c1) oo (D c0))" |
20 "D(c0 ; c1) = (dlift(D c1) oo (D c0))" |
21 "D(IF b THEN c1 ELSE c2) = |
21 "D(IF b THEN c1 ELSE c2) = |
22 (LAM s. if b(undiscr s) then (D c1)`s else (D c2)`s)" |
22 (LAM s. if b(undiscr s) then (D c1)$s else (D c2)$s)" |
23 "D(WHILE b DO c) = |
23 "D(WHILE b DO c) = |
24 fix`(LAM w s. if b(undiscr s) then (dlift w)`((D c)`s) |
24 fix$(LAM w s. if b(undiscr s) then (dlift w)$((D c)$s) |
25 else Def(undiscr s))" |
25 else Def(undiscr s))" |
26 |
26 |
27 end |
27 end |