10 research outputs found
Proving Non-Termination via Loop Acceleration
We present the first approach to prove non-termination of integer programs
that is based on loop acceleration. If our technique cannot show
non-termination of a loop, it tries to accelerate it instead in order to find
paths to other non-terminating loops automatically. The prerequisites for our
novel loop acceleration technique generalize a simple yet effective
non-termination criterion. Thus, we can use the same program transformations to
facilitate both non-termination proving and loop acceleration. In particular,
we present a novel invariant inference technique that is tailored to our
approach. An extensive evaluation of our fully automated tool LoAT shows that
it is competitive with the state of the art
Upper and Lower Amortized Cost Bounds of Programs Expressed as Cost Relations
Resource analysis aims at statically obtaining bounds on the
resource consumption of programs in terms of input parameters. A well
known approach to resource analysis is based on transforming the target
program into a set of cost relations, then solving these into a closed-form
bound. In this paper we develop a new analysis for computing upper and
lower cost bounds of programs expressed as cost relations. The analysis
is compositional : it computes the cost of each loop or function separately
and composes the obtained expressions to obtain the total cost. Despite
being modular, the analysis can obtain precise upper and lower bounds
of programs with amortized cost. The key is to obtain bounds that depend
on the values of the variables at the beginning and at the end of
each program part. In addition we use a novel cost representation called
cost structure. It allows to reduce the inference of complex polynomial
expressions to a set of linear problems that can be solved efficiently.
We implemented our method and performed an extensive experimental
evaluation that demonstrates its power
Automated Amortised Resource Analysis for Term Rewrite Systems
Based on earlier work on amortised resource analysis, we establish a novel automated amortised resource analysis for term rewrite systems. The method is presented in an inference system akin to a type system and gives rise to polynomial bounds on the innermost runtime complexity of the analysed term rewrite system. Our analysis does not restrict the input rewrite system in any way. This facilitates integration in a general framework for resource analysis of programs. In particular, we have implemented the method and integrated it into our tool TCT.(VLID)2581042Accepted versio
On Complexity Bounds and Confluence of Parallel Term Rewriting
We revisit parallel-innermost term rewriting as a model of parallel
computation on inductive data structures and provide a corresponding notion of
runtime complexity parametric in the size of the start term. We propose
automatic techniques to derive both upper and lower bounds on parallel
complexity of rewriting that enable a direct reuse of existing techniques for
sequential complexity. Our approach to find lower bounds requires confluence of
the parallel-innermost rewrite relation, thus we also provide effective
sufficient criteria for proving confluence. The applicability and the precision
of the method are demonstrated by the relatively light effort in extending the
program analysis tool AProVE and by experiments on numerous benchmarks from the
literature.Comment: Under submission to Fundamenta Informaticae. arXiv admin note:
substantial text overlap with arXiv:2208.0100
Análisis de recursos de programas enteros y abstractos
Tesis inédita de la Universidad Complutense de Madrid, Facultad de Informática, Departamento de Sistemas lnformáticos y de Computación, leída el 27-05-2022Since the beginning of automated computing in the middle of the last century, the development of computer science has been linked to an increasing importance in all areas of the current society. The inclusion of computer science processes in everyday life and, in particular, its inclusion in critical situations, cannot go linked only to the generation of hardware and software, but also to the analysis and verification of all its components. While hardware analysis is crucial for the generation and maintenance of the computation infrastructure, as it is able to detect or predict components that can have a wrong behavior, software analysis focuses on analyzing the behavior of computer programs to address properties such as security, correctness or optimality. Depending on the type of analysis applied to the software, we can detect potential vulnerabilities in the code, find incorrect specifications, apply optimizations based on the maximun and minimun cost of the programs, calculate the resource consumption of a program..Desde el comienzo de la computación automática a mediados del siglo pasado, el avance de la informática ha ido ligado a una cada vez mayor importancia en todos los ámbitos d ela sociedad actual. La inclusión de procesos informáticos en la vida cotidiana y, en particular, su inclusión en situaciones críticas, no puede ir ligada solo a la generación del hardware el software, sino también al análisis y verificación de todos sus componentes. Mientras que el análisis de hardware es crucial para la generación de la infraestructura informática y el mantenimiento de la misma, detectando o prediciendo componentes que puedan funcionar de manera errónea, el análisis de software se enfoca hacia el análisis del comportamiento de los programas informáticos para abordar propiedades como la seguridad, la corrección o la optimalidad. Dependiendo del tipo de análisis aplicado al software, podremos detectar fragmentos de código potencialmente vulnerables, especificaciones incorrectas, aplicar optimizaciones en base al coste máximo y mínimo de los programas, calcular el consumo de recursos de un programa...Fac. de InformáticaTRUEunpu