Journal Articles
|
[1]
|
X. Z. Fu, H. Wang, W. Harrison, and R. Harrison.
RNA Pseudoknot Prediction Using Term Rewriting.
International Journal of Data Mining and Bioinformatics (to
appear), 2006.
PDF
RNA plays a critical role in mediating every step of cellular information transfer from genes to functional proteins. Pseudoknots are widely occurring structural motifs found in all types of RNA and are also functionally important. Therefore predicting their structures is an important problem. In this paper, we present a new RNA pseudoknot prediction model based on term rewriting rather than on dynamic programming, comparative sequence analysis, or context-free grammars. The model we describe is implemented using the Mfold RNA/DNA folding package and the term rewriting language Maude. Our model was tested on 211 pseudoknots in PseudoBase and achieves an average accuracy of 74.085% compared to the experimentally determined structure. In fact, most pseudoknots discovered by our method achieve an accuracy of above 90%. These results indicate that term rewriting has a broad potential in RNA applications from prediction of pseudoknots to higher level RNA structures involving complex RNA tertiary interactions.
|
|
[2]
|
William L. Harrison and Richard B. Kieburtz.
The Logic of Demand in Haskell.
Journal of Functional Programming, 15(6):837-891, 2005.
PDF
Haskell is a functional programming language whose
evaluation is lazy by default. However, Haskell also
provides pattern matching facilities which add a
modicum of eagerness to its otherwise lazy default
evaluation. This mixed or non-strict
semantics can be quite difficult to reason
with. This paper introduces a programming logic,
P-Logic, which neatly formalizes the mixed
evaluation in Haskell pattern-matching as a logic,
thereby simplifying the task of specifying and
verifying Haskell programs. In P-Logic, aspects of
demand are reflected or represented within both the
predicate language and its model theory, allowing
for expressive and comprehensible program
verification.
|
|
[3]
|
William L. Harrison.
Cheap (But Functional) Threads.
45 pages. Submitted for publication.
PDF
This article demonstrates how a powerful and expressive abstraction
from concurrency theory plays a dual role as a programming tool
for concurrent applications and as a foundation for their verification.
This abstraction-monads of resumptions expressed using monad
transformers-is cheap: it is easy to understand, easy to
implement, and easy to reason about.
We illustrate the expressiveness of the resumption monad with the
construction of an exemplary multitasking operating system kernel
with process forking, preemption, message passing, and
synchronization constructs in the pure functional programming
language Haskell.
Because resumption computations are stream-like structures, reasoning
about this kernel may be posed as reasoning about streams, a problem
which is well-understood. And, as an example, this article
illustrates how a liveness property-fairness-is proven and
especially how the resumption-monadic structure promotes such
verifications.
|
|
[4]
|
William L. Harrison and James Hook.
Achieving Information Flow Security Through Monadic Control of
Effects.
38 pages. Invited submission to Journal of Computer Security.
PDF
This paper advocates a novel approach to the construction of secure
software: controlling information flow and maintaining integrity via
monadic encapsulation of effects. This approach is constructive,
relying on properties of monads and monad transformers to build,
verify, and extend secure software systems. We illustrate this
approach by construction of abstract operating systems called separation kernels. Starting from a mathematical model of
shared-state concurrency based on monads of resumptions and state, we
outline the development by stepwise refinements of separation kernels
supporting Unix-like system calls, interdomain communication, and a
formally verified security policy (domain separation). Because monads
may be easily and safely represented within any pure, higher-order,
typed functional language, the resulting system models may be directly
realized within a language such as Haskell.
|
|
Conference and Workshops
|
[1]
|
William Harrison.
Proof Abstraction for Imperative Languages.
In Proceedings of the 4th Asian Symposium on Programming
Languages and Systems (APLAS06) (to appear), Sydney, Australia,
November 2006.
PDF
Modularity in programming language semantics derives from abstracting over
the structure of underlying denotations, yielding semantic descriptions that are more abstract and reusable. One such semantic framework is Liang's modular monadic semantics in which the underlying semantic structure is encapsulated with a monad. Such abstraction can be at odds with
program verification, however, because program specifications require access to the (deliberately) hidden semantic
representation. The techniques for reasoning about modular monadic definitions of imperative programs introduced here overcome this barrier.
And, just like program definitions in modular monadic semantics, our program specifications and proofs are representation-independent
and hold for whole classes of monads, thereby yielding proofs of great generality.
|
|
[2]
|
William L. Harrison.
The Essence of Multitasking.
In 11th International Conference on Algebraic Methodology and
Software Technology (AMAST06), volume 4019 of Lecture Notes in Computer
Science, pages 158-172. Springer-Verlag, 2006.
PDF
This article demonstrates how a powerful and expressive
abstraction from concurrency theory monads of resumptions plays a
dual role as a programming tool for concurrent applications. The article
demonstrates how a wide variety of typical OS behaviors may be specified
in terms of resumption monads known heretofore exclusively in the
literature of programming language semantics. We illustrate the expressiveness
of the resumption monad with the construction of an exemplary
multitasking kernel in the pure functional language Haskell.
|
|
[3]
|
William Harrison.
A Simple Semantics for Polymorphic Recursion.
In Proceedings of the 3rd Asian Symposium on Programming
Languages and Systems (APLAS05), pages 37-51, Tsukuba, Japan, November
2005.
PDF
Polymorphic recursion is a useful extension of Hindley-Milner typing
and has been incorporated in the functional programming
language Haskell. It allows the expression of efficient algorithms
that take advantage of non-uniform data structures and provides key
support for generic programming. However, polymorphic recursion is,
perhaps, not as broadly understood as it could be and this, in part,
motivates the denotational semantics presented here. The semantics reported
here also contributes an essential building block to any semantics
of Haskell: a model for first-order polymorphic recursion. Furthermore,
Haskell-style type classes may be described within this semantic framework
in a straightforward and intuitively appealing manner.
|
|
[4]
|
X. Z. Fu, H. Wang, W. Harrison, and R. Harrison.
RNA Pseudoknot Prediction Using Term Rewriting.
In Proceedings of IEEE Fifth Symposium on Bioinformatics and
Bioengineering (BIBE05), pages 169-176, Minneapolis, MN, October 2005.
PDF
RNA plays a critical role in mediating every step of cellular information transfer from genes to functional proteins. Pseudoknots are widely occurring structural motifs found in all types of RNA and are also functionally important. Therefore predicting their structures is an important problem. In this paper, we present a new RNA pseudoknot prediction model based on term rewriting rather than on dynamic programming, comparative sequence analysis, or context-free grammars. The model we describe is implemented using the Mfold RNA/DNA folding package and the term rewriting language Maude. Our model was tested on 211 pseudoknots in PseudoBase and achieves an average accuracy of 74.085% compared to the experimentally determined structure. In fact, most pseudoknots discovered by our method achieve an accuracy of above 90%. These results indicate that term rewriting has a broad potential in RNA applications from prediction of pseudoknots to higher level RNA structures involving complex RNA tertiary interactions.
|
|
[5]
|
William Harrison and James Hook.
Achieving Information Flow Security Through Precise Control of
Effects.
In 18th IEEE Computer Security Foundations Workshop (CSFW05),
pages 16-30, Aix-en-Provence, France, June 2005.
PDF
This paper advocates controlling information flow and maintaining integrity via monadic encapsulation of effects. This approach is constructive, relying on properties of monads and monad transformers to build, verify, and extend secure software systems. We illustrate this approach by construction of abstract operating systems called separation kernels.
|
|
[6]
|
William L. Harrison and Robert W. Harrison.
Domain Specific Languages for Cellular Interactions.
In Proceedings of the 26th Annual IEEE International Conference
on Engineering in Medicine and Biology (EMBC04), September 2004.
PDF
Bioinformatics is the application of Computer Science techniques to problems in Biology, and this paper explores one such application with great potential: the modeling of life cycles of autonomous, intercommunicating cellular systems using domain-specific programming languages (DSLs). We illustrate this approach for the simple photo-synthetic bacterium R. Sphaeroides with a DSL called CellSys embedded in the programming language Haskell.
|
|
[7]
|
William Harrison, Mark Tullsen, and James Hook.
Domain Separation by Construction.
In LICS03 Satellite Workshop on Foundations of Computer Security
(FCS03), June 2003.
21 pages.
PDF
This paper advocates a novel approach to language-based security: by structuring software with monads (a form of abstract data type for effects), we are able to maintain separation of effects by construction. The thesis of this work is that well-understood properties of monads and monad transformers aid in the construction and verification of secure software. We introduce a formulation of non-interference based on monads rather than the typical trace-based formulation. Using this formulation, we prove a non-interference style property for a simple instance of our system model. Because monads may be easily and safely represented within any pure, higher-order, typed functional language, the resulting system models may be directly realized within such a language.
|
|
[8]
|
William Harrison, Timothy Sheard, and James Hook.
Fine Control of Demand in Haskell.
In 6th International Conference on the Mathematics of Program
Construction (MPC02), Dagstuhl, Germany, volume 2386 of Lecture Notes
in Computer Science, pages 68-93. Springer-Verlag, 2002.
PDF
Functional languages have the lambda calculus at their core, but then depart from this firm foundation by including features that alter their default evaluation order. The resulting mixed evaluation-partly lazy and partly strict-complicates the formal semantics of these languages. The functional language Haskell is such a language, with features such as pattern-matching, case expressions with guards, etc., introducing a modicum of strictness into the otherwise lazy language. But just how does Haskell differ from the lazy lambda calculus? We answer this question by introducing a calculational semantics for Haskell that exposes the interaction of its strict features with its default laziness. In the semantics, features perturbing Haskell's standard lazy evaluation order are specified computationally (i.e., monadically) rather than as pure values (i.e., functions, scalars, etc.).
|
|
[9]
|
William Harrison and Richard Kieburtz.
Pattern-driven Reduction in Haskell.
In 2nd International Workshop on Reduction Strategies in
Rewriting and Programming (WRS02), Copenhagen, Denmark, 2002.
PDF
Haskell is a functional programming language with nominally non-strict
semantics, implying that evaluation of a Haskell expression proceeds by
demand-driven reduction. However, Haskell also provides pattern
matching
on arguments of functions, in let expressions and in the match
clauses of case expressions. Pattern-matching requires
data-driven reduction to the extent necessary to
evaluate a pattern match or to bind variables introduced in a pattern.
In this paper we
provide both an abstract semantics and a logical characterization of
pattern-matching in Haskell and the reduction order that it entails.
|
|
[10]
|
Bill Harrison and Tim Sheard.
Dynamically Adaptable Software with Metacomputations in a Staged
Language.
In Proceedings of the Second International Workshop on
Semantics, Applications, and Implementation of Program Generation (SAIG),
volume 2196 of Lecture Notes in Computer Science, pages 163-182,
Florence, Italy, 2001. Springer-Verlag.
PDF
Profile-driven compiler optimizations take advantage of information gathered at runtime to re-compile programs into more efficient code. Such optimizations appear to be more easily incorporated within a semantics-directed compiler structure than within traditional compiler structure. We present a case study in which a metacomputation-based reference compiler for a small imperative language converts easily into a compiler which performs a particular profile-driven optimization: local register allocation. Our reference compiler is implemented in the staged, functional language MetaML and takes full advantage of the synergy between metacomputation-style language definitions and the staging constructs of MetaML. We believe that the approach to implementing profile-driven optimizations presented here suggests a useful, formal model for dynamically adaptable software.
|
|
[11]
|
William Harrison and Samuel Kamin.
Metacomputation-based Compiler Architecture.
In 5th International Conference on the Mathematics of Program
Construction, Ponte de Lima, Portugal, volume 1837 of Lecture Notes in
Computer Science, pages 213-229. Springer-Verlag, 2000.
PDF
This paper presents a modular and extensible style of language specification based on metacomputations. This style uses two monads to factor the static and dynamic parts of the specification, thereby staging the specification and achieving strong binding-time separation. Because metacomputations are defined in terms of monads, they can be constructed modularly and extensibly using monad transformers. Consequently, metacomputation-style specifications are modular and extensible. A number of language constructs are specified: expressions, control-flow, imperative features, block structure, and higher-order functions and recursive bindings. Because of the strong binding-time separation, metacomputation-style specification lends itself to semantics-directed compilation, which we demonstrate by creating a modular compiler for a block-structured imperative, while language.
|
|
[12]
|
William L. Harrison and Samuel N. Kamin.
Modular Compilers Based on Monad Transformers.
In Proceedings of the 1998 International Conference on Computer
Languages, pages 122-131. IEEE Computer Society Press, 1998.
PDF
The monadic style of language specification has the
advantages of modularity and extensibility: it is
simple to add or change features in an interpreter to
re ect modifications in the source language. It has
proven difficult to extend the method to compilation.
We demonstrate that by introducing machine-like stores
(code and data) into the monadic semantics and then
partially evaluating the resulting semantic
expressions, we can achieve many of the same advantages
for a compiler as for an interpreter. A number of
language constructs and features are compiled:
expressions, CBV and CBN evaluation of
λ-expressions, dynamic scoping, and various
imperative features. The treatment of recursive
procedures is outlined as well. The resulting method
allows compilers to be constructed in a mix-and-match
fashion just as in a monad-structured interpreter.
|
|
[13]
|
William Harrison, Karl Levitt, and Myla Archer.
An HOL Mechanization of the Axiomatic Semantics of a Simple
Distributed Programming Language.
In Proceedings of the International Workshop on Higher-Order
Logic Theorem Proving and Its Applications, pages 347-358, Leuven, Belgium,
September 1992.
|
|
[14]
|
William Harrison and Karl Levitt.
Mechanizing Security in HOL.
In Proceedings of the 1991 International Workshop on the HOL
Theorem Proving System and its Applications, pages 63-66, Davis,
California, 1991. IEEE Computer Society Press.
|
|