19 research outputs found

    Forward Slicing by Conjunctive Partial Deduction and Argument Filtering

    Full text link
    Program slicing is a well-known methodology that aims at identifying the program statements that (potentially) affect the values computed at some point of interest. Within imperative programming, this technique has been successfully applied to debugging, specialization, merging, reuse, maintenance, etc. Due to its declarative nature, adapting the slicing notions and techniques to a logic programming setting is not an easy task. In this work, we define the first, semantics-preserving, forward slicing technique for logic programs. Our approach relies on the application of a conjunctive partial deduction algorithm for a precise propagation of information between calls. We do not distinguish between static and dynamic slicing since partial deduction can naturally deal with both static and dynamic data. Furthermore, this approach can quite easily be implemented by adding a new code generator on top of existing partial deduction systems. A slicing tool has been implemented in ECCE, where a post-processing transformation to remove redundant arguments has been added. Experiments conducted on a wide variety of programs are encouraging and demonstrate the usefulness of our approach, both as a classical slicing method and as a technique for code size reduction

    Normalisierung und partielle Auswertung von funktional-logischen Programmen

    Get PDF
    This thesis deals with the development of a normalization scheme and a partial evaluator for the functional logic programming language Curry. The functional logic programming paradigm combines the two most important fields of declarative programming, namely functional and logic programming. While functional languages provide concepts such as algebraic data types, higher-order functions or demanddriven evaluation, logic languages usually support a non-deterministic evaluation and a built-in search for results. Functional logic languages finally combine these two paradigms in an integrated way, hence providing multiple syntactic constructs and concepts to facilitate the concise notation of high-level programs. However, both the variety of syntactic constructs and the high degree of abstraction complicate the translation into efficient target programs. To reduce the syntactic complexity of functional logic languages, a typical compilation scheme incorporates a normalization phase to subsequently replace complex constructs by simpler ones until a minimal language subset is reached. While the individual transformations are usually simple, they also have to be correctly combined to make the syntactic constructs interact in the intended way. The efficiency of normalized programs can then be improved by means of different optimization techniques. A very powerful optimization technique is the partial evaluation of programs. Partial evaluation basically anticipates the execution of certain program fragments at compile time and computes a semantically equivalent program, which is usually more efficient at run time. Since partial evaluation is a fully automatic optimization technique, it can also be incorporated into the normal compilation scheme of programs. Nevertheless, this also requires termination of the optimization process, which establishes one of the main challenges for partial evaluation besides semantic equivalence. In this work we consider the language Curry as a representative of the functional logic programming paradigm. We develop a formal representation of the normalization process of Curry programs into a kernel language, while respecting the interference of different language constructs. We then define the dynamic semantics of this kernel language, before we subsequently develop a partial evaluation scheme and show its correctness and termination. Due to the previously described normalization process, this scheme is then directly applicable to arbitrary Curry programs. Furthermore, the implementation of a practical partial evaluator is sketched based on the partial evaluation scheme, and its applicability and usefulness is documented by a variety of typical partial evaluation examples

    Ontogeny Recapitulates Savagery: The Evolution of G. Stanley Hall's Adolescent

    Get PDF
    Thesis (PhD) - Indiana University, School of Education, 2006In 1904 G. Stanley Hall published his seminal work Adolescence: Its Psychology and Its Relations to Physiology, Anthropology, Sociology, Sex, Crime, Religion and Education. The dissertation has two primary concerns: first, it seeks to reexamine the scientific arguments found in Adolescence, locating their sources and demonstrating that the foundation of Hall's arguments were deeply embedded in nineteenth-century thought; second, the dissertation suggests that Hall's science, while faulty, offers a useful critique of pedagogical reform in the Progressive Era. Chapters 1-3 investigate the scientific arguments of Adolescence, exploring Hall's debt to a wide range of nineteenth-century disciplines, including biology, anthropometry, sociology, anthropology, criminology, psychology, and psychiatry. The focus throughout is on Hall's use of the theories of recapitulation and evolution to ally adolescence with other groups thought to inhabit "lower" levels on the evolutionary scale: "primitives" and "savage," as well as criminals, lunatics, and sexual deviants. Chapters 4-5 look at the influence that Hall's ideas had on educational institutions, notably the child study movement and on the junior high school. In both cases, Hall's ideas were influential, but to varying degrees. It is ironic that the first institution designed to educate adolescents largely forgot about the man who helped make their efforts possible. If Adolescence had only limited impact on junior high school reform, then it is important for historians to examine the rift between ideas about adolescents and the implementation of practical reforms that sought to educate them. That is the primary concern in the dissertation's conclusion

    Handbook of Stemmatology

    Get PDF
    Stemmatology studies aspects of textual criticism that use genealogical methods. This handbook is the first to cover the entire field, encompassing both theoretical and practical aspects, ranging from traditional to digital methods. Authors from all the disciplines involved examine topics such as the material aspects of text traditions, methods of traditional textual criticism and their genesis, and modern digital approaches used in the field

    Identifying and nurturing the gifted

    Get PDF

    Identifying and nurturing the gifted

    Get PDF
    corecore