Results 1 -
6 of
6
Some directed graph algorithms and their application to pointer analysis (work in progress
, 2004
"... This thesis is focused on improving execution time and precision of scalable pointer analysis. Such an analysis statically determines the targets of all pointer variables in a program. We formulate the analysis as a directed graph problem, where the solution can be obtained by a computation similar, ..."
Abstract
-
Cited by 8 (3 self)
- Add to MetaCart
This thesis is focused on improving execution time and precision of scalable pointer analysis. Such an analysis statically determines the targets of all pointer variables in a program. We formulate the analysis as a directed graph problem, where the solution can be obtained by a computation similar, in many ways, to transitive closure. As with transitive closure, identifying strongly connected components and transitive edges offers significant gains. However, our problem differs as the computation can result in new edges being added to the graph and, hence, dynamic algorithms are needed to efficiently identify these structures. Thus, pointer analysis has often been likened to the dynamic transitive closure problem. Two new algorithms for dynamically maintaining the topological order of a directed graph are presented. The first is a unit change algorithm, meaning the solution must be recomputed immediately following an edge insertion. While this has a marginally inferior worse-case time bound, compared with a previous solution, it is far simpler to implement and has fewer restrictions. For these reasons, we find it to be faster in practice and provide an experimental study over random graphs to support this. Our second is a batch algorithm, meaning the solution can be updated after
Amortized Resource Analysis with Polymorphic Recursion and Partial Big-Step Operational Semantics Extended Version
"... Abstract. This paper studies the problem of statically determining upper bounds on the resource consumption of first-order functional programs. A previous work approached the problem with an automatic typebased amortized analysis for polynomial resource bounds. The analysis is parametric in the reso ..."
Abstract
-
Cited by 3 (3 self)
- Add to MetaCart
Abstract. This paper studies the problem of statically determining upper bounds on the resource consumption of first-order functional programs. A previous work approached the problem with an automatic typebased amortized analysis for polynomial resource bounds. The analysis is parametric in the resource and can be instantiated to heap space, stack space, or clock cycles. Experiments with a prototype implementation have shown that programs are analyzed efficiently and that the computed bounds exactly match the measured worst-case resource behavior for many functions. This paper describes the inference algorithm that is used in the implementation of the system. It can deal with resourcepolymorphic recursion which is required in the type derivation of many functions. The computation of the bounds is fully automatic if a maximal degree of the polynomials is given. The soundness of the inference is proved with respect to a novel operational semantics for partial evaluations to show that the inferred bounds hold for terminating as well as non-terminating computations. A corollary is that run-time bounds also establish the termination of programs. 1
Mixing Induction and Coinduction
, 2009
"... Purely inductive definitions give rise to tree-shaped values where all branches have finite depth, and purely coinductive definitions give rise to values where all branches are potentially infinite. If this is too restrictive, then an alternative is to use mixed induction and coinduction. This techn ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
Purely inductive definitions give rise to tree-shaped values where all branches have finite depth, and purely coinductive definitions give rise to values where all branches are potentially infinite. If this is too restrictive, then an alternative is to use mixed induction and coinduction. This technique appears to be fairly unknown. The aim of this paper is to make the technique more widely known, and to present several new applications of it, including a parser combinator library which guarantees termination of parsing, and a method for combining coinductively defined inference systems with rules like transitivity. The developments presented in the paper have been formalised and checked in Agda, a dependently typed programming language and proof assistant.
ropas.kaist.ac.kr
, 2001
"... 1.1.1 Objectives of the originally proposed research Our goal is to achieve compiler technologies suited for the global, mobile computing environment of the future. In particular, we will focus on the following three compilation problems for higher-order & typed programming languages like ML: • ..."
Abstract
- Add to MetaCart
1.1.1 Objectives of the originally proposed research Our goal is to achieve compiler technologies suited for the global, mobile computing environment of the future. In particular, we will focus on the following three compilation problems for higher-order & typed programming languages like ML: • compiler must generate safe code: not only must the compiler assure that the compiled code will not damage the host but the host must be able to verify the established safety of the incoming code. • compiler must generate small code: the code size must be as small as possible, in order to minimize the delivery cost over the network. Compact code will move swiftly over the network, arriving at the host faster than other competing code. • compiler must generate smart code: the code must be able to tailor itself to the most common inputs that occur during its use at the host. Our research position is to aggressively adopt recent progress in programming language theories into a set of practical compilation techniques. The major thrust for
Correctness and Completeness of CLP Semantics revisited with (Co-)Induction
"... We propose a reformulation of the constraint logic program semantics in terms of positive and negative semantics, using a uniform inductive framework. It is a natural and elegant way to express and study correctness and completeness results. In particular we state a completeness for negative semanti ..."
Abstract
- Add to MetaCart
We propose a reformulation of the constraint logic program semantics in terms of positive and negative semantics, using a uniform inductive framework. It is a natural and elegant way to express and study correctness and completeness results. In particular we state a completeness for negative semantics by using some infinite sets of constraints. This theoretical framework is an original extension of the "Grammatical View of Logic Programming".
Design, Languages
"... We show how to combine a general purpose type system for an existing language with support for programming with binders and contexts by refining the type system of ML with a restricted form of dependent types where index objects are drawn from contextual LF. This allows the user to specify formal sy ..."
Abstract
- Add to MetaCart
We show how to combine a general purpose type system for an existing language with support for programming with binders and contexts by refining the type system of ML with a restricted form of dependent types where index objects are drawn from contextual LF. This allows the user to specify formal systems within the logical framework LF and index ML types with contextual LF objects. Our language design keeps the index language generic only requiring decidability of equality of the index language providing a modular design. To illustrate the elegance and effectiveness of our language, we give programs for closure conversion and normalization by evaluation. Our three key technical contribution are: 1) a bi-directional type system for our core language which is centered around refinement substitutions instead of constraint solving. As a consequence, type checking is decidable and easy to trust, although constraint solving may be undecidable. 2) a big-step environment based operational semantics with environments which lends itself to efficient implementation. 3) We prove our language to be type safe and have mechanized our theoretical development in the proof assistant Coq using the fresh approach to binding.

