A practical algorithm for exact array dependence analysis
Communications of the ACM
Program adaptation based on program transformation
ACM Computing Surveys (CSUR) - Special issue: position statements on strategic directions in computing research
PEPM '00 Proceedings of the 2000 ACM SIGPLAN workshop on Partial evaluation and semantics-based program manipulation
Safety checking of machine code
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
Avoiding exponential explosion: generating compact verification conditions
POPL '01 Proceedings of the 28th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
From checking to inference via driving and dag grammars
PEPM '02 Proceedings of the 2002 ACM SIGPLAN workshop on Partial evaluation and semantics-based program manipulation
Implementation of an array bound checker
POPL '77 Proceedings of the 4th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Higher-Order and Symbolic Computation
Program Slicing Using Weakest Preconditions
FME '96 Proceedings of the Third International Symposium of Formal Methods Europe on Industrial Benefit and Advances in Formal Methods
The Universal Resolving Algorithm: Inverse Computation in a Functional Language
MPC '00 Proceedings of the 5th International Conference on Mathematics of Program Construction
Dependent types in practical programming
Dependent types in practical programming
Program Adaptation via Output-Constraint Specialization
Higher-Order and Symbolic Computation
Regular approximation and bounded domains for size-change termination
Proceedings of the 2010 ACM SIGPLAN workshop on Partial evaluation and program manipulation
Hi-index | 0.00 |
In component-based software development, gluing of two software components are usually achieved by defining an interface specification, and creating wrappers on the components to support the interface. We believe that interface specification provides useful information for specializing components. However, an interface may define constraints on a component's inputs, as well as on its outputs. In this paper, we propose a novel concept of program specialization with respect to output constraints. We define how an ideal specialized program should behave after such specialization, and consider a variant of partial evaluation to achieve it. In the process, we translate an output constraint into a characterization function for a component's input, and define a specializer that uses this characterization to guide the specialization process. We believe this work will broaden the scope of program specialization, and provide a framework for building more generic and versatile program adaptation techniques.