Abstract
Software development methods take into consideration various program aspects. Among such aspects, compositionality and nominativity are the basic ones. Compositionality suggests that program meaning is a composition of meanings of its components, while nominativity suggests that components themselves are constructed with the help of relation “name–value”. Compositionality permits to describe program semantics with the formalism of program algebras. As to nominativity, it permits to represent various data structures in a unified form of nominative data. In this case, programs can be specified by program algebras over such data. This leads to composition-nominative languages used for program modeling. Such languages can be extended to program specification languages. Composition-nominative logics provide means for program reasoning. In this paper, we continue our research of program algebras and logics over nominative data. We consider various classes of nominative data with simple/complex names and simple/complex values with direct and indirect naming. We define program and specification algebras over hierarchical nominative data, specify corresponding languages and construct a program logic of Floyd–Hoare type for such programs. Constructed logics are logics over partial predicates and functions in which complex names are used. In this case, the rules of classical Floyd–Hoare logics are not sound; therefore, we use special compositions extending logic expressiveness, special consequence relations, and modified rules of Floyd–Hoare logics. Presented results give means for modeling and reasoning about program over complex data structures.



Similar content being viewed by others
References
Kneuper R. Software processes and life cycle models. An introduction to modelling, using and managing agile, plan-driven and hybrid processes. Cham: Springer; 2018.
Dahl OJ, Dijkstra EW, Hoare CAR. Structured programming (APIC studies in data processing; vol. 8). New York: Academic Press Inc; 1972.
Beck K, Beedle M, van Bennekum A, et al. Manifesto for Agile software development (2001). http://agilemanifesto.org. Accessed 22 Feb 2022.
Booch B, Rumbaugh J, Jacobson I. The unified modeling language user guide. 1st ed. Upper Saddle River: Addison Wesley; 1998.
Abrial J-R. Assigning programs to meanings. Cambridge: Cambridge University Press; 1996.
Spivey M. The Z notation: a reference manual, 2nd edn. Prentice Hall international series in computer science. Englewood Cliffs; 1992.
The RAISE Language Group. The RAISE specification language. Prentice Hall Int.; 1992.
Lamport L. Specifying systems: the TLA+ language and tools for hardware and software engineers. Upper Saddle River: Pearson Education Publ; 2002.
Hemmendinger D. Encyclopedia of computer science: syntax, semantics, and pragmatics, pp. 1737–1738. https://doi.org/10.5555/1074100.1074848. Accessed 22 Feb 2022.
Bjørner D. Domain engineering: technology management, research and engineering. Tokyo: JAIST Press; 2009.
Nikitchenko N. A composition-nominative approach to program semantics. Technical report, IT-TR 1998-020, Technical University of Denmark. 1998.
Scott D, Steachy C. Toward a mathematical semantics for computer languages Oxford Programming Research Group technical monograph. PRG-6. 1971.
Werning M, Hinzen W, Machery E, editors. The Oxford handbook of compositionality. Oxford: Oxford University Press; 2012.
Raymond Turner R. Computational artifacts. Towards a philosophy of computer science. Berlin: Springer; 2018.
Zhang W, Sun Y, Oliveira B. Compositional programming. ACM Trans Program Lang Syst. 2021;43(3):61. https://doi.org/10.1145/3460228.
Bove A, Krauss A, Sozeau M. Partiality and recursion in interactive theorem provers—an overview. Mathematical structures in computer science. Cambridge University Press (CUP), ffhal-00691459f; 2012.
Nikitchenko M, Tymofieiev V. Composition-nominative logics in rigorous development of software systems. UNISCON. 2012;2012:140–51.
Nielson HR, Nielson F. Semantics with applications: a formal introduction. New York: Wiley; 1992.
Winskel G. The formal semantics of programming languages. Cambridge: MIT Press; 1993.
Nikitchenko M, Shkilniak S. Applied logic. Кyiv: VPC Кyivskyi Universytet, in Ukrainian; 2013.
Kleene S. Introductions to metamathematics. Amsterdam: North-Holland; New York, Toronto: Van Nostrand; 1952.
Kryvolap A, Nikitchenko M, Schreiner W. Extending Floyd–Hoare logic for partial pre- and postconditions. In: Communications in computer and information science, vol. 412. Cham: Springer; 2013. p. 355–78.
Nikitchenko M. Composition-nominative aspects of address programming. Cybern Syst Anal. 2009;45(6):864–74.
Ivanov I, Nikitchenko M, Kryvolap A, Kornilowicz A. Simple-named complex-valued nominative data—definition and basic operations. Formalize Math. 2017;25(3):205–16. https://doi.org/10.1515/forma-2017-0020.
Nikitchenko M, Shkilniak O, Shkilniak S, Mamedov T. Completeness of the first-order logic of partial quasiary predicates with the complement composition. Comput Sci J Moldova. 2019;80(2):162–87.
Hoare C. An axiomatic basis for computer programming. Commun ACM. 1969;12(10):576–80.
Apt K. Ten years of Hoare’s logic: a survey—part I. ACM Trans Program Lang Syst. 1981;3(4):431–83.
Blass A, Gurevich Y. The underlying logic of Hoare logic, current trends in theoretical computer science. In: Entering the 21st century. World Scientific; 2001. p. 409–36.
Grabowski A, Kornilowicz A, Naumowicz A. Four decades of Mizar. J Autom Reason. 2015;55(3):191–8.
Ivanov I, Nikitchenko M, Kornilowicz A. Implementation of the composition-nominative approach to program formalization in Mizar. Comput Sci J Moldova. 2018;26(1):59–76.
Ivanov I, Nikitchenko M, Kryvolap A, Kornilowicz A. Simple-named complex-valued nominative data—definition and basic operations. Formaliz Math. 2017;25:205–16.
Kornilowicz A, Ivanov I, Nikitchenko M. Kleene algebra of partial predicates. Formaliz Math. 2018;26(1):11–20.
Ivanov I, Kornilowicz A, Nikitchenko M. On algebras of algorithms and specifications over uninterpreted data. Formaliz Math. 2018;26(2):141–7.
Ivanov I, Kornilowicz A, Nikitchenko M. On an algorithmic algebra over simple-named complex-valued nominative data. Formaliz Math. 2018;26(2):149–58.
Ivanov I, Kornilowicz A, Nikitchenko M. An inference system of an extension of Floyd–Hoare logic for partial predicates. Formaliz Math. 2018;26(2):159–64.
Author information
Authors and Affiliations
Corresponding author
Ethics declarations
Conflict of interest
The author declares that he has no conflict of interest.
Ethical approval
This article does not contain any studies with human participants performed by any of the authors.
Additional information
Publisher's Note
Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.
This article is part of the topical collection “Models and Methods in ICT for Research and Applications” guest edited by Vadim Ermolayev, Stephen W Liddle, Heinrich C Mayr, Elisabeth Métais and Jolita Ralyté.
Rights and permissions
Springer Nature or its licensor holds exclusive rights to this article under a publishing agreement with the author(s) or other rightsholder(s); author self-archiving of the accepted manuscript version of this article is solely governed by the terms of such publishing agreement and applicable law.
About this article
Cite this article
Nikitchenko, M. Composition-Nominative Methods and Models in Program Development. SN COMPUT. SCI. 3, 507 (2022). https://doi.org/10.1007/s42979-022-01335-2
Received:
Accepted:
Published:
DOI: https://doi.org/10.1007/s42979-022-01335-2