src/HOL/IMP/OO.thy
changeset 47818 151d137f1095
parent 43158 686fa0a0696e
child 53015 a1119cf551e8
equal deleted inserted replaced
47817:5d2d63f4363e 47818:151d137f1095
    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" |