Session 1: 10:00 - 10:45
David Walker, Princeton University
Polymer: A Language for Composing Run-time Security Policies
Coffee Break: 10:45 - 11:00
Session 2: 11:00 - 12:30
Stephanie Weirich, University of Pennsylvania
Polytypic Programming and Intensional Type
Analysis
Haruo Hosoya, Kyoto University
Regular Expression Filters for XML
Lunch: 12:30 - 1:50
Business Meeting: 1:50 - 2:00
Session 3: 2:00 - 2:45
Michael Hicks, University of Maryland
Dynamic Rebinding and Dynamic Update
Break: 2:45 - 3:00
Session 4: 3:00 - 3:45
Dominic Duggan, Stevens Institute of Technology
Abstractions for Fault-Tolerant Global Computing
A run-time monitor is a program that executes in parallel with an
untrusted application and examines actions from the application's
instruction stream. If the sequence of program actions deviates from a
specified security policy, the monitor transforms the sequence or
terminates the program. We present the design and implementation of a
language called Polymer for defining the policies enforced by program
monitors. One of the unique aspects of Polymer is that it provides a
number of facilities for composing complex policies from simpler ones.
For example, it allows policies to be parameterized by values, or other
policies. There are also operators for forming the conjunction and
disjunction of policies. These features allow security architects to
design modular, well-structured security policies for untrusted
applications written in Java.
Joint work with Lujo Bauer and Jay Ligatti.
Polytypic programming is a framework for automatically deriving
functions such as marshaling, iteration, and equality based on static
type information. Intensional type analysis is a similar mechanism for
defining such functions, although it is based on run-time analysis of
type information. However, there are a number of polytypic operations,
such as iteration, that cannot be defined with traditional frameworks
of run-time type analysis. These operations must be defined over
higher-order type constructors, not types. In this talk, I will show
how to extend intensional type analysis to type constructors so that
we may define these operations. Furthermore, I will show how this
extension may be done in a type-erasure framework, by using term
functions to represent type constructors.
XML data are described by types involving regular expressions. This
raises the question of what a convenient language feature is to
manipulate such data. Previous proposals for XML processing languages
such as XSLT and XQuery typically provide a ``for each'' loop
construct. However, it only permits the independent processing of
each children node and has no way to exploit the full structure of
regular expressions. In this paper, we propose a novel programming
feature regular expression filters. This construct stems from
our previous proposal, regular expression pattern matching, which is
inspired by the corresponding ML-style construct. We extend it by
allowing pattern clauses to be closed under arbitrary regular
expression operators, yielding a significat expressiveness. In
particular, a clause closed by a Kleene star can iterate on sequences
with no need to write an explicit recursion. In addition, we equip a
typing inference mechanism that obtains (1) types for pattern
variables that are locally precise with respect to the type of
input values and (2) a type for the result of the whole filter
expression that is also locally precise with respect to the types of
the body expressions. We discuss how our construct is useful in the
practice of XML processing and, in particular, how our type inference
is crucial when type evolution is involved.