7,527 research outputs found

    Comparing Cost Functions in Resource Analysis

    Get PDF
    Cost functions provide information about the amount of resources required to execute a program in terms of the sizes of input arguments. They can provide an upper-bound, a lower-bound, or the average-case cost. Motivated by the existence of a number of automatic cost analyzers which produce cost functions, we propose an approach for automatically proving that a cost function is smaller than another one. In all applications of resource analysis, such as resource-usage verification, program synthesis and optimization, etc., it is essential to compare cost functions. This allows choosing an implementation with smaller cost or guaranteeing that the given resource-usage bounds are preserved. Unfortunately, automatically generated cost functions for realistic programs tend to be rather intricate, defined by multiple cases, involving non-linear subexpressions (e.g., exponential, polynomial and logarithmic) and they can contain multiple variables, possibly related by means of constraints. Thus, comparing cost functions is far from trivial. Our approach first syntactically transforms functions into simpler forms and then applies a number of su!cient conditions which guarantee that a set of expressions is smaller than another expression. Our preliminary implementation in the COSTA system indicates that the approach can be useful in practic

    On abstraction-carrying code and certificate-size reduction

    Get PDF
    Abstraction-Carrying Code (ACC) is a framework for mobile code safety in which the code supplier provides a program together with an abstraction (or abstract model of the program) whose validity entails compliance with a predefined safety policy. The abstraction plays thus the role of safety certificate and its generation is carried out automatically by a fixed-point analyzer. The advantage of providing a (fixed-point) abstraction to the code consumer is that its validity is checked in a single pass (i.e., one iteration) of an abstract interpretation-based checker. A main challenge to make ACC useful in practice is to reduce the size of certificates as much as possible, while at the same time not increasing checking time. Intuitively, we only include in the certificate the information which the checker is unable to reproduce without iterating. We introduce the notion of reduced certifícate which characterizes the subset of the abstraction which a checker needs in order to validate (and re-construct) the full certificate in a single pass. Based on this notion, we show how to instrument a generic analysis algorithm with the necessary extensions in order to identify the information relevant to the checker

    Localizaciones óptimas para puertos secos

    Get PDF
    Los puertos secos (PS) son una prolongación de las zonas de actividades logísticas de los puertos marítimos en el interior del territorio. Su localización en el territorio español es un problema en el que intervienen multitud de variables. Se ha desarrollado un Decision Support System (DSS) para determinar localizaciones óptimas de asentamientos industriales en general y PS en particular. El reto para el DSS ha sido incorporar un gran número de variables que afectan a la localización de un PS, y a la vez conseguir que su manejo sea fácil e intuitivo. La tesina se estructura en dos partes: documentación y aplicación. En la primera se aporta información acerca de los PS’s, ya sea de su concepto, necesidades o funciones, como también acerca de los PS’s que ya existen en España. Se presentan datos sobre el transporte de mercancías existente entre los puertos marítimos y el territorio. Se estudian las infraestructuras de transporte existentes en España. También se hace un repaso a las teorías de localización que son útiles para el problema tratado, como también de los métodos para la toma de decisiones multicriterio. Y finalmente se propone una lista de criterios que afectan a la decisión de instalar un PS en un lugar determinado. En la segunda parte se desarrolla el DSS. Su funcionamiento se basa en analizar cada uno de los criterios en cada uno de los elementos de una malla de 1435 elementos que cubre el mapa de España. Finalmente el usuario del DSS puede decidir el peso que quiere darle a cada criterio y el programa le generará un mapa de España donde se identificarán las zonas con más potencial. Se adjunta en esta parte de la tesina la documentación para cada criterio, se argumenta si es posible incorporarlo en el DSS y en caso afirmativo se explica detalladamente la forma en como se hace. A modo de conclusión se dan los resultados obtenidos por el DSS. Se indican cuales son las zonas mejor valoradas según el programa en distintos escenarios de decisión

    Creación de un programa informático para administrar SOS ETSEIB

    Get PDF
    El objetivo de este trabajo es realizar un software que permita automatizar, agilizar y facilitar las tareas de administración del proyecto SOS ETSEIB. Este proyecto consiste en una web dirigida por estudiantes de nuestra escuela (ETSEIB) en la cual se fomenta la compartición de apuntes entre los estudiantes de la misma. Esta compartición se realiza a través de carpetas de Dropbox, teniéndose que enviar una invitación por cada usuario y asignatura. Para saber qué asignaturas enviar a cada persona, se pide a los alumnos que rellenen vía web un formulario con estos datos. Previamente a este trabajo la compartición se realizaba manualmente, es decir descargando manualmente las inscripciones de los usuarios y sus asignaturas, y enviando las invitaciones a cada persona a cada asignatura manualmente, lo cual era un proceso muy lento. Con este trabajo se ha automatizado este proceso, descargando las inscripciones y enviando invitaciones automáticamente, además de crear una interfaz gráfica que permita un uso intuitivo de la aplicación. Para la realización de este software se ha empleado el lenguaje de programación Python en conjunto con diversas librerías, las que mayor importancia tienen sobre el proyecto son las siguientes: Sqlite: ha sido utilizada para gestionar una base de datos en la que se guardan todos los datos de los usuarios, es decir todas las inscripciones. Dropbox: se ha empleado la librería de la API de Dropbox para realizar todas las tareas de conexión a este servicio y administración de las invitaciones a las carpetas compartidas. Kivy: se ha utilizado para crear la interfaz gráfica del software. En este documento se pretende explicar al más mínimo detalle cómo funciona este proceso y este programa. Además se pretende que este documento sirva de guía para los futuros estudiantes que se involucren en el proyecto y quieran darle continuidad

    A generic framework for the analysis and specialization of logic programs

    Get PDF
    The relationship between abstract interpretation and partial deduction has received considerable attention and (partial) integrations have been proposed starting from both the partial deduction and abstract interpretation perspectives. In this work we present what we argüe is the first fully described generic algorithm for efñcient and precise integration of abstract interpretation and partial deduction. Taking as starting point state-of-the-art algorithms for context-sensitive, polyvariant abstract interpretation and (abstract) partial deduction, we present an algorithm which combines the best of both worlds. Key ingredients include the accurate success propagation inherent to abstract interpretation and the powerful program transformations achievable by partial deduction. In our algorithm, the calis which appear in the analysis graph are not analyzed w.r.t. the original definition of the procedure but w.r.t. specialized definitions of these procedures. Such specialized definitions are obtained by applying both unfolding and abstract executability. Our framework is parametric w.r.t. different control strategies and abstract domains. Different combinations of such parameters correspond to existing algorithms for program analysis and specialization. Simultaneously, our approach opens the door to the efñcient computation of strictly more precise results than those achievable by each of the individual techniques. The algorithm is now one of the key components of the CiaoPP analysis and specialization system

    Abstract Interpretation-based verification/certification in the ciaoPP system

    Get PDF
    CiaoPP is the abstract interpretation-based preprocessor of the Ciao multi-paradigm (Constraint) Logic Programming system. It uses modular, incremental abstract interpretation as a fundamental tool to obtain information about programs. In CiaoPP, the semantic approximations thus produced have been applied to perform high- and low-level optimizations during program compilation, including transformations such as múltiple abstract specialization, parallelization, partial evaluation, resource usage control, and program verification. More recently, novel and promising applications of such semantic approximations are being applied in the more general context of program development such as program verification. In this work, we describe our extensión of the system to incorpórate Abstraction-Carrying Code (ACC), a novel approach to mobile code safety. ACC follows the standard strategy of associating safety certificates to programs, originally proposed in Proof Carrying- Code. A distinguishing feature of ACC is that we use an abstraction (or abstract model) of the program computed by standard static analyzers as a certifícate. The validity of the abstraction on the consumer side is checked in a single-pass by a very efficient and specialized abstractinterpreter. We have implemented and benchmarked ACC within CiaoPP. The experimental results show that the checking phase is indeed faster than the proof generation phase, and that the sizes of certificates are reasonable. Moreover, the preprocessor is based on compile-time (and run-time) tools for the certification of CLP programs with resource consumption assurances
    corecore