src/HOL/Bali/Trans.thy
changeset 13384 a34e38154413
parent 13354 8c8eafb63746
child 13688 a0b16d42d489
equal deleted inserted replaced
13383:041d78bf9403 13384:a34e38154413
     8 
     8 
     9 PRELIMINARY!!!!!!!!
     9 PRELIMINARY!!!!!!!!
    10 *)
    10 *)
    11 
    11 
    12 theory Trans = Evaln:
    12 theory Trans = Evaln:
    13 
       
    14 
    13 
    15 constdefs groundVar:: "var \<Rightarrow> bool"
    14 constdefs groundVar:: "var \<Rightarrow> bool"
    16 "groundVar v \<equiv> (case v of
    15 "groundVar v \<equiv> (case v of
    17                    LVar ln \<Rightarrow> True
    16                    LVar ln \<Rightarrow> True
    18                  | {accC,statDeclC,stat}e..fn \<Rightarrow> \<exists> a. e=Lit a
    17                  | {accC,statDeclC,stat}e..fn \<Rightarrow> \<exists> a. e=Lit a
   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')"