As the complexity of software increases, researchers and practicioners continue to seek better techniques for engineering the construction of evolution of software. Partial evaluation is an attractive technology for modern software construction since it provides automatic tools for software specialization and is based on rigorous semantic foundations. This book is based on a school held at DIKU Copenhagen, Denmark in summer 1998 during which leading researchers summarized the state of the art in partial evaluation. The lectures presented survey the foundations of partial evaluation in a clear and rigorous manner and practically introduce several existing partial evaluators with numerous examples. The second part of the book is devoted to more sophisticated theoretical aspects, advances systems and applications, and highlights open problems and challenges. The book is ideally suited for advanced courses and for self study.
This book constitutes the refereed proceedings of the ACM SIGPLAN/SIGSOFT Conference on Generative Programming and Component Engineering, GPCE 2002, held in Pittsburgh, PA, USA in October 2002. The 18 revised full papers presented were carefully reviewed and selected from 39 submissions. Among the topics covered are generative programming, meta-programming, program specialization, program analysis, program transformation, domain-specific languages, software architectures, aspect-oriented programming, and component-based systems.
This book constitutes the refereed proceedings of the 5th International Conference on Typed Lambda Calculi and Applications, TLCA 2001, held in Krakow, Poland in May 2001. The 28 revised full papers presented were carefully reviewed and selected from 55 submissions. The volume reports research results on all current aspects of typed lambda calculi. Among the topics addressed are type systems, subtypes, coalgebraic methods, pi-calculus, recursive games, various types of lambda calculi, reductions, substitutions, normalization, linear logic, cut-elimination, prelogical relations, and mu calculus.
Comparison is a powerful cognitive research tool in science since it does 'across studies' to evaluate similarities and differences, e.g. across taxa or diseases. This book deals with comparative research on plant disease epidemics. Comparisons are done in specifically designed experiments or with posterior analyses. From the apparently unlimited diversity of epidemics of hundreds of diseases, comparative epidemiology may eventually extract a number of basic types. These findings are very important to crop protection. Plant disease epidemiology, being the ecological branch of plant pathology, may also be of value to ecologists, but also epidemiologists in the areas of animal or human diseases may find interesting results, applicable to their areas of research.
This thesis covers the theory and practice behind practical evaluation. It explores how programmers write programs in a highly interpretive style without paying the price in efficiency.
1 PADO-IIwassponsoredbyBRICS andthe EspritWorkingGroupAPPSEM, and organized in cooperation with the European Association for Programming Languages and Systems (EAPLS) and the Special Interest Group on Progr- ming Languagesof the Association for Computing Machinery (ACM SIGPLAN). We gratefully acknowledge their support. We also extend our thanks to the PC members and external reviewers for theirtimeandthoughts,JanneKrounChristensenandKarenKjærMøllerfor theirorganizationalhelp,the project for hosting our submission web site,andDanielDamianforsettingitupandmaintainingit. February 2001 Olivier Danvy and Andrzej Filinski 1 BasicResearchinComputerScience(www. brics. dk), fundedbytheDanishNationalResearchFoundation.
This book presents latest research developments in the area of functional programming. The contributions in this volume cover a wide range of topics from theory, formal aspects of functional programming, transformational and generic programming to type checking and designing new classes of data types.Not all papers in this book belong to the category of research papers. Also, the categories of project description (at the start of a project) and project evaluation (at the end of a project) papers are represented. Particular trends in this volume are: - software engineering techniques such as metrics and refactoring for high-level programming languages;- generation techniques for data type elements as well as for lambda expressions;- analysis techniques for resource consumption with the use of high-level programming languages for embedded systems;- widening and strengthening of the theoretical foundations.The TFP community (www.tifp.org) is dedicated to promoting new research directions related to the field of functional programming and to investigate the relationships of functional programming with other branches of computer science. It is designed to be a platform for novel and upcoming research
This book, complete with online files and updates, covers a hugely important area of study in computing. It constitutes the refereed proceedings of the 10th International Symposium on Practical Aspects of Declarative Languages, PADL 2008, held in San Francisco, CA, USA, in January 2008. The 20 revised full papers along with the abstract of 1 invited talk were carefully reviewed and selected from 44 submissions. The papers address all current aspects of declarative programming.
Declarative languages build on sound theoretical bases to provide attractive frameworks for application development. These languages have been succe- fully applied to a wide variety of real-world situations including database m- agement, active networks, software engineering, and decision-support systems. New developments in theory and implementation expose fresh opportunities. At the same time, the application of declarative languages to novel problems raises numerous interesting research issues. These well-known questions include scalability, language extensions for application deployment, and programming environments. Thus, applications drive the progress in the theory and imp- mentation of declarative systems, and in turn bene?t from this progress. The International Symposium on Practical Applications of Declarative L- guages (PADL) provides a forum for researchers, practitioners, and implementors of declarative languages to exchange ideas on current and novel application - eas and on the requirements for e?ective use of declarative systems. The fourth PADL symposium was held in Portland, Oregon, on January 19 and 20, 2002.
The two-volume set LNCS 5125 and LNCS 5126 constitutes the refereed proceedings of the 35th International Colloquium on Automata, Languages and Programming, ICALP 2008, held in Reykjavik, Iceland, in July 2008. The 126 revised full papers presented together with 4 invited lectures were carefully reviewed and selected from a total of 407 submissions. The papers are grouped in three major tracks on algorithms, automata, complexity and games, on logic, semantics, and theory of programming, and on security and cryptography foundations. LNCS 5126 contains 56 contributions of track B and track C selected from 208 submissions and 2 invited lectures. The papers for track B are organized in topical sections on bounds, distributed computation, real-time and probabilistic systems, logic and complexity, words and trees, nonstandard models of computation, reasoning about computation, and verification. The papers of track C cover topics in security and cryptography such as theory, secure computation, two-party protocols and zero-knowledge, encryption with special properties/quantum cryptography, various types of hashing, as well as public-key cryptography and authentication.
TAPSOFT '89 is the Third International Joint Conference on Theory and Practice of Software Development held in Barcelona, Spain, March 13-17, 1989. The conference consissted of three parts: - Advanced Seminar on Foundations of Innovative Software Development - Colloquium on Trees in Algebra and Programming (CAAP '89) - Colloquium on Current Issues in Programming Languages (CCIPL) The TAPSOFT '89 Conference Proceedings are published in two volumes. The first volume includes the papers from CAAP plus the more theoretical ones of the invited papers. The second volume comprises the papers from CCIPL and the invited papers more relevant to current issues in programming languages.
Deployment is the act of taking components and readying them for productive use. There may be steps following deployment, such as installation or m- agement related functions, but all decisions about how to con?gure and c- pose/assemble a component are made at the deployment stage. This is therefore the one opportunity in the software lifecycle to bridge the gap between what the component developer couldn’t know about the deployment environment and what the environment’s developer couldn’t know about the open set of depl- able components. It is not surprising that deployment as a dedicated step gains importance when addressing issues of system-wide qualities, such as coping with constrained resources or preparing for component adaptation and system evolution. Yet, component deployment is still a discipline in its infancy: it became mainstream practice only in the mid 1990s. Much of the best practice impulse originated in products like Microsoft’s Transaction Server and its approach to attribute-based programming and later products like Enterprise JavaBeans and now the Corba Component Model. All these address the speci?c needs of enterprise appli- tion servers. However, the potential of the deployment concept goes far beyond this. Deployment can and should touch e?ectively all truly component-based solutions. The proceedings of Component Deployment 2002 represent a good cro- section of the gamut of deployment issues. From customization to address - source constraints to recon?guration of deployed systems and from architecture to design to languages, the avid reader will ?nd some contribution.
This volume constitutes the proceedings of the second International Workshop on the Semantics, Applications, and Implementation of Program Generation (SAIG 2001)held on 6 September, 2001, in Florence, Italy. SAIG 2001 was held as an ACM SIGPLAN workshop co-located with the International Conference on Principles, Logics, and Implementations of High-level Programming Languages (PLI). As the commercial production of software systems moves toward being a traditional industry, automation will necessarily play a more substantial role in this industry, just as it plays a key role in the production of traditional commodities. SAIG aims at promoting the development and the application of foundational techniques for supporting automatic program generation. A key goal of SAIG is to provide a unique forum for both theoreticians and practitioners to present their results and ideas to an audience from a diverse background. This year we are fortunate to have three in?uential invited speakers: Krzysztof Czarnecki (DaimlerChrysler), Tim Sheard (OGI School of Science and Engineering), and Mitchell Wand (Northeastern University). The proceedings include abstracts of the invited talks, and an invited paper by Tim Sheard. Seven technical papers and two position papers were presented at SAIG 2001.
This book constitutes the refereed proceedings of the 9th International Conference on Mathematics of Program Construction, MPC 2008, held in Marseille, France in July 2008. The 18 revised full papers presented together with 1 invited talk were carefully reviewed and selected from 41 submissions. Issues addressed range from algorithmics to support for program construction in programming languages and systems. Topics of special interest are type systems, program analysis and transformation, programming language semantics, program logics.
Mathematical Preliminaries - Untyped Systems - Untyped Arithmetic Expressions - An ML Implementation of Arithmetic Expressions - The Untyped Lambda-Calculus - Nameless Representation of Terms - An ML Implementation of the Lambda-Calculus - Types Arithmetic Expressions - Simply Typed Lambda-Calculus - An ML Implementation of Simple Types - Simple Extensions - Normalization - Exceptions - Subtyping - Metatheory of Subtyping - An ML Implementation of Subtyping - Recursive Types - Metatheory of Recursive Types - Polymorphism - Type Reconstruction - Universal Types - Existential Types - An ML Implementation of System F - Bounded Quantification - Higher-Order Systems - Higher-Order Polymorphism - Higher-Order Subtyping.
The functional logic programming paradigm combines the two most important fields of declarative programming, namely functional and logic programming, in an integrated way to allow the concise notation of high-level programs. However, the variety of concepts and conciseness of programs may also impact their efficiency. In this work we employ the powerful optimization technique of partial evaluation to develop a fully automatic program optimizer, the so-called partial evaluator. In particular, we formalize the normalization of programs during compilation, establish a formal notation of the evaluation process, develop a formal partial evaluation scheme and prove its correctness and termination, and implement a working partial evaluator which shows impressive results.