Relational and Algebraic Methods in Computer Science

Separation logic (SL) is an extension of Hoare logic by operations and formulas that not only talk about program variables, but also about heap portions. Its general purpose is to enable more flexible reasoning about linked object/record structures. In the present paper we give an algebraic extension of SL at the data structure level. We define operations that additionally to heap separation make assumptions about the linking structure. Phenomena to be treated comprise reachability analysis, (absence of) sharing, cycle detection and preservation of substructures under destructive assignments. We demonstrate the practicality of this approach with the examples of in-place list-reversal and tree rotation.

[1]  Janis Voigtländer Bidirectionalization for free! (Pearl) , 2009, POPL '09.

[2]  Roland Carl Backhouse,et al.  A relational theory of datatypes , 1992 .

[3]  José Nuno Oliveira Transforming Data by Calculation , 2007, GTTSE.

[4]  Kazutaka Matsuda,et al.  Bidirectionalization transformation based on automatic derivation of view complement functions , 2007, ICFP '07.

[5]  Michael Winter,et al.  A PSEUDO REPRESENTATION THEOREM FOR VARIOUS CATEGORIES OF RELATIONS , 2000 .

[6]  Alcino Cunha,et al.  Calculating with lenses: optimising bidirectional transformations , 2011, PEPM '11.

[7]  Benjamin C. Pierce,et al.  Combinators for bi-directional tree transformations: a linguistic approach to the view update problem , 2005, POPL '05.

[8]  Richard S. Bird,et al.  Algebra of programming , 1997, Prentice Hall International series in computer science.

[9]  José Nuno Oliveira,et al.  Extended Static Checking by Calculation Using the Pointfree Transform , 2009, LerNet ALFA Summer School.

[10]  Alcino Cunha,et al.  Generic Point-free Lenses , 2010, MPC.

[11]  Michael Winter Weak Relational Products , 2006, RelMiCS.

[12]  Alcino Cunha,et al.  Relations as Executable Specifications: Taming Partiality and Non-determinism Using Invariants , 2012, RAMICS.

[13]  Gunther Schmidt,et al.  Relational Mathematics , 2010, Encyclopedia of Mathematics and its Applications.

[14]  Benjamin C. Pierce,et al.  Quotient lenses , 2008, ICFP 2008.

[15]  Robert Glück,et al.  The Universal Resolving Algorithm: Inverse Computation in a Functional Language , 2000, MPC.

[16]  Kazutaka Matsuda,et al.  Bidirectionalizing graph transformations , 2010, ICFP '10.

[17]  Dongxi Liu,et al.  Bidirectional interpretation of XQuery , 2007, PEPM '07.

[18]  Shin-Cheng Mu,et al.  A programmable editor for developing structured documents based on bidirectional transformations , 2008, High. Order Symb. Comput..

[19]  Meng Wang,et al.  Combining syntactic and semantic bidirectionalization , 2010, ICFP '10.

[20]  Michael Winter,et al.  Goguen Categories: A Categorical Approach to L-fuzzy Relations , 2007 .

[21]  Shin-Cheng Mu,et al.  An Algebraic Approach to Bi-directional Updating , 2004, APLAS.

[22]  Joost Visser,et al.  Transformation of structure-shy programs with application to XPath queries and strategic functions , 2011, Sci. Comput. Program..

[23]  Michael Hanus,et al.  Multi-paradigm Declarative Languages , 2007, ICLP.