A Semantic Analysis of Logics That Cope with Partial Terms

  • Cliff B. Jones
  • Matthew J. Lovert
  • L. Jason Steggles
Part of the Lecture Notes in Computer Science book series (LNCS, volume 7316)


Specifications of programs frequently involve operators and functions that are not defined over all of their (syntactic) domains. Proofs about specifications –and those to discharge proof obligations that arise in justifying steps of design– must be based on formal rules. Since classical logic deals only with defined values, some extra thought is required. There are several ways of handling terms that can fail to denote a value — this paper provides a semantically based comparison of three of the best known approaches. In addition, some pointers are given to further alternatives.


Logical Operator Classical Logic Partial Function Semantic Model Truth Table 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    McCarthy, J.: A basis for a mathematical theory for computation. In: Braffort, P., Hirschberg, D. (eds.) Computer Programming and Formal Systems, pp. 33–70. North-Holland Publishing Company (1967)Google Scholar
  2. 2.
    Owe, O.: An approach to program reasoning based on a first order logic for partial functions. Technical Report 89, Institute of Informatics, University of Oslo (February 1985)Google Scholar
  3. 3.
    Owe, O.: Partial logics reconsidered: A conservative approach. Formal Aspects of Computing 5, 208–223 (1993)zbMATHCrossRefGoogle Scholar
  4. 4.
    Cheng, J.H.: A Logic for Partial Functions. PhD thesis, University of Manchester (1986)Google Scholar
  5. 5.
    Tennent, R.: A note on undefined expression values in programming logic. Information Processing Letters 24(5) (March 1987)Google Scholar
  6. 6.
    Blikle, A.: Three-valued Predicates for Software Specification and Validation. In: Bloomfield, R., Marshall, L., Jones, R. (eds.) VDM 1988. LNCS, vol. 328, pp. 243–266. Springer, Heidelberg (1988)CrossRefGoogle Scholar
  7. 7.
    Konikowska, B., Tarlecki, A., Blikle, A.: A Three-valued Logic for Software Specification and Validation. In: Bloomfield, R., Marshall, L., Jones, R. (eds.) VDM 1988. LNCS, vol. 328, pp. 218–242. Springer, Heidelberg (1988)CrossRefGoogle Scholar
  8. 8.
    Jervis, C.: A Theory of Program Correctness with Three Valued Logic. PhD thesis, Leeds University (1988)Google Scholar
  9. 9.
    Spivey, J.: Understanding Z—A Specification Language and its Formal Semantics. Cambridge Tracts in Computer Science, vol. 3. Cambridge University Press (1988)Google Scholar
  10. 10.
    Schieder, B., Broy, M.: Adapting calculational logic to the undefined. The Computer Journal 42 (1999)Google Scholar
  11. 11.
    Jones, C.B.: Systematic Software Development using VDM, 2nd edn. Prentice Hall International (1990)Google Scholar
  12. 12.
    Cheng, J.H., Jones, C.B.: On the usability of logics which handle partial functions. In: Morgan, C., Woodcock, J.C.P. (eds.) 3rd Refinement Workshop, pp. 51–69. Springer (1991)Google Scholar
  13. 13.
    Müller, O., Slind, K.: Treating partiality in a logic of total functions. The Computer Journal 40(10), 640–652 (1997)CrossRefGoogle Scholar
  14. 14.
    Gries, D., Schneider, F.B.: Avoiding the Undefined by Underspecification. In: van Leeuwen, J. (ed.) Computer Science Today. LNCS, vol. 1000, pp. 366–373. Springer, Heidelberg (1995)CrossRefGoogle Scholar
  15. 15.
    Jones, C.B.: Reasoning about partial functions in the formal development of programs. In: Proceedings of AVoCS 2005. Electronic Notes in Theoretical Computer Science, vol. 145, pp. 3–25. Elsevier (2006)Google Scholar
  16. 16.
    Fitzgerald, J.S.: The Typed Logic of Partial Functions and the Vienna Development Method. In: Bjørner, D., Henson, M.C. (eds.) Logics of Specification Languages. EATCS Texts in Theoretical Computer Science, pp. 427–461. Springer (2007)Google Scholar
  17. 17.
    Darvas, Á., Mehta, F., Rudich, A.: Efficient Well-Definedness Checking. In: Armando, A., Baumgartner, P., Dowek, G. (eds.) IJCAR 2008. LNCS (LNAI), vol. 5195, pp. 100–115. Springer, Heidelberg (2008)CrossRefGoogle Scholar
  18. 18.
    Woodcock, J., Freitas, L.: Linking VDM and Z. In: 13th IEEE International Conference on Engineering of Complex Computer Systems, pp. 143–152 (April 2008)Google Scholar
  19. 19.
    Schmalz, M.: Term Rewriting in Logics of Partial Functions. In: Qin, S., Qiu, Z. (eds.) ICFEM 2011. LNCS, vol. 6991, pp. 633–650. Springer, Heidelberg (2011), doi:10.1007/978-3-642-24559-6-42CrossRefGoogle Scholar
  20. 20.
    Łukasiewicz, J.: O logice trójwartościowej. Ruch Filozoficzny, 169–171 (1920) Translated as (On three-valued logic) McCall, S. (ed.) in Polish Logic, Oxford U.P, 1920–1939 (1967)Google Scholar
  21. 21.
    Wang, H.: The calculus of partial predicates and its extension to set theory. Math. Logic 7, 283–288 (1961)zbMATHCrossRefGoogle Scholar
  22. 22.
    van Fraasen, B.: Singular terms, truth-value gaps and free logic. J. Philosophy 63, 481–495 (1966)CrossRefGoogle Scholar
  23. 23.
    Koletsos, G.: Sequent calculus and partial logic. Master’s thesis, Manchester University (1976)Google Scholar
  24. 24.
    Hoogewijs, A.: Partial-predicate logic in computer science. Acta Informatica 24, 381–393 (1987)MathSciNetzbMATHCrossRefGoogle Scholar
  25. 25.
    Avron, A.: Foundations and proof theory of 3-valued logics. Technical Report ECS-LFCS-88-48, LFCS, Department of Computer Science, University of Edinburgh (April 1988)Google Scholar
  26. 26.
    Farmer, W.M.: A partial functions version of Church’s simple theory of types. Journal of Symbolic Logic 55(3), 1269–1291 (1990)MathSciNetzbMATHCrossRefGoogle Scholar
  27. 27.
    MacColl, H.: A report on MacColl’s three-valued logic. In: Lovett, E. (ed.) Mathematics at the Intern. Congress of Philosophy, vol. 7, pp. 157–183. Bulletin of the American Mathematical Society (1901)Google Scholar
  28. 28.
    Barringer, H., Cheng, J., Jones, C.B.: A logic covering undefinedness in program proofs. Acta Informatica 21, 251–269 (1984)MathSciNetzbMATHCrossRefGoogle Scholar
  29. 29.
    Bicarregui, J., Fitzgerald, J., Lindsay, P., Moore, R., Ritchie, B.: Proof in VDM: A Practitioner’s Guide. In: FACIT, Springer (1994) ISBN 3-540-19813-XGoogle Scholar
  30. 30.
    Jones, C.B., Middelburg, C.: A typed logic of partial functions reconstructed classically. Acta Informatica 31(5), 399–430 (1994)MathSciNetzbMATHCrossRefGoogle Scholar
  31. 31.
    Jones, C.B., Lovert, M.J.: Semantic models for a logic of partial functions. IJSI 5, 55–76 (2011)Google Scholar
  32. 32.
    Jones, C.B., Lovert, M.J., Steggles, L.J.: Towards a mechanisation of a logic that copes with partial terms. Technical Report CS-TR-1314, Newcastle University (February 2012)Google Scholar
  33. 33.
    Blamey, S.R.: Partial Valued Logic. PhD thesis, Oxford University (1980)Google Scholar
  34. 34.
    Blamey, S.: Partial logic. In: Gabbay, D., Guenthuer, F. (eds.) Handbook of Philosophical Logic, vol. III. Reidel (1986)Google Scholar
  35. 35.
    Lovert, M.J.: A semantic model for a logic of partial functions. In: Pierce, K., Plat, N., Wolff, S., eds.: Proceedings of the 8th Overture Workshop. Number CS-TR-1224 in School of Computing Science Technical Report, Newcastle University, 33–45 (2010)Google Scholar
  36. 36.
    Kleene, S.C.: Introduction to Metamathematics. Van Nostrad (1952)Google Scholar
  37. 37.
    Stoy, J.E.: Denotational Semantics: The Scott-Strachey Approach to Programming Language Theory. MIT Press (1977)Google Scholar
  38. 38.
    Jones, C.: Partial functions and logics: A warning. Information Processing Letters 54(2), 65–67 (1995)zbMATHCrossRefGoogle Scholar
  39. 39.
    Fitzgerald, J.S., Jones, C.B.: The connection between two ways of reasoning about partial functions. IPL 107(3-4), 128–132 (2008)MathSciNetzbMATHCrossRefGoogle Scholar
  40. 40.
    Group, T.R.L.: The RAISE Specification Language. BCS Practitioner Series. Prentice Hall (1992) ISBN 0-13-752833-7Google Scholar
  41. 41.
    Group, T.R.M.: The RAISE Development Method. BCS Practitioner Series. Prentice Hall (1995) ISBN 0-13-752700-4Google Scholar
  42. 42.
    Walk, K., et al.: Abstract syntax and interpretation of PL/I. Technical Report TR25.098, IBM Laboratory Vienna (1969)Google Scholar
  43. 43.
    Jones, C.B.: Formal development of correct algorithms: an example based on Earley’s recogniser. SIGPLAN Notices 7(1), 150–169 (1972)CrossRefGoogle Scholar
  44. 44.
    Dijkstra, E.W.: A Discipline of Programming. Prentice-Hall, Englewood Cliffs (1976)zbMATHGoogle Scholar
  45. 45.
    Gries, D., Schneider, F.B.: A Logical Approach to Discrete Math., 2nd edn. Springer (1996)Google Scholar
  46. 46.
    Mehta, F.D.: Proofs for the Working Engineer. PhD thesis, ETH Zuerich (2008)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2012

Authors and Affiliations

  • Cliff B. Jones
    • 1
  • Matthew J. Lovert
    • 1
  • L. Jason Steggles
    • 1
  1. 1.School of Computing ScienceNewcastle UniversityUK

Personalised recommendations