160 UnOp: "G\<turnstile>(\<langle>UnOp unop (Lit v)\<rangle>,Norm s) \<mapsto>1 (\<langle>Lit (eval_unop unop v)\<rangle>,Norm s)" |
159 UnOp: "G\<turnstile>(\<langle>UnOp unop (Lit v)\<rangle>,Norm s) \<mapsto>1 (\<langle>Lit (eval_unop unop v)\<rangle>,Norm s)" |
161 |
160 |
162 BinOpE1: "\<lbrakk>G\<turnstile>(\<langle>e1\<rangle>,Norm s) \<mapsto>1 (\<langle>e1'\<rangle>,s') \<rbrakk> |
161 BinOpE1: "\<lbrakk>G\<turnstile>(\<langle>e1\<rangle>,Norm s) \<mapsto>1 (\<langle>e1'\<rangle>,s') \<rbrakk> |
163 \<Longrightarrow> |
162 \<Longrightarrow> |
164 G\<turnstile>(\<langle>BinOp binop e1 e2\<rangle>,Norm s) \<mapsto>1 (\<langle>BinOp binop e1' e2\<rangle>,s')" |
163 G\<turnstile>(\<langle>BinOp binop e1 e2\<rangle>,Norm s) \<mapsto>1 (\<langle>BinOp binop e1' e2\<rangle>,s')" |
165 BinOpE2: "\<lbrakk>G\<turnstile>(\<langle>e2\<rangle>,Norm s) \<mapsto>1 (\<langle>e2'\<rangle>,s') \<rbrakk> |
164 BinOpE2: "\<lbrakk>need_second_arg binop v1; G\<turnstile>(\<langle>e2\<rangle>,Norm s) \<mapsto>1 (\<langle>e2'\<rangle>,s') \<rbrakk> |
166 \<Longrightarrow> |
165 \<Longrightarrow> |
167 G\<turnstile>(\<langle>BinOp binop (Lit v1) e2\<rangle>,Norm s) |
166 G\<turnstile>(\<langle>BinOp binop (Lit v1) e2\<rangle>,Norm s) |
168 \<mapsto>1 (\<langle>BinOp binop (Lit v1) e2'\<rangle>,s')" |
167 \<mapsto>1 (\<langle>BinOp binop (Lit v1) e2'\<rangle>,s')" |
|
168 BinOpTerm: "\<lbrakk>\<not> need_second_arg binop v1\<rbrakk> |
|
169 \<Longrightarrow> |
|
170 G\<turnstile>(\<langle>BinOp binop (Lit v1) e2\<rangle>,Norm s) |
|
171 \<mapsto>1 (\<langle>Lit v1\<rangle>,Norm s)" |
169 BinOp: "G\<turnstile>(\<langle>BinOp binop (Lit v1) (Lit v2)\<rangle>,Norm s) |
172 BinOp: "G\<turnstile>(\<langle>BinOp binop (Lit v1) (Lit v2)\<rangle>,Norm s) |
170 \<mapsto>1 (\<langle>Lit (eval_binop binop v1 v2)\<rangle>,Norm s)" |
173 \<mapsto>1 (\<langle>Lit (eval_binop binop v1 v2)\<rangle>,Norm s)" |
171 |
174 (* Maybe its more convenient to add: need_second_arg as precondition to BinOp |
|
175 to make the choice between BinOpTerm and BinOp deterministic *) |
|
176 |
172 Super: "G\<turnstile>(\<langle>Super\<rangle>,Norm s) \<mapsto>1 (\<langle>Lit (val_this s)\<rangle>,Norm s)" |
177 Super: "G\<turnstile>(\<langle>Super\<rangle>,Norm s) \<mapsto>1 (\<langle>Lit (val_this s)\<rangle>,Norm s)" |
173 |
178 |
174 AccVA: "\<lbrakk>G\<turnstile>(\<langle>va\<rangle>,Norm s) \<mapsto>1 (\<langle>va'\<rangle>,s') \<rbrakk> |
179 AccVA: "\<lbrakk>G\<turnstile>(\<langle>va\<rangle>,Norm s) \<mapsto>1 (\<langle>va'\<rangle>,s') \<rbrakk> |
175 \<Longrightarrow> |
180 \<Longrightarrow> |
176 G\<turnstile>(\<langle>Acc va\<rangle>,Norm s) \<mapsto>1 (\<langle>Acc va'\<rangle>,s')" |
181 G\<turnstile>(\<langle>Acc va\<rangle>,Norm s) \<mapsto>1 (\<langle>Acc va'\<rangle>,s')" |