Extending the power of programming by examples

Programming by Examples is one of the methodologies that has been proposed for supporting the development of office applications by non computer specialists. Programs are built by performing direct manipulations on objects visually represented on a display, simulating the execution of the program on exemplary data items. We distinguish two major approaches: a declarative approach (SBA by DeJong and Zloof) and a procedural approach (Tinker by Lieberman and Hewitt). We examine the computational power and the expressive convenience of the two systems. The procedural approach achieves full generality by allowing the user to explicitly introduce iterative or recursive control structures. The SBA system has built in control mechanisms, which avoids explicit use of such constructs, but it is correspondingly less powerful. We present an algebraic model of SBA programs which allows us to determine the expressive power of the SBA language. We discuss a more general control mechanism then the one embedded in SBA, based on homomorphic transformations, which allows to compute all primitive recursive functions. Further flexibility is obtained by coupling the PBE methodology with the knowledge representation language Omega.