Safety of Strictness Analysis via Term Graph Rewriting

A safe abstraction is presented for a restricted form of term graph rewriting. This abstraction can be seen as a formalisation of the rewrite system employed by the strictness analyser in the Concurrent Clean compiler. Programs written in a core functional language are interpreted as graph rewriting systems using a form of equational term graph rewriting due to Ariola and Arvind. Abstract graphs are defined by extending the signature of ordinary graphs and it is shown how to extend a rewriting system on ordinary graphs to one on abstract graphs. An abstraction relation between abstract graphs is used to define a notion of safety with respect to a variant of Ariola and Arvind’s direct approximation semantics, and this notion of safety is shown to be adequate for strictness analysis. Abstract reduction is defined as the union of the extended rewrite system with additional ‘heuristic’ reductions and shown to be safe.

[1]  Benjamin Goldberg,et al.  A syntactic approach to fixed point computation on finite domains , 1992, LFP '92.

[2]  V. van Oostrom,et al.  Confluence for Abstract and Higher-Order Rewriting , 1994 .

[3]  Andrew M. Pitts,et al.  Higher order operational techniques in semantics , 1999 .

[4]  Flemming Nielson,et al.  Principles of Program Analysis , 1999, Springer Berlin Heidelberg.

[5]  Zena M. Ariola,et al.  Properties of a First-Order Functional Language with Sharing , 1995, Theor. Comput. Sci..

[6]  Stefan Blom,et al.  Cyclic Lambda Calculi , 1997, TACS.

[7]  Patrick Cousot,et al.  Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints , 1977, POPL.

[8]  Zena M. Ariola,et al.  Equational Term Graph Rewriting , 1996, Fundam. Informaticae.

[9]  Pierre Deransart,et al.  Programming Languages Implementation and Logic Programming , 1989, Lecture Notes in Computer Science.

[10]  E. Goubault,et al.  A lattice for the abstract interpretation of term graph rewriting systems , 1993 .

[11]  Simon L. Peyton Jones,et al.  Once upon a polymorphic type , 1999, POPL '99.

[12]  H. Swinnerton-Dyer Publications of the Newton Institute , 1993 .

[13]  Jan Willem Klop,et al.  Comparing Curried and Uncurried Rewriting , 1993, J. Symb. Comput..

[14]  Marko C. J. D. van Eekelen,et al.  Term Graph Rewriting , 1987, PARLE.

[15]  M. J. Plasmeijer,et al.  Term graph rewriting: theory and practice , 1993 .

[16]  Chris Hankin,et al.  Abstract Interpretation of Declarative Languages , 1987 .

[17]  Matthias Felleisen,et al.  A Syntactic Approach to Type Soundness , 1994, Inf. Comput..

[18]  Chris Hankin,et al.  A Lattice of Abstract Graphs , 1993, PLILP.

[19]  Jan Willem Klop,et al.  Term Rewriting Systems: From Church-Rosser to Knuth-Bendix and Beyond , 1990, ICALP.

[20]  Chris Hankin,et al.  Abstract reduction: towards a theory via abstract interpretation , 1993 .

[21]  Philip Wadler,et al.  Once upon a type , 1995, FPCA '95.

[22]  Andrew Moran,et al.  Improvement in a lazy context: an operational theory for call-by-need , 1999, POPL '99.

[23]  Eric Nöcker,et al.  Strictness analysis using abstract reduction , 1993, FPCA '93.

[24]  Erik Barendsen,et al.  Uniqueness Typing for Functional Languages with Graph Rewriting Semantics , 1996, Math. Struct. Comput. Sci..

[25]  A. J. Nijman,et al.  PARLE Parallel Architectures and Languages Europe , 1987, Lecture Notes in Computer Science.

[26]  Manfred Schmidt-Schauß,et al.  Abstract Reduction Using a Tableau Calculus , 1995, SAS.