Semantic correctness of a compiler for an algol-like language