Require Arith. Require machine. (*** The reference transition system ***) Section trref. Inductive trRef : state -> state -> Prop := trRef_agetsb : (s:state) (trRef s (agetsb s)) | trRef_bgetsa : (s:state) (trRef s (bgetsa s)) | trRef_agetsbstar4 : (s:state) (addr (4) (mem_of s) (regb_of s)) -> (trRef s (agetsbstar4 s)) | trRef_agetsbstar8 : (s:state) (addr (8) (mem_of s) (regb_of s)) -> (trRef s (agetsbstar8 s)) | trRef_astargetsb4 : (s:state) (addr (4) (mem_of s) (rega_of s)) -> (trRef s (astargetsb4 s)) | trRef_astargetsb8 : (s:state) (addr (8) (mem_of s) (rega_of s)) -> (trRef s (astargetsb8 s)) | trRef_agetsn : (s:state) (n:exp) (trRef s (agetsn s n)) | trRef_bgetsn : (s:state) (n:exp) (trRef s (bgetsn s n)) | trRef_agetsaplusb : (s:state) (trRef s (agetsaplusb s)) (* | trRef_agetsaminusb : (a,b:nat)(m:mem)(h:hist)[s:=(mkstate a b m h)] (trRef s (agetsaminusb s)) *) (*** | trRef_agetsnewn : (a,b:nat)(m:mem)(h:hist)[s:=(mkstate a b m h)] (n,x:nat) (new m x n) -> (trRef s (agetsnewn s n x)) ***) | trRef_allocate : (s:state) (n:nat) (trRef s (allocate n s)) . Inductive trRef_star : state -> state -> Prop := refl : (s:state)(trRef_star s s) | trans : (s1,s2,s3:state) (trRef_star s1 s2) -> (trRef_star s2 s3) -> (trRef_star s1 s3) | onestep : (s1,s2:state) (trRef s1 s2) -> (trRef_star s1 s2). End trref.