30,539 research outputs found
An integration of partial evaluation in a generic abstract interpretation framework
Information generated by abstract interpreters has long been
used to perform program specialization. Additionally, if the
abstract interpreter generates a multivariant analysis, it is also possible to perform mĂșltiple specialization. Information about valĂșes of variables is propagated by simulating program execution and performing fixpoint computations for recursive calis. In contrast, traditional partial evaluators (mainly) use unfolding for both propagating valĂșes of variables and transforming the program. It is known that abstract interpretation is a better technique for propagating success valĂșes than unfolding. However, the program transformations induced by unfolding may lead to important optimizations which are not directly achievable in the existing frameworks for mĂșltiple specialization based on abstract interpretation. The aim of this work is to devise a specialization framework which integrates the better information propagation of abstract interpretation with the powerful program transformations performed by partial evaluation, and which can be implemented via small modifications to existing generic abstract interpreters. With this aim, we will relate top-down abstract interpretation with traditional concepts in partial evaluation and sketch how the sophisticated techniques developed for controlling partial evaluation can be adapted to the proposed specialization framework. We conclude that there can be both practical and conceptual advantages in the proposed integration of partial evaluation
and abstract interpretation
Metric combinatorics of convex polyhedra: cut loci and nonoverlapping unfoldings
This paper is a study of the interaction between the combinatorics of
boundaries of convex polytopes in arbitrary dimension and their metric
geometry.
Let S be the boundary of a convex polytope of dimension d+1, or more
generally let S be a `convex polyhedral pseudomanifold'. We prove that S has a
polyhedral nonoverlapping unfolding into R^d, so the metric space S is obtained
from a closed (usually nonconvex) polyhedral ball in R^d by identifying pairs
of boundary faces isometrically. Our existence proof exploits geodesic flow
away from a source point v in S, which is the exponential map to S from the
tangent space at v. We characterize the `cut locus' (the closure of the set of
points in S with more than one shortest path to v) as a polyhedral complex in
terms of Voronoi diagrams on facets. Analyzing infinitesimal expansion of the
wavefront consisting of points at constant distance from v on S produces an
algorithmic method for constructing Voronoi diagrams in each facet, and hence
the unfolding of S. The algorithm, for which we provide pseudocode, solves the
discrete geodesic problem. Its main construction generalizes the source
unfolding for boundaries of 3-polytopes into R^2. We present conjectures
concerning the number of shortest paths on the boundaries of convex polyhedra,
and concerning continuous unfolding of convex polyhedra. We also comment on the
intrinsic non-polynomial complexity of nonconvex polyhedral manifolds.Comment: 47 pages; 21 PostScript (.eps) figures, most in colo
A generic framework for the analysis and specialization of logic programs
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
Modular Construction of Shape-Numeric Analyzers
The aim of static analysis is to infer invariants about programs that are
precise enough to establish semantic properties, such as the absence of
run-time errors. Broadly speaking, there are two major branches of static
analysis for imperative programs. Pointer and shape analyses focus on inferring
properties of pointers, dynamically-allocated memory, and recursive data
structures, while numeric analyses seek to derive invariants on numeric values.
Although simultaneous inference of shape-numeric invariants is often needed,
this case is especially challenging and is not particularly well explored.
Notably, simultaneous shape-numeric inference raises complex issues in the
design of the static analyzer itself.
In this paper, we study the construction of such shape-numeric, static
analyzers. We set up an abstract interpretation framework that allows us to
reason about simultaneous shape-numeric properties by combining shape and
numeric abstractions into a modular, expressive abstract domain. Such a modular
structure is highly desirable to make its formalization and implementation
easier to do and get correct. To achieve this, we choose a concrete semantics
that can be abstracted step-by-step, while preserving a high level of
expressiveness. The structure of abstract operations (i.e., transfer, join, and
comparison) follows the structure of this semantics. The advantage of this
construction is to divide the analyzer in modules and functors that implement
abstractions of distinct features.Comment: In Proceedings Festschrift for Dave Schmidt, arXiv:1309.455
- âŠ