Skip to main content

Extended Static Checking by Calculation Using the Pointfree Transform

  • Chapter
Language Engineering and Rigorous Software Development (LerNet 2008)

Part of the book series: Lecture Notes in Computer Science ((LNPSE,volume 5520))

Abstract

The pointfree transform offers to the predicate calculus what the Laplace transform offers to the differential/integral calculus: the possibility of changing the underlying mathematical space so as to enable agile algebraic calculation. This paper addresses the foundations of the transform and its application to a calculational approach to extended static checking (ESC) in the context of abstract modeling. In particular, a calculus is given whose rules help in breaking the complexity of the proof obligations involved in static checking arguments. The close connection between such calculus and that of weakest pre-conditions makes it possible to use the latter in ESC proof obligation discharge, where pointfree notation is again used, this time to calculate with invariant properties to be maintained.

A connection with the “everything is a relation” lemma of Alloy is established, showing how close to each other the pointfree and Alloy notations are. The main advantage of this connection is that of complementing pen-and-paper pointfree calculations with model checking support wherever validating sizable abstract models.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

eBook
USD 16.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 16.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Aarts, C., Backhouse, R.C., Hoogendijk, P., Voermans, E., van der Woude, J.: A relational theory of datatypes (December 1992), www.cs.nott.ac.uk/~rcb

  2. Alves, T.L., Silva, P.F., Visser, J., Oliveira, J.N.: Strategic term rewriting and its application to a VDM-SL to SQL conversion. In: Fitzgerald, J.S., Hayes, I.J., Tarlecki, A. (eds.) FM 2005. LNCS, vol. 3582, pp. 399–414. Springer, Heidelberg (2005)

    Chapter  Google Scholar 

  3. Backhouse, K., Backhouse, R.C.: Safety of abstract interpretations for free, via logical relations and Galois connections. SCP 15(1-2), 153–196 (2004)

    MathSciNet  MATH  Google Scholar 

  4. Backhouse, R., Michaelis, D.: Exercises in quantifier manipulation. In: Uustalu, T. (ed.) MPC 2006. LNCS, vol. 4014, pp. 70–81. Springer, Heidelberg (2006)

    Chapter  Google Scholar 

  5. Backhouse, R.C.: On a relation on functions. In: Dijkstra, W. (ed.) Beauty is our business: a birthday salute to Edsger, New York, NY, USA, pp. 7–18. Springer, Heidelberg (1990)

    Chapter  Google Scholar 

  6. Backhouse, R.C.: Fixed point calculus. In: Summer School and Workshop on Algebraic and Coalgebraic Methods in the Mathematics of Program Construction, Lincoln College, Oxford, UK, April 10-14 (2000)

    Google Scholar 

  7. Backhouse, R.C.: Mathematics of Program Construction. Univ. of Nottingham. Draft of book in preparation, 608 pages (2004)

    Google Scholar 

  8. Backhouse, R.C., de Bruin, P., Hoogendijk, P., Malcolm, G., Voermans, T.S., van der Woude, J.: Polynomial relators. In: AMAST 1991, pp. 303–362. Springer, Heidelberg (1992)

    Google Scholar 

  9. Backhouse, R.C., Woude, J.: Demonic operators and monotype factors. Mathematical Structures in Computer Science 3(4), 417–433 (1993)

    Article  MathSciNet  MATH  Google Scholar 

  10. Backus, J.: Can programming be liberated from the von Neumann style? a functional style and its algebra of programs. CACM 21(8), 613–639 (1978)

    Article  MathSciNet  MATH  Google Scholar 

  11. Barbosa, L.S., Oliveira, J.N.: Transposing partial components — an exercise on coalgebraic refinement. Theoretical Computer Science 365(1), 2–22 (2006)

    Article  MathSciNet  MATH  Google Scholar 

  12. Barbosa, L.S., Oliveira, J.N., Silva, A.M.: Calculating invariants as coreflexive bisimulations. In: Meseguer, J., Roşu, G. (eds.) AMAST 2008. LNCS, vol. 5140, pp. 83–99. Springer, Heidelberg (2008)

    Chapter  Google Scholar 

  13. Bird, R., de Moor, O.: Algebra of Programming. Series in Computer Science. Prentice-Hall International, Englewood Cliffs (1997) C.A.R. Hoare (series editor)

    MATH  Google Scholar 

  14. Bove, A., Dybjer, P.: Dependent types at work. Lecture Notes for the LerNet Summer School, Piriapolis, Uruguay, 47 p. (Feburary 2008)

    Google Scholar 

  15. Claessen, K., Hughes, J.: Quickcheck: a lightweight tool for random testing of Haskell programs. In: ICFP, pp. 268–279 (2000)

    Google Scholar 

  16. Intel Corporation. Intel Flash File System Core Reference Guide. Doc. Ref. 304436-001 (October 2004)

    Google Scholar 

  17. CSK. The Integrity Checking: Using Proof Obligations (2007)

    Google Scholar 

  18. Cunha, A., Oliveira, J.N., Visser, J.: Type-safe two-level data transformation. In: Misra, J., Nipkow, T., Sekerinski, E. (eds.) FM 2006. LNCS, vol. 4085, pp. 284–299. Springer, Heidelberg (2006)

    Chapter  Google Scholar 

  19. Dijkstra, E.W., Scholten, C.S.: Predicate calculus and program semantics. Springer, New York (1990)

    Book  MATH  Google Scholar 

  20. Doornbos, H., Backhouse, R., van der Woude, J.: A calculational approach to mathematical induction. Theoretical Computer Science 179(1-2), 103–135 (1997)

    Article  MathSciNet  MATH  Google Scholar 

  21. Ferreira, M.A., Silva, S.S., Oliveira, J.N.: Verifying Intel FLASH file system core specification. In: Modelling and Analysis in VDM: Proceedings of the Fourth Overture/VDM++ Workshop at FM 2008, Turku, Finland, May 26, 2008. University of Newcastle, Computer Science. Technical Report CS-TR-1099 (2008)

    Google Scholar 

  22. Fitzgerald, J., Larsen, P.G.: Modelling Systems: Practical Tools and Techniques for Software Development, 1st edn. Cambridge University Press, Cambridge (1998)

    MATH  Google Scholar 

  23. Fitzgerald, J., Larsen, P.G., Mukherjee, P., Plat, N., Verhoef, M.: Validated Designs for Object–oriented Systems. Springer, New York (2005)

    MATH  Google Scholar 

  24. Flanagan, C., Leino, K.R.M., Lillibridge, M., Nelson, G., Saxe, J.B., Stata, R.: Extended static checking for Java. In: PLDI, pp. 234–245 (2002)

    Google Scholar 

  25. Freyd, P.J., Ščedrov, A.: Categories, Allegories. Mathematical Library, vol. 39. North-Holland, Amsterdam (1990)

    MATH  Google Scholar 

  26. Gordon, M.J.C., Melham, T.F.: Introduction to HOL: A Theorem Proving Environment for Higher Order Logic. Cambridge University Press, Cambridge (1993)

    MATH  Google Scholar 

  27. Hoare, C.A.R.: An axiomatic basis for computer programming. CACM 12(10), 576–580 (1969)

    Article  MATH  Google Scholar 

  28. Hoare, C.A.R., Misra, J.: Verified software: theories, tools, experiments — vision of a Grand Challenge project. In: Proceedings of IFIP working conference on Verified Software: theories, tools, experiments (2005)

    Google Scholar 

  29. Hoogendijk, P.: A Generic Theory of Data Types. PhD thesis, University of Eindhoven, The Netherlands (1997)

    Google Scholar 

  30. Jackson, D.: Software abstractions: logic, language, and analysis. MIT Press, Cambridge (2006)

    Google Scholar 

  31. Jacobs, B.: Introduction to Coalgebra. Towards Mathematics of States and Observations. Draft Copy. Institute for Computing and Information Sciences, Radboud University Nijmegen, P.O. Box 9010, 6500 GL Nijmegen, The Netherlands

    Google Scholar 

  32. Jones, C.B.: Systematic Software Development Using VDM, 1st edn. Series in Computer Science. Prentice-Hall Int., Englewood Cliffs (1986) (1990)

    MATH  Google Scholar 

  33. Peyton Jones, S.L.: Haskell 98 Language and Libraries. Cambridge University Press, Cambridge (2003); also published as a Special Issue of the Journal of Functional Programming 13(1) (Janurary 2003)

    Google Scholar 

  34. Joshi, R., Holzmann, G.J.: A mini challenge: build a verifiable filesystem. Formal Asp. Comput. 19(2), 269–272 (2007)

    Article  MATH  Google Scholar 

  35. Kawahara, Y.: Notes on the universality of relational functors. Mem. Fac. Sci. Kyushu Univ (Series A, Mathematics) 27(2), 275–289 (1973)

    MathSciNet  MATH  Google Scholar 

  36. Kozen, D.: On Hoare logic and Kleene algebra with tests. Trans. Computational Logic 1(1), 60–76 (2000)

    Article  MathSciNet  Google Scholar 

  37. Kreyszig, E.: Advanced Engineering Mathematics, 6th edn. J. Wiley & Sons, Chichester (1988)

    MATH  Google Scholar 

  38. Maier, D.: The Theory of Relational Databases. Computer Science Press (1983)

    Google Scholar 

  39. Meyer, B.: Applying “design by contract”. IEEE Computer 25(10), 40–51 (1992)

    Article  Google Scholar 

  40. Nanevski, A., Morrisett, G., Birkedal, L.: Polymorphism and separation in Hoare type theory. In: ICFP 2006, pp. 62–73. ACM, New York (2006)

    Google Scholar 

  41. Necco, C., Oliveira, J.N., Visser, J.: ESC/PF: Static checking of relational models by calculation (2008) (submitted)

    Google Scholar 

  42. Oliveira, J.N.: Bagatelle in C arranged for VDM SoLo. JUCS 7(8), 754–781 (2001)

    MATH  Google Scholar 

  43. Oliveira, J.N.: Constrained datatypes, invariants and business rules: a relational approach. PUReCafé talk, DI-UM, 2004.5.20, PURe Project (POSI/CHS/44304/2002) (2004)

    Google Scholar 

  44. Oliveira, J.N.: Calculate databases with ‘simplicity’. Presentation at the IFIP WG 2.1 #59 Meeting, Nottingham, UK (September 2004) (slides available from the author’s website)

    Google Scholar 

  45. Oliveira, J.N.: Data dependency theory made generic — by calculation. Presentation at the IFIP WG 2.1 #62 Meeting, Namur, Belgium (December 2006)

    Google Scholar 

  46. Oliveira, J.N.: Reinvigorating pen-and-paper proofs in VDM: the pointfree approach. In: Presented at the Third Overture Workshop, Newcastle, UK, November 27-28 (2006)

    Google Scholar 

  47. Oliveira, J.N.: Pointfree foundations for (generic) lossless decomposition (2008) (submitted)

    Google Scholar 

  48. Oliveira, J.N.: Transforming Data by Calculation. In: Lämmel, R., Visser, J., Saraiva, J. (eds.) GTTSE 2007. LNCS, vol. 5235, pp. 134–195. Springer, Heidelberg (2008)

    Chapter  Google Scholar 

  49. Oliveira, J.N., Rodrigues, C.J.: Transposing relations: from Maybe functions to hash tables. In: Kozen, D. (ed.) MPC 2004. LNCS, vol. 3125, pp. 334–356. Springer, Heidelberg (2004)

    Chapter  Google Scholar 

  50. Oliveira, J.N., Rodrigues, C.J.: Pointfree factorization of operation refinement. In: Misra, J., Nipkow, T., Sekerinski, E. (eds.) FM 2006. LNCS, vol. 4085, pp. 236–251. Springer, Heidelberg (2006)

    Chapter  Google Scholar 

  51. Ore, O.: Galois connexions. Trans. Amer. Math. Soc. 55, 493–513 (1944)

    Article  MathSciNet  MATH  Google Scholar 

  52. Pierce, B.C.: Types and programming languages. MIT Press, Cambridge (2002)

    MATH  Google Scholar 

  53. Pratt, V.: Origins of the calculus of binary relations. In: Proc. of the 7th Annual IEEE Symp. on Logic in Computer Science, Santa Cruz, CA, pp. 248–254. IEEE Comp. Soc., Los Alamitos (1992)

    Google Scholar 

  54. Reynolds, J.C.: Types, abstraction and parametric polymorphism. Information Processing 83, 513–523 (1983)

    Google Scholar 

  55. Russo, L.: The Forgotten Revolution: How Science Was Born in 300BC and Why It Had to Be Reborn. Springer, Heidelberg (2003)

    Google Scholar 

  56. Silva, P.F., Oliveira, J.N.: ‘Galculator’: functional prototype of a Galois-connection based proof assistant. In: PPDP 2008: Proceedings of the 10th international ACM SIGPLAN conference on Principles and practice of declarative programming, pp. 44–55. ACM, New York (2008)

    Google Scholar 

  57. Spivey, J.M.: The Z Notation — A Reference Manual. Series in Computer Science. Prentice-Hall International, Englewood Cliffs (1989) C.A.R. Hoare (series editor)

    MATH  Google Scholar 

  58. Open Group Technical Standard. Standard for information technology - Portable operating system interface (POSIX). System interfaces. IEEE Std 1003.1, 2004 edn. The Open Group Technical Standard. Base Specifications, Issue 6. Includes IEEE Std 1003.1-2001, IEEE Std 1003.1-2001/Cor 1-2002 and IEEE Std 1003.1-2001/Cor 2-2004. System Interfaces (2004)

    Google Scholar 

  59. Takano, A., Meijer, E.: Shortcut to deforestation in calculational form. In: Proc. FPCA 1995 (1995)

    Google Scholar 

  60. Tarski, A., Givant, S.: A Formalization of Set Theory without Variables. American Mathematical Society, vol. 41. AMS Colloquium Publications, Providence (1987)

    MATH  Google Scholar 

  61. Vermolen, S.D.: Automatically discharging VDM proof obligations using HOL. Master’s thesis, Radboud University Nijmegen, Computing Science Department (June-August 2007)

    Google Scholar 

  62. Voermans, T.S.: Inductive Datatypes with Laws and Subtyping — A Relational Model. PhD thesis, University of Eindhoven, The Netherlands (1999)

    Google Scholar 

  63. Voigtländer, J.: Proving correctness via free theorems: The case of the destroy/build-rule. In: Glück, R., de Moor, O. (eds.) Symposium on Partial Evaluation and Semantics-Based Program Manipulation, San Francisco, California, Proceedings, pp. 13–20. ACM Press, New York (2008)

    Google Scholar 

  64. Wadler, P.L.: Theorems for free! In: 4th International Symposium on Functional Programming Languages and Computer Architecture, London, pp. 347–359. ACM, New York (1989)

    Google Scholar 

  65. Wang, S., Barbosa, L.S., Oliveira, J.N.: A Relational Model for Confined Separation Logic. In: TASE 2008, pp. 263–270. IEEE Computer Society, Los Alamitos (2008)

    Google Scholar 

  66. Woodcock, J., Davies, J.: Using Z: Specification, Refinement, and Proof. Prentice-Hall, Inc., Upper Saddle River (1996)

    MATH  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2009 Springer-Verlag Berlin Heidelberg

About this chapter

Cite this chapter

Oliveira, J.N. (2009). Extended Static Checking by Calculation Using the Pointfree Transform. In: Bove, A., Barbosa, L.S., Pardo, A., Pinto, J.S. (eds) Language Engineering and Rigorous Software Development. LerNet 2008. Lecture Notes in Computer Science, vol 5520. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-03153-3_5

Download citation

  • DOI: https://doi.org/10.1007/978-3-642-03153-3_5

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-642-03152-6

  • Online ISBN: 978-3-642-03153-3

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics