Results 1 
4 of
4
A rewriting semantics for type inference
 Programming Languages and Systems, 16th European Symposium on Programming, ESOP 2007
, 2007
"... Abstract. When students first learn programming, they often rely on a simple operational model of a program’s behavior to explain how particular features work. Because such models build on their earlier training in algebra, students find them intuitive, even obvious. Students learning type systems, ..."
Abstract

Cited by 10 (0 self)
 Add to MetaCart
Abstract. When students first learn programming, they often rely on a simple operational model of a program’s behavior to explain how particular features work. Because such models build on their earlier training in algebra, students find them intuitive, even obvious. Students learning type systems, however, have to confront an entirely different notation with a different semantics that many find difficult to understand. In this work, we begin to build the theoretical underpinnings for treating typechecking in a manner like the operational semantics of execution. Intuitively, each term is incrementally rewritten to its type. For example, each basic constant rewrites directly to its type and each lambda expression rewrites to an arrow type whose domain is the type of the lambda’s formal parameter and whose range is the body of the lambda expression which, in turn, rewrites to the range type. 1
Path Projection for UserCentered Static Analysis Tools
"... The research and industrial communities have made great strides in developing sophisticated defect detection tools based on static analysis. However, to date most of the work in this area has focused on developing novel static analysis algorithms, and neglected study of other aspects of static analy ..."
Abstract

Cited by 2 (0 self)
 Add to MetaCart
The research and industrial communities have made great strides in developing sophisticated defect detection tools based on static analysis. However, to date most of the work in this area has focused on developing novel static analysis algorithms, and neglected study of other aspects of static analysis tools, in particular user interfaces. In this work, we present a novel user interface toolkit called Path Projection that helps users visualize, navigate, and understand program paths, a common component of many static analysis tools ’ error reports. We performed a controlled user study to measure the benefit of Path Projection in triaging error reports from Locksmith, a data race detection tool for C. We found that Path Projection improved participants’ time to complete this task, without affecting accuracy, and that participants felt Path Projection was useful.
Polymorphic Type Reconstruction Using Type Equations
, 2003
"... The W algorithm of Milner [Mil78] and its numerous variants [McA98,LY98,YTMW00] implement type reconstruction by building type substitutions. We define an algorithm W centered around building type equations rather than substitutions. The design of W is motivated by the belief that reasoning ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
The W algorithm of Milner [Mil78] and its numerous variants [McA98,LY98,YTMW00] implement type reconstruction by building type substitutions. We define an algorithm W centered around building type equations rather than substitutions. The design of W is motivated by the belief that reasoning with substitutions is awkward.
Sourcetracking Unification using semiDyck labeled reachability
, 2004
"... We propose a pathbased framework for deriving and simplifying sourcetracking information for firstorder term unification in the empty theory. Such a framework is useful for diagnosing unificationbased systems, including debugging of type errors in programs and the generation of success and failu ..."
Abstract
 Add to MetaCart
We propose a pathbased framework for deriving and simplifying sourcetracking information for firstorder term unification in the empty theory. Such a framework is useful for diagnosing unificationbased systems, including debugging of type errors in programs and the generation of success and failure proofs in logic programming. The objects of sourcetracking are deductions in the logic of term unification. The semantics of deductions are paths over a unification graph whose labels form the suffix language of a semiDyck set. Based on this framework, two algorithms for generating proofs are presented: the first uses contextfree labeled shortestpath algorithms to generate optimal (shortest) proofs in time O(n³), for a fixed signature, where n is the number of vertices of the unification graph. The second algorithm integrates easily with standard unification algorithms, entailing an overhead of only a constant factor, but generates nonoptimal proofs. These nonoptimal proofs may be further simplified by group rewrite rules.