Generating Python Code From Object-Z Specifications
This work provides a tool for software engineers to validate formal specifications in Python, but it is incremental as it builds on existing mappings to other languages like C++ and Java.
The authors tackled the problem of generating executable Python code from Object-Z formal specifications, proposing a mapping that covers constructs like preconditions and invariants using lambda functions and decorators, and found Python suitable for developing such libraries.
Object-Z is an object-oriented specification language which extends the Z language with classes, objects, inheritance and polymorphism that can be used to represent the specification of a complex system as collections of objects. There are a number of existing works that mapped Object-Z to C++ and Java programming languages. Since Python and Object-Z share many similarities, both are object-oriented paradigm, support set theory and predicate calculus moreover, Python is a functional programming language which is naturally closer to formal specifications, we propose a mapping from Object-Z specifications to Python code that covers some Object-Z constructs and express its specifications in Python to validate these specifications. The validations are used in the mapping covered preconditions, post-conditions, and invariants that are built using lambda function and Python's decorator. This work has found Python is an excellent language for developing libraries to map Object-Z specifications to Python.