Results 1 - 10
of
10
Reasoning about Continuations with Control Effects
, 1989
"... We present a new static analysis method for first-class continuations that uses an effect system to classify the control domain behavior of expressions in a typed polymorphic language. We introduce two new control effects, goto and comefrom, that describe the control flow properties of expressions. ..."
Abstract
-
Cited by 26 (4 self)
- Add to MetaCart
We present a new static analysis method for first-class continuations that uses an effect system to classify the control domain behavior of expressions in a typed polymorphic language. We introduce two new control effects, goto and comefrom, that describe the control flow properties of expressions. An expression that does not haveagoto effect is said to be continuation following because it will always call its passed return continuation. An expression that does not haveacomefrom effect is said to be continuation discarding because it will never preserve its return continuation for later use. Unobservable control effects can be masked by the effect system. Control effect soundness theorems guarantee that the effects computed statically by the effect system are a conservative approximation of the dynamic behavior of an expression. The effect
Compilation of Functional Languages Using Flow Graph Analysis
, 1994
"... syntax, and syntactic and semantic domains of a flow graph Figure 9. Semantic equations Def and Exp of a flow graph The first argument to the functions Def and Exp specifies a set of nodes that represent a flow graph, from which the element(s) of current interest are selected by pattern matching. ..."
Abstract
-
Cited by 16 (12 self)
- Add to MetaCart
syntax, and syntactic and semantic domains of a flow graph Figure 9. Semantic equations Def and Exp of a flow graph The first argument to the functions Def and Exp specifies a set of nodes that represent a flow graph, from which the element(s) of current interest are selected by pattern matching.
Galois connection based abstract interpretations for strictness analysis, invited paper
- Proc. FMPA, Academgorodok, Novosibirsk, rus, LNCS 735
, 1993
"... Abstract. The abstract interpretation framework based upon the approxi-mation of a fixpoint collecting semantics using Galois connections and widen-ing/narrowing operators on complete lattices [CC77a, CC79b] has been considered difficult to apply to Mycroft's strictness analysis [Myc80, Myc81]for wh ..."
Abstract
-
Cited by 14 (6 self)
- Add to MetaCart
Abstract. The abstract interpretation framework based upon the approxi-mation of a fixpoint collecting semantics using Galois connections and widen-ing/narrowing operators on complete lattices [CC77a, CC79b] has been considered difficult to apply to Mycroft's strictness analysis [Myc80, Myc81]for which denotational semantics was though to be more adequate (becausenon-termination has to be taken into account), see e.g. [AH87], page 25. Considering a non-deterministic first-order language, we show, contrary toexpectation, and using the classical Galois connection-based framework, thatMycroft strictness analysis algorithm is the abstract interpretation of a relational semantics (a big-steps operational semantics including non-terminationwhich can be defined in G1SOS either in rule-based or fixpoint style by in-duction on the syntax of programs [CC92]) An improved version of Johnsson's algorithm [Joh81] is obtained by asubsequent dependence-free abstraction of Mycroft's dependence-sensitivemethod. Finally, a compromise between the precision of dependence-sensitive al-gorithms and the efficiency of dependence-free algorithms is suggested usingwidening operators. Keywords: Abstract interpretation; Relational semantics; Strictness anal-ysis; Galois connection; Dependence-free and dependence-sensitive analysis;Widening.
Partitioning Non-strict Languages for Multi-threaded Code Generation
- Master's thesis, Dept. of EECS, MIT
, 1994
"... In a non-strict language, functions may return values before their arguments are available, and data structures may be defined before all their components are defined. Compiling such languages to conventional hardware is not straightforward; instructions do not have a fixed compile time ordering. Su ..."
Abstract
-
Cited by 4 (1 self)
- Add to MetaCart
In a non-strict language, functions may return values before their arguments are available, and data structures may be defined before all their components are defined. Compiling such languages to conventional hardware is not straightforward; instructions do not have a fixed compile time ordering. Such an ordering is necessary to execute programs efficiently on current microprocessors. Partitioning is the process of compiling a non-strict program into threads (i.e., a sequence of instructions). This process involves detecting data dependencies at compile time and using these dependencies to "sequentialize" parts of the program. Previous work on partitioning did not propagate dependence information across recursive procedure boundaries. Using a representation known as Paths we are able to represent dependence information of recursive functions. Also, we incorporate them into a known partitioning algorithm. However, this algorithm fails to make use of all the information contained in pat...
What About the Natural Numbers
- Computer Languages
, 1989
"... A prime concern in the design of any general purpose programming language should be the ease and safety of working with natural numbers, particularly in conjunction with discrete data structures. This theme of commitment to the naturals as the basic numeric data type is explored in the context of a ..."
Abstract
-
Cited by 3 (2 self)
- Add to MetaCart
A prime concern in the design of any general purpose programming language should be the ease and safety of working with natural numbers, particularly in conjunction with discrete data structures. This theme of commitment to the naturals as the basic numeric data type is explored in the context of a lazy functional language. Non-Title Keywords: structural correspondence, numeric types, total functions, closed systems, functional programming, lazy evaluation.
Automatic Derivation of Logic Programs by Transformation
- Course notes for ESSLLI
, 2000
"... We present the program transformation methodology for the automatic development of logic programs based on the rules + strategies approach. We consider both definite programs and normal programs and we present the basic transformation rules and strategies which are described in the literature. To il ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
We present the program transformation methodology for the automatic development of logic programs based on the rules + strategies approach. We consider both definite programs and normal programs and we present the basic transformation rules and strategies which are described in the literature. To illustrate the power of the program transformation approach we also give some examples of program development. Finally, we show how to use program transformations for proving properties of predicates and synthesizing programs from logical specifications.
H.: Abstract interpretation for worst and average case analysis
- In: Program Analysis and Compilation, Theory and Practice. Volume 4444 of LNCS
, 2007
"... Abstract. We review Wilhelm’s work on WCET for hard real-time applications and also recent work on analysis of soft-real time systems using probabilistic methods. We then present Probabilistic Abstract Interpretation (PAI) as a quantitative variation of the classical approach; PAI aims to provide cl ..."
Abstract
-
Cited by 1 (1 self)
- Add to MetaCart
Abstract. We review Wilhelm’s work on WCET for hard real-time applications and also recent work on analysis of soft-real time systems using probabilistic methods. We then present Probabilistic Abstract Interpretation (PAI) as a quantitative variation of the classical approach; PAI aims to provide close approximations – this should be contrasted to the safe approximations studied in the standard setting. We discuss the relation between PAI and classical Abstract Interpretation as well as average case analysis. 1
Set-Based Program Analysis (Extended Abstract)
, 1991
"... ) Nevin Heintze and Joxan Jaffar y 1 January 1991 Summary Program analysis involves approximating the semantics of programs. One important kind of approximation, that of ignoring intervariable dependencies, is widely used for reasons of decidability and efficiency. This paper addresses program ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
) Nevin Heintze and Joxan Jaffar y 1 January 1991 Summary Program analysis involves approximating the semantics of programs. One important kind of approximation, that of ignoring intervariable dependencies, is widely used for reasons of decidability and efficiency. This paper addresses program analysis wherein ignoring intervariable dependencies is the only kind of approximation used. Starting with the collecting semantics of a program, it is shown that there is a natural formalization of this approximation in which program variables are associated with sets of values. Further, this formalization is applicable to both the imperative and logic programming paradigms. An algorithm is then presented which inputs an imperative or logic program and constructs an explicit representation of its approximate semantics. It therefore provides the most accurate analysis possible, given that intervariables dependencies are ignored during analysis. School of Computer Science, Carnegie Mellon ...
Strictness Analysis in 4D
- In Glasgow Workshop on Functional Programming
, 1990
"... Strictness analysis techniques can be classified along four different dimensions: firstorder vs. higher-order, flat vs. non-flat, low fidelity vs. high fidelity, and forward vs. backward. Plotting a table of the positions of known techniques within this space reveals that certain regions are densely ..."
Abstract
- Add to MetaCart
Strictness analysis techniques can be classified along four different dimensions: firstorder vs. higher-order, flat vs. non-flat, low fidelity vs. high fidelity, and forward vs. backward. Plotting a table of the positions of known techniques within this space reveals that certain regions are densely occupied while others are empty. In particular, techniques for high-fidelity forward and low-fidelity backward analysis are well known, while those for low-fidelity forward and high-fidelity backward analysis are lacking. This paper fills in the gaps: the low-fidelity forward methods provide faster analyses than the high-fidelity forward methods, at the cost of accuracy, while the high-fidelity backward methods provide more information than the low-fidelity backward methods, at the cost of time. 1 Introduction Strictness analysis is an important part of many compilers for lazy functional languages, and a wide variety of strictness analysis techniques have been proposed. It is not clear how...
Design and Implementation of a Partial Evaluation-Based Compiler for an Asynchronous Realtime Programming Language
, 1996
"... This thesis describes a compiler for the asynchronous real-time programming language ALDiSP. Though the language has a complex semantics not suited for easy compilation, the compiler has to generate code for target platforms that have stringent space limitations, and for target applications that hav ..."
Abstract
- Add to MetaCart
This thesis describes a compiler for the asynchronous real-time programming language ALDiSP. Though the language has a complex semantics not suited for easy compilation, the compiler has to generate code for target platforms that have stringent space limitations, and for target applications that have to satisfy hard real-time requirements. To accomplish this feat, the compiler is based upon an abstract interpreter that simulates all possible evaluation paths of the program. In a reconstruction phase, the program is then totally re-created from the information gained during this simulation. The abstract interpreter is an extension of the formal semantics of ALDiSP.

