Results 1  10
of
26
Uniqueness Typing for Functional Languages with Graph Rewriting Semantics
 Mathematical Structures in Computer Science
, 1996
"... This paper is an elaborated version of the work presented in Barendsen and Smetsers (1995a) and Barendsen and Smetsers (1995c). 2. Term graph rewriting ..."
Abstract

Cited by 38 (4 self)
 Add to MetaCart
This paper is an elaborated version of the work presented in Barendsen and Smetsers (1995a) and Barendsen and Smetsers (1995c). 2. Term graph rewriting
CompileTime Detection of Information Flow in Sequential Programs
, 1994
"... We give a formal definition of the notion of information flow for a simple guarded command language. We propose an axiomatisation of security properties based on this notion of information flow and we prove its soundness with respect to the operational semantics of the language. We then identify t ..."
Abstract

Cited by 33 (2 self)
 Add to MetaCart
We give a formal definition of the notion of information flow for a simple guarded command language. We propose an axiomatisation of security properties based on this notion of information flow and we prove its soundness with respect to the operational semantics of the language. We then identify the sources of non determinism in proofs and we derive in successive steps an inference algorithm which is both sound and complete with respect to the inference system.
Static Detection of Pointer Errors: An Axiomatisation and a Checking Algorithm
, 1996
"... The incorrect use of pointers is one of the most common source of bugs. As a consequence, any kind of static code checking capable of detecting potential bugs at compile time is welcome. This paper presents a static analysis for the detection of incorrect accesses to memory (dereferences of invalid ..."
Abstract

Cited by 25 (3 self)
 Add to MetaCart
The incorrect use of pointers is one of the most common source of bugs. As a consequence, any kind of static code checking capable of detecting potential bugs at compile time is welcome. This paper presents a static analysis for the detection of incorrect accesses to memory (dereferences of invalid pointers). A pointer may be invalid because it has not been initialised or because it refers to a memory location which has been deallocated. The analyser is derived from an axiomatisation of alias and connectivity properties which is shown to be sound with respect to the natural semantics of the language. It deals with dynamically allocated data structures and it is accurate enough to handle circular structures. 1 Introduction The motivation for the work described in this paper comes from two observations: ffl Most widely used programming languages allow explicit pointer manipulations. The expressiveness provided by such features is appreciated by many programmers because it makes it pos...
Algorithms for Equality and Unification in the Presence of Notational Definitions
 Types for Proofs and Programs
, 1998
"... this paper we investigate the interaction of notational definitions with algorithms for testing equality and unification. We propose a syntactic criterion on definitions which avoids their expansion in many cases without losing soundness or completeness with respect to fi fficonversion. Our setting ..."
Abstract

Cited by 19 (11 self)
 Add to MetaCart
this paper we investigate the interaction of notational definitions with algorithms for testing equality and unification. We propose a syntactic criterion on definitions which avoids their expansion in many cases without losing soundness or completeness with respect to fi fficonversion. Our setting is the dependently typed calculus [HHP93], but, with minor modifications, our results should apply to richer type theories and logics. The question when definitions need to be expanded is surprisingly subtle and of great practical importance. Most algorithms for equality and unification rely on decomposing a problem
Inference of Polymorphic and Conditional Strictness Properties
 IN CONF. REC. POPL ’98: 25TH ACM SYMP. PRINC. OF PROG. LANGS
, 1998
"... We define an inference system for modular strictness analysis of functional programs by extending a conjunctive strictness logic with polymorphic and conditional properties. This extended set of properties is used to define a syntaxdirected, polymorphic strictness analysis based on polymorphic recu ..."
Abstract

Cited by 16 (0 self)
 Add to MetaCart
We define an inference system for modular strictness analysis of functional programs by extending a conjunctive strictness logic with polymorphic and conditional properties. This extended set of properties is used to define a syntaxdirected, polymorphic strictness analysis based on polymorphic recursion whose soundness is established via a translation from the polymorphic system into the conjunctive system. From the polymorphic analysis, an inference algorithm based on constraint resolution is derived and shown complete for variant of the polymorphic analysis. The algorithm deduces at the same time a property and a set of hypotheses on the free variables of an expression which makes it suitable for analysis of program with module structure.
Strictness and Totality Analysis
 In Static Analysis, LNCS 864
, 1994
"... We definea novel inference system for strictness and totality analysis for the simplytyped lazy lambdacalculus with constants and fixpoints. Strictness information identifies those terms that definitely denote bottom (i.e. do not evaluate to WHNF) whereas totality information identifies those terms ..."
Abstract

Cited by 11 (1 self)
 Add to MetaCart
We definea novel inference system for strictness and totality analysis for the simplytyped lazy lambdacalculus with constants and fixpoints. Strictness information identifies those terms that definitely denote bottom (i.e. do not evaluate to WHNF) whereas totality information identifies those terms that definitely do not denote bottom (i.e. do evaluate to WHNF). The analysis is presented as an annotated type system allowing conjunctions only at "toplevel". We give examples of its use and prove the correctness with respect to a naturalstyle operational semantics. 1 Introduction Strictness analysis has proved useful in the implementation of lazy functional languages as Miranda, Lazy ML and Haskell: when a function is strict it is safe to evaluate its argument before performing the function call. Totality analysis is equally useful but has not be adopted so widely: if the argument to a function is known to terminate then it is safe to evaluate it before performing the function call [1...
A Typebased Framework for Program Analysis
, 1994
"... . In this paper we present a general framework for typebased analyses of functional programs. Our framework is a generalisation of our earlier work on strictness analysis and was inspired by Burn's logical framework. The framework is parameterised by a set of types to represent properties and ..."
Abstract

Cited by 10 (2 self)
 Add to MetaCart
. In this paper we present a general framework for typebased analyses of functional programs. Our framework is a generalisation of our earlier work on strictness analysis and was inspired by Burn's logical framework. The framework is parameterised by a set of types to represent properties and interpretations for constants in the language. To construct a new analysis, the user needs only to supply a model for the types (which properties they denote) and sound rules for the constants. We identify the local properties that must be proven to guarantee the correctness of a specific analysis and algorithm. We illustrate the approach by recasting Hunt and Sand's binding time analysis in our framework. Furthermore we report on experimental results suggesting that our generic inference algorithm can provide the basis for an efficient program analyser. 1 Introduction The first explicit use of types in program analysis was by Kuo and Mishra [14]. They presented a type system for inferring stric...
A New Presentation of the Intersection Type Discipline Through Principal Typings of Normal Forms
, 1996
"... We introduce an intersection type system which is a restriction of the intersection type discipline. This restriction leads to a principal type property for normal forms in the classical sense, while retaining the expressivity of the classical discipline. We characterize the structure of principal ..."
Abstract

Cited by 8 (0 self)
 Add to MetaCart
We introduce an intersection type system which is a restriction of the intersection type discipline. This restriction leads to a principal type property for normal forms in the classical sense, while retaining the expressivity of the classical discipline. We characterize the structure of principal types of normal forms and give an algorithm that reconstructs normal forms from types. Having shown the equivalence between principal types and normal forms, we define an expansion operation on types which allows us to recover all possible types for any normalizable term. The contribution of this work is a new and simpler presentation of the intersection type discipline through a purely syntactic and completely characterized notion of principal types.
Strictness and Totality Analysis with Conjunction
 In TAPSOFT'95, LNCS 915
, 1995
"... We extend the strictness and totality analysis of [12] by allowing conjunction at all levels rather than at the toplevel. We prove the strictness and totality analysis correct with respect to a denotational semantics and finally construct an algorithm for inferring the strictness and totality prope ..."
Abstract

Cited by 7 (1 self)
 Add to MetaCart
We extend the strictness and totality analysis of [12] by allowing conjunction at all levels rather than at the toplevel. We prove the strictness and totality analysis correct with respect to a denotational semantics and finally construct an algorithm for inferring the strictness and totality properties. 1 Introduction Strictness analysis has proved useful in the implementation of lazy functional languages like Miranda, Lazy ML and Haskell: when a function is strict it is safe to evaluate its argument before performing the function call. Totality analysis has not been adopted so widely: if the argument to a function is known to terminate then it is safe to evaluate it before performing the function call [9]. In the literature there are several approaches to the specification of strictness analysis: abstract interpretation (e.g. [10, 3]), projection analysis (e.g. [14]) and inference based methods (e.g. [2, 6, 7, 8, 15]). Totality analysis has received much less attention and has pri...