src/HOL/IMP/Compiler.thy
changeset 52046 bc01725d7918
parent 51259 1491459df114
child 52906 ba514b5aa809
equal deleted inserted replaced
52045:90cd3c53a887 52046:bc01725d7918
   207 qed fastforce+
   207 qed fastforce+
   208 
   208 
   209 fun ccomp :: "com \<Rightarrow> instr list" where
   209 fun ccomp :: "com \<Rightarrow> instr list" where
   210 "ccomp SKIP = []" |
   210 "ccomp SKIP = []" |
   211 "ccomp (x ::= a) = acomp a @ [STORE x]" |
   211 "ccomp (x ::= a) = acomp a @ [STORE x]" |
   212 "ccomp (c\<^isub>1;c\<^isub>2) = ccomp c\<^isub>1 @ ccomp c\<^isub>2" |
   212 "ccomp (c\<^isub>1;;c\<^isub>2) = ccomp c\<^isub>1 @ ccomp c\<^isub>2" |
   213 "ccomp (IF b THEN c\<^isub>1 ELSE c\<^isub>2) =
   213 "ccomp (IF b THEN c\<^isub>1 ELSE c\<^isub>2) =
   214   (let cc\<^isub>1 = ccomp c\<^isub>1; cc\<^isub>2 = ccomp c\<^isub>2; cb = bcomp b False (size cc\<^isub>1 + 1)
   214   (let cc\<^isub>1 = ccomp c\<^isub>1; cc\<^isub>2 = ccomp c\<^isub>2; cb = bcomp b False (size cc\<^isub>1 + 1)
   215    in cb @ cc\<^isub>1 @ JMP (size cc\<^isub>2) # cc\<^isub>2)" |
   215    in cb @ cc\<^isub>1 @ JMP (size cc\<^isub>2) # cc\<^isub>2)" |
   216 "ccomp (WHILE b DO c) =
   216 "ccomp (WHILE b DO c) =
   217  (let cc = ccomp c; cb = bcomp b False (size cc + 1)
   217  (let cc = ccomp c; cb = bcomp b False (size cc + 1)