Bill Harrison's Publications
Copyright Information
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.
Drafts
Dissertations
[1] William Harrison. Modular Compilers and Their Correctness Proofs. PhD thesis, University of Illinois at Urbana-Champaign, 2001.
PDF
This thesis explores the construction and correctness of modular compilers. Modular compilation is a compiler construction technique allowing the construction of compilers for high-level programming languages from reusable compiler building blocks. Modular compilers are defined in terms of denotational semantics based on monads, monad transformers, and a new model of staged computation called metacomputations. A novel form of denotational specification called observational program specification and related proof techniques are developed to assist in modular compiler verification. It will be demonstrated that the modular compilation framework provides both a level of modularity in compiler proofs as well as a useful organizing principle for such proofs.
[2] William Harrison. Mechanizing the Axiomatic Semantics for a Programming Language with Asynchronous Send and Receive in HOL. Master's thesis, University of California, Davis, 1992.
PDF
This thesis presents the axiomatic semantics for a simple distributed language and its mechanization in HOL. The constructs of this language include asynchronous send and synchronous receive statements as well as those basic to a sequential programming language. The language has the appearance of a system programming language that supports sequential execution extended with message-passing, and would be a suitable basis for coding distributed operating systems. Included in the mechanization are functions which generate the goals associated with the verification of simple statements in the language.
Technical Reports
[1] William Harrison, Karl Levitt, and Myla Archer. Towards a Verified Code Basis for a Secure Distributed Operating System. Technical Report CSE-92-19, University of California at Davis, 1992.
[2] William Harrison. Mechanizing the Axiomatic Semantics for a Programming Language with Asynchronous Send and Receive in HOL. Technical Report CSE-92-20, University of California at Davis, 1992.
Copyright Information
The documents contained in these directories are included by the contributing authors as a means to ensure timely dissemination of scholarly and technical work on a non-commercial basis. Copyright and all rights therein are maintained by the authors or by other copyright holders, notwithstanding that they have offered their works here electronically. It is understood that all persons copying this information will adhere to the terms and constraints invoked by each author's copyright. These works may not be reposted without the explicit permission of the copyright holder.
Parts of this page were generated by bibtex2html Last modified: Tue Sep 5 09:28:25 CST 2006