1478
|
1 |
(* Title: ZF/Coind/Values.thy
|
916
|
2 |
ID: $Id$
|
1478
|
3 |
Author: Jacob Frost, Cambridge University Computer Laboratory
|
916
|
4 |
Copyright 1995 University of Cambridge
|
|
5 |
*)
|
|
6 |
|
|
7 |
Values = Language + Map +
|
|
8 |
|
|
9 |
(* Values, values environments and associated operators *)
|
|
10 |
|
|
11 |
consts
|
1401
|
12 |
Val, ValEnv, Val_ValEnv :: i
|
933
|
13 |
codatatype <= "quniv(Const Un ExVar Un Exp)"
|
|
14 |
"Val" = v_const("c:Const")
|
|
15 |
| v_clos("x:ExVar","e:Exp","ve:ValEnv")
|
|
16 |
and
|
|
17 |
"ValEnv" = ve_mk("m:PMap(ExVar,Val)")
|
|
18 |
monos "[map_mono]"
|
|
19 |
type_intrs "[A_into_univ, mapQU]"
|
916
|
20 |
|
|
21 |
consts
|
1401
|
22 |
ve_emp :: i
|
|
23 |
ve_owr :: [i,i,i] => i
|
|
24 |
ve_dom :: i=>i
|
|
25 |
ve_app :: [i,i] => i
|
933
|
26 |
defs
|
916
|
27 |
ve_emp_def "ve_emp == ve_mk(map_emp)"
|
|
28 |
ve_owr_def
|
1155
|
29 |
"ve_owr(ve,x,v) ==
|
3840
|
30 |
ve_mk(Val_ValEnv_case(%x.0,%x y z.0,%m. map_owr(m,x,v),ve))"
|
916
|
31 |
ve_dom_def
|
3840
|
32 |
"ve_dom(ve) == Val_ValEnv_case(%x.0,%x y z.0,%m. domain(m),ve)"
|
916
|
33 |
ve_app_def
|
3840
|
34 |
"ve_app(ve,a) == Val_ValEnv_case(%x.0,%x y z.0,%m. map_app(m,a),ve)"
|
916
|
35 |
|
|
36 |
end
|
|
37 |
|
|
38 |
|
|
39 |
|