In order to provide a formalism for defining program cor- rectness and to reason about program development in Computational Logic, we believe that it is better to distinguish between specifications and programs. To this end, we have developed a general approach to specification that is based on a model-theoretic semantics. In our pre- vious work, we have shown how to define specifications and program correctness for open logic programs. In particular we have defined a no- tion of correctness called steadfastness, that captures at once modularity, reusability and correctness. In this paper, we review our past work and we show how it can be used to define compositional units that can be correctly reused in modular or component-based software development.
['Kung Kiu Lau', 'Mario Ornaghi']
Specifying Compositional Units for Correct Program Development in Computational Logic