Abstract

The relation between Z and modern programming language theory is investigated. We advocate the use of formal operational semantics to close the gap between Z specifications and program code. Formal operational semantics such as natural semantics are easy to understand. They are effectively used to provide formal semantics for programming languages in use today. We show in this paper how natural semantics can systematically and successfully be used to guarantee the correctness of an implementation of an operation specified by a Z schema. Furthermore, the approach we propose fits in very well with the general pattern of algorithm refinement in Z. We first demonstrate how to apply our method of establishing and discharging proof obligations, and second we show at a meta-level the soundness of proof obligations proposed in the literature. Our approach is illustrated through several examples.

Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call