6,481 research outputs found

    Program development using abstract interpretation (and the ciao system preprocessor)

    Get PDF
    The technique of Abstract Interpretation has allowed the development of very sophisticated global program analyses which are at the same time provably correct and practical. We present in a tutorial fashion a novel program development framework which uses abstract interpretation as a fundamental tool. The framework uses modular, incremental abstract interpretation to obtain information about the program. This information is used to validate programs, to detect bugs with respect to partial specifications written using assertions (in the program itself and/or in system librarles), to genérate and simplify run-time tests, and to perform high-level program transformations such as múltiple abstract specialization, parallelization, and resource usage control, all in a provably correct way. In the case of validation and debugging, the assertions can refer to a variety of program points such as procedure entry, procedure exit, points within procedures, or global computations. The system can reason with much richer information than, for example, traditional types. This includes data structure shape (including pointer sharing), bounds on data structure sizes, and other operational variable instantiation properties, as well as procedure-level properties such as determinacy, termination, non-failure, and bounds on resource consumption (time or space cost). CiaoPP, the preprocessor of the Ciao multi-paradigm programming system, which implements the described functionality, will be used to illustrate the fundamental ideas

    A technique for dynamic term size computation via program transformation

    Get PDF
    Knowing the size of the terms to which program variables are bound at run-time in logic programs is required in a class of applications related to program optimization such as, for example, granularity analysis and selection among different algorithms or control rules whose performance may be dependent on such size. Such size is difficult to even approximate at compile time and is thus generally computed at run-time by using (possibly predefined) predicates which traverse the terms involved. We propose a technique based on program transformation which has the potential of performing this computation much more efficiently. The technique is based on finding program procedures which are called before those in which knowledge regarding term sizes is needed and which traverse the terms whose size is to be determined, and transforming such procedures so that they compute term sizes "on the fly". We present a systematic way of determining whether a given program can be transformed in order to compute a given term size at a given program point without additional term traversal. Also, if several such transformations are possible our approach allows finding minimal transformations under certain criteria. We also discuss the advantages and applications of our technique and present some performance results

    Efficient term size computation for granularity control

    Get PDF
    Knowing the size of the terms to which program variables are bound at run-time in logic programs is required in a class of optimizations which includes granularity control and recursion elimination. Such size is difficult to even approximate at compile time and is thus generally computed at run-time by using (possibly predeñned) predicates which traverse the terms involved. We propose a technique which has the potential of performing this computation much more efficiently. The technique is based on ñnding program procedures which are called before those in which knowledge regarding term sizes is needed and which traverse the terms whose size is to be determined, and transforming such procedures so that they compute term sizes "on the fly". We present a systematic way of determining whether a given program can be transformed in order to compute a given term size at a given program point without additional term traversal. Also, if several such transformations are possible our approach allows ñnding minimal transformations under certain criteria. We also discuss the advantages and applications of our technique (specifically in the task of granularity control) and present some performance results

    Dynamic term size computation in logic programs via program transformation

    Get PDF
    Knowing the size of the terms to which program variables are bound at run-time in logic programs is required in a class of applications related to program optimization such as, for example, recursion elimination and granularity analysis. Such size is difficult to even approximate at compile time and is thus generally computed at run-time by using (possibly predefined) predicates which traverse the terms involved. We propose a technique based on program transformation which has the potential of performing this computation much more efficiently. The technique is based on finding program procedures which are called before those in which knowledge regarding term sizes is needed and which traverse the terms whose size is to be determined, and transforming such procedures so that they compute term sizes "on the fly". We present a systematic way of determining whether a given program can be transformed in order to compute a given term size at a given program point without additional term traversal. Also, if several such transformations are possible our approach allows finding minimal transformations under certain criteria. We also discuss the advantages and present some applications of our technique

    Towards dynamic term size computation via program transformation

    Get PDF
    Knowing the size of the terms to which program variables are bound at run-time in logic programs is required in a class of applications related to program optimization such as, for example, recursion elimination and granularity analysis. Such size is difficult to even approximate at compile time and is thus generally computed at run-time by using (possibly predefined) predicates which traverse the terms involved. We propose a technique based on program transformation which has the potential of performing this computation much more efficiently. The technique is based on finding program procedures which are called before those in which knowledge regarding term sizes is needed and which traverse the terms whose size is to be determined, and transforming such procedures so that they compute term sizes "on the fly". We present a systematic way of determining whether a given program can be transformed in order to compute a given term size at a given program point without additional term traversal. Also, if several such transformations are possible our approach allows finding minimal transformations under certain criteria. We also discuss the advantages and present some applications of our technique

    Chaos and Regularity in the Double Pendulum with Lagrangian Descriptors

    Full text link
    In this paper we apply the method of Lagrangian descriptors as an indicator to study the chaotic and regular behavior of trajectories in the phase space of the classical double pendulum system. In order to successfully quantify the degree of chaos with this tool, we first derive Hamilton's equations of motion for the problem in non-dimensional form, showing that they can be written compactly using matrix algebra. Once the dynamical equations are obtained, we carry out a parametric study in terms of the system's total energy and the other model parameters (lengths and masses of the pendulums, and gravity), to determine the extent of the chaotic and regular regions in the phase space. Our numerical results show that for a given mass ratio, the maximum chaotic fraction of phase space trajectories is attained when the pendulums have equal lengths. Moreover, we give a characterization of the growth and decay of chaos in the system in terms of the model parameters, and explore the hypothesis that the chaotic fraction follows an exponential law over different energy regimes.Comment: 17 pages, 7 figure

    Characterization of european virgin olive oils using fatty acids

    Get PDF
    The possibility of discriminating between extra virgin olive oils from different regions of Spain, Italy and Portugal, by means of their fatty acid content, has been investigated. A dendrogram allowed discrimination between the oils starting from their initial grouping and progressing to differentiation on the basis of regions. Multivariant statistical analyses were applied to determine the actual discriminatory capacity of this group of compounds. The confidence associated with the final discrimination was ascertained using the theory of evidence.Se ha estudiado la posibilidad de discriminación entre aceites de oliva virgen procedentes de diferentes regiones de España, Italia y Portugal, mediante sus ácidos grasos. Para llevar a cabo la discriminación entre los aceites, desde su agrupación inicial hasta la diferenciación por regiones, se empleó una estructura arborescente. Fueron aplicados procedimientos estadísticos multivariantes para determinar la capacidad discriminante actual de este grupo de compuestos. La certeza asociada a la discriminación final fue calculada mediante la teoría de la evidencia

    Estudio de viabilidad de la reutilización de baños de tintura textil

    Get PDF
    En este trabajo se hace un estudio de viabilidad técnica y económica de la integración de un tratamiento de decoloración de baños agotados de tintura a un proceso de tintura téxtil convencional con el objetivo de reutilizar el agua tratada y en especial, de aprovechar la sal necesaria para realizar la tintura. El tratamiento de decoloración se lleva a cabo en una celula electroquímica asistida por luz ultravioleta y el agua decolorada es almacenada en un deposito para su posterior reutilización en el proceso de tintura. La implementación de este sistema de tratamiento y reutilización permite ahorrar el 70% de agua y el 60% de la sal necesarios para preparar los banos de tintura. Lo que aparte de reportar una horro económico directo, también supone un ahorro en el cánon de vertido de aguas residuales. Por el contrario, si se quiere hacer un proceso ininterrumpido de sucesivas reutilizaciones, en algunas ocasiones y en función del color requerido, debe aumentarse la cantidad de colorante respecto de la fórmula inicial para evitar una merma en la calidad de las tinturas y precisamente por ello es importante la realización del estudio económico para demostrar su viabilidad
    corecore