• DocumentCode
    4777
  • Title

    Alloy Meets the Algebra of Programming: A Case Study

  • Author

    Oliveira, J.N. ; Ferreira, M.A.

  • Author_Institution
    Dept. de Informitica, Univ. of Minho, Braga, Portugal
  • Volume
    39
  • Issue
    3
  • fYear
    2013
  • fDate
    Mar-13
  • Firstpage
    305
  • Lastpage
    326
  • Abstract
    Relational algebra offers to software engineering the same degree of conciseness and calculational power as linear algebra in other engineering disciplines. Binary relations play the role of matrices with similar emphasis on multiplication and transposition. This matches with Alloy´s lemma “everything is a relation” and with the relational basis of the Algebra of Programming (AoP). Altogether, it provides a simple and coherent approach to checking and calculating programs from abstract models. In this paper, we put Alloy and the Algebra of Programming together in a case study originating from the Verifiable File System mini-challenge put forward by Joshi and Holzmann: verifying the refinement of an abstract file store model into a journaled (Flash) data model catering to wear leveling and recovery from power loss. Our approach relies on diagrams to graphically express typed assertions. It interweaves model checking (in Alloy) with calculational proofs in a way which offers the best of both worlds. This provides ample evidence of the positive impact in software verification of Alloy´s focus on relations, complemented by induction-free proofs about data structures such as stores and lists.
  • Keywords
    formal verification; mathematics computing; relational algebra; software engineering; Alloys lemma; AoP; algebra of programming; calculating programs; data structures; linear algebra; model checking; relational algebra; relational basis; software engineering; software verification; verifiable file system; Calculus; Cognition; Matrices; Metals; Programming; Software; Model checking; algebra of programming; grand challenges in computing; software verification;
  • fLanguage
    English
  • Journal_Title
    Software Engineering, IEEE Transactions on
  • Publisher
    ieee
  • ISSN
    0098-5589
  • Type

    jour

  • DOI
    10.1109/TSE.2012.15
  • Filename
    6155724