Active libraries and universal languages

Universal programming languages are an old dream. There is the computability sense of Turing-universal; Landin and others have advocated syntactically universal languages, a path leading to extensible syntax, e.g., macros. A stronger kind of universality would reduce the need for domain-specific languages—they could be replaced by ‘active libraries’ providing and safety requirements. Experience suggests that much domain-specific optimization can be realized by staging, i.e., doing computations at compile time to produce an efficient run-time. Rudimentary computability arguments show that languages with a ‘Turing-complete kernel’ can be both stage-universal and safety-universal. But making this approach practical requires compilers that find optimal programs, and this is a hard problem. Guaranteed Optimization is a proof technique for constructing compilers that find optimal programs within a decidable approximation of program equivalence. This gives us compilers whose kernels possess intuitive closure properties akin to, but stronger than, languages with explicit staging, and can meet the ‘Turing-complete kernel’ requirement to be stage- and safety-universal. To show this technique is practical we demonstrate a prototype compiler that finds optimal programs in the presence of heap operations; the proof of this is tedious but automated. The proof ensures that any code ‘lying in the kernel’ is evaluated and erased at compile-time. This opens several interesting directions for active libraries. One is staging: we can synthesize fast implementation code at compile-time by putting code-generators in the kernel. To achieve domain-specific safety checking we propose ‘proof embeddings’ in which proofs are intermingled with code and the optimizer does double-duty as a theorem prover. Proofs lying in the kernel are checked and erased at compile-time, yielding code that is both fast and safe.

[1]  M. Newman On Theories with a Combinatorial Definition of "Equivalence" , 1942 .

[2]  A. Whitehead An Introduction to Mathematics , 1949, Nature.

[3]  A. Whitehead An Introduction to Mathematics , 1949, Nature.

[4]  A. Nerode,et al.  Linear automaton transformations , 1958 .

[5]  E. T. Irons,et al.  Invited papers: Toward better programming languages , 1962, ACM '62.

[6]  Haskell B. Curry,et al.  Foundations of Mathematical Logic , 1964 .

[7]  P. J. Landin,et al.  The next 700 programming languages , 1966, CACM.

[8]  Jesse B. Wright,et al.  Algebraic Automata and Context-Free Sets , 1967, Inf. Control..

[9]  J. Wilkins An essay towards a real character, and a philosophical language, 1668 , 1968 .

[10]  John Cocke,et al.  Programming languages and their compilers , 1969 .

[11]  P. Smith Santa Fe, New Mexico , 1969 .

[12]  G. Molnar SEL - A Self-Extensible Programming Language , 1971, Comput. J..

[13]  John E. Hopcroft,et al.  An n log n algorithm for minimizing states in a finite automaton , 1971 .

[14]  Gary A. Kildall,et al.  A unified approach to global program optimization , 1973, POPL.

[15]  Bruno Courcelle,et al.  Algorithmes d'equivalence et de reduction a des expressions minimales dans une classe d'equations recursives simples , 1974, ICALP.

[16]  Robert E. Noonan Towards a canonical form for computer programs , 1975, ACM '75.

[17]  Fred P. Brooks,et al.  The Mythical Man-Month , 1975, Reliable Software.

[18]  Peter Aczel,et al.  An Introduction to Inductive Definitions , 1977 .

[19]  Matthew S. Hecht,et al.  Flow Analysis of Computer Programs , 1977 .

[20]  Patrick Cousot,et al.  Automatic synthesis of optimal invariant assertions: Mathematical foundations , 1977 .

[21]  Gerard Huet,et al.  Conflunt reductions: Abstract properties and applications to term rewriting systems , 1977, 18th Annual Symposium on Foundations of Computer Science (sfcs 1977).

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

[23]  Patrick Cousot,et al.  Systematic design of program analysis frameworks , 1979, POPL.

[24]  Greg Nelson,et al.  Simplification by Cooperating Decision Procedures , 1979, TOPL.

[25]  Gérard P. Huet,et al.  Confluent Reductions: Abstract Properties and Applications to Term Rewriting Systems , 1980, J. ACM.

[26]  Robert E. Tarjan,et al.  Variations on the Common Subexpression Problem , 1980, J. ACM.

[27]  Jean Vuillemin,et al.  A unifying look at data structures , 1980, CACM.

[28]  Richard L. Wexelblat,et al.  The consequences of one's first programming language , 1980, SIGSMALL '80.

[29]  Stanley Burris,et al.  A course in universal algebra , 1981, Graduate texts in mathematics.

[30]  David Park,et al.  Concurrency and Automata on Infinite Sequences , 1981, Theoretical Computer Science.

[31]  Robert C. Metzger APL thinking finding array-oriented solutions , 1981, APL '81.

[32]  Michael A. Covington,et al.  Universal Languages and Scientific Taxonomy in the Seventeenth Century , 1982 .

[33]  Bruno Courcelle,et al.  Fundamental Properties of Infinite Trees , 1983, Theor. Comput. Sci..

[34]  D. Knuth,et al.  Simple Word Problems in Universal Algebras , 1983 .

[35]  Mark H. Overmars,et al.  The Design of Dynamic Data Structures , 1987, Lecture Notes in Computer Science.

[36]  Robert Klee,et al.  Micro-Determinism and Concepts of Emergence , 1984, Philosophy of Science.

[37]  Robert E. Shostak,et al.  Deciding Combinations of Theories , 1982, JACM.

[38]  Algebraic logic , 1985, Problem books in mathematics.

[39]  David R. Barstow Domain-Specific Automatic Programming , 1985, IEEE Transactions on Software Engineering.

[40]  Mark N. Wegman,et al.  Constant propagation with conditional branches , 1985, POPL.

[41]  William L. Scherlis,et al.  Compilers and staging transformations , 1986, POPL '86.

[42]  Robert E. Tarjan,et al.  Making data structures persistent , 1986, STOC '86.

[43]  Cliff B. Jones,et al.  Systematic software development using VDM , 1986, Prentice Hall International Series in Computer Science.

[44]  Philip Wadler,et al.  Projections for strictness analysis , 1987, FPCA.

[45]  H. Massalin Superoptimizer: a look at the smallest program , 1987, ASPLOS.

[46]  Robert E. Tarjan,et al.  Three Partition Refinement Algorithms , 1987, SIAM J. Comput..

[47]  Richard A. O'Keefe Finite Fixed-Point Problems , 1987, ICLP.

[48]  Richard C. Waters,et al.  Automatic programming: myths and prospects , 1988, Computer.

[49]  B. Bollobás,et al.  The longest chain among random points in Euclidean space , 1988 .

[50]  Eduardo Pelegrí-Llopart,et al.  Optimal code generation for expression trees: an application BURS theory , 1988, POPL '88.

[51]  Jack J. Dongarra,et al.  An extended set of FORTRAN basic linear algebra subprograms , 1988, TOMS.

[52]  Philip Wadler,et al.  Backwards Strictness Analysis: Proved and Improved , 1989, Functional Programming.

[53]  Robin Milner,et al.  Communication and concurrency , 1989, PHI Series in computer science.

[54]  Kevin Knight,et al.  Unification: a multidisciplinary survey , 1989, CSUR.

[55]  William R. Cook,et al.  Inheritance is not subtyping , 1989, POPL '90.

[56]  J. Michael Spivey,et al.  The Z notation - a reference manual , 1992, Prentice Hall International Series in Computer Science.

[57]  The linguistic relativity hypothesis , 1989 .

[58]  Max Dauchet Simulation of Turning Machines by a Left-Linear Rewrite Rule , 1989, RTA.

[59]  Peter Winkler Random orders of dimension 2 , 1990 .

[60]  Robert E. Tarjan,et al.  Unique binary search tree representations and equality-testing of sets and sequences , 1990, STOC '90.

[61]  Philip Wadler,et al.  Deforestation: Transforming Programs to Eliminate Trees , 1990, Theor. Comput. Sci..

[62]  Matthias Felleisen,et al.  On the Expressive Power of Programming Languages , 1990, European Symposium on Programming.

[63]  Jean-Pierre Jouannaud,et al.  Rewrite Systems , 1991, Handbook of Theoretical Computer Science, Volume B: Formal Models and Sematics.

[64]  Rajiv Gupta A fresh look at optimizing array bound checking , 1990, PLDI '90.

[65]  Arthur B. Maccabe,et al.  The program dependence web: a representation supporting control-, data-, and demand-driven interpretation of imperative languages , 1990, PLDI '90.

[66]  Jong-Deok Choi,et al.  Automatic construction of sparse data flow evaluation graphs , 1991, POPL '91.

[67]  A. Andersson,et al.  Faster uniquely represented dictionaries , 1991, [1991] Proceedings 32nd Annual Symposium of Foundations of Computer Science.

[68]  M. Wegman,et al.  Constant propagation with conditional branches , 1991, TOPL.

[69]  Alexander A. Letichevsky,et al.  Algebraic programs optimization , 1991, ISSAC '91.

[70]  John C. Mitchell On Abstraction and the Expressive Power of Programming Languages , 1991, Sci. Comput. Program..

[71]  Bertrand Meyer,et al.  Eiffel: The Language , 1991 .

[72]  Keshav Pingali,et al.  Dependence flow graphs: an algebraic approach to program dependencies , 1991, POPL '91.

[73]  Dhananjay M. Dhamdhere,et al.  How to analyze large programs efficiently and informatively , 1992, PLDI '92.

[74]  Benjamin Goldberg,et al.  Escape analysis on lists , 1992, PLDI '92.

[75]  Flemming Nielson,et al.  Two-level functional languages , 1992, Cambridge tracts in theoretical computer science.

[76]  Pascal Van Hentenryck,et al.  A Universal Top-Down Fixpoint Algorithm , 1992 .

[77]  Peter Sestoft,et al.  Partial evaluation and automatic program generation , 1993, Prentice Hall international series in computer science.

[78]  Maurice Bruynooghe,et al.  Improving abstract interpretations by combining domains , 1995, TOPL.

[79]  Amr Sabry,et al.  The essence of compiling with continuations , 1993, PLDI '93.

[80]  Keshav Pingali,et al.  Dependence-based program analysis , 1993, PLDI '93.

[81]  P. J. Plauger Numerical C Extensions Group , 1993 .

[82]  D. Plaisted Equational reasoning and term rewriting systems , 1993 .

[83]  Niels Jørgensen,et al.  Chaotic Fixpoint Iteration Guided by Dynamic Dependency , 1993, WSA.

[84]  Jens Palsberg,et al.  Efficient recursive subtyping , 1992, POPL '93.

[85]  Ron Cytron,et al.  Efficient accommodation of may-alias information in SSA form , 1993, PLDI '93.

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

[87]  Michael D. Ernst,et al.  Value dependence graphs: representation without taxation , 1994, POPL '94.

[88]  Andrew Kennedy,et al.  Dimension Types , 1994, ESOP.

[89]  Nevin Heintze,et al.  Set-based analysis of ML programs , 1994, LFP '94.

[90]  Thomas W. Reps,et al.  Solving Demand Versions of Interprocedural Analysis Problems , 1994, CC.

[91]  Pascal Van Hentenryck,et al.  Combinations of abstract domains for logic programming , 1994, POPL '94.

[92]  Bernhard Steffen,et al.  Optimal code motion: theory and practice , 1994, TOPL.

[93]  Alexander A. Stepanov,et al.  Algorithm‐oriented generic libraries , 1994, Softw. Pract. Exp..

[94]  Yang Meng Tan,et al.  LCLint: a tool for using specifications to check code , 1994, SIGSOFT '94.

[95]  Simon L. Peyton Jones,et al.  Cheap Deforestation in Practice: An Optimizer for Haskell , 1994, IFIP Congress.

[96]  Peter Sewell Bisimulation is not finitely (first order) equationally axiomatisable , 1994, Proceedings Ninth Annual IEEE Symposium on Logic in Computer Science.

[97]  Bjarne Stroustrup,et al.  The Design and Evolution of C , 1994 .

[98]  Robert E. Tarjan,et al.  Unique Binary-Search-Tree Representations and Equality Testing of Sets and Sequences , 1994, SIAM J. Comput..

[99]  Thomas W. Reps,et al.  An incremental algorithm for maintaining the dominator tree of a reducible flowgraph , 1994, POPL '94.

[100]  Frank S. de Boer,et al.  Embedding as a Tool for Language Comparison , 1994, Inf. Comput..

[101]  Johan Lewi,et al.  Efficient FixPoint Computation , 1994, SAS.

[102]  Mark Allen Weiss Linear-Time Construction of Treaps and Cartesian Trees , 1994, Inf. Process. Lett..

[103]  Rajiv Gupta,et al.  Reducing the Cost of Data Flow Analysis By Congruence Partitioning , 1994, CC.

[104]  Jiawang Wei,et al.  Correctness of Fixpoint Transformations , 1994, Theor. Comput. Sci..

[105]  Michael Wolfe,et al.  Elimination of redundant array subscript range checks , 1995, PLDI '95.

[106]  Rudolf Eigenmann,et al.  Idiom recognition in the Polaris parallelizing compiler , 1995, ICS '95.

[107]  Erik Ruf Optimizing sparse representations for dataflow analysis , 1995 .

[108]  Robert Harper,et al.  Compiling polymorphism using intensional type analysis , 1995, POPL '95.

[109]  Jan Willem Klop,et al.  Term Graph Rewriting , 1995, HOA.

[110]  Shigeru Chiba,et al.  A metaobject protocol for C++ , 1995, OOPSLA.

[111]  Kwangkeun Yi,et al.  Efficient computation of fixpoints that arise in complex program analysis , 1995, J. Program. Lang..

[112]  B. Steensgaard Sparse functional stores for imperative programs , 1995, IR '95.

[113]  Rajiv Gupta,et al.  Demand-driven computation of interprocedural data flow , 1995, POPL '95.

[114]  Jean-Pierre Jouannaud,et al.  Rewrite Proofs and Computations , 1995 .

[115]  Sally Popkorn First Steps in Modal Logic , 1995 .

[116]  Thomas W. Reps,et al.  Precise interprocedural dataflow analysis via graph reachability , 1995, POPL '95.

[117]  Keith D. Cooper,et al.  Combining analyses, combining optimizations , 1995, TOPL.

[118]  Thomas W. Reps,et al.  Demand interprocedural dataflow analysis , 1995, SIGSOFT FSE.

[119]  Michael Wolfe,et al.  High performance compilers for parallel computing , 1995 .

[120]  Bernhard Steffen,et al.  Non-monotone Fixpoint Iterations to Resolve Second Order Effects , 1996, CC.

[121]  George Horatiu Botorog,et al.  Efficient Parallel Programming with Algorithmic Skeletons , 1996, Euro-Par, Vol. I.

[122]  David Sands,et al.  Total correctness by local improvement in the transformation of functional programs , 1996, TOPL.

[123]  Neil D. Jones,et al.  An introduction to partial evaluation , 1996, CSUR.

[124]  Guy L. Steele,et al.  The Java Language Specification , 1996 .

[125]  Kent D. Wilken,et al.  Optimal and Near‐optimal Global Register Allocation Using 0–1 Integer Programming , 1996, Softw. Pract. Exp..

[126]  Olin Shivers A Universal Scripting Framework or Lambda: The Ultimate "Little Language" , 1996, ASIAN.

[127]  Incremental Computation of Static Single Assignment Form , 1996, CC.

[128]  Rakesh Ghiya Practical Techniques For Interprocedural Heap Analysis , 1996 .

[129]  Todd L. Veldhuizen,et al.  Expression templates , 1996 .

[130]  Todd L. Veldhuizen,et al.  Using C++ template metaprograms , 1996 .

[131]  Guang R. Gao,et al.  A new framework for exhaustive and incremental data flow analysis using DJ graphs , 1996, PLDI '96.

[132]  Kent D. Wilken,et al.  Optimal and Near-Optimal Global Register Allocation Using 0-1 Integer Programming , 1996, Software, Practice & Experience.

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

[134]  Patrick Cousot,et al.  Abstract interpretation , 1996, CSUR.

[135]  Helmut Seidl,et al.  An Even Faster Solver for General Systems of Equations , 1996, SAS.

[136]  Paul Hudak,et al.  Building domain-specific embedded languages , 1996, CSUR.

[137]  R. Kent Dybvig,et al.  Fast and Effective Procedure Inlining , 1997, SAS.

[138]  Kathryn Fraughnaugh,et al.  Introduction to graph theory , 1973, Mathematical Gazette.

[139]  Geoffrey Smith,et al.  A Type-Based Approach to Program Security , 1997, TAPSOFT.

[140]  Keith D. Cooper,et al.  Value Numbering , 1997, Softw. Pract. Exp..

[141]  Jozef Gruska Foundations of Computing , 1997 .

[142]  Matthias Felleisen,et al.  Componential set-based analysis , 1997, TOPL.

[143]  Kevin S. Van Horn Compile-time assertions in C++ , 1997 .

[144]  Steven S. Muchnick,et al.  Advanced Compiler Design and Implementation , 1997 .

[145]  George C. Necula,et al.  Proof-carrying code , 1997, POPL '97.

[146]  Hans Petter Langtangen,et al.  Modern Software Tools for Scientific Computing , 1997, Birkhäuser Boston.

[147]  B. McLaughlin Emergence and Supervenience , 1997 .

[148]  Dawson R. Engler,et al.  Incorporating Application Semantics and Control into Compilation , 1997, DSL.

[149]  Vivek Sarkar,et al.  Array SSA form and its use in parallelization , 1998, POPL '98.

[150]  Guy E. Blelloch,et al.  Fast set operations using treaps , 1998, SPAA '98.

[151]  Stephen N. Freund,et al.  A type system for object initialization in the Java bytecode language , 1998, OOPSLA '98.

[152]  Frank Pfenning,et al.  Eliminating array bound checking through dependent types , 1998, PLDI.

[153]  Jan J. M. M. Rutten,et al.  Automata and Coinduction (An Exercise in Coalgebra) , 1998, CONCUR.

[154]  Luca Aceto,et al.  On a Question of A. Salomaa: The Equational Theory of Regular Expressions Over a Singleton Alphabet is not Finitely Based , 1998, Theor. Comput. Sci..

[155]  Paolo Traverso,et al.  Applied Formal Methods — FM-Trends 98 , 1998, Lecture Notes in Computer Science.

[156]  Bradford L. Chamberlain,et al.  Regions: an abstraction for expressing array computation , 1998, APL.

[157]  Rastislav Bodík,et al.  Path-sensitive value-flow analysis , 1998, POPL '98.

[158]  P. Cameron Naïve set theory , 1998 .

[159]  Natarajan Shankar,et al.  PVS: An Experience Report , 1998, FM-Trends.

[160]  Max Hailperin,et al.  Cost-optimal code motion , 1998, TOPL.

[161]  Jeremy G. Siek,et al.  The Matrix Template Library: A Generic Programming Approach to High Performance Numerical Linear Algebra , 1998, ISCOPE.

[162]  Todd L. Veldhuizen,et al.  Arrays in Blitz++ , 1998, ISCOPE.

[163]  Tatsuru Matsushita,et al.  Expressive Power of Declarative Programming Languages , 1998 .

[164]  Samuel N. Kamin Research on Domain-specific Embedded Languages and Program Generators , 1997, US-Brazil Joint Workshops on the Formal Foundations of Software Systems.

[165]  Chris Okasaki,et al.  Purely functional data structures , 1998 .

[166]  Jonathan Rees,et al.  Revised3 report on the algorithmic language scheme , 1986, SIGP.

[167]  Bruno Blanchet,et al.  Escape analysis: correctness proof, implementation and experimental results , 1998, POPL '98.

[168]  Vivek Sarkar,et al.  Enabling Sparse Constant Propagation of Array Elements via Array SSA Form , 1998, SAS.

[169]  Robert Glück,et al.  Introduction to Supercompilation , 1998, Partial Evaluation.

[170]  Dennis Gannon,et al.  Active Libraries: Rethinking the roles of compilers and libraries , 1998, ArXiv.

[171]  Steve Karmesin,et al.  Array Design and Expression Evaluation in POOMA II , 1998, ISCOPE.

[172]  Eelco Visser,et al.  Building program optimizers with rewriting strategies , 1998, ICFP '98.

[173]  Michael J. Schulte,et al.  The Interval-Enhanced GNU Fortran Compiler , 1998, SCAN.

[174]  R. Kent Dybvig,et al.  Revised5 Report on the Algorithmic Language Scheme , 1986, SIGP.

[175]  Paul Hudak,et al.  Modular domain specific languages and tools , 1998, Proceedings. Fifth International Conference on Software Reuse (Cat. No.98TB100203).

[176]  David Grove,et al.  Frameworks for Intra- and Interprocedural Dataflow Analysis , 1998 .

[177]  Scott W. Haney,et al.  PETE: THE PORTABLE EXPRESSION TEMPLATE ENGINE , 1999 .

[178]  Stephen N. Freund,et al.  A type system for object initialization in the Java bytecode language , 1999, TOPL.

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

[180]  Martín Abadi,et al.  Types for Safe Locking , 1999, ESOP.

[181]  Allen D. Malony,et al.  SMARTS: exploiting temporal locality and parallelism through vertical execution , 1999, ICS '99.

[182]  Jong-Deok Choi,et al.  Interprocedural pointer alias analysis , 1999, TOPL.

[183]  Michael J. Schulte,et al.  The Interval-Enhanced GNU Fortran Compiler , 1999, Reliab. Comput..

[184]  Raymond Lo,et al.  Partial redundancy elimination in SSA form , 1999, TOPL.

[185]  Yoshihiko Futamura,et al.  Partial Evaluation of Computation Process--An Approach to a Compiler-Compiler , 1999, High. Order Symb. Comput..

[186]  Achim Stephan,et al.  Varieties of Emergentism , 1999 .

[187]  Todd L. Veldhuizen C++ Templates as Partial Evaluation , 1999, PEPM.

[188]  R. Kent Dybvig,et al.  Extending the scope of syntactic abstraction , 1999, POPL '99.

[189]  Yanhong A. Liu,et al.  Eliminating Dead Code on Recursive Data , 1999, SAS.

[190]  Calvin Lin,et al.  An annotation language for optimizing software libraries , 1999, DSL '99.

[191]  J. Crutchfield Is anything ever new?: considering emergence , 1999 .

[192]  Morten Heine Sørensen,et al.  On Perfect Supercompilation , 1999, Ershov Memorial Conference.

[193]  Michael Hind,et al.  Combining Interprocedural Pointer Analysis and Conditional Constant Propagation , 1999 .

[194]  Oege de Moor,et al.  Compiling embedded languages , 2000, Journal of Functional Programming.

[195]  Matthias S. Muller Abstraction Benchmarks and performance of C++ applications , 2000 .

[196]  Vivek Sarkar,et al.  ABCD: eliminating array bounds checks on demand , 2000, PLDI '00.

[197]  Jeremy G. Siek,et al.  Concept Checking: Binding Parametric Polymorphism in C++ , 2000 .

[198]  Todd L. Veldhuizen Blitz++: The Library that Thinks it is a Compiler , 2000 .

[199]  Julia A. Knight,et al.  Computable structures and the hyperarithmetical hierarchy , 2000 .

[200]  Krzysztof Czarnecki,et al.  Generative programming - methods, tools and applications , 2000 .

[201]  Uwe Aßmann,et al.  Graph rewrite systems for program optimization , 2000, TOPL.

[202]  Martin Rößiger,et al.  Coalgebras and Modal Logic , 2000, CMCS.

[203]  Jan J. M. M. Rutten,et al.  Universal coalgebra: a theory of systems , 2000, Theor. Comput. Sci..

[204]  Kent Wilken,et al.  Optimal instruction scheduling using integer programming , 2000, PLDI.

[205]  Dawson R. Engler,et al.  Checking system rules using system-specific, programmer-written compiler extensions , 2000, OSDI.

[206]  Walid Taha,et al.  MetaML and multi-stage programming with explicit annotations , 2000, Theor. Comput. Sci..

[207]  Todd L. Veldhuizen Five compilation models for C++ templates , 2000 .

[208]  Robert Glück,et al.  Generative Programming and Active Libraries , 1998, Generic Programming.

[209]  Laurent Mauborgne,et al.  Improving the Representation of Infinite Trees to Deal with Sets of Trees , 2000, ESOP.

[210]  Yannis Smaragdakis,et al.  Static interfaces in C , 2000 .

[211]  Toby Walsh,et al.  On the notion of interestingness in automated mathematical discovery , 2000, Int. J. Hum. Comput. Stud..

[212]  Samuel P. Midkiff,et al.  Java programming for high-performance numerical computing , 2000, IBM Syst. J..

[213]  Zoltán Ésik,et al.  Iteration Algebras Are Not Finitely Axiomatizable. Extended Abstract , 2000, LATIN.

[214]  Zena M. Ariola,et al.  Bisimilarity in Term Graph Rewriting , 2000, Inf. Comput..

[215]  Emden R. Gansner,et al.  Graphviz - Open Source Graph Drawing Tools , 2001, GD.

[216]  Bryon Cunningham The Reemergence of 'Emergence' , 2001, Philosophy of Science.

[217]  Arch D. Robison,et al.  Impact of economics on compiler optimization , 2001, JGI '01.

[218]  William G. Griswold,et al.  An Overview of AspectJ , 2001, ECOOP.

[219]  Sibylle Schupp,et al.  User-Extensible Simplification - Type-Based Optimizer Generators , 2001, CC.

[220]  Jerzy Tiuryn,et al.  Dynamic logic , 2001, SIGA.

[221]  William S. Brown Applied template metaprogramming in siunits: the library of unit-based computation , 2001 .

[222]  Haim Kaplan,et al.  Making data structures confluently persistent , 2001, SODA '01.

[223]  Agostino Dovier,et al.  A Fast Bisimulation Algorithm , 2001, CAV.

[224]  A. Kamil Evolution and Cognition: By Cecilia Heyes and Ludwig Huber (Eds.). Cambridge, MA: The MIT Press, 2000, 386 pages, ISBN 0-262-08286-1, US$47.95 , 2001 .

[225]  Oege de Moor,et al.  Imperative Program Transformation by Rewriting , 2001, CC.

[226]  K. Rustan M. Leino,et al.  Extended Static Checking: A Ten-Year Perspective , 2001, Informatics.

[227]  Wolfgang Thomas Logic for Computer Science: The Engineering Challenge , 2001, Informatics.

[228]  Peter Thiemann,et al.  Programmable Type Systems for Domain Specific Languages , 2002, WFLP.

[229]  Martin C. Rinard,et al.  ACM Conference on Object-Oriented Programming, Systems, Languages and Applications (OOPSLA), November 2002 Ownership Types for Safe Programming: Preventing Data Races and Deadlocks , 2022 .

[230]  Greg Nelson,et al.  Extended static checking for Java , 2002, PLDI '02.

[231]  Steve Roach Logic-Based Program Synthesis: State-of-the-Art and Future Trends , 2002 .

[232]  Alexander Aiken,et al.  Flow-sensitive type qualifiers , 2002, PLDI '02.

[233]  Keith H. Randall,et al.  Denali: a goal-directed superoptimizer , 2002, PLDI '02.

[234]  Sriram K. Rajamani,et al.  The SLAM project: debugging system software via static analysis , 2002, POPL '02.

[235]  Denis Caromel,et al.  Computing in Object-Oriented Parallel Environments , 2002, Lecture Notes in Computer Science.

[236]  David K. Lowenthal,et al.  A Comparison of Array Bounds Checking on Superscalar and VLIW Architectures , 2002 .

[237]  Yunheung Paek,et al.  Efficient and precise array access analysis , 2002, TOPL.

[238]  Sorin Lerner,et al.  Composing dataflow analyses and transformations , 2002, POPL '02.

[239]  Jihong Kim,et al.  Optimal software pipelining of loops with control flows , 2002, ICS '02.

[240]  Andrew Lumsdaine,et al.  Guaranteed Optimization: Proving Nullspace Properties of Compilers , 2002, SAS.

[241]  Mikel Luján,et al.  Elimination of Java array bounds checks in the presence of indirection , 2002, JGI '02.

[242]  Jean-Philippe Rennard,et al.  Implementation of Logical Functions in the Game of Life , 2004, Collision-Based Computing.

[243]  Scott Hauck,et al.  Reconfigurable computing: a survey of systems and software , 2002, CSUR.

[244]  Todd L. Veldhuizen,et al.  Guaranteed Optimization for Domain-Specific Programming , 2003, Domain-Specific Program Generation.

[245]  Todd L. Veldhuizen,et al.  C++ Templates are Turing Complete , 2003 .

[246]  Natascia Leonardi,et al.  "An Essay Towards a Real Character and a Philosophical Language and An Alphabetical Dictionary". Implications of a Conceptual and Alphabetic Arrangement in Defining Procedures , 2003 .

[247]  Yanhong A. Liu,et al.  Eliminating dead code on recursive data , 1999, Sci. Comput. Program..

[248]  Jenq Kuen Lee,et al.  Parallel Sparse Supports for Array Intrinsic Functions of Fortran 90 , 2001, The Journal of Supercomputing.

[249]  Mehdi Jazayeri,et al.  The method of attributes for data flow analysis , 2004, Acta Informatica.

[250]  Cecilia R. Aragon,et al.  Randomized search trees , 2005, Algorithmica.

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