Abstract
In order to provide a formalism for defining program correctness 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 previous work, we have shown how to define specifications and program correctness for open logic programs. In particular we have defined a notion 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.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
Abrial, J.R.: The B-Book: Assigning Programs to Meanings. Cambridge University Press, Cambridge (1996)
Astesiano, E., Kreowski, H.-J., Krieg-Bruckner, B. (eds.): Algebraic Foundations of Systems Specifications. Springer, Heidelberg (1999)
Atkinson, C., et al.: Component-based Product Line Engineering with UML. Addison-Wesley, Reading (2001)
Barwise, J. (ed.): Handbook of Mathematical Logic. North-Holland, Amsterdam (1977)
Bertoni, A., Mauri, G., Miglioli, P.: On the power of model theory in specifying abstract data types and in capturing their recursiveness. Fundamenta Informaticae VI(2), 127–170 (1983)
Bourdeau, R.H., Cheng, B.H.C.: A formal semantics for object model diagrams. IEEE Trans. Soft. Eng. 21(10), 799–821 (1995)
Bugliesi, M., Lamma, E., Mello, P.: Modularity in logic programming. J. Logic Programming 19(20), 443–502 (1994); Special issue: Ten years of logic programming
Clark, K.L.: Predicate Logic as a Computational Formalism. Report 79/59, Imperial College of Science and Technology, University of London (1979)
Cook, S., Kleppe, A., Mitchell, R., Rumpe, B., Warmer, J., Wills, A.: The Amsterdam manifesto on OCL. In: Clark, A., Warmer, J. (eds.) Object Modeling with the OCL. LNCS, vol. 2263, pp. 115–149. Springer, Heidelberg (2002)
Deville, Y.: Logic Programming. Systematic Program Development. Addison-Wesley, Reading (1990)
Deville, Y., Lau, K.-K.: Logic program synthesis. J. Logic Programming 19(20), 321–350 (1994); Special Issue: Ten Years of Logic Programming
D’Souza, D.F., Wills, A.C.: Objects, Components, and Frameworks with UML: The Catalysis Approach. Addison-Wesley, Reading (1999)
Ehrig, H., Mahr, B.: Fundamentals of Algebraic Specification 1. Springer, Heidelberg (1987)
Ehrig, H., Mahr, B.: Fundamentals of Algebraic Specification 2. Springer, Heidelberg (1989)
Flener, P., Lau, K.-K., Ornaghi, M.: On correct program schemas. In: Fuchs, N.E. (ed.) LOPSTR 1997. LNCS, vol. 1463, pp. 124–143. Springer, Heidelberg (1998)
Flener, P., Lau, K.-K., Ornaghi, M., Richardson, J.: An abstract formalisation of correct schemas for program synthesis. Journal of Symbolic Computation 30(1), 93–127 (2000)
Gallier, J.H.: Logic for Computer Science: Foundations for Automatic Theorem Proving. Harper and Row, New York (1986)
Ghezzi, C., Jazayeri, M., Mandrioli, D.: Fundamentals of Software Engineering, 2nd edn. Prentice Hall, Englewood Cliffs (2003)
Goguen, J.A., Burstall, R.M.: Institutions: Abstract model theory for specification and programming. J. ACM 39(1), 95–146 (1992)
Guttag, J.V., Horning, J.J.: Larch: Languages and Tools for Formal Specification. Springer, Heidelberg (1993)
Hodges, W.: Logical Features of Horn Clauses. In: Gabbay, D.M., Hogger, C.J., Robinson, J.A. (eds.) Handbook of Logic in Artificial Intelligence and Logic Programming, vol. 1, pp. 449–503. Oxford University Press, Oxford (1993)
Hogger, C.J.: Derivation ofLogic Programs. J. ACM 28(2), 372–392 (1981)
Jones, C.B.: Systematic Software Development Using VDM, 2nd edn. Prentice Hall, Englewood Cliffs (1990)
Jimenez, R.M., Orejas, F., Ehrig, H.: Compositionality and Compatibility of Parametrization and Parameter Passing in Specification Languages. Math. Struct. Computer Science 5, 283–314 (1995)
Kreitz, C., Lau, K.-K., Ornaghi, M.: Formal reasoning about modules, reuse and their correctness. In: Gabbay, D.M., Ohlbach, H.J. (eds.) FAPR 1996. LNCS (LNAI), vol. 1085, pp. 384–399. Springer, Heidelberg (1996)
Lau, K.-K., Ornaghi, M.: On specification frameworks and deductive synthesis of logic programs. In: Fribourg, L., Turini, F. (eds.) LOPSTR 1994 and META 1994. LNCS, vol. 883, pp. 104–121. Springer, Heidelberg (1994)
Lau, K.-K., Ornaghi, M.: Forms of logic specifications: A preliminary study. In: Gallagher, J.P. (ed.) LOPSTR 1996. LNCS, vol. 1207, pp. 295–312. Springer, Heidelberg (1997)
Lau, K.-K., Ornaghi, M.: The relationship between logic programs and specifications the subset example revisited. Logic Programming 30(3), 239–257 (1997)
Lau, K.-K., Ornaghi, M.: OOD frameworks in component-based software development in computational logic. In: Flener, P. (ed.) LOPSTR 1998. LNCS, vol. 1559, pp. 101–123. Springer, Heidelberg (1999)
Lau, K.-K., Ornaghi, M.: Isoinitial semantics for logic programs. In: Palamidessi, C., Moniz Pereira, L., Lloyd, J.W., Dahl, V., Furbach, U., Kerber, M., Lau, K.-K., Sagiv, Y., Stuckey, P.J. (eds.) CL 2000. LNCS (LNAI), vol. 1861, pp. 223–238. Springer, Heidelberg (2000)
Lau, K.-K., Ornaghi, M.: Correct object-oriented systems in computational logic. In: Pettorossi, A. (ed.) LOPSTR 2001. LNCS, vol. 2372, pp. 168–190. Springer, Heidelberg (2002)
Lau, K.-K., Ornaghi, M.: Specifying object-oriented systems in computational logic. In: Bruynooghe, M. (ed.) Pre-Proceedings of LOPSTR 2003, pp. 49–64 (2003); Report CW 365, Dept. of Computer Science, Katholieke Universiteit Leuven, Belgium
Lau, K.-K., Ornaghi, M., Tarnlund, S.-A.: Steadfast logic programs. J. Logic Programming 38(3), 259–294 (1999)
Lloyd, J.W.: Foundations ofLogic Programming, 2nd edn. Springer, Heidelberg (1987)
Maibaum, T.: Conservative extensions, interpretations between theories and all that. In: Bidoit, M., Dauchet, M. (eds.) CAAP 1997, FASE 1997, and TAPSOFT 1997. LNCS, vol. 1214, pp. 40–67. Springer, Heidelberg (1997)
Matijacevic, Y.V.: Recursively enumerable sets are Diophantine. Dokl. Akad. Nauk SSSR 191, 279–282 (1970)
Miglioli, P., Moscato, U., Ornaghi, M.: Abstract parametric classes and abstract data types defined by classical and constructive logical methods. J. Symbolic Computation 18, 41–81 (1994)
Miglioli, P., Moscato, U., Ornaghi, M.: An algebraic framework for the definition of compositional semantics of normal logic programs. The Journal of Logic Programming 40, 89–123 (1999)
Read, M.G., Kazmierczak, E.A.: Formal program development in modular Prolog: A case study. In: Clement, T.P., Lau, K.-K. (eds.) Proc. LOPSTR 1991, pp. 69–93. Springer, Heidelberg (1992)
Rumbaugh, J., Jacobson, I., Booch, G.: The Unified Modeling Language Reference Manual. Addison-Wesley, Reading (1999)
Sannella, D., Sokolowski, S., Tarlecki, A.: Toward formal development of programs from algebraic specifications: parametrisation revisited. Acta Informatica 29(8), 689–736 (1992)
Sannella, D., Tarlecki, A.: Extended ML: past, present and future. In: Orejas, F., Ehrig, H., Jantke, K.P., Reichel, H. (eds.) Abstract Data Types 1990. LNCS, vol. 534, pp. 297–322. Springer, Heidelberg (1991)
Sannella, D., Wallen, L.A.: A calculus for the construction of mdular prolog programs. In: IEEE 4th Symposium on Logic Programming, IEEE, Los Alamitos (1987)
Spivey, J.M.: The Z Notation: A Reference Manual, 2nd edn. Prentice Hall, Englewood Cliffs (1992)
Szyperski, C., Gruntz, D., Murer, S.: Component Software: Beyond Object-Oriented Programming, 2nd edn. Addison-Wesley, Reading (2002)
Wirsing, M.: Algebraic specification. In: Van Leeuwen, J. (ed.) Handbook of Theoretical Computer Science, pp. 675–788. Elsevier, Amsterdam (1990)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2004 Springer-Verlag Berlin Heidelberg
About this chapter
Cite this chapter
Lau, KK., Ornaghi, M. (2004). Specifying Compositional Units for Correct Program Development in Computational Logic. In: Bruynooghe, M., Lau, KK. (eds) Program Development in Computational Logic. Lecture Notes in Computer Science, vol 3049. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-25951-0_1
Download citation
DOI: https://doi.org/10.1007/978-3-540-25951-0_1
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-22152-4
Online ISBN: 978-3-540-25951-0
eBook Packages: Springer Book Archive