[Show abstract][Hide abstract] ABSTRACT: This article presents the Two-Variable-Per-Inequality abstract domain (TVPI domain for short). This so-called weakly-relational
domain is able to express systems of linear inequalities where each inequality has at most two variables. The domain represents
a sweet-point in the performance-cost tradeoff between the faster Octagon domain and the more expressive domain of general
convex polyhedra. In particular, we detail techniques to closely approximate integral TVPI systems, thereby finessing the
problem of excessively growing coefficients, yielding—to our knowledge—the only relational domain that combines linear relations
with arbitrary coefficients and strongly polynomial performance.
Higher-Order and Symbolic Computation 01/2010; 23:87-143.
[Show abstract][Hide abstract] ABSTRACT: Analysis or verification of low-level code is useful for minimizing the disconnect between what is verified and what is actually
executed and is necessary when source code is unavailable or is, say, intermingled with inline assembly. We present a modular
framework for building pipelines of cooperating decompilers that gradually lift the level of the language to something appropriate
for source-level tools. Each decompilation stage contains an abstract interpreter that encapsulates its findings about the
program by translating the program into a higher-level intermediate language. We provide evidence for the modularity of this
framework through the implementation of multiple decompilation pipelines for both x86 and MIPS assembly produced by gcc, gcj, and coolc (a compiler for a pedagogical Java-like language) that share several low-level components. Finally, we discuss our experimental
results that apply the BLAST model checker for C and the Cqual analyzer to decompiled assembly.
[Show abstract][Hide abstract] ABSTRACT: A framework for the automatic parallelization of (constraint) logic programs is proposed and proved correct. Intuitively, the parallelization process replaces conjunctions of literals with parallel expressions. Such expressions trigger at run-time the exploitation of restricted, goal-level, independent and parallelism. The parallelization process performs two steps. The first one builds a conditional dependency graph (which can be simplified using compile-time analysis information), while the second transforms the resulting graph into linear conditional expressions, the parallel expressions of the &-Prolog language. Several heuristic algorithms for the latter (“annotation”) process are proposed and proved correct. Algorithms are also given which determine if there is any loss of parallelism in the linearization process with respect to a proposed notion of maximal parallelism. Finally, a system is presented which implements the proposed approach. The performance of the different annotation algorithms is compared experimentally in this system by studying the time spent in parallelization and the effectiveness of the results in terms of speedups.
Data provided are for informational purposes only. Although carefully collected, accuracy cannot be guaranteed. The impact factor represents a rough estimation of the journal's impact factor and does not reflect the actual current impact factor. Publisher conditions are provided by RoMEO. Differing provisions from the publisher's actual policy or licence agreement may be applicable.