# Annotated bibliography on partial evaluation and mixed computation

Article

Received:

- 49 Downloads
- 1 Citations

## Keywords

Logic Program Partial Evaluation Program Transformation Annotate Bibliography Denotational Semantic
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.

## Preview

Unable to display preview. Download preview PDF.

## References

- [Abramov 82] S. M. Abramov and N. V. Kondratjev. A Compiler Based on Partial Evaluation. In
*Problems of Applied Mathematics and Software Systems*, pages 66–69, Moscow State University, Moscow, USSR, 1982. (in Russian). The principles of a Refal optimizing compiler design based on mixed computation methods are discussed. The configuration analysis module which realizes mixed computation of a Refal program and checks for infinite looping of the partial evaluator (i. e., the neighbourhood analysis) is described in detail.Google Scholar - [Abramov 84] S. M. Abramov. Using Neighbourhood Analysis for Software Testing. In
*Various Aspects of Systems Programming*, pages 125–129, Moscow State Univ. Publ. House, USSR, 1984. (in Russian). A method for software testing based on the use of the neighbourhood analyzer vicon is described. The neighbourhood analyzer is in essence a kind of monovariant partial evaluator which does metacomputation of the given program on fully undefined data and usual computation on fully defined data.Google Scholar - [Ambriola 85] V. Ambriola, et al. Symbolic Semantics and Program Reduction.
*IEEE Transactions on Software Engineering*, SE-11(8): 784–794, August 1985. A class of symbolic constants is introduced to represent subsets of recursively defined data domains. The data type operations are extended to cope with symbolic constants, thus obtaining an intensional calculus for sets. The ideas and results are exploited in a system for symbolic evaluation of functional programs.Google Scholar - [Babich 72a] G. Kh. Babich. DecAS—A Programming System for Simulation of Incomplete Information Processes. In
*Computer Automation of Research*, pages 41–45, Computing Center, Novosibirsk, USSR, 1972. (in Russian). The design principles of the DecAS programming language are briefly described.Google Scholar - [Babich 72b] G. Kh. Babich and A. G. Arkadjev. Syntax and Interpretation Algorithms for DecAS Algorithmic Language Primitives.
*VNIKI “Tsvetmetavtomatika” Woks*, (4):97–108, 1972. (in Russian). The set of DecAS programming language primitives and the interpretation algorithms in the programming system which implements this language are described.Google Scholar - [Babich 74a] G. Kh. Babich. An Algorithmic Language Interpreter. Author’s Certificate N446882.
*The Official Journal of Discoveries, Inventions, Trade Marks and Designs (USSR)*, (38), 1974. (in Russian).Google Scholar - [Babich 74b] G. Kh. Babich. The DecAS Programming Language for Decision Making in Incomplete Information Conditions and Its Interpretation Algorithms.
*Kybernetika*, (2): 61–71, 1974. (in Russian). The Syntax and semantics of the DecAS programming language, its interpretation algorithms, and the liststructure memory of the interpreter are described. An example of a DecAS program is given.Google Scholar - [Babich 75] G. Kh. Babich.
*Software for “Non-Ferrous Metallurgy” Management Information System with Incomplete Information*. Metallurgia Publ. House, Moscow, USSR, 1975. (in Russian). The problems of constructing an automatic system which implements a man-machine dialogue for decision making under incomplete information conditions are discussed. The DecAS language for incomplete information systems and the programming methods for this language are described.Google Scholar - [Babich 76] G. Kh. Babich, L.F. Sternberg and T.I. Youganova. The INCOL Programming Language for Incomplete Information Computation.
*Programmirovanie*, (4): 24–32, 1976. (in Russian). The syntax and semantics of the programming language Incol are described. Incol is a descendant of the DecAS language previously published. An example of an Incol program is considered.Google Scholar - [Babich 82] G. Kh. Babich, et al. The INCOL Programming Language for Incomplete Information Computation.
*Upravlyayushchie Sistemy i Machiny (Control Systems and Machines)*, (4): 97–101, 1982. (in Russian). The development of a programming system for implementing the Incol language is described. Incol is intended for computation with incomplete information.Google Scholar - [Babich 86] G. Kh. Babich. Decision Making by Analysis of Decision Trees with Incomplete Information.
*Kybernetika*, (5): 113–120, 1986. (in Russian). A decision making method using a decision tree analysis is discussed. The method is intended for decision making with incomplete information. The design principles of the supporting programming system (written in Incol) are described.MathSciNetGoogle Scholar - [Barzdin 87] G. Barzdin. Experiments with Mixed Computation.
*Programmirovanie*, (1): 30–43, 1987. (in Russian). A method of compiler construction from an interpreter and the experiments with mixed computation which have led to this method are described.Google Scholar - [Barzdin 88] G. Barzdin. Mixed Computation and Compiler Basis. In D. Bjørner, A. P. Ershov and N. D. Jones, editors,
*Partial Evaluation and Mixed Computation*, North-Holland, 1988. A two-phase method of constructing a compiler from an interpreter is described. In the first phase, a so-called compiler basis is obtained, and in the second phase the compiler proper is obtained from the compiler basis by means of a global analysis.Google Scholar - [Beckman 76] L. Beckman, et al. A Partial Evaluator, and Its Use as a Programming Tool.
*Artificial Intelligence*, 7(4): 319–357, 1976. The paper describes partial evaluation as a practical tool in program development. It defines the concepts and discusses a number of applications. A partial evaluator program Redfun and a partial evaluator compiler Redcompile are described.MATHGoogle Scholar - [Belostotsky 81] A. N. Belostotsky and L. L. Sushentsov. Implementing Mixed Computation. In
*Compilation Methods*, Computing Center, Novosibirsk, USSR, 1981. (in Russian). The realization of mixed computation of programs in the stack computer Elbrus is described. The tagged memory of this computer is beneficial in making this procedure efficient.Google Scholar - [Belousov 78] A. I. Belousov. On the Algorithm Parallelization Problem.
*Programmirovanie*, (5): 53–61, 1978. (in Russian). A theorem about equivalent transformation from sequential composition of normal algorithms to parallel composition of these algorithms is proved on the basis of the notion of compatible normal algorithms.MathSciNetGoogle Scholar - [Belousov 82] A. I. Belousov. An Analysis of Parallelism in Compilation Process for a Certain Language Family. In
*Parallel Programming and High-Performance Systems*, pages 24–26, Naukova Dumka, Kiev, USSR, 1982. (in Russian). A model of mixed computation (i.e., a model of compatible E-operators) is developed in which a special phase of ‘unsuspending’ of basic semantic items is inserted between parallel compilation and parallel implementation. The finiteness conditions of this phase which put certain topological constraints on the input domain are investigated.Google Scholar - [Bjørner 87] D. Bjørner, A. P. Ershov and N. D. Jones, (Editors).
*Workshop Compendium, Workshop on Partial Evaluation and Mixed Computation, Gl. Avernoes, Denmark, October 1987*. Department of Computer Science, Technical University of Denmark, Lyngby, Denmark, 1987. This Compendium is the preliminary proceedings of the workshop.Google Scholar - [Bloch 84] C. Bloch.
*Source-to-Source Transformations of Logic Programs*. Report CS84-22, Weizmann Institute of Science, Rehovot, Israel, 1984. A brief survey of the literature on partial evaluation and other optimization techniques for Prolog is given, and a restricted Prolog partial evaluator is presented. A number of transformations of Concurrent Prolog programs into Flat Concurrent Prolog are presented.Google Scholar - [Bondorf 87] A. Bondorf.
*Towards a Self-Applicable Partial Evaluator for Term Rewriting Systems*. Master’s thesis, DIKU, University of Copenhagen, Denmark, 112 pages, July 1987. The subject of the paper [Bondorf 88] with the same title is dealt with in greater detail. In addition to this, efficient compilation of the pattern matching in the language Terse is discussed and implemented.Google Scholar - [Bondorf 88] A. Bondorf. Towards a Self-Applicable Partial Evaluator for Term Rewriting Systems. In D. Bjørner, A. P. Ershov and N. D. Jones, editors,
*Partial Evaluation and Mixed Computation*, North-Holland, 1988. A fully automatic experimental partial evaluator is described. It handles partially static data and uses two-phase partial evaluation (binding time analysis and function specialization). It is based on a restricted term rewriting system language with call-by-value, Terse, and has been implemented in part. Partial evaluation of an interpreter and a self-interpreter is performed and the results are discussed.Google Scholar - [Bulyonkov 84] M. A. Bulyonkov. Polyvariant Mixed Computation for Analyzer Programs.
*Acta Informatica*, 21:473–484, 1984. An algorithm for mixed computation of low-level non-structured imperative programs is presented. The algorithm is shown to terminate and produce correct results when applied to the class of so-called analyzer programs, a definition of which is also given.MATHMathSciNetGoogle Scholar - [Bulyonkov 85a] M. A. Bulyonkov. Mixed Computation for Programs over Finitely Defined Memory with Strict Partitioning.
*Doklady Akademii Nauk SSSR*, 285(5): 1033–1037, 1985. (in Russian). The paper presents a new algorithm of mixed computation for the class of analyzer programs: those satisfying that the memory can be split into two parts—available memory and reserved memory—such that for every initial state of available memory, the number of states of the available memory does not depend on reserved memory.MathSciNetGoogle Scholar - [Bulyonkov 85b] M. A. Bulyonkov. Obtaining Object Code from a One-Loop Interpreter. In
*Mathematical Theory of Programming*, pages 158–168, Computing Center, Novosibirsk, USSR, 1985. (in Russian). A class of imperative programs, namely stack analyzer programs, is defined. It is shown that object code may be produced by projection and further optimizing transformations. In particular, it is shown how an interpreter stack can be split into compilation stack and run-time stack.Google Scholar - [Bulyonkov 85c] M. A. Bulyonkov. Mixed Computations for Programs over Finitely Defined Memory with Strict Partitioning.
*Soviet Mathematics Doklady*, 32(3): 807–811, 1985. English translation of [Bulyonkov 85a].Google Scholar - [Bulyonkov 86a] M. A. Bulyonkov. A Computer Experiment with Mixed Computation Autoprojector. In
*Automation of Programming System Production*, pages 11–13, Polytechnical Institute, Tallin, USSR, 1986. (in Russian). The paper describes the results of computer experiments with an autoprojector. The object code of a program, a compiler for a toy language, and a compiler generator were automatically generated.Google Scholar - [Bulyonkov 86b] M. A. Bulyonkov and A. P. Ershov. How Do Ad-Hoc Compiler Constructs Appear in Universal Mixed Computation Processes? In
*Applied Logic, Computation Systems, Vol. 116*, Institute of Mathematics, Novosibirsk, USSR, 1986. (in Russian). An autoprojector for a simple imperative language is described. The autoprojector is powerful enough to formally produce a compiler generator. The essence of specific compilation constructs such as symbol table, control stack, code generation patterns etc. is investigated.Google Scholar - [Bulyonkov 88a] M. A. Bulyonkov. A Theoretical Approach to Polyvariant Mixed Computation. In D. Bjørner, A. P. Ershov and N. D. Jones, editors,
*Partial Evaluation and Mixed Computation*, North-Holland, 1988. Different approaches to polyvariant mixed computation are described and their equivalence is proved. The method is based on the concept of an arbitrary (general) environment instead of partially known input data.Google Scholar - [Bulyonkov 88b] M. A. Bulyonkov and A. P. Ershov. How Do Ad-Hoc Compiler Constructs Appear in Universal Mixed Computation Processes? In D. Bjørner, A. P. Ershov and N. D. Jones, editors,
*Partial Evaluation and Mixed Computation*, North-Holland, 1988. English version of [Bulyonkov 86b].Google Scholar - [Codish 86] M. Codish and E. Shapiro. Compiling Or-Parallelism into And-Parallelism. In E. Shapiro, editor,
*Third International Conference on Logic Programming, London, United Kingdom*, pages 283–297, Lecture Notes in Computer Science, Vol. 225, Springer-Verlag, 1986. Also in New Generation Computing 5:45–61, Ohmsha Ltd. and Springer-Verlag, 1987. A general method for compiling or-parallelism into and-parallelism is presented. An interpreter for an and/or-parallel subset of the language induces a source-to-source transformation from the full language into the and-parallel subset.Google Scholar - [Consel 88] C. Consel. New Insights into Partial Evaluation: the Schism Experiment. In H. Ganzinger, editor,
*ESOP’88, 2nd European Symposium on Programming, Nancy, France, March 1988*, pages 236–246, Lecture Notes in Computer Science, Vol. 300, Springer-Verlag, 1988. A self-applicable partial evaluator called Schism is presented. It is written in a first-order subset of Scheme, with syntactic extensions and extensible set of primitives, and can handle certain forms of side-effects. User-defined annotations control unfolding and specialization during partial evaluation. Work towards automating the annotations is presented.Google Scholar - [Coscia 86] P. Coscia et al. Object Level Reflection of Inference Rules by Partial Evaluation. In P. Maes and D. Nardi, editors,
*Workshop on Meta-Level Architectures and Reflection, Sardinia, Italy, October 1986*, North-Holland, (to appear). A knowledge base management system built upon Prolog and a relational database is described. Metaprogramming plays a central role in the definition of the knowledge base structuring mechanisms and inference engines. Partial evaluation of metaprograms is used to drastically reduce the overhead of metaprogramming while preserving its flexibility.Google Scholar - [Danvy 88] O. Danvy. Across the Bridge between Reflection and Partial Evaluation. In D. Bjørner. A. P. Ershov and N. D. Jones, editors,
*Partial Evaluation and Mixed Computation*, North-Holland, 1988. The paper attempts to relate partial evaluation and procedural reflection on the basis that both require metalanguage and object language to be identical. This is necessary for self-application and for expressing simple and reflective procedures in a uniform way, respectively. It is shown that a partial evaluator collapses levels in a tower of interpreters because it is a program transformer rather than an evaluator.Google Scholar - [Darlington 88] J. Darlington and H. Pull. A Program Development Methodology Based on a Unified Approach to Execution and Transformation. In D. Bjørner, A. P. Ershov and N. D. Jones, editors,
*Partial Evaluation and Mixed Computation*, North-Holland, 1988. The relationship between execution, symbolic execution and program transformation is discussed in the context of a functional programming language. A program development methodology is presented that allows a programmer to control both execution and transformation strategies by means of so-called scripts.Google Scholar - [Dybkjær 85] H. Dybkjær.
*Parsers and Partial Evaluation: An Experiment*. Student report no. 85-7-15, 128 pp., DIKU, University of Copenhagen, Denmark, July 1985. An investigation of the practicability of applying a partial evaluator to the construction of specialized parsers (from Earley’s general context free parser) is undertaken. The conclusion is drawn that the partial evaluator requires some development to become a good general purpose tool.Google Scholar - [Emanuelson 80a] P. Emanuelson.
*Performance Enhancement in a Well-Structured Pattern Matcher Through Partial Evaluation*. Linköping Studies in Science and Technology Dissertations 55, Linköping University, Sweden, 1980. An advanced general pattern matcher (including control structures such as backtracking and generators) written in Lisp is partially evaluated to obtain object code in Lisp. The partial evaluation system used is Redfun-2.Google Scholar - [Emanuelson 80b] P. Emanuelson and A. Haraldsson. On Compiling Embedded Languages in Lisp. In
*1980 Lisp Conference, Stanford, California*, pages 208–215, 1980. The idea of compiling Lisp embedded languages (itGoogle Scholar - [Emanuelson 82] P. Emanuelson. From Abstract Model to Efficient Compilation of Patterns. In M. Dezani-Ciancaglini and U. Montanari, editors,
*International Symposium on Programming, 5th Colloquium, Turin, Italy*, pages 91–104, Lecture Notes in Computer Science, Vol. 137, Springer-Verlag, 1982. Partial evaluation is used to obtain efficient specialized pattern matchers from a cleanly structured extensible general pattern matcher.Google Scholar - [Ermakov 87] G. V. Ermakov.
*Symbolic Execution of Autocode-Type Programs in the MIX-System*. Preprint 2 (272), Institute of Mathematics, Minsk, USSR, 1987. (in Russian). The concept of symbolic execution as realized in an integrated system designed for the development of Autocode-like programs is considered.Google Scholar - [Ershov 77a] A. P. Ershov. On the Partial Computation Principle.
*Information Processing Letters*, 6(2): 38–41, April 1977. A short note explaining the basic notions of partial (or mixed) computation. A number of traditional programming methods and techniques are considered as instances of partial computation.MATHGoogle Scholar - [Ershov 77b] A. P. Ershov and V. E. Itkin. Correctness of Mixed Computation in Algol-like Programs. In J. Gruska, editor,
*Mathematical Foundations of Computer Science, Tatranská Lomnica, Czechoslovakia*, pages 59–77, Lecture Notes in Computer Science, Vol. 53, Springer-Verlag, 1977. A formal treatment of mixed computation of programs in Algol-like languages. Three definitions of mixed computation are presented. The first one involves the smallest number of forcible suspensions but is incorrect in the general case. The other two are universally correct but require more forcible suspensions.Google Scholar - [Ershov 77c] A. P. Ershov. On the Essence of Compilation.
*Programmirovanie*, (5): 21–39, 1977. (in Russian). Some compiling algorithms including optimization and code generation are described on the basis of mixed computation analogues to partial binding of function arguments. The notion of generating extension is introduced and is used to demonstrate the transformation of an interpreter into a compiler. Comparisons with related work are made.Google Scholar - [Ershov 77d] A. P. Ershov. On a Theoretical Principle of System Programming.
*Doklady Akademii Nauk SSSR*, 233(2): 272–275, 1977. (in Russian). Russian version of [Ershov 77a].Google Scholar - [Ershov 77e] A. P. Ershov and V. V. Grushetsky. An Implementation-Oriented Method for Describing Algorithmic Languages. In B. Gilchrist, editor,
*Information Processing 77, Toronto, Canada*, pages 117–122, North-Holland, 1977. Mixed computation is described as a way of connecting the interpretational and the translational semantics of algorithmic languages.Google Scholar - [Ershov 77f] A. P. Ershov. A Theoretical Principle of System Programming.
*Soviet Mathematics Doklady*, 18(2): 312–315, 1977. English translation of [Ershov 77d].MATHGoogle Scholar - [Ershov 78a] A. P. Ershov. On the Essence of Compilation. In E. J. Neuhold, editor,
*Formal Description of Programming Concepts*, pages 391–420, North-Holland, 1978. English version of [Ershov 77c].Google Scholar - [Ershov 78b] A. P. Ershov. Mixed Computation in the Class of Recursive Program Schemata.
*Acta Cybernetica*, 4(1): 19–23, 1978. A method of mixed computation of recursive programs based on the notion of a semi-bound call is described. The method involves rewriting (call unfoding) and simplification (symbolic expression reduction). Examples of mixed computation are given.MATHMathSciNetGoogle Scholar - [Ershov 79a] A. P. Ershov. Mixed Computation Organization for Recursive Programs.
*Doklady Akademii Nauk SSSR*, 245(5): 1041–1044, 1979. (in Russian). Russian version of [Ershov 78b].MathSciNetGoogle Scholar - [Ershov 79b] A. P. Ershov. The Organization of Mixed Computations for Recursive Programs.
*Soviet Mathematics Doklady*, 20(2): 382–386, 1979. English translation of [Ershov 79a].MATHGoogle Scholar - [Ershov 80] A. P. Ershov. Mixed Computation: Potential Applications and Problems for Study. In
*Mathematical Logic Methods in AI Problems and Systematic Programming, Part 1*, pages 26–55, Vil’nyus, USSR, 1980. (in Russian). This is a survey paper presenting, summarizing, and integrating results from [Ershov 77b], [Ershov 77c], [Ernshov 78b] and [Ershov 82c]. The paper is an overview of techniques, theory, and applications of mixed computation.Google Scholar - [Ershov 81] A. P. Ershov. The Transformational Machine: Theme and Variations. In J. Gruska and M. Chytil, editors,
*Mathematical Foundations of Computer Science, Štrbské Pleso, Czechoslovakia*, pages 16–32, Springer-Verlag, Lecture Notes in Computer Science, Vol. 118, 1981. English version of [Ershov 82c].Google Scholar - [Ershov 82a] A. P. Ershov. Mixed Computation: Potential Applications and Problems for Study.
*Theoretical Computer Science*, 18: 41–67, 1982. English version of [Ershov 80].MATHMathSciNetGoogle Scholar - [Ershov 82b] A. P. Ershov. On Futamura Projections.
*BIT*, 12(14): 4–5, 1982. (in Russian).Google Scholar - [Ershov 82c] A. P. Ershov. Transformational Machine: Theme and Variations. In
*Problems in Theoretical and Systems Programming*, pages 5–24, Novosibirsk State Univ., Novosibirsk, USSR, 1982. (in Russian). A reduction-type transformational semantics for a simple imperative language is described. The notion of a transformational machine with base transformations as instruction set is introduced.Google Scholar - [Ershov 82d] A. P. Ershov and B. N. Ostrovsky. Systematic Construction of a Program for Solution of a Particular Problem from a Certain Class Examplified by Syntactic Analyzers.
*Doklady Akademii Nauk SSSR*, 266(4): 803–806, 1982. (in Russian). A method of producing language-oriented parsers by means of mixed computation in the framework of the transformational approach is described. The results of an experiment are given.Google Scholar - [Ershov 84] A. P. Ershov. Mixed Computation.
*V mire nauki (Scientific American, Russian Edition)*, (6): 28–42, 1984. (in Russian). A popular account of the basic ideas of mixed computation.MathSciNetGoogle Scholar - [Ershov 85] A. P. Ershov. On Mixed Computation: Informal Account of the Strict and Polyvariant Computational Schemes. In M. Broy, editor,
*Control Flow and Data Flow: Concepts of Distributed Programming. NATO ASI Series F: Computer and System Sciences*, Vol. 14, pages 107–120, Springer-Verlag, 1985. An account of the general idea of mixed computation and a comparative analysis of results published in [Bulyonkov 84], [Itkin 83b], and [Ostrovsky 80b].Google Scholar - [Fujita 87a] H. Fujita.
*On Automating Partial Evaluation of Prolog Programs*. Technical Report TM-250, ICOT, Tokyo, Japan, 1987 (in Japanese). An automatic partial evaluator for Prolog is presented. It uses information collected by preanalyses for ensuring termination of the partial evaluation process. The preanalyses are not formally described, but it is expected that they can be based on abstract interpretation.Google Scholar - [Fujita 87b] H. Fujita.
*An Algorithm for Partial Evaluation with Constraints*. Technical Report TM-367, ICOT, Tokyo, Japan, 1987. A two-stage partial evaluation algorithm for Prolog is presented. In the first stage, a specialized program is built. In the second stage (called short-cutting and constraint evaluation) trivial one-clause predicates are unfolded and constraints are evaluated where possible.Google Scholar - [Fujita 88] H. Fujita and K. Furukawa. A Self-Applicable Partial Evaluator and Its Use in Incremental Compilation.
*New Generation Computing*, 6(2, 3), June 1988. (This volume). The paper presents an experimental implementation of a self-applicable partial evaluator in Prolog which is used for compiler generation, compiler generator generation, and incremental compilation.Google Scholar - [Fuller 88] D. A. Fuller and S. Abramsky. Mixed Computation of Prolog Programs.
*New Generation Computing*, 6(2, 3), June 1988. (This volume). The paper describes theoretical as well as implementation issues involved in mixed computation of Prolog programs. A self-applicable partial evaluator for Prolog is presented and a number of outstanding problems discussed.Google Scholar - [Furukawa 88] K. Furukawa, A. Okumura and M. Murakami. Unfolding Rules for Guarded Horn Clause Programs.
*New Generation Computing*, 6(2, 3), June 1988. (This volume). A set of rules for unfolding-based transformation of Guarded Horn Clauses (GHC) programs is presented. This set of rules is shown to preserve the set of solutions and absence from deadlock, and is expected to give a basis for partial evaluation of GHC programs.Google Scholar - [Futamura 71] Y. Futamura. Partial Evaluation of Computation Process—An Approach to a Compiler-Compiler.
*Systems, Computers, Controls*, 2(5): 45–50, 1971. This seminal paper defines partial evaluation and exposes its applications to (among other things) compilation and compiler generation. A brief discussion is given on the feasibility in practice and of some conceptual and engineering issues of partial evaluation.Google Scholar - [Futamura 83] Y. Futamura. Partial Computation of Programs. In E. Goto, et al., editor,
*RIMS Symposia on Software Science and Engineering, Kyoto, Japan, 1982*, pages 1–35, Lecture Notes in Computer Science, Vol. 147, Springer-Verlag, 1983. Partial evaluation is formally defined, examples are given, and many applications are outlined. A partial evaluation method for a functional language is given, and a number of engineering problems are discussed.Google Scholar - [Futamura 88] Y. Futamura and K. Nogi. Generalised Partial Computation. In D. Bjørner, A. P. Ershov and N. D. Jones, editors,
*Partial Evaluation and Mixed Computation*, North-Holland, 1988. A partial evaluation method that makes use of a theorem prover to evaluate conditions in conditional expressions is proposed.Google Scholar - [Gallagher 86] J. Gallagher. Tranforming Logic Programs by Specialising Interpreters. In
*ECAI-86. 7th European Conference on Artificial Intelligence, Brighton Centre, United Kingdom*, pages 109–122, 1986. Logic programs are transformed by partial evaluation of metainterpreters. Given an interpreter for a nonstandard control strategy, a logic program that is to be executed using this control strategy can be transformed into an equivalent program to be executed using the standard strategyGoogle Scholar - [Gallagher 88] J. Gallagher, M. Codish and E. Shapiro. Specialization of Prolog and FCP Programs Using Abstract Intepretation. itNew Generation Computing, 6(2, 3), July 1988. (This volume). An approach to specialization of logic programs is presented. Specialization takes place in two stages: an abstraction stage and a specialization stage. These are based on abstract interpretation of logic programs. The specialization technique is applied to sequential Prolog and Flat Concurrent Prolog.Google Scholar
- [Ghezzi 85] C. Ghezzi, D. Mandrioli and A. Tecchio. Program Simplification Via Symbolic Interpretation. In S. N. Maheshwari, editor,
*Foundations of Software Technology and Theoretical Computer Science. Fifth Conference, New Delhi, India*, pages 116–128, Lecture Notes in Computer Science, Vol. 206, Springer-Verlag, 1985. A program transformation technique called simplification is proposed. It is a specialization technique similar to partial evaluation but works with predicates to specify restricted domains of input values.Google Scholar - [Giannotti 87] F. Giannotti, et al. Symbolic Evaluation with Structural Recursive Symbolic Constants.
*Science of Computer Programming*, 9(2): 161–177, 1987. An extension of the class of symbolic constants introduced in [Ambriola 85] is presented. This allows to handle subsets of data domains represented via recursively defined predicates. The operational and denotational semantics of the new class of symbolic constants is given along with a few examples of its use.MATHMathSciNetGoogle Scholar - [Goad 82] C. Goad. Automatic Construction of Special Purpose Programs. In D. W. Loveland, editor,
*6th Conference on Automated Deduction, New York, USA*, pages 194–208, Lecture Notes in Computer Science, Vol. 138, Springer-Verlag, 1982. A technique for program specialization is presented and applied to the generation of efficient programs for use in computer graphics (hidden surface analysis specialized to a particular scene).Google Scholar - [Grokh 83] A. V. Grokh, A. G. Krasovsky and V. F. Khoroshevsky. An Analysis of the Mixed-Computation-Oriented Meta-Language Description of Symbol Manipulation. In
*Advanced Programming Technologies*, pages 69–75, MDNTP, Moscow, USSR, 1983. (in Russian). A mixed computation based approach to the development of programming tools for automatic analysis of Refal programs is described. The notion of areal of a variable is introduced, and mixed computation on areals is defined.Google Scholar - [Grokh 87] A. V. Grokh and A. G. Krasovsky.
*Mixed Computation and Analysis of Correctness of Symbolic Transformations*. Preprint 030-87, Moscow Institute of Physical Engineering, Moscow, USSR, 1987. (in Russian). A definition of mixed computation in the class, of recursive programs is given and its use for checking symbolic transformations is shown. The instrumental program system Areal designed for checking Refal programs is described.Google Scholar - [Guzowski 88] M. A. Guzowski.
*Towards Developing a Reflexive Partial Evaluator for an Interesting Subset of LISP*. Master’s thesis, Dept. of Computer Engineering and Science, Case Western Reserve University, Cleveland, Ohio, January 1988. Work towards partial evaluation of a minimally userannotated dialect of full Scheme is presented. A nonselfapplicable partial evaluator is described which focuses on the general issues of control and environment, and admits a restricted form of side-effects.Google Scholar - [Haraldsson 77] A. Haraldsson.
*A Program Manipulation System Based on Partial Evaluation*. Linköping Studies in Science and Technology Dissertations 14, Linköping University, Sweden, 1977. The system Redfun-2 for partial evaluation of Lisp is described. It works also for non-pure Lisp constructs, such as side-effects and assignments, and handles value ranges for parameters. Such value ranges can be automatically derived from predicates in conditionals.Google Scholar - [Haraldsson 78] A Haraldsson. A Partial Evaluator, and Its Use for Compiling Iterative Statements in Lisp. In
*Fifth ACM Symposium on Principles of Programming Languages, Tucson, Arizona*, pages 195–202, 1978. The paper describes an experiment in which an interpreter for iterative statements in Lisp is partially evaluated to obtain Lisp object code.Google Scholar - [Harrison 88] P. G. Harrison. Function Inversion. In D. Bjørner, A. P. Ershov and N. D. Jones, editors,
*Partial Evaluation and Mixed Computation*, North-Holland, 1988. A method for synthesizing recursive inverse function definitions for certain first order recursive functions is described.Google Scholar - [Hascoët 88] L. Hascoët. Partial Evaluation with Inference Rules.
*New Generation Computing*, 6(2, 3), June 1988. (This volume). The concept of partial evaluation of an inference system is defined, and the design of a partial evaluator for the language Typol of inference rules is described.Google Scholar - [Heering 86] J. Heering. Partial Evaluation and ω-Completeness of Algebraic Specifications.
*Theoretical Computer Science*, 43: 149–167, 1986. An investigation of omega-completeness of algebraic specifications suggests that for non-trivial languages, no partial evaluation algorithm can be devised that always makes ‘maximal use’ of the available input or ‘performs as much computation in advance as possible’.MATHMathSciNetGoogle Scholar - [Holst 88] N. C. K. Holst. Language Triplets: The AMIX Approach. In D. Bjørner, A. P. Ershov and N. D. Jones, editors,
*Partial Evaluation and Mixed Computation*, North-Holland, 1988. The theory of language triplets is presented. This theory describes partial evaluation and compiler generation in a natural way. It is further shown how using this theory it is possible to derive compiler generators which produce compilers in low level languages from high level language definitions by means of partial evaluation.Google Scholar - [Hughes 88] J. Hughes. Backwards Analysis of Functional Programs. In D. Bjørner, A. P. Ershov and N. D. Jones, editors,
*Partial Evaluation and Mixed Computation*, North-Holland, 1988. A framework for backwards analysis of functional programs is introduced. It is shown that backwards analysis can be extended to derive information about data structures and higher order functions in typed languages.Google Scholar - [Itkin 80] V. E. Itkin. Characterization of Structured Control-Flow Graphs.
*Doklady Akademii Nauk SSSR*, 250(2): 1077–1080, 1980. (in Russian). Some topological criteria for compositional structure of a flow graph are proposed in terms of mixed computation.MathSciNetGoogle Scholar - [Itkin 83a] V. E. Itkin. Natural Modularity and Symmetry of Structured Programs. In
*Compilation and Program Models*, pages 13–22, Computing Center, Novosibirsk, USSR, 1983. (in Russian). Some compositional criteria for topological structure of a parallel flow graph are given.Google Scholar - [Itkin 83b] V. E. Itkin. On Partial and Mixed Program Execution. In
*Program Optimization and Transformation*, pages 17–30, Computing Center, Novosibirsk, USSR, 1983. (in Russian). Dashed-line and polyvariant strategies of mixed computation are developed. The program graph node mark ‘ignoring’ and an indication of direction for a residual program representation is proposed. The thesis is advanced that the concept of a program being structured is similar to that of a program being suited to effective mixed computation.Google Scholar - [Itkin 83c] V. E. Itkin. Incompleteness As an Attribute of Research Programs. In
*Methodological Problems of Research Programs*, pages 54–64, Novosibirsk, USSR, 1983. (in Russian). Incompleteness has been regarded as a motor of human constructive activities. Some criteria of effectivity of partial activity are investigated. A general definition of program and a concept of generator as a reflexive superstructure upon the program are given.Google Scholar - [Itkin 83d] V. E. Itkin. Dynamic Program Parallelization Based on Mixed Computation. In
*Theoretical Problems in Parallel Programming and Multiprocessor Computers*, pages 110–126, Novosibirsk, USSR, 1983. (in Russian). Mixed computation of programs is defined in abstract terms as a set of interactions between a group of constant assignment statements and other program statements.Google Scholar - [Itkin 84a] V. E. Itkin. Algebra of Mixed Program Execution.
*Doklady Akademii Nauk SSSR*, 275(6): 1332–1336, 1984. (in Russian). An algebra of programs, deterministic memory states and subsets of the set of memory locations is given. By means of this algebra, the correctness of some superoperators of mixed computation is proved.MathSciNetGoogle Scholar - [Itkin 84b] V. E. Itkin. Axiomatics of Complete and Partial Program Execution. In
*Program Compilation and Transformation*, pages 69–93, Computing Center, Novosibirsk, USSR, 1984. (in Russian). An axiomatic system for the concepts of completeness of input information, program input, and program output is proposed. This is used to prove the correctness of mixed computation.Google Scholar - [Itkin 84c] V. E. Itkin. Program Parallelization Algebra. In
*Theoretical and Applied Aspects of Parallel Information Processing*, pages 3–24, Computing Center, Novosibirsk, USSR, 1984. (in Russian). The correctness of some superoperators of the dashed-line and polyvariant mixed computation is proved using algebraic and axiomatic tools.Google Scholar - [Itkin 85] V. E. Itkin. On Algebra and Axiomatics of Program Parallelization. In
*Theory of Programming and Representation of Discrete Systems Parallelism*, pages 38–53, Computing Center, Novosibirsk, USSR, 1985. (in Russian). A method of two-step parallel execution of the superposition (concatenation) of two programs is proposed.Google Scholar - [Itkin 86] V. E. Itkin. On Algebra and Logic of Parallelization of Function Superposition. In
*Theoretical Aspects of Information Processing*, pages 18–33, Computing Center, Novosibirsk, USSR, 1986. (in Russian). An algebra of deterministic memory states and subsets of the set of memory locations is transformed first into an algebra of non-deterministic memory states and then further into a quasi-boolean algebra of abstract ‘information elements’. A method of parallel execution of superposition of programs is formulated in terms of this algebra.Google Scholar - [Itkin 88] V. E. Itkin. An Algebra and Axiomatization System of Mixed Computation. In D. Bjørner, A. P. Ershov and N. D. Jones, editors,
*Partial Evaluation and Mixed Computation*, North-Holland, 1988. An axiomatic system for the concepts of completeness of input information, program input and program output is proposed. It is used to prove the correctness of mixed computation and parallel execution of superposition of programs.Google Scholar - [Jones 85] N. D. Jones, P. Sestoft and H. Søndergaard. An Experiment in Partial Evaluation: The Generation of a Compiler Generator. In J.-P. Jouannaud, editor,
*Rewriting Techniques and Applications, Dijon, France*, pages 124–140, Lecture Notes in Computer Science, Vol. 202, Springer-Verlag, 1985. A self-applicable partial evaluator for (first order) pure Lisp is described. It works in two phases and requires user-made annotations of calls in subject programs. The semi-automatic generation of experimental compilers and a compiler generator is reported, and the results of these generations are discussed.Google Scholar - [Jones 86] N. D. Jones and A. Mycroft. Data Flow Analysis of Applicative Programs Using Minimal Function Graphs. In
*Thirteenth ACM Symposium on Principles of Programming Languages, St. Petersburg, Florida*, pages 296–306, ACM, 1986. The following problem is addressed: What is the natural analog for functional programs of Cousot’s collecting semantics? An answer is given using the minimal set of (argument, result) pairs sufficient to compute on a given input set, and a framework for static program analysis including ‘constant propagation’ is developed.Google Scholar - [Jones 87a] N. D. Jones, P. Sestoft and H. Søndergaard.
*Mix: A Self-Applicable Partial Evaluator for Experiments in Compiler Generation*. DIKU Report 87/8, DIKU, University of Copenhagen, Denmark, 1987. Also in Lisp and Symbolic Computation, Kluwer Academic Publishers, Norwell, Massachusetts, (to appear). A comprehensive discussion of partial evaluation, its applications to generation of compilers and compiler generators, and of engineering problems is given. A fully automatic version of the partial evaluator discussed in [Jones 85] is described and results from its use are reported.Google Scholar - [Jones 87b] N. D. Jones.
*Towards Automating the Transformation of Programming Language Specifications into Compilers*. Part I: DIKU Report 85/9, 60 pages, Part II: 74 pages. DIKU, University of Copenhagen, Denmark, 1987. An overview is given of semantics-directed compiler generation including summaries of earlier work by others and by the author towards that goal. Part II deals with controlling complexity in semantics and compiler specfications and describes the then current state of the mix partial evaluation project.Google Scholar - [Jones 87c] N. D. Jones. Flow Analysis of Lazy Higher-Order Functional Programs. In S. Abramsky and C. Hankin, editors,
*Abstract Interpretation of Declarative Languages*, pages 103–122, Ellis Horwood, Chichester, England, 1987. A method is presented for static analysis of programs manipulating tree-structured data. An algorithm is given that constructs from a program in term rewriting system form a tree grammar safely approximating the program’s variable bindings and intermediate results.Google Scholar - [Jones 87d] N. D. Jones and H. Søndergaard. A Semantics-Based Framework for the Abstract Interpretation of Prolog. In S. Abramsky and C. Hankin, editors,
*Abstract Interpretation of Declarative Languages*, pages 123–142, Ellis Horwood, Chichester, England, 1987. A method resembling minimal function graphs is given for the static analysis of Prolog programs. It is based on the use of varying interpretations of a common core semantics for Prolog.Google Scholar - [Jones 88a] N. D. Jones. Automatic Program Specialization: A Re-Examination from Basic Principles. In D. Bjørner, A. P. Ershov and N. D. Jones, editors,
*Partial Evaluation and Mixed Computation*, North-Holland, 1988. A careful formulation and investigation of fundamental problems involved in automatic program specialization, including the first precise description of the semantic issues underlying binding time analysis.Google Scholar - [Jones 88b] N. D. Jones.
*Static Semantics and Binding Time Analysis*. 1988. Working paper, DIKU, University of Copenhagen, Denmark. A working paper discussing the purpose and nature of static semantics and type checking, ending with some examples that suggest the possiblity of automatically deriving a static semantics with the aid of binding time analysis.Google Scholar - [Jørring 86] U. Jórring and W. L. Scherlis. Compilers and Staging Transformations. In
*Thirteenth ACM Symposium on Principles of Programming Languages, St. Petersburg, Florida*, pages 86–96, 1986. The so-called staging transformations are program transformations intended to exploit the fact that some data become available at an earlier stage than others. These transformations are used for the derivation of a compiler from an interpreter.Google Scholar - [Kahn 82] K. M. Kahn. A Partial Evaluator of Lisp Programs Written in Prolog. In M. Van Caneghem, editor,
*First International Logic Programming Conference, Marseille, France*, pages 19–25, 1982. a partial evaluator for Lisp written in Prolog is briefly described. It is intended to be applied to a Prolog interpreter written in Lisp in order to achieve compilation of Prolog programs into Lisp. Work on this technique is in progress. Several small example uses of the partial evaluator are given.Google Scholar - [Kahn 83a] K. M. Kahn.
*A Partial Evaluator of Lisp written in Prolog*. Technical Report 17, UPMAIL, Uppsala University, Sweden, February 1983. A slightly edited version of [Kahn 82].Google Scholar - [Kahn 83b] K. M. Kahn.
*Partial Evaluation as an Example of the Relationships between Programming Methodology and Artificial Intelligence*. Technical Report 23, UPMAIL, Uppsala University, Sweden, October 1983. It is argued that programming methodologies and methodologies of artificial intelligence research depend on each other in important ways. Partial evaluation is presented as an example of this mutual dependency.Google Scholar - [Kahn 84a] K. M. Kahn and M. Carlsson. The Compilation of Prolog Programs Without the Use of a Prolog Compiler. In
*International Conference on Fifth Generation Computer Systems, Tokyo, Japan*, pages 348–355, 1984. A Prolog interpreter written in Lisp is presented. The partial evaluator described in [Kahn 82] is applied to this interpreter and Prolog source programs to obtain object programs in Lisp. It is reported that these object programs are one order of magnitude faster than interpretation of source programs.Google Scholar - [Kahn 84b] K. M. Kahn. Partial Evaluation, Programming Methodology, and Artificial Intelligence.
*The AI Magazine*, 5(1): 53–57, 1984. An expanded version of [Kahn 83b].Google Scholar - [Kaimin 85] V. A. Kaimin. Functional Specifications, Mixed Computation and Systematic Construction of Algorithms. In A. P. Ershov, editor,
*Mixed Computation*, Novosibirsk, USSR, 1985. (in Russian). An approach to systematic construction of structured algorithms based on functional specifications is presented. A functional semantics of structured algoGoogle Scholar - [Kasyanov 78] V. N. Kasyanov.
*A Practical Approach to Program Optimization*. Preprint 135, Computing Center, Novosibirsk, USSR, 1978. (in Russian). An optimization method and its application to translation and other kinds of automatic programming are described. It is demonstrated how the method can be applied to reduce discrepancies between a program and its usage.Google Scholar - [Kasyanov 80] V. N. Kasyanov. Mixed Computation and Program Optimization.
*Kybernetika*, (2): 51–54, 1980. (in Russian). Mixed computation and program optimization are compared as two approaches to program concretization which preserve the meaning and improve the quality of a program for a given input subspace.MathSciNetGoogle Scholar - [Kasyanov 82a] V. N. Kasyanov. Program Concretization Problems. In
*Problems of Theoretical and Systems Programming*, pages 35–45, Novosibirsk State University, Novosibirsk, USSR, 1982. (in Russian). Program concretization is defined as improving the quality without disturbing the correctness for a restricted and stable range of program applications, assumed to specify restricted sets of program input and outputs and a particular class of program quality properties.Google Scholar - [Kasyanov 82b] V. N. Kasyanov and I. V. Pottosin.
*Concretization Systems: Approach and Basic Concepts*. Preprint 349, Computing Center, Novosibirsk, USSR, 1982. (in Russian). The notion of concretization systems as programming environments based on annotated program transformations is introduced.Google Scholar - [Kasyanov 83] V. N. Kasyanov and I. V. Pottosin.
*The Architecture of Concretization Systems*. Preprint 455, Computing Center, Novosibirsk, USSR, 1983. (in Russian). The architecture of concretization systems with respect to three classes of users is described.Google Scholar - [Kasyanov 86] V. N. Kasyanov. A Method for Constructing Qualitative Program Versions. In
*New Methods for Program Construction*, pages 37–48, Novosibirsk State University, Novosibirsk, USSR, 1986. (in Russian). Program concretization is considered as program optimization under given assumptions about their usage, represented by annotations. The problems of data flow analysis and reduction of annotated programs are solved. An example of a programming support system based on annotated program transformations is described.Google Scholar - [Katkov 84] V. L. Katkov and G. V. Ermakov. Program Object Filtering Facilities in the MIX-system.
*Upravlyayushchie Sistemy i Machiny (Control Systems and Machines)*, (4): 59–63, 1984. (in Russian). Tools for filtering of program objects in the Mix system, which is oriented to initial learning of assembler programming, are described. Main stages of implementation of the filter mechanism are considered and recommendations for their use in Mix-programs are given.Google Scholar - [Kistlerov 87] V. L. Kistlerov.
*The Basic Principles of the Algebraic Manipulation Language FLAC*. Preprint, Institute of Management Problems, Moscow, USSR, 1987. (in Russian). The basic concepts of the language FLAC are described. It provides means for implementation of algebraic manipulation systems and is based on suspended evaluation. It is argued that all data structures commonly provided by algebraic manipulation systems can be represented as combinations of suspended function calls.Google Scholar - [Kleene 52] S. C. Kleene.
*Introduction to Metamathematics*. D. van Nostrand, Princeton, New Jersey, 1952. A profound treatment of recursive function theory, this book studies properties of the class of partial recursive functions and operations on codes for functions in much detail. Among other things, the S-m-n theorem, enumeration, and the first and second recursion theorems are treated.MATHGoogle Scholar - [Klimov 83] A. V. Klimov. Applying the Idea of Mixed Computations to Construction of an Object-Oriented Functional Programming Language. In
*Semiooticheskie Aspecty Formalicii Intellectualnoj Deyatelnosti*, pages 67–70, Shkola-Seminar ‘TELAVI 83’, Moscow, 1983. (in Russian).Google Scholar - [Klimov 87] A. V. Klimov and S. A. Romanenko.
*A Meta-evaluator for the Language Refal. Basic Concepts and Examples*. Preprint 71, Keldysh Institute of Applied Mathematics, Moscow, USSR, 1987. (in Russian). The paper describes a metaevaluator for specializing (partially evaluating) function calls in a Refal program provided that their arguments are partially known. It is argued that programs written in a simple language can be compiled into Refal if the semantics is described by an interpreter written in Refal.Google Scholar - [Komorowski 81] H. J. Komorowski.
*A Specification of an Abstract Prolog Machine and Its Application to Partial Evaluation*. Linköping Studies in Science and Technology Dissertations 69, Linköping University, Sweden, 1981. Partial evaluation of Prolog is investigated in depth. An abstract Prolog machine is systematically extended to an abstract Prolog partial evaluator, and an implementation of this partial evaluator is developed. Several examples of its use are given. Some directions of future research are pointed out.Google Scholar - [Komorowski 82] H. J. Komorowski. Partial Evaluation as a Means for Inferencing Data Structures in an Applicative Language: A Theory and Implementation in the Case of Prolog. In
*Ninth ACM Symposium on Principles of Programming Languages, Albuquerque, New Mexico*, pages 255–267, 1982. An abridged version of the above thesis [Komorowski 81].Google Scholar - [Kotlyarov 82] V. P. Kotlyarov, N. B. Morozov and A. V. Samochadin. Mixed Computation in Object-Oriented Languages for Microcomputer Software Development Systems. In
*Microprocessor Programming*, pages 74–90, Valgus, Tallin, USSR, 1982. (in Russian). The special requirements for mixed computation of object-oriented languages and microcomputer control-oriented programs are discussed. A mixed computation algorithm Omix that works on complicated multilevel structured programs is proposed. It processes programs in which part of type checking and some operations are delayed.Google Scholar - [Kotlyarov 83a] V. P. Kotlyarov and A. V. Samochadin. Use of Soft-ware Redundancy for Improving Its Quality. In
*Proc. of the 7th Symp. on Information Systems Redundancy*, Vol. 2, pages 123–124, LIAP, Leningrad, USSR, 1983. (in Russian). A method for increasing software quality by adapting it to concrete conditions of application is proposed. Adaptation is carried out by the mixed computation algorithm DMIX.Google Scholar - [Kotlyarov 83b] V. P. Kotlyarov and A. V. Samochadin. Mixed Computation of R-Programs. In
*R-Technology of Programming, Part 1*, pages 62–63, Institute of Cybernetics, Kiev, USSR, 1983. (in Russian). Some peculiarities of realization of a software development system for mixed computation of programs in the R-programming language for microcomputers are considered.Google Scholar - [Kotlyarov 83c] V. P. Kotlyarov, et al. Concretization Tools in Programming Technology for Special-Purpose Micro-Computers. In
*R-Technology of Programming, Part 3*, pages 15–17, Institute of Cybernetics, Kiev, USSR, 1983. (in Russian). An approach to the use of surplus information about intermediate results of a program (e. g., its variables’ ranges) is described.Google Scholar - [Kotlyarov 84] V. P. Kotlyarov and N. B. Morozov. Mixed Computation Algorithms Used in Control Programs of Micro-Computers. In
*Program Compilation and Transformation*, pages 94–107, Novosibirsk, USSR, 1984. (in Russian). Questions of microcomputer control-oriented program optimization by means of mixed computation are discussed. Some peculiarities of mixed computation algorithms for control-oriented programs are shown.Google Scholar - [Krasovsky 86] A. G. Krasovsky and A. V. Grokh. State of the Art and Future Development of the ISKRA Instrumental System. In
*Software Engineering, Part 2*, pages 185–187, Institute of Cybernetics, Kiev, USSR, 1986. (in Russian). Results of experiments with a Refal program verifier are reported. The technology of development of multipass compilers based on designing the formal specifications for each pass and using them in the Refal verifier is described.Google Scholar - [Krinitskii 87] N. A. Krinitskii. An Algorithmic Analysis of Mixed Computation.
*Programmirovanie*, (3): 42–56, 1987 (in Russian). The notion of mixed computation is studied and refined by means of the theory of algorithms. The roots of the main results have been found in the theory of algorithms.Google Scholar - [Kröger 81a] H. Kröger. Static-Scope-Lisp: Splitting an Interpreter into Compiler and Run-Time System. In W. Brauer, editor,
*GI-11. Jahrestagung, München, FRG, Informatik-Fachberichte 50*, pages 20–31, Springer-Verlag, 1981. (in German). Using the concept of a phi-operator, it is demonstrated that an interpreter for Lisp can easily be divided into a compiler part and a run-time part.Google Scholar - [Kröger 81b] H. Kröger.
*Code Generation by Partial Evaluation*. Bericht 8105, Institut für Informatik und Praktische Mathematik, Universität Kiel, FRG, 1981. (in German). The paper sketches fundamental aspects of partial and residual evaluation, distinguishing pure forms and phi-forms. A trial and error algorithm to label a program with phi-operators is outlined.Google Scholar - [Kröger 82a] H. Kröger.
*A Code Generating Formalization Operator and Its Use on a Lisp Interpreter*. Bericht 1/82, Institut für Informatik und Praktische Mathematik, Universität Kiel, FRG, January 1982. (in German). The concept of a phi-operator is introduced to handle partial evaluation and residual evaluation. The method is applied to partial evaluation of an interpreter, i. e., compilation of programs, and is demonstrated to work for static-scope as well as dynamic-scope semantics.Google Scholar - [Kröger 82b] H. Kröger.
*Compiling of a Generalized LISP-Label-Concept by Partial Evaluation*. Technical Report, Institut für Informatik und Praktische Mathematik, Universität Kiel, FRG, February 1982. The Label-concept of Lisp is extended to allow arbitrary nested and parallel declarations of functions, and static-scope as well as dynamic-scope interpreters are given for the extended language. The phi-operator concept is recapitulated and a detailed description of the compiler and run-time parts of the interpreters are described.Google Scholar - [Kröger 85] H. Kröger.
*A Summary of a System for Partial Evaluation, Residual Evaluation, Code Generation and Semantics Directed Compiler Generation*. Bericht Nr. 8505, Institut für Informatik und Praktische Mathematik, Universität Kiel, FRG, September 1985. The phi-based partial evaluation method is implemented using Interlisp. Using the phi-operator concept, more detailed descriptions of Y. Futamura’s equations for compiler generation etc. are given as well as some qualitative and quantitative remarks on the implemented system.Google Scholar - [Kröger 87] H. Kröger.
*Report on a Φ-Based Method for Partial Evaluation and Residual Evaluation*. Bericht 8710, Institut für Informatik und Praktische Mathematik, Universität Kiel, FRG, May/August 1987. This is an extended abstract of a planned comprehensive report on phi-operator based partial evaluation.Google Scholar - [Kursawe 86] P. Kursawe, How to Invent a Prolog Machine. In E. Shapiro, editor,
*Third International Conference on Logic Programming, London, United Kingdom*, pages 134–148, Lecture Notes in Computer Science, Vol. 225, Springer-Verlag, 1986. Also New Generation Computing 5: 97–114, Ohmsha Ltd. and Springer-Verlag, 1987. A partial evaluation based derivation of the unification instructions of the Warren abstract machine is given. Starting with a unification algorithm for terms, all parts that are executable when one term is known are evaluated.Google Scholar - [Kursawe 88] P. Kursawe. Pure Partial Evaluation and Instantiation. In D. Bjørner, A. P. Ershov and N. D. Jones, editors,
*Partial Evaluation and Mixed Computation*, North-Holland, 1988. Pure partial evaluation of declarative languages is defined as execution of interpretive steps according to a strategy different from interpretation. Proofs of correctness and completeness of the technique are given.Google Scholar - [Lakhotia 88] A. Lakhotia and L. Sterling. Composing Recursive Logic Programs with Clausal Join.
*New Generation Computing*, 6(2, 3), July 1988. (This volume). A family of methods for composing logic programs from simpler components is presented. The methods are based on clausal-join, a specific sequence of unfold/fold tranformations. The transformations are straightforward to implement in Prolog, as is demonstrated in the paper.Google Scholar - [Launchbury 88] J. Launchbury. Projections for Specialisation. In D. Bjørner, A. P. Ershov and N. D. Jones, editors,
*Partial Evaluation and Mixed Computation*, North-Holland, 1988. The use of projections for splitting data into their static and dynamic parts is proposed. Several example domains of projections and some general constructions for finite domains of projections are given. These finite domains are useful in (say) binding time analyses to support partial evaluation.Google Scholar - [Lavrov 88] S. S. Lavrov. On the Essence of Mixed Computation. In D. Bjørner, A. P. Ershov and N. D. Jones, editors,
*Partial Evaluation and Mixed Computation*, North-Holland, 1988. Some reflections on ordinary and mixed computation are given. A number of possible pitfalls in speaking about mixed computation are pointed out.Google Scholar - [Levi 88] G. Levi and G. Sardu. Partial Evaluation of Metaprograms in a Multiple Worlds Logic Language.
*New Generation Computing*, 6(2, 3), July 1988. (This volume). A non-selfapplicable partial evaluator for Prolog (including cut and side-effects) is described, and several examples of its use are given. The partial evaluator is to be used as a compilation tool in a knowledge base management system based on Prolog.Google Scholar - [Lloyd 87] J. W. Lloyd and J. C. Shepherdson.
*Partial Evaluation in Logic Programming*. Technical Report CS-87-09, Department of Computer Science, University of Bristol, England, 1987. The paper gives a theoretical foundation for partial evaluation in logic programming. For both the declarative and the procedural semantics conditions are studied under which the partially evaluated program is sound and complete. A simple, syntactically checkable “closedness condition” is formulated and is shown to suffice for soundness and completeness wrt. the procedural semantics, and for soundness wrt. the declarative semantics.Google Scholar - [Lombardi 64] L. A. Lombardi and B. Raphael. Lisp as the Language for an Incremental Computer. In E. C. Berkeley and D. G. Bobrow, editors,
*The Programming Language Lisp: Its Operation and Applications*, pages 204–219, MIT Press, Cambridge, Massachusetts, 1964. It is argued that computer systems should be able to deal with incomplete information, that is, to do partial evaluation (this is probably the first paper to use that term). Partial evaluation of Lisp is studied as a means to this end, and a small partial evaluator for Lisp, unable to reduce conditionals, is actually presented in an appendix.Google Scholar - [Lombardi 67] L. A. Lombardi. Incremental Computation. In F. L. Alt and M. Rubinoff, editors,
*Advances in Computers, Vol. 8*, pages 247–333, Academic Press, 1967. The design of a system for dealing with incomplete information and for incremental data assimilation is discussed and described in great detail. The system incorporates facilities for partial evaluation.Google Scholar - [Margolin 79] M. S. Margolin and M. E. Nemenman. A Partial Evaluator for Macrodefinitions. In
*Software Engineering*, pages 42–43, Institute of Cybernetics, Kiev, USSR, 1979. (in Russian). The feasibility of partial evaluation with restricitions on input data domains and without any initialization is stated. The first steps of the implementation of a partial evaluator (reducer) of macro definitions are presented.Google Scholar - [Margolin 80] M. S. Margolin. On a Method of Mixed Computation Implementation. In
*Automation of Application Packages Production*, pages 111–113, Tallin, USSR, 1980. (in Russian). The notion of areal as a set of acceptable data values is introduced. An algorithm for mixed computation using rough and fine reductions is reported.Google Scholar - [Margolin 81] M. S. Margolin and T. P. Potapenko. Employment of Incomplete Input Data to Simplify Programs.
*Upravlyayushchie Sistemy i Mashiny (Control Systems and Machines)*, (6): 78–81, 1981 (in Russian). A procedure for simplification of a program through the use of incomplete data is proposed. A mechanism of rough reduction in mixed computation is given in detail. The need for filters is shown.Google Scholar - [Margolin 83] M. S. Margolin. Reduction and Its Relationships with a Program Areal. In
*Program Optimization and Transformation, Part 2*, pages 20–25, Novosibirsk, USSR, 1983. (in Russian). The notion of data areal is suggested and the notion of program areal as the set of all input data areals is introduced. Reduction is defined as a process of bringing the program into correspondence with a given data areal. It is shown that mixed computations are reductions.Google Scholar - [Margolin 86] M. S. Margolin and T. P. Potapenko. Application of Residual Programs to Source Program Debugging. In
*Problems in Program Synthesis, Testing, Verification and Debugging, Vol. 2*, pages 24–25, Riga, USSR, 1986. (in Russian). Residual programs are considered as results of adaptation of a source program to additional conditions. The benefits of using residual programs in the debugging process are shown.Google Scholar - [Mazaher 85] S. Mazaher and D. M. Berry. Deriving a Compiler from an Operational Semantics Written in VDL.
*Computer Languages*, 10(2): 147–164, 1985. Mixed computation is used in deriving correct compilers from language definitions written in the Vienna Definition Language (VDL). An algorithm for mixed computation of VDL expressions is given.MATHGoogle Scholar - [Mel’Nik 82] A. P. Mel’Nik. A Program Model of a Transformational Machine. In
*Problems of System and Theoretical Programming*, pages 25–34, Novosibirsk, USSR, 1982. (in Russian). A program model of a transformational machine has been implemented and is used for experiments in studying the transformational approach. The structure of the model is described.Google Scholar - [Mogensen 86] T. Mogensen.
*The Application of Partial Evaluation to Ray-Tracing*. Master’s thesis, DIKU, University of Copenhagen, Denmark, 1986. Partial evaluation is used to optimize ray-tracing (a computer graphics algorithm). A self-applicable partial evaluator is developed for this purpose, and significant speed improvements are reported to arise from its use.Google Scholar - [Mogensen 88] T. Mogensen. Partially Static Structures in a Self-Applicable Partial Evaluator. In D. Bjørner, A. P. Ershov and N. D. Jones, editors,
*Partial Evaluation and Mixed Computation*, North-Holland, 1988. The paper describes a self-applicable partial evaluator that uses the same basic methods as [Jones 85] but in addition gives good treatment of values that are not completely static or completely dynamic, but rather partially static. Thus it can do non-trivial partial evaluation for a larger class of programs.Google Scholar - [Mosses 79] P. Mosses.
*SIS — Semantics Implementation System, Reference Manual and User Guide*. DAIMI Report MD-30, DAIMI, University of Århus, Denmark, 1979. A lambda expression reducer is used in a compilergenerating system to effectively compose a (denotational semantics) language definition and a source program to obtain an object program (as a lambda expression).Google Scholar - [Mycroft 86] A. Mycroft and N. D. Jones. A Relational Framework for Abstract Interpretation. In H. Ganzinger and N. D. Jones, editors,
*Programs as Data Objects, Copenhagen Denmark, 1985*, pages 156–171, Lecture Notes in Computer Science, Vol. 217, Springer-Verlag, 1986. The paper shows how logical relations may be combined with abstract interpretation for the purpose of static analysis of programs. An example applies the method to Hindley-Milner style polymorphic type checking.Google Scholar - [Nepejvoda 87] N. N. Nepejvoda. Some Analogues of Partial & Mixed Computations in the Logical Programming Approach. In [
*Bjorner 87*], 1987. The logical programming approach is a particular view of the process of algorithm and program development in which program transformations are used. A number of such transformations are compared to mixed computation concepts.Google Scholar - [Neumann 86] G. Neumann.
*Meta-Interpreter Directed Compilation of Logic Programs into Prolog*. Research Report RC 12113 (No. 54357), IBM, Yorktown Heights, New York, 1986.Google Scholar - [Nielson 88] F. Nielson, A Formal Type System for Comparing Partial Evaluators. In D. Bjørner, A. P. Ershov and N. D. Jones, editors,
*Partial Evaluation and Mixed Computation*, North-Holland, 1988. The lambda calculus is provided with a two-level type system for expressing binding time information. The concept of a best typing is defined, and an algorithm to compute it (i. e., a binding time analysis) is given. Finally, some relations for comparing partial evaluators are discussed.Google Scholar - [Ono 86] S. Ono, N. Takahashi and M. Amamiya. Partial Computation with a Dataflow Machine. In E. Goto, K. Araki and T. Yuasa, editors,
*RIMS Symposia on Software Science and Engineering II, Kyoto, Japan, 1983 and 1984*, pages 87–113, Lecture Notes in Computer Science, Vol. 220, Springer-Verlag, 1986. A dataflow computation model is defined, and a restricted kind of partial evaluation for this computation model is presented.Google Scholar - [Ostrovsky 80a] B. N. Ostrovsky. Application of Mixed Computation to Automatic Generation of Language-Oriented Parsers. In
*Automation of Application Packages Production*, pages 172–173, Tallin, USSR, 1980. (in Russian). An experiment in automatic development of language-oriented parsers is described.Google Scholar - [Ostrovsky 80b] B. N. Ostrovsky. Application of Mixed Computation to Systematic Development of Language-Oriented Parsers. In
*Compilation and Program Models*, pages 69–80, Novosibirsk, USSR, 1980. (in Russian). The notions of strict and flexible mixed computation used for generation of language-oriented parsers are introduced.Google Scholar - [Ostrovsky 81] B. N. Ostrovsky. A Sketch of a Transformational Machine Defining Semantics of a Pascal Subset. In
*Methods of Compilation*, pages 121–124, Computing Center, Novosibirsk, USSR, 1981. (in Russian). A formalism for description of ordinary and mixed computation in a Pascal-like language is introduced.Google Scholar - [Ostrovsky 84] B. N. Ostrovsky. Controlled Mixed Computation Examplified by Language Oriented Parsers. In
*Problems in Theoretical and System Programming*, pages 30–49, Novosibirsk, USSR, 1984. (in Russian). The concept of controlled mixed computation is introduced. An experiment on development of a topdown language-oriented parser for Algol 60 is described.Google Scholar - [Ostrovsky 87] B. N. Ostrovsky. Implementation of Controlled Mixed Computation and Its Application to Systematic Development of Language-Oriented Parsers.
*Programmirovanie*, (2): 56–67, 1987. (in Russian). The concept of controlled mixed computation is introduced. A description of an automatic system for generation of language-oriented parsers is given. Results of computer experiments in obtaining language-oriented parsers for some real programming languages are given.Google Scholar - [Ostrovsky 88] B. N. Ostrovsky. Implementation of Controlled Mixed Computation in System for Automatic Development of Language-Oriented Parsers. In D. Bjørner, A. P. Ershov and N. D. Jones, editors,
*Partial Evaluation and Mixed Computation*, North-Holland, 1988. English version of [Ostrovsky 87].Google Scholar - [Pagan 80] F. G. Pagan. On the Generation of Compilers from Language Definitions.
*Information Processing Letters*, 10(2): 104–107, March 1980. Partial evaluation techniques are considered for transforming interpreter-oriented language definitions into compilers.Google Scholar - [Pettorossi 88] A. Pettorossi and M. Proietti. Importing and Exporting Information in Program Development. In D. Bjørner, A. P. Ershov and N. D. Jones, editors,
*Partial Evaluation and Mixed Computation*, North-Holland, 1988. Several examples of transformation of inefficient programs into efficient ones by hand are presented, and the proposed approach, called lambda abstraction, is compared to other approaches.Google Scholar - [Romanenko 83] S. A. Romanenko.
*An Application of Mixed Computation to Assemblers and Loaders*. Preprint 27, Keldysh Institute of Applied Mathematics, Moscow, USSR, 1983. (in Russian). Mixed computation is applied to the development of an assembler and a linking loader. The load module is considered to be a residual program produced by mixed computation of an assembler over a source module with frozen parameter values. When these are available, the load module can be executed to generate an absolute program.Google Scholar - [Romanenko 87a] S. A. Romanenko.
*A Compiler Generator Produced by Self-Application of a Specializer Can Have a Clear and Natural Structure*. Preprint 26, Keldysh Institute of Applied Mathematics, Moscow, USSR, 1987. (in Russian). The paper describes the structure of and ideas behind a self-applicable program specializer, and the principles of operation of a compiler generator produced automatically by specializing the specializer with respect to itself. The structure of the compilers produced is improved by means of some new devices suggested.Google Scholar - [Romanenko 87b] S. A. Romanenko.
*Refal-4, an Extension of Refal-2, for Representing Results of Driving*. Preprint, 147, Keldysh Institute of Applied Mathematics, Moscow, USSR, 1987. (in Russian). The paper describes a number of constructs to be introduced into the language Refal-2. These will make it possible to represent the results of various optimizations that are performed by the Refal-compiler but cannot be represented in Refal-2 alone.Google Scholar - [Romanenko 88] S. A. Romanenko A Compiler Generator Produced by a Self-Applicable Specializer Can Have a Surprisingly Natural and Understandable Structure. In D. Bjørner, A. P. Ershov and N. D. Jones, editors,
*Partial Evaluation and Mixed Computation*, North-Holland, 1988. English version of [Romanenko 87a].Google Scholar - [Romanenko, A 88] A. Y. Romanenko. The Generation of Inverse Functions in Refal. In D. Bjørner, A. P. Ershov and N. D. Jones, editors,
*Partial Evaluation and Mixed Computation*, North-Holland, 1988. Some problems in automatic generation of inverse functions are solved by means of configurational analysis: an analysis of the computation history. Some extensions of the Refal language are suggested to support function inversion.Google Scholar - [Safra 86a] S. Safra.
*Partial Evaluation of Concurrent Prolog and Its Implications*. Master’s thesis, CS86-24, Weizmann Institute of Science, Rehovot, Israel, July 1986.Google Scholar - [Safra 86b] S. Safra and E. Shapiro. Meta Interpreters for Real. In H.-J. Kugler, editor,
*Information Processing 86, Dublin, Ireland*, pages 271–278, North-Holland, 1986. Partial evaluation is defined and its applications to compilation and compiler generation are outlined. Several Prolog metainterpreters are described and it is argued that partial evaluation is useful for reducing the overhead incurred by metainterpretation.Google Scholar - [Sakama 88] C. Sakama and H. Itoh. Partial Evaluation of Queries in Deductive Databases.
*New Generation Computing*, 6(2, 3), June 1988. (This volume). The paper presents an application of partial evaluation to query optimization in a deductive database. TheGoogle Scholar - [Samochadin 82] A. V. Samochadin. Optimizer for Structured Microcomputer Assembler Programs. In
*Microprocessor Programming*, pages 89–99, Valgus, Tallin, USSR, 1982. (in Russian). The mixed computation algorithms Smix and Dmix for structured assembly programs are described.Google Scholar - [Schmidt 88] D. A. Schmidt. Static Properties of Partial Evaluation. In D. Bjørner, A. P. Ershov and N. D. Jones, editors,
*Partial Evaluation and Mixed Computation*, North-Holland, 1988. Fundamental properties of call-by-value partial reduction of lambda-calculus expression are stated and proved. A two-level type system plays an important role in the proofs. An algorithm for assigning a two-level typing to an expression is given.Google Scholar - [Schooler 84] R. Schooler.
*Partial Evaluation as a Means of Language Extensibility*. Master’s thesis, 84 pages, MIT/LCS/TR-324, Laboratory for Computer Science, MIT, Cambridge, Massachusetts, August 1984. A partial evaluator for an applicative subset of Scheme is developed. It can deal with side-effects, but does not try to optimize them. User-supplied annotations guide the partial evaluator which is intended to be used in a system for supporting language extensibility.Google Scholar - [Sestoft 86] P. Sestoft. The Structure of a Self-Applicable Partial Evaluator. In H. Ganzinger and N. D. Jones, editors,
*Programs as Data Objects, Copenhagen, Denmark, 1985*, pages 236–256, Lecture Notes in Computer Science, Vol. 217, Springer-Verlag, 1986. The structure of the self-applicable partial evaluator reported in [Jones 85] is presented in detail. The problems arising from self-application are discussed, and experience from using the partial evaluator for generation of compilers and a compiler generator is assessed.Google Scholar - [Sestoft 88] P. Sestoft. Automatic Call Unfolding in a Partial Evaluator. In D. Bjørner, A. P. Ershov and N. D. Jones, editors,
*Partial Evaluation and Mixed Computation*, North-Holland, 1988. The partial evaluator described in [Jones 85] and [Sestoft 86] is extended with a mechanism to make automatic call annotations and hence avoid the need for human assistance. The problems with call unfolding are discussed, the new mechanism is described, and results from its use are reported.Google Scholar - [Shapiro 86] E. Shapiro. Concurrent Prolog: A Progress Report.
*Computer*, 19(8): 44–58, August 1986. In this survey paper on Concurrent Prolog, partial evaluation is mentioned as a technique to reduce metainterpreter overhead.Google Scholar - [Søndergaard 84] H. Søndergaard.
*A Primitive Autoprojector for a Simple Applicative Language*. Student Report 84-2-4, DIKU, University of Copenhagen, Denmark, November 1984. This report is about work towards that presented in [Jones 85]. An analysis of the problems involved in partial evaluation is carried out, a one-phase self-applicable partial evaluator is presented, and the results are critically reviewed. Problems to be solved by future work are outlined.Google Scholar - [Stepanov 81a] A. M. Stepanov.
*Frames and Parallel Mixed Computation*. Preprint 297, Computing Center, Novosibirsk, USSR, 1981. (in Russian). A parallel abstract machine based on the notion of frame is described. The notions of relation and scheme for depicting standard data structures are introduced.Google Scholar - [Stepanov 81b] A. M. Stepanov.
*Experimental Programming System*. Preprint 305, Computing Center, Novosibirsk, USSR, 1981. (in Russian). The properties of a parallel abstract machine are discussed. It is shown that the proposed mechanism of data processing can be used as a universal computational tool. A simplified version of the external machine language is described, and the perspectives of development of the system are discussed.Google Scholar - [Sterling 86] L. Sterling and R. D. Beer. Incremental Flavor-Mixing of Meta-Interpreters for Expert System Construction. In
*Proc. 3rd Symposium on Logic Programming, Salt Lake City, Utah*, pages 20–27, 1986. A partial evaluator is used for eliminating the inefficiency of use of metainterpreters in an expert system. Problems of how to guide a partial evaluator for Prolog are discussed.Google Scholar - [Sternberg 77] L. F. Sternberg. Economical Algorithms of INCOL Algorithmic Language Interpretation.
*Kybernetika*, (1): 69–74, 1977. (in Russian). Algorithms for interpretation of the Incol language are described. Common sublists and references are used in the algorithms. In this way, linearity is preserved.Google Scholar - [Takeuchi 86a] A. Takeuchi. Affinity between Meta Interpreters and Partial Evaluation. In H.-J. Kugler, editor,
*Information Processing 86, Dublin, Ireland*, pages 279–282, North-Holland, 1986. An affinity between generality of metainterpreters and specialization by partial evaluation is noticed. Two open problems with this view are pointed out and discussed. One relates to the semantics of partial evaluation of non-deterministic parallel languages and the other concerns metalevel descriptions of parallel computation.Google Scholar - [Takeuchi 86b] A. Takeuchi and K. Furukawa. Partial Evaluation of Prolog Programs and Its Application to Meta Programming. In H.-J. Kugler, editor,
*Information Processing 86, Dublin, Ireland*, pages 415–420, North-Holland, 1986. Partial evaluation of Prolog programs and its application to metaprogramming are presented. It is shown how the inefficiency incurred by metaprograms can be removed by means of partial evaluation without losing the expressive power of metaprogramming.Google Scholar - [Takeuchi 88] A. Takeuchi and H. Fujita. Competitive Partial Evaluation—Some Remaining Problems of Partial Evaluation.
*New Generation Computing*, 6(2, 3), July 1988. (This volume). Two case studies are presented shat show how partial evaluation can improve efficiency. The many problems to be solved before partial evaluation can produce results comparable to those expert programmers produce are also discussed.Google Scholar - [Takewaki 85] T. Takewaki et al.
*Application of Partial Evaluation to the Algebraic Manipulation System and Its Evaluation*. Technical Report TR-148, ICOT, Tokyo, Japan, 1985. The paper describes an application of partial evaluation to an algebraic manipulation system using metaprogramming.Google Scholar - [Talcott 88] C. Talcott and R. Weyhrauch. Partial Evaluation, Higher-Order Abstractions, and Reflection Principles as System Building Tools. In D. Bjørner, A. P. Ershov and N. D. Jones, editors,
*Partial Evaluation and Mixed Computation*, North-Holland, 1988. The paper describes interactive programming environments for symbolic computation quite generally and raises some challenging problems for partial evaluation in this context.Google Scholar - [Trakhtenbrot 80] M. B. Trakhtenbrot. On Transformations Which Complete Program Definition.
*Kybernetika*, (2): 55–60, 1980. (in Russian). A definition of correctness of program transformations is suggested. Transformations and program constructs are considered which permit to increase the quality and reliability of programs.MathSciNetGoogle Scholar - [Turchin 72] V. F. Turchin. Equivalent Transformation of Recursive Functions Defined in Refal. In
*Trudy Vsesoyuzn. Simpos Teoria Yazykov i Metody Progr.*, pages 31–42, Alushta-Kiev, 1972. (in Russian). The basic rules of transformation of Refal programs are introduced. The rule of driving (forced instantiation with unfolding) is shown to be the most important tool. As an example of driving, it is shown how the algorithm of subtraction of binary numbers can be produced from the algorithm for addition.Google Scholar - [Turchin 74] V. F. Turchin. Equivalent Transformations of Refal Programs. In
*Automatizirovannaya Sistema Upravlenya Stroitelstvom, Vol. VI*, pages 36–68, TsNIPIASS, Moscow, 1974. (in Russian).Google Scholar - [Turchin 77] V. F. Turchin (ed.).
*Basic Refal and Its Implementation on Computers*. GOSSTROI SSSR, TsNIPIASS, 1977. (in Russian). Treats the definition of Refal, its use, programming techniques and implementation on the main Soviet computers. The chapter on translation includes a discussion of the method of constructing compilers and compiler compilers by self-application of a super-compiler (a partial evaluator).Google Scholar - [Turchin 79] V. F. Turchin. A Supercompiler System Based on the Language Refal.
*SIGPLAN Notices*, 14(2): 46–54, February 1979. The paper describes a projected programming system in which the user will be able to create and define various specialized programming languages in Refal and to generate translators for them automatically.Google Scholar - [Turchin 80a] V. F. Turchin. The Use of Metasystem Transition in Theorem Proving and Program Optimization. In J. De Bakker and J. van Leeuven, editors,
*Automata, Languages and Programming. Seventh ICALP, Noordwijkerhout, The Netherlands*, pages 645–657, Lecture Notes in Computer Science, Vol. 85, Springer-Verlag, 1980. The paper describes the use of a supercompiler as a theorem prover. Examples from recursive arithmetics are considered. When a direct supercompilation does not lead to a proof, it may be possible to do the proof by supercompiling the process of supercompilation itself (achieving a so-called metasystem transition).Google Scholar - [Turchin 80b] V. F. Turchin. Semantic Definitions in Refal and Automatic Production of Compilers. In N. D. Jones, editor,
*Semantics-Directed Compiler Generation, Aarhus, Denmark*, pages 441–474, Lecture Notes in Computer Science, Vol. 94, Springer-Verlag, 1980. The operational semantics of a programming language can be defined in Refal. Then a compiler for the language can be built automatically by supercompilation and self-application. A simple supercompilation example is given.Google Scholar - [Tuchin 80c] V. F. Turchin.
*The Language Refal, the Theory of Compilation and Metasystem Analysis*. Courant Computer Science Report 20, 245 pages, Courant Institute of Mathematical Sciences, New York University, New York, February 1980. A detailed exposition of the language Refal and interpretation, compilation and transformation of Refal programs. The concept of metasystem transition is investigated using Refal.Google Scholar - [Turchin 82] V. F. Turchin, R. M. Nirenberg and D. V. Turchin. Experiments with a Supercompiler. In
*1982 ACM Symposium on Lisp and Functional Programming, Pittsburgh, Pennsylvania*, pages 47–55, ACM, 1982. A dozen simple examples show how the supercompiler created at the City College of New York is working. The examples include partial evaluation, program specialization, problem solving, and theorem proving.Google Scholar - [Turchin 86a] V. F. Turchin. Program Transformation by Supercompilation. In H. Ganzinger and N. D. Jones, editors,
*Programs as Data Objects, Copenhagen, Denmark, 1985*, pages 257–281, Lecture Notes in Computer Science, Vol. 217, Springer-Verlag, 1986. Driving is defined as forced instantiation of a function call for all possible value cases of the arguments, followed by unfolding. An algorithm for driving in Refal with a lazy evaluation semantics is given. Repeated driving with search for recurring configurations (supercompilation) becomes a method of program transformation.Google Scholar - [Turchin 86b] V. F. Turchin. The Concept of a Supercompiler.
*ACM Transactions on Programming Languages and Systems*, 8(3): 292–325, July 1986. The general principles and algorithms of supercompilation are described and compared with the usual approach to program transformation as stepwise application of equivalence transformations. Refal, used as the base language for supercompilation, is formally defined and compared with Lisp and Prolog. Examples are given.MATHMathSciNetGoogle Scholar - [Turchin 88] V. F. Turchin. The Algorithm of Generalization in the Supercompiler. In D. Bjørner, A. P. Ershov and N. D. Jones, editors,
*Partial Evaluation and Mixed Computation*, North-Holland, 1988. The central problem of supercompilation is how to choose a self-sufficient finite set of configurations of the computing system. Generalization over configurations is necessary for this. The paper describes an algorithm of generalization in the process of driving (forced unfolding) which always terminates and produces a self-sufficient set.Google Scholar - [Vasey 86] P. Vasey. Qualified Answers and Their Application to Transformation. In E. Shapiro, editor,
*Third International Conference on Logic Programming, London, United Kingdom*, pages 425–432, Lecture Notes in Computer Science, Vol. 225, Springer-Verlag, 1986. A metainterpreter for giving so-called qualified answers to Prolog queries is devised, and is shown to be useful for program transformation and program specialization.Google Scholar - [Venken 84] R. Venken. A Prolog Meta-Interpreter for Partial Evaluation and Its Application to Source to Source Transformation and Query-Optimisation. In T. O’Shea, editor,
*ECAI-84, Advances in Artificial Intelligence, Pisa, Italy*, pages 91–100, North-Holland, 1984. A partial evaluator for full Prolog is presented which relies on user-supplied annotations. It is intended for optimization of deductive database enquiries.Google Scholar - [Venken 88] R. Venken and B. Demoen. A Partial Evaluation System for Prolog: Some Practical Considerations.
*New Generation Computing*, 6(2, 3), June 1988. (This volume). The operation principles of a Prolog partial evaluator are described, and some performance considerations are made. The conclusion is drawn that some ‘natural’ optimizations may be harmful to performance if they disturb the possibility of optimized implementation (by a compiler, say).Google Scholar - [Youganova 87] T. I. Youganova. Mixed Computation Correctness: Incol Language Example.
*Programmirovanie*, (2): 67–77, 1987. (in Russian). The peculiarities of mixed computation in the language Incol by means of delay control are considered. Local correctness as a feature of computation is described and the reason for its failure are analyzed.Google Scholar - [Youganova 88] T. I. Youganova. A Model of Language Semantics Oriented to Mixed Execution of Programs. In D. Bjørner, A. P. Ershov and N. D. Jones, editors,
*Partial Evaluation and Mixed Computation*, North-Holland, 1988. Features of mixed computation as incorporated into software to support decision making with incomplete information are discussed. The language Incol which is intended for mixed computation of programs and which contains suspension recognition and control facilities is also described.Google Scholar - [Young 88] J. Young and P. O’Keefe. Experience with a Type Evaluator. In D. Bjørner, A. P. Ershov and N. D. Jones, editors,
*Partial Evaluation and Mixed Computation*, North-Holland, 1988. A type system for a lazy side-effect free language is developed, and the concepts of safety and preciseness of type evaluators are defined. A safe type semantics is presented, and various techniques for improving it and making it implementable are discussed.Google Scholar - [Zakharova 86a] N. T. Zakharova. Denotational Semantics of Mixed Computation in a Pascal Subset. In
*Problems in Program Synthesis, Testing, Verification and Debugging, Vol. 1*, pages 132–134, Riga, USSR, 1986. (in Russian). The process of mixed computation for a Pascal subset is briefly described. A criterion of functional correctness and a corresponding theorem are formulated.Google Scholar - [Zakharova 86b] N. T. Zakharova and V. A. Petrushin. Denotational Semantics of Mixed Computation in a Simple Structured Programming Language. In
*Application of Mathematical Logic Methods*, pages 74–76, Tallin, USSR, 1986. (in Russian). Two denotational models for mixed computation in a simple structured programming language are briefly described. A theorem concerning functional correctness of the models is formulated.Google Scholar - [Zakharova 87] N. T. Zakharova, V. A. Petrushin and E. L. Yushchenko. Denotational Semantics of Mixed Computation Processes. In [
*Bjorner 87*], pages 379–388, 1987. A denotational model of ordinary computation and two denotational models of mixed computation in a simple structured programming language are presented. A criterion of functional correctness of mixed computation and the corresponding theorems are formulated.Google Scholar - [Zakharova 88] N. T. Zakharova, V. A. Petrushin and E. L. Yushchenko. Denotational Semantics of Mixed Computation of a Structured Programming Language.
*Kybernetika*, 1988 (to appear). (in Russian). A denotational model of ordinary computation and two denotational models of mixed computation in a simple structured language are presented. A criterion of functional correctness of mixed computation is given and a theorem concerning the functional correctness is proved for one of the models.Google Scholar - [Zamulin 86] A. V. Zamulin and I. N. Skopin. Programming Language Constructs as Data Types. In
*Applied Informatics*, pages 93–110, Finansy i Statistika, Iss. 2, Moscow, USSR, 1986. (in Russian). The application of a unified data type constructor to the definition of data processed at the compilation and execution stages is studied. The approach permits to represent all programming language constructs as an integrated data type system.Google Scholar

## Copyright information

© Ohmsha, Ltd. and Springer 1988