author | schirmer |
Fri, 22 Feb 2002 11:26:44 +0100 | |
changeset 12925 | 99131847fb93 |
parent 12858 | 6214f03d6d27 |
child 13337 | f75dfc606ac7 |
permissions | -rw-r--r-- |
12857 | 1 |
(* Title: HOL/Bali/Trans.thy |
12854 | 2 |
ID: $Id$ |
3 |
Author: David von Oheimb |
|
12858 | 4 |
License: GPL (GNU GENERAL PUBLIC LICENSE) |
12854 | 5 |
|
6 |
Operational transition (small-step) semantics of the |
|
7 |
execution of Java expressions and statements |
|
8 |
||
9 |
PRELIMINARY!!!!!!!! |
|
10 |
||
12925
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
11 |
improvements over Java Specification 1.0 (cf. 15.11.4.4): |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
12 |
* dynamic method lookup does not need to check the return type |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
13 |
* throw raises a NullPointer exception if a null reference is given, and each |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
14 |
throw of a system exception yield a fresh exception object (was not specified) |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
15 |
* if there is not enough memory even to allocate an OutOfMemory exception, |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
16 |
evaluation/execution fails, i.e. simply stops (was not specified) |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
17 |
|
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
18 |
design issues: |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
19 |
* Lit expressions and Skip statements are considered completely evaluated. |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
20 |
* the expr entry in rules is redundant in case of exceptions, but its full |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
21 |
inclusion helps to make the rule structure independent of exception occurence. |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
22 |
* the rule format is such that the start state may contain an exception. |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
23 |
++ faciliates exception handling (to be added later) |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
24 |
+ symmetry |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
25 |
* the rules are defined carefully in order to be applicable even in not |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
26 |
type-correct situations (yielding undefined values), |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
27 |
e.g. the_Adr (Val (Bool b)) = arbitrary. |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
28 |
++ fewer rules |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
29 |
- less readable because of auxiliary functions like the_Adr |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
30 |
Alternative: "defensive" evaluation throwing some InternalError exception |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
31 |
in case of (impossible, for correct programs) type mismatches |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
32 |
|
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
33 |
simplifications: |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
34 |
* just simple handling (i.e. propagation) of exceptions so far |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
35 |
* dynamic method lookup does not check return type (should not be necessary) |
12854 | 36 |
*) |
37 |
||
38 |
Trans = Eval + |
|
39 |
||
40 |
consts |
|
12925
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
41 |
texpr_tstmt :: "prog ë (((expr ò state) ò (expr ò state)) + |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
42 |
((stmt ò state) ò (stmt ò state))) set" |
12854 | 43 |
|
44 |
syntax (symbols) |
|
12925
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
45 |
texpr :: "[prog, expr ò state, expr ò state] ë bool "("_É_ è1 _"[61,82,82] 81) |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
46 |
tstmt :: "[prog, stmt ò state, stmt ò state] ë bool "("_É_ í1 _"[61,82,82] 81) |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
47 |
Ref :: "loc ë expr" |
12854 | 48 |
|
49 |
translations |
|
50 |
||
12925
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
51 |
"GÉe_s è1 ex_s'" == "Inl (e_s, ex_s') Î texpr_tstmt G" |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
52 |
"GÉs_s í1 s'_s'" == "Inr (s_s, s'_s') Î texpr_tstmt G" |
12854 | 53 |
"Ref a" == "Lit (Addr a)" |
54 |
||
12925
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
55 |
constdefs |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
56 |
|
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
57 |
sub_expr_expr :: "(expr ë expr) ë prop" |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
58 |
"sub_expr_expr ef Ú (ÄG e s e' s'. GÉ( e,s) è1 ( e',s') êë |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
59 |
GÉ(ef e,s) è1 (ef e',s'))" |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
60 |
|
12854 | 61 |
inductive "texpr_tstmt G" intrs |
62 |
||
63 |
(* evaluation of expression *) |
|
64 |
(* cf. 15.5 *) |
|
12925
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
65 |
XcptE "ËÂv. e Û Lit vÌ êë |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
66 |
GÉ(e,Some xc,s) è1 (Lit arbitrary,Some xc,s)" |
12854 | 67 |
|
12925
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
68 |
CastXX "PROP sub_expr_expr (Cast T)" |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
69 |
|
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
70 |
(* |
12854 | 71 |
(* cf. 15.8.1 *) |
12925
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
72 |
NewC "Ënew_Addr (heap s) = Some (a,x); |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
73 |
s' = assign (hupd[aíinit_Obj G C]s) (x,s)Ì êë |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
74 |
GÉ(NewC C,None,s) è1 (Ref a,s')" |
12854 | 75 |
|
76 |
(* cf. 15.9.1 *) |
|
12925
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
77 |
(*NewA1 "sub_expr_expr (NewA T)"*) |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
78 |
NewA1 "ËGÉ(e,None,s) è1 (e',s')Ì êë |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
79 |
GÉ(New T[e],None,s) è1 (New T[e'],s')" |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
80 |
NewA "Ëi = the_Intg i'; new_Addr (heap s) = Some (a, x); |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
81 |
s' = assign (hupd[aíinit_Arr T i]s)(raise_if (i<#0) NegArrSize x,s)Ì êë |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
82 |
GÉ(New T[Lit i'],None,s) è1 (Ref a,s')" |
12854 | 83 |
(* cf. 15.15 *) |
12925
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
84 |
Cast1 "ËGÉ(e,None,s) è1 (e',s')Ì êë |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
85 |
GÉ(Cast T e,None,s) è1 (Cast T e',s')" |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
86 |
Cast "Ëx'= raise_if (\<questiondown>G,sÉv fits T) ClassCast NoneÌ êë |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
87 |
GÉ(Cast T (Lit v),None,s) è1 (Lit v,x',s)" |
12854 | 88 |
|
89 |
(* cf. 15.7.1 *) |
|
12925
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
90 |
(*Lit "GÉ(Lit v,None,s) è1 (Lit v,None,s)"*) |
12854 | 91 |
|
92 |
(* cf. 15.13.1, 15.2 *) |
|
12925
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
93 |
LAcc "Ëv = the (locals s vn)Ì êë |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
94 |
GÉ(LAcc vn,None,s) è1 (Lit v,None,s)" |
12854 | 95 |
|
96 |
(* cf. 15.25.1 *) |
|
12925
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
97 |
LAss1 "ËGÉ(e,None,s) è1 (e',s')Ì êë |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
98 |
GÉ(f vn:=e,None,s) è1 (vn:=e',s')" |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
99 |
LAss "GÉ(f vn:=Lit v,None,s) è1 (Lit v,None,lupd[vnív]s)" |
12854 | 100 |
|
101 |
(* cf. 15.10.1, 15.2 *) |
|
12925
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
102 |
FAcc1 "ËGÉ(e,None,s) è1 (e',s')Ì êë |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
103 |
GÉ({T}e..fn,None,s) è1 ({T}e'..fn,s')" |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
104 |
FAcc "Ëv = the (snd (the_Obj (heap s (the_Addr a'))) (fn,T))Ì êë |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
105 |
GÉ({T}Lit a'..fn,None,s) è1 (Lit v,np a' None,s)" |
12854 | 106 |
|
107 |
(* cf. 15.25.1 *) |
|
12925
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
108 |
FAss1 "ËGÉ(e1,None,s) è1 (e1',s')Ì êë |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
109 |
GÉ(f ({T}e1..fn):=e2,None,s) è1 (f({T}e1'..fn):=e2,s')" |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
110 |
FAss2 "ËGÉ(e2,np a' None,s) è1 (e2',s')Ì êë |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
111 |
GÉ(f({T}Lit a'..fn):=e2,None,s) è1 (f({T}Lit a'..fn):=e2',s')" |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
112 |
FAss "Ëa = the_Addr a'; (c,fs) = the_Obj (heap s a); |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
113 |
s'= assign (hupd[aíObj c (fs[(fn,T)ív])]s) (None,s)Ì êë |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
114 |
GÉ(f({T}Lit a'..fn):=Lit v,None,s) è1 (Lit v,s')" |
12854 | 115 |
|
116 |
||
117 |
||
118 |
||
119 |
||
120 |
(* cf. 15.12.1 *) |
|
12925
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
121 |
AAcc1 "ËGÉ(e1,None,s) è1 (e1',s')Ì êë |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
122 |
GÉ(e1[e2],None,s) è1 (e1'[e2],s')" |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
123 |
AAcc2 "ËGÉ(e2,None,s) è1 (e2',s')Ì êë |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
124 |
GÉ(Lit a'[e2],None,s) è1 (Lit a'[e2'],s')" |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
125 |
AAcc "Ëvo = snd (the_Arr (heap s (the_Addr a'))) (the_Intg i'); |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
126 |
x' = raise_if (vo = None) IndOutBound (np a' None)Ì êë |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
127 |
GÉ(Lit a'[Lit i'],None,s) è1 (Lit (the vo),x',s)" |
12854 | 128 |
|
129 |
||
130 |
(* cf. 15.11.4.1, 15.11.4.2, 15.11.4.4, 15.11.4.5, 14.15 *) |
|
12925
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
131 |
Call1 "ËGÉ(e,None,s) è1 (e',s')Ì êë |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
132 |
GÉ(e..mn({pT}p),None,s) è1 (e'..mn({pT}p),s')" |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
133 |
Call2 "ËGÉ(p,None,s) è1 (p',s')Ì êë |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
134 |
GÉ(Lit a'..mn({pT}p),None,s) è1 (Lit a'..mn({pT}p'),s')" |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
135 |
Call "Ëa = the_Addr a'; (md,(pn,rT),lvars,blk,res) = |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
136 |
the (cmethd G (fst (the_Obj (h a))) (mn,pT))Ì êë |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
137 |
GÉ(Lit a'..mn({pT}Lit pv),None,(h,l)) è1 |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
138 |
(Body blk res l,np a' x,(h,init_vals lvars[Thisía'][Supería'][pnípv]))" |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
139 |
Body1 "ËGÉ(s0,None,s) í1 (s0',s')Ì êë |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
140 |
GÉ(Body s0 e l,None,s) è1 (Body s0' e l,s')" |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
141 |
Body2 "ËGÉ(e ,None,s) è1 (e',s')Ì êë |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
142 |
GÉ(Body Skip e l,None,s) è1 (Body Skip e' l,s')" |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
143 |
Body "GÉ(Body Skip (Lit v) l,None,s) è1 (Lit v,None,(heap s,l))" |
12854 | 144 |
|
145 |
(* execution of statements *) |
|
146 |
||
147 |
(* cf. 14.1 *) |
|
12925
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
148 |
XcptS "Ës0 Û SkipÌ êë |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
149 |
GÉ(s0,Some xc,s) í1 (Skip,Some xc,s)" |
12854 | 150 |
|
151 |
(* cf. 14.5 *) |
|
12925
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
152 |
(*Skip "GÉ(Skip,None,s) í1 (Skip,None,s)"*) |
12854 | 153 |
|
154 |
(* cf. 14.2 *) |
|
12925
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
155 |
Comp1 "ËGÉ(s1,None,s) í1 (s1',s')Ì êë |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
156 |
GÉ(s1;; s2,None,s) í1 (s1';; s2,s')" |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
157 |
Comp "GÉ(Skip;; s2,None,s) í1 (s2,None,s)" |
12854 | 158 |
|
159 |
||
160 |
||
161 |
||
162 |
||
163 |
||
164 |
(* cf. 14.7 *) |
|
12925
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
165 |
Expr1 "ËGÉ(e ,None,s) è1 (e',s')Ì êë |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
166 |
GÉ(Expr e,None,s) í1 (Expr e',s')" |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
167 |
Expr "GÉ(Expr (Lit v),None,s) í1 (Skip,None,s)" |
12854 | 168 |
|
169 |
(* cf. 14.8.2 *) |
|
12925
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
170 |
If1 "ËGÉ(e ,None,s) è1 (e',s')Ì êë |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
171 |
GÉ(If(e) s1 Else s2,None,s) í1 (If(e') s1 Else s2,s')" |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
172 |
If "GÉ(If(Lit v) s1 Else s2,None,s) í1 |
12854 | 173 |
(if the_Bool v then s1 else s2,None,s)" |
174 |
||
175 |
(* cf. 14.10, 14.10.1 *) |
|
12925
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
176 |
Loop "GÉ(While(e) s0,None,s) í1 |
12854 | 177 |
(If(e) (s0;; While(e) s0) Else Skip,None,s)" |
12925
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
178 |
*) |
99131847fb93
Added check for field/method access to operational semantics and proved the acesses valid.
schirmer
parents:
12858
diff
changeset
|
179 |
con_defs "[sub_expr_expr_def]" |
12854 | 180 |
|
181 |
end |