Skip to main content

2016 | Buch

Behavioral Program Synthesis with Genetic Programming

insite
SUCHEN

Über dieses Buch

Genetic programming (GP) is a popular heuristic methodology of program synthesis with origins in evolutionary computation. In this generate-and-test approach, candidate programs are iteratively produced and evaluated. The latter involves running programs on tests, where they exhibit complex behaviors reflected in changes of variables, registers, or memory. That behavior not only ultimately determines program output, but may also reveal its `hidden qualities' and important characteristics of the considered synthesis problem. However, the conventional GP is oblivious to most of that information and usually cares only about the number of tests passed by a program. This `evaluation bottleneck' leaves search algorithm underinformed about the actual and potential qualities of candidate programs.

This book proposes behavioral program synthesis, a conceptual framework that opens GP to detailed information on program behavior in order to make program synthesis more efficient. Several existing and novel mechanisms subscribing to that perspective to varying extent are presented and discussed, including implicit fitness sharing, semantic GP, co-solvability, trace convergence analysis, pattern-guided program synthesis, and behavioral archives of subprograms. The framework involves several concepts that are new to GP, including execution record, combined trace, and search driver, a generalization of objective function. Empirical evidence gathered in several presented experiments clearly demonstrates the usefulness of behavioral approach. The book contains also an extensive discussion of implications of the behavioral perspective for program synthesis and beyond.

Inhaltsverzeichnis

Frontmatter
Program synthesis
Abstract
In this introductory chapter, we characterize and formalize the key concepts of this book, in particular computer programs. We also define the task of program synthesis and determine the main factors that make it challenging. Finally, we delineate several paradigms of program synthesis, among them genetic programming.
Krzysztof Krawiec
Limitations of conventional program evaluation
Abstract
In Sect. 1.4, we identified several challenges for program synthesis, among others the vastness of search space and the intricate way in which program code determines the effects of computation. In this chapter, we identify and discuss the consequences of the conventional approach to program evaluation in generative program synthesis. Though focused mostly on the generative paradigm of GP, some of the observations made here apply to other generative synthesis approaches.
Krzysztof Krawiec
The framework of behavioral program synthesis
Abstract
In the previous chapter, we identified evaluation bottleneck, and showed that the information lost in aggregation of interaction outcomes can be essential for the success of a program synthesis process. In this chapter, we set out to present behavioral program synthesis, a new paradigm of program behavioral program synthesis which, in a sense, puts program behavior before its source code.
Krzysztof Krawiec
Behavioral assessment of test difficulty
Abstract
As argued in Sect. 2.2.2, one of the vices of conventional scalar evaluation is symmetry: the same reward is granted for passing every test. Yet some tests can be objectively more difficult than others in the sense of (2.2), i.e. harder to pass by a randomly generated program. They may vary also with respect to subjective difficulty, i.e. particular program synthesis methods may find it more or less difficult to synthesize a program that passes a given test (cf. Sect. 2.2.3). Conventional evaluation function (1.7), by simply counting the failed tests, cannot address this aspect of program synthesis.
Krzysztof Krawiec
Semantic Genetic Programming
Abstract
Semantic genetic programming (SGP) is a relatively new thread in GP research, which originated in the immense complexity of the genotype phenotype mapping in evolutionary program synthesis. As discussed in Sect. 1.4, minor modifications of program code may result in fundamentally different behavior; on the other hand, an overhaul of program may leave its behavior intact. The relationship between program source code (syntax) and its behavior (semantics for the sake of this chapter) is very complex. SGP germinated from the increasing belief that to make evolutionary program synthesis scalable, program synthesis algorithms need to explicitly take program semantics into account. In this chapter, we provide a concise insight into SGP and show how its conceptual underpinnings relate to behavioral program synthesis and execution records.
Krzysztof Krawiec
Synthesizing programs with consistent execution traces
Abstract
The main motif of this book is providing search algorithms with rich information on solutions’ characteristics. The formalism of execution record, a complete, instruction-by-instruction account on program execution for every test, is a technical means to achieve that goal. In the approaches presented to this point, only the final execution states in an execution record were taken into account. In this chapter, we utilize an entire execution record for the first time in this book.
Krzysztof Krawiec
Pattern-guided program synthesis
Abstract
The motivation behind analyzing consistency of execution traces with desired output in Chap. 6 was to identify and promote the programs that contain prospectively useful subprograms. The approach described in this chapter generalizes the trace consistency method in two respects. Firstly, we seek here for a more general relatedness between the intermediate execution states and the desired output, rather than for information-theoretic consistency. Secondly, while evaluation in the trace consistency method depends on a single stage of program execution that maximizes consistency (captured in a particular column of an execution record (6.4)), the evaluation functions proposed here depend on the entire execution record. In this way, the approach presented in this chapter, originally proposed in [101] and then extended in [96], looks for patterns in program behaviors that seem relevant for a given program synthesis task.
Krzysztof Krawiec
Behavioral code reuse
Abstract
To this point, our attempts to widen the evaluation bottleneck focused on defining alternative evaluation functions, which we conceptualize as search drivers in Chap. 9. However, an analysis of an execution record (Chap. 3), whether conducted with information-theoretic measures (Chap. 6) or machine learning algorithms (Chap. 7), also reveals information about the qualities of particular components of candidate solutions, i.e. subprograms. In this chapter, we elaborate on this observation and propose a means to harness its potential. We show how the detailed information available in an execution record together with behavioral evaluation enables (i) identification of useful components of programs, which can be then (ii) archived and (iii) reused by search operators. The following sections detail these stages as realized in [96].
Krzysztof Krawiec
Search drivers
Abstract
In this chapter, we provide a unified perspective on the methods presented in Chaps. 4-8, the key consequence of which is the concept of search driver detailed in Sect. 9.3.
Krzysztof Krawiec
Experimental assessment of search drivers
Abstract
This chapter presents the results of a comparative experiment involving various combinations of search drivers.
Krzysztof Krawiec
Implications of the behavioral perspective
Abstract
Previous chapters presented a range of approaches that characterize program behavior in terms of execution record and search drivers. The experiments reported in Chap. 10 demonstrated that these approaches increase the likelihood of synthesizing a correct program.What are the other, not necessarily empirical, implications of behavioral programsynthesis?We discuss them in a broader context in this chapter.
Krzysztof Krawiec
Future perspectives
Abstract
This book proposes a new conceptual perspective on generate-and-test program synthesis. The framework of behavioral program synthesis is intended to provide more information on candidate programs on one hand, and to make search algorithms capable of exploiting that information on the other. The core elements of that framework are execution records, behavioral search drivers, multi objective characterization, and code reuse. Experimental evidence in Chap. 10 and elsewhere proves this viable: behavioral insight into candidate programs is clearly beneficial. How can this take us further? What are the possible extensions? In this closing chapter, we outline a few prospective research directions.
Krzysztof Krawiec
Backmatter
Metadaten
Titel
Behavioral Program Synthesis with Genetic Programming
verfasst von
Krzysztof Krawiec
Copyright-Jahr
2016
Electronic ISBN
978-3-319-27565-9
Print ISBN
978-3-319-27563-5
DOI
https://doi.org/10.1007/978-3-319-27565-9

Premium Partner