equal
deleted
inserted
replaced
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) |