We develop module algebra for structured specifications with model oriented denotations. Our work extends the existing theory with specification building operators for non-protecting importation modes and with new algebraic rules (most notably for initial semantics) and upgrades the pushout-style semantics of parameterized modules to capture the (possible) sharing between the body of the parameterized modules and the instances of the parameters. We specify a set of sufficient abstract conditions, smoothly satisfied in the actual situations, and prove the isomorphism between the parallel and the serial instantiation of multiple parameters. Our module algebra development is done at the level of abstract institutions, which means that our results are very general and directly applicable to a wide variety of specification and programming formalisms that are rigorously based upon some logical system.
The structure and contributions of this paperThere are at least three levels of giving semantics or denotations to specification modules:1. The set of the (accumulated) axioms of the specification; this underlies [3] and is the most syntactic level. The paper [14] argues about several shortcomings of this viewpoint. 2. The theory of the specification, in the sense of the closure of its set of axioms under (semantic) deduction. This point of view is taken by [14] and can be considered as a middle grained approach. 3. The class of models of the specification in the style of [6,28]. This is the most semantic approach.The specification theory literature contains many arguments in favour of each of these viewpoints on denotations for specification modules, and even many more arguments against each of them. A good way to view these different perspectives on the semantics of specification modules is that these refer to slightly different aspects of the same phenomena. However, we can now understand that since the former two approaches are property oriented, in the sense that their emphasis is on the properties satisfied by the models of the specifications, they do not consider an important point of structuring which is realized only by the latter model oriented approach. Everybody sees specification or programming in-the-large as the only realistic way to build complex specifications or programs; however, many neglect another important motivation, namely that of being able to specify classes of models much beyond the capabilities of specification in-the-small. A good example illustrating this difference in specification power is given by fields. One can actually prove that the class of fields does not admit a specification in-the-small within any form of Horn clause logic (including even the use of partial functions); however, it admits (see Example 3.1 below) a rather simple
CategoriesWe assume the reader is familiar with basic notions and standard notations from category theory; e.g., see [22] for an introduction to this subject. With respect to notational conventions, |C| denotes the class of objects of a category C, C(A, B) ...