20 V string | |
20 V string | |
21 Faccess exp string ("_\<bullet>/_" [63,1000] 63) | |
21 Faccess exp string ("_\<bullet>/_" [63,1000] 63) | |
22 Vassign string exp ("(_ ::=/ _)" [1000,61] 62) | |
22 Vassign string exp ("(_ ::=/ _)" [1000,61] 62) | |
23 Fassign exp string exp ("(_\<bullet>_ ::=/ _)" [63,0,62] 62) | |
23 Fassign exp string exp ("(_\<bullet>_ ::=/ _)" [63,0,62] 62) | |
24 Mcall exp string exp ("(_\<bullet>/_<_>)" [63,0,0] 63) | |
24 Mcall exp string exp ("(_\<bullet>/_<_>)" [63,0,0] 63) | |
25 Semi exp exp ("_;/ _" [61,60] 60) | |
25 Seq exp exp ("_;/ _" [61,60] 60) | |
26 If bexp exp exp ("IF _/ THEN (2_)/ ELSE (2_)" [0,0,61] 61) |
26 If bexp exp exp ("IF _/ THEN (2_)/ ELSE (2_)" [0,0,61] 61) |
27 and bexp = B bool | Not bexp | And bexp bexp | Eq exp exp |
27 and bexp = B bool | Not bexp | And bexp bexp | Eq exp exp |
28 |
28 |
29 type_synonym menv = "string \<Rightarrow> exp" |
29 type_synonym menv = "string \<Rightarrow> exp" |
30 type_synonym config = "venv \<times> store \<times> addr" |
30 type_synonym config = "venv \<times> store \<times> addr" |
54 "\<lbrakk> me \<turnstile> (oe,c\<^isub>1) \<Rightarrow> (or,c\<^isub>2); me \<turnstile> (pe,c\<^isub>2) \<Rightarrow> (pr,ve\<^isub>3,sn\<^isub>3); |
54 "\<lbrakk> me \<turnstile> (oe,c\<^isub>1) \<Rightarrow> (or,c\<^isub>2); me \<turnstile> (pe,c\<^isub>2) \<Rightarrow> (pr,ve\<^isub>3,sn\<^isub>3); |
55 ve = (\<lambda>x. null)(''this'' := or, ''param'' := pr); |
55 ve = (\<lambda>x. null)(''this'' := or, ''param'' := pr); |
56 me \<turnstile> (me m,ve,sn\<^isub>3) \<Rightarrow> (r,ve',sn\<^isub>4) \<rbrakk> |
56 me \<turnstile> (me m,ve,sn\<^isub>3) \<Rightarrow> (r,ve',sn\<^isub>4) \<rbrakk> |
57 \<Longrightarrow> |
57 \<Longrightarrow> |
58 me \<turnstile> (oe\<bullet>m<pe>,c\<^isub>1) \<Rightarrow> (r,ve\<^isub>3,sn\<^isub>4)" | |
58 me \<turnstile> (oe\<bullet>m<pe>,c\<^isub>1) \<Rightarrow> (r,ve\<^isub>3,sn\<^isub>4)" | |
59 Semi: |
59 Seq: |
60 "\<lbrakk> me \<turnstile> (e\<^isub>1,c\<^isub>1) \<Rightarrow> (r,c\<^isub>2); me \<turnstile> (e\<^isub>2,c\<^isub>2) \<Rightarrow> c\<^isub>3 \<rbrakk> \<Longrightarrow> |
60 "\<lbrakk> me \<turnstile> (e\<^isub>1,c\<^isub>1) \<Rightarrow> (r,c\<^isub>2); me \<turnstile> (e\<^isub>2,c\<^isub>2) \<Rightarrow> c\<^isub>3 \<rbrakk> \<Longrightarrow> |
61 me \<turnstile> (e\<^isub>1; e\<^isub>2,c\<^isub>1) \<Rightarrow> c\<^isub>3" | |
61 me \<turnstile> (e\<^isub>1; e\<^isub>2,c\<^isub>1) \<Rightarrow> c\<^isub>3" | |
62 IfTrue: |
62 IfTrue: |
63 "\<lbrakk> me \<turnstile> (b,c\<^isub>1) \<rightarrow> (True,c\<^isub>2); me \<turnstile> (e\<^isub>1,c\<^isub>2) \<Rightarrow> c\<^isub>3 \<rbrakk> \<Longrightarrow> |
63 "\<lbrakk> me \<turnstile> (b,c\<^isub>1) \<rightarrow> (True,c\<^isub>2); me \<turnstile> (e\<^isub>1,c\<^isub>2) \<Rightarrow> c\<^isub>3 \<rbrakk> \<Longrightarrow> |
64 me \<turnstile> (IF b THEN e\<^isub>1 ELSE e\<^isub>2,c\<^isub>1) \<Rightarrow> c\<^isub>3" | |
64 me \<turnstile> (IF b THEN e\<^isub>1 ELSE e\<^isub>2,c\<^isub>1) \<Rightarrow> c\<^isub>3" | |