Three-valued predicates for software specification and validation

  • Andrzej Blikle
Foundations And Theory
Part of the Lecture Notes in Computer Science book series (LNCS, volume 328)


Partial functions, hence also partial predicates, cannot be avoided in algorithms. Although the former fact has been accepted in the theory of software very early, the latter is still not quite commonly recognized. In many programming- and software-specification languages the partiality of predicates (Boolean expressions) is treated only semiformally. On the other hand it is quite well known today that an explicit formal treatment of partial predicates substantially improves the discipline of software specification, programming and validation.

Partial predicates are usually formalized as three-valued functions where the third value corresponds to an undefinedness. This leads, of course, to the necessity of developing a new calculus of predicates and new rules of proving facts expressed by three-valued predicates. One possible approach to the latter problem, which has been already explored by several authors, consists in developing a three-valued logic which is used later in proving properties of software. In this paper we are surveying and analyzing another approach. We show how to combine a calculus of three-valued predicates — to be used in the construction of algorithms — with a two-valued logic — to be used in proving facts about these algorithms. We briefly discuss the possible applications of this approach in the construction of software and of software-specification metalanguages. In the opinion of the author our approach has the advantage of using classical techniques of proofs which are better understood by the majority of users and which are supported by many existing software systems such as e.g. LCF or MIZAR.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. [84]
    BARRINGER H., CHENG J.H., JONES C.B. A logic covering undefinedness in program proofs, Acta Informatica 21 (1984), 251–269Google Scholar
  2. [81a]
    BLIKLE A. On the development of correct specified programs, IEEE Trans. on Soft. Eng. SE-7 (1981), 519–527Google Scholar
  3. [81b]
    The clean termination of iterative programs, Acta Informatica 16 (1981), 199–217Google Scholar
  4. [87]
    BLIKLE A. MetaSoft Primer, Towards a Metalanguage for Applied Denotational Semantics, LNCS 288, Springer-Verlag 1987Google Scholar
  5. [88]
    BLIKLE A. A guided tour of the mathematics of MetaSoft'88, Information Processing Letters (to appear in 1988)Google Scholar
  6. [81]
    COLMERAUER A., PIQUE J.F. About natural logic, in: Advances in Data Base Theory (H.Gallaire and J.Minker, eds.), Vol.1 (1981), 343–365Google Scholar
  7. [76]
    DIJKSTRA E.W. A Discipline of Programming, Prentice Hall 1976Google Scholar
  8. [79]
    HOOGEWIJS A. On a formalization of the non-definedness notion, Zeitschrift f. Math. Logik u. Grundlagen d. Math. Vol.25 (1979), 213–221Google Scholar
  9. [83]
    A partial predicate calculus in a two-valued logic, ibid. Vol.29 (1983), 239–243Google Scholar
  10. [87]
    Partial-predicate logic in computer science, Acta Informatica 24, 381–393 (1987)Google Scholar
  11. [86]
    JONES C.B. Systematic Software Development Using VDM, Prentice-Hall International Series in Computer Science 1986Google Scholar
  12. [87]
    JONES C.B. VDM proof obligations and their justification, in: VDM — A Formal Method at Work, Proc. VDM-Europe Symposium 1987, LNCS 252, Springer-Verlag 1987Google Scholar
  13. [38]
    KLEENE S.C. On notation for ordinal numbers, Journal of Symb. Logic, Vol.3 (1938), 150–155Google Scholar
  14. [52]
    KLEENE S.C. Introduction to Metamathematics, North Holland 1952; since then republished in 1957, 59, 62, 64, 67, 71Google Scholar
  15. [88]
    KONIKOWSKA B., TARLECKI A., BLIKLE A. A three-valued logic for software specification and validation, a manuscript submitted to VDM'88Google Scholar
  16. [20]
    LUKASIEWICZ J. O logice trojwartosciowej (On three-valued logic), Ruch Filozoficzny, Vol.5, Lwow 1920, 169–171Google Scholar
  17. [61]
    McCARTHY J. A basis for a mathematical theory of computation. Western Joint Computer Conference, May 1961, since then published in Computer Programming and Formal Systems (P.Braffort, D.Hirshberg eds.), North Holland 1967, 33–70Google Scholar
  18. [85]
    OWE, O. An approach to program reasoning based on a first order logic for partial functions, Res.Rep. Institute of Informatics, University of Oslo, no.89 1985Google Scholar
  19. [85a]
    TRYBULEC A., BLAIR H. Computer assisted reasoning with Mizar, Proc. International Joint Conference on Artificial Intelligence 1985, Los Angeles 1985Google Scholar
  20. [85b]
    TRYBULEC A., BLAIR H. Computer aided reasoning, in: Logic of programs 1985, LNCS 193, Springer-Verlag 1985Google Scholar
  21. [86]
    WORONOWICZ E. Wspomaganie procesu konstrukcji programow poprawnych w eksperymentalnym srodowisku programistycznym (Supporting the process of correct-program derivation in an experimental programming environment), Ph.D. dissertation, Bialystok Branch of Warsaw University 1986Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1988

Authors and Affiliations

  • Andrzej Blikle
    • 1
  1. 1.Project MetaSoft Institute of Computer SciencePolish Academy of Sciences PKiNWarsaw

Personalised recommendations