Network


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

Hotspot


Dive into the research topics where J. Nathan Foster is active.

Publication


Featured researches published by J. Nathan Foster.


ACM Transactions on Programming Languages and Systems | 2007

Combinators for bidirectional tree transformations: A linguistic approach to the view-update problem

J. Nathan Foster; Michael B. Greenwald; Jonathan T. Moore; Benjamin C. Pierce; Alan Schmitt

We propose a novel approach to the view-update problem for tree-structured data: a domain-specific programming language in which all expressions denote bidirectional transformations on trees. In one direction, these transformations---dubbed lenses---map a concrete tree into a simplified abstract view; in the other, they map a modified abstract view, together with the original concrete tree, to a correspondingly modified concrete tree. Our design emphasizes both robustness and ease of use, guaranteeing strong well-behavedness and totality properties for well-typed lenses. We begin by identifying a natural space of well-behaved bidirectional transformations over arbitrary structures, studying definedness and continuity in this setting. We then instantiate this semantic framework in the form of a collection of lens combinators that can be assembled to describe bidirectional transformations on trees. These combinators include familiar constructs from functional programming (composition, mapping, projection, conditionals, recursion) together with some novel primitives for manipulating trees (splitting, pruning, merging, etc.). We illustrate the expressiveness of these combinators by developing a number of bidirectional list-processing transformations as derived forms. An extended example shows how our combinators can be used to define a lens that translates between a native HTML representation of browser bookmarks and a generic abstract bookmark format.


theorem proving in higher order logics | 2005

Mechanized metatheory for the masses: the PoplMark challenge

Brian E. Aydemir; Aaron Bohannon; Matthew Fairbairn; J. Nathan Foster; Benjamin C. Pierce; Peter Sewell; Dimitrios Vytiniotis; Geoffrey Washburn; Stephanie Weirich; Steve Zdancewic

How close are we to a world where every paper on programming languages is accompanied by an electronic appendix with machine-checked proofs? We propose an initial set of benchmarks for measuring progress in this area. Based on the metatheory of System F<:, a typed lambda-calculus with second-order polymorphism, subtyping, and records, these benchmarks embody many aspects of programming languages that are challenging to formalize: variable binding at both the term and type levels, syntactic forms with variable numbers of components (including binders), and proofs demanding complex induction principles. We hope that these benchmarks will help clarify the current state of the art, provide a basis for comparing competing technologies, and motivate further research.


international conference on model transformation | 2009

Bidirectional Transformations: A Cross-Discipline Perspective

Krzysztof Czarnecki; J. Nathan Foster; Zhenjiang Hu; Ralf Lämmel; Andy Schürr; James F. Terwilliger

The GRACE International Meeting on Bidirectional Transformations was held in December 2008 near Tokyo, Japan. The meeting brought together researchers and practitioners from a variety of sub-disciplines of computer science to share research efforts and help create a new community. In this report, we survey the state of the art and summarize the technical presentations delivered at the meeting. We also describe some insights gathered from our discussions and introduce a new effort to establish a benchmark for bidirectional transformations.


symposium on principles of database systems | 2008

Annotated XML: queries and provenance

J. Nathan Foster; Todd J. Green; Val Tannen

We present a formal framework for capturing the provenance of data appearing in XQuery views of XML. Building on previous work on relations and their (positive) query languages, we decorate unordered XML with annotations from commutative semirings and show that these annotations suffice for a large positive fragment of XQuery applied to this data. In addition to tracking provenance metadata, the framework can be used to represent and process XML with repetitions, incomplete XML, and probabilistic XML, and provides a basis for enforcing access control policies in security applications. Each of these applications builds on our semantics for XQuery, which we present in several steps: we generalize the semantics of the Nested Relational Calculus (NRC) to handle semiring-annotated complex values, we extend it with a recursive type and structural recursion operator for trees, and we define a semantics for XQuery on annotated XML by translation into this calculus.


european conference on object-oriented programming | 2004

LOOJ: Weaving LOOM into Java

Kim B. Bruce; J. Nathan Foster

LOOJ is an extension of Java obtained by adding bounded parametric polymorphism and new type expressions ThisClass and ThisType, which are similar to MyType in LOOM. Through examples we demonstrate the utility of this language even over very expressive extensions such as GJ. The LOOJ compiler generates standard JVML code and supports instanceof and casts for all types including type variables and the other new type expressions. The core of the LOOJ type system is sound, as demonstrated by a soundness proof for an extension of Featherweight GJ. This paper also highlights difficulties that arise from the use of both classes and interfaces as types in Java.


practical aspects of declarative languages | 2008

A generic programming toolkit for PADS/ML: first-class upgrades for third-party developers

Mary F. Fernández; Kathleen Fisher; J. Nathan Foster; Michael J. Greenberg; Yitzhak Mandelbaum

Domain-specific languages facilitate solving problems in a targeted domain by providing features particular to the domain. Declarative domain-specific languages have the additional benefit that users specify what something means rather than how to do something. As a result, the language compiler is free to choose the best implementation strategies and to generate multiple artifacts from a single description. PADS/ML is a declarative data description language designed to facilitate ad hoc data management. From a single description, the compiler generates a myriad of artifacts, including data structures for the in-memory representation of the data and parsers and printers. In this paper, we describe a new generic programming infrastructure for PADS/ML that allows third-party developers to define additional useful artifacts without modifying the compiler.We report on two case studies that use this infrastructure. In the first, we build a version of PADX for PADS/ML, allowing any data source with a PADS/ML description to be queried as if it were XML. In the second, we extend Harmony with the ability to synchronize any data with a PADS/ML description.


database programming languages | 2005

Exploiting schemas in data synchronization

J. Nathan Foster; Michael B. Greenwald; Christian Kirkegaard; Benjamin C. Pierce; Alan Schmitt

Increased reliance on optimistic data replication has led to burgeoning interest in tools and frameworks for synchronizing disconnected updates to replicated data. We have implemented a generic synchronization framework, called Harmony, that can be used to build statebased synchronizers for a wide variety of tree-structured data formats. A novel feature of this framework is that the synchronization process—in particular, the recognition of conflicts—is driven by the schema of the structures being synchronized. We formalize Harmony’s synchronization algorithm, state a simple and intuitive specification, and illustrate how it can be used to synchronize trees representing a variety of specific forms of application data, including sets, records, and tuples.


symposium on principles of programming languages | 2005

Combinators for bi-directional tree transformations: a linguistic approach to the view update problem

J. Nathan Foster; Michael B. Greenwald; Jonathan T. Moore; Benjamin C. Pierce; Alan Schmitt


symposium on principles of programming languages | 2008

Boomerang: resourceful lenses for string data

Aaron Bohannon; J. Nathan Foster; Benjamin C. Pierce; Alexandre Pilkiewicz; Alan Schmitt


international conference on functional programming | 2008

Quotient lenses

J. Nathan Foster; Alexandre Pilkiewicz; Benjamin C. Pierce

Collaboration


Dive into the J. Nathan Foster's collaboration.

Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Aaron Bohannon

University of Pennsylvania

View shared research outputs
Top Co-Authors

Avatar

Jonathan T. Moore

University of Pennsylvania

View shared research outputs
Top Co-Authors

Avatar

Steve Zdancewic

University of Pennsylvania

View shared research outputs
Top Co-Authors

Avatar

Brian E. Aydemir

California Institute of Technology

View shared research outputs
Top Co-Authors

Avatar

Geoffrey Washburn

University of Pennsylvania

View shared research outputs
Top Co-Authors

Avatar

Stephanie Weirich

University of Pennsylvania

View shared research outputs
Researchain Logo
Decentralizing Knowledge