Network


Latest external collaboration on country level. Dive into details by clicking on the dots.

Hotspot


Dive into the research topics where Nick Benton is active.

Publication


Featured researches published by Nick Benton.


symposium on principles of programming languages | 2004

Simple relational correctness proofs for static analyses and program transformations

Nick Benton

We show how some classical static analyses for imperative programs, and the optimizing transformations which they enable, may be expressed and proved correct using elementary logical and denotationaltechniques. The key ingredients are an interpretation of program properties as relations, rather than predicates, and a realization that although many program analyses are traditionally formulated in very intensional terms, the associated transformations are actually enabled by more liberal extensional properties.We illustrate our approach with formal systems for analysing and transforming while-programs. The first is a simple type system which tracks constancy and dependency information and can be used to perform dead-code elimination, constant propagation and program slicing as well as capturing a form of secure information flow. The second is a relational version of Hoare logic, which significantly generalizes our first type system and can also justify optimizations including hoisting loop invariants. Finally we show how a simple available expression analysis and redundancy elimination transformation may be justified by translation into relational Hoare logic.


Advances in Computers | 2000

Monads and Effects

Nick Benton; John Hughes; Eugenio Moggi

A tension in language design has been between simple semantics on the one hand, and rich possibilities for side-effects, exception handling and so on on the other. The introduction of monads has made a large step towards reconciling these alternatives. First proposed by Moggi as a way of structuring semantic descriptions, they were adopted by Wadler to structure Haskell programs. Monads have been used to solve long-standing problems such as adding pointers and assignment, inter-language working, and exception handling to Haskell, without compromising its purely functional semantics. The course introduces monads, effects, and exemplifies their applications in programming (Haskell) and in compilation (MLj). The course presents typed metalanguages for monads and related categorical notions, and then describes how they can be further refined by introducing effects.


international conference on functional programming | 2009

Biorthogonality, step-indexing and compiler correctness

Nick Benton; Chung-Kil Hur

We define logical relations between the denotational semantics of a simply typed functional language with recursion and the operational behaviour of low-level programs in a variant SECD machine. The relations, which are defined using biorthogonality and stepindexing, capture what it means for a piece of low-level code to implement a mathematical, domain-theoretic function and are used to prove correctness of a simple compiler. The results have been formalized in the Coq proof assistant.


international conference on typed lambda calculi and applications | 2005

Relational reasoning in a nominal semantics for storage

Nick Benton; Benjamin Leperchey

We give a monadic semantics in the category of FM-cpos to a higher-order CBV language with recursion and dynamically allocated mutable references that may store both ground data and the addresses of other references, but not functions. This model is adequate, though far from fully abstract. We then develop a relational reasoning principle over the denotational model, and show how it may be used to establish various contextual equivalences involving allocation and encapsulation of store.


logic in computer science | 2011

Ultrametric Semantics of Reactive Programs

Neelakantan R. Krishnaswami; Nick Benton

We describe a denotational model of higher-order functional reactive programming using ultra metric spaces and non expansive maps, which provide a natural Cartesian closed generalization of causal stream functions and guarded recursive definitions. We define a type theory corresponding to this semantics and show that it satisfies normalization. Finally, we show how to efficiently implement reactive programs written in this language using an imperatively updated data flow graph, and give a separation logic proof that this low-level implementation is correct with respect to the high-level semantics.


international conference on functional programming | 1999

Interlanguage working without tears: blending SML with Java

Nick Benton; Andrew Kennedy

A good foreign-language interface is crucial for the success of any modern programming language implementation. Although all serious compilers for functional languages have some facility for interlanguage working, these are often limited and awkward to use.This article describes the features for bidirectional interlanguage working with Java that are built into the latest version of the MLj compiler. Because the MLj foreign interface is to another high-level typed language which shares a garbage collector with compiled ML code, and because we are willing to extend the ML language, we are able to provide unusually powerful, safe and easy to use interlanguage working features. Indeed, rather then being a traditional foreign interface, our language extensions are more a partial integration of Java features into SML.We describe this integration of Standard ML and Java, first informally with example program fragments, and then formally in the notation used by The Definition of Standard ML.


Journal of Functional Programming archive | 2005

Embedded interpreters

Nick Benton

This is a tutorial on using type-indexed embedding/projection pairs when writing interpreters in statically-typed functional languages. The method allows (higher-order) values in the interpreting language to be embedded in the interpreted language and values from the interpreted language may be projected back into the interpreting one. This is particularly useful when adding command-line interfaces or scripting languages to applications written in functional languages. We first describe the basic idea and show how it may be extended to languages with recursive types and applied to elementary meta-programming. We then show how the method combines with Filinskis continuation-based monadic reflection operations to define an lextensionalr version of the call-by-value monadic translation and hence to allow values to be mapped bidirectionally between the levels of an interpreter for a functional language parameterized by an arbitrary monad. Finally, we show how SML functions may be embedded into, and projected from, an interpreter for an asynchronous


types in languages design and implementation | 2007

Semantics of an effect analysis for exceptions

Nick Benton; Peter Buchlovsky

\pi


Journal of Automated Reasoning | 2012

Strongly Typed Term Representations in Coq

Nick Benton; Chung-Kil Hur; Andrew Kennedy; Conor McBride

-calculus via an ‘extensional’ variant of a standard translation from


asian symposium on programming languages and systems | 2005

A typed, compositional logic for a stack-based abstract machine

Nick Benton

\lambda

Collaboration


Dive into the Nick Benton's collaboration.

Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Vivek Nigam

Federal University of Paraíba

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Chung-Kil Hur

Seoul National University

View shared research outputs
Top Co-Authors

Avatar

John Hughes

Chalmers University of Technology

View shared research outputs
Top Co-Authors

Avatar

Amal Ahmed

Northeastern University

View shared research outputs
Top Co-Authors

Avatar

Martin Hofmann

Ludwig Maximilian University of Munich

View shared research outputs
Researchain Logo
Decentralizing Knowledge