Strategy application, observability, and the choice combinator.

In many strategic systems, the choice combinator provides a powerful mechanism for controlling the application of rules and strategies to terms. The ability of the choice combinator to exercise control over rewriting is based on the premise that the success and failure of strategy application can be observed. In this paper we present a higher-order strategic framework with the ability to dynamically construct strategies containing the choice combinator. To this framework, a combinator called hide is introduced that prevents the successful application of a strategy from being observed by the choice combinator. We then explore the impact of this new combinator on a real-world problem involving a restricted implementation of the Java Virtual Machine.

[1]  Johan Jeuring,et al.  Merging Monads and Folds for Functional Programming , 1995, Advanced Functional Programming.

[2]  Eelco Visser,et al.  Strategic Pattern Matching , 1999, RTA.

[3]  Eelco Visser,et al.  Program Transformation with Stratego/XT: Rules, Strategies, Tools, and Systems in Stratego/XT 0.9 , 2003, Domain-Specific Program Generation.

[4]  Mahadevan Subramaniam,et al.  The transient combinator, higher-order strategies, and the distributed data problem , 2004, Sci. Comput. Program..

[5]  C. Kirchner,et al.  Introduction to the Rewriting Calculus , 1999 .

[6]  Ralf Lämmel,et al.  Dealing with large bananas , 2000 .

[7]  Claude Kirchner,et al.  An overview of ELAN , 1998, WRLA.

[8]  Ralf Lämmel,et al.  The Sketch of a Polymorphic Symphony , 2002, WRS.

[9]  Ralf Lämmel,et al.  Typed generic traversal with term rewriting strategies , 2002, J. Log. Algebraic Methods Program..

[10]  James A. McCoy An embedded system for safe, secure and reliable execution of high consequence software , 2000, Proceedings. Fifth IEEE International Symposium on High Assurance Systems Engineering (HASE 2000).

[11]  Peter G. Harrison,et al.  Functional Programming , 1988 .

[12]  Steve Roach,et al.  Transformation-oriented programming: A development methodology for high assurance software , 2003, Adv. Comput..

[13]  Johan Jeuring,et al.  PolyP—a polytypic programming language extension , 1997, POPL '97.

[14]  Eelco Visser Scoped Dynamic Rewrite Rules , 2001, Electron. Notes Theor. Comput. Sci..

[15]  Maarten M. Fokkinga,et al.  Functional Programming with Bananas, Lenses, Envelopes and Barbed Wire , 1991, FPCA.