• Home
  • William Lawrence Harrison
William Lawrence Harrison

William Lawrence Harrison

Ph.D Computer Science, UIUC 2001

About

72
Publications
7,173
Reads
How we measure 'reads'
A 'read' is counted each time someone views a publication summary (such as the title, abstract, and list of authors), clicks on a figure, or views or downloads the full-text. Learn more
355
Citations
Citations since 2017
10 Research Items
88 Citations
201720182019202020212022202305101520
201720182019202020212022202305101520
201720182019202020212022202305101520
201720182019202020212022202305101520
Additional affiliations
August 2003 - present
University of Missouri
Position
  • Professor (Associate)

Publications

Publications (72)
Conference Paper
Full-text available
High-level synthesis (HLS) seeks to make hardware development more like software development by adapting ideas from programming languages to hardware description and HLS from functional languages is usually motivated as a means of bringing software-like productivity to hardware development. Formalized semantics support a range of important capabili...
Conference Paper
Termination checking is a classic static analysis, and, within this focus, there are type-based approaches that formalize termination analysis as type systems (i.e., so that all well-typed programs terminate). But there are situations where a stronger termination property (which we call strongly-bounded termination) must be determined and, accordin...
Conference Paper
Full-text available
High-level synthesis (HLS) research generally fo-cuses on transferring "software engineering virtues" (e.g., modu-larity, abstraction, extensibility, etc.) to hardware development with the ultimate goal of making hardware development as agile as software development. And recent HLS research has focused on transferring ideas and techniques from high...
Preprint
Full-text available
Simulation and bisimulation are used in many areas of security in Computing Science, however the methods used do not come with a supporting logic giving the regularities of information flow. We have developed Distributed Logic to represent regularities governing information flow between localities of a distributed system, each locality can be outfi...
Conference Paper
Full-text available
Control-Flow Integrity (CFI) is a software protection mechanism that detects a class of code reuse attacks by identifying anomalous control-flows within an executing program. Hardware-based CFI has the promise of the security benefits of CFI without the performance overhead and complexity of software-based CFI: generally speaking, hardware-based mo...
Article
Full-text available
Constructing high assurance, secure hardware remains a challenge, because to do so relies on both a verifiable means of hardware description and implementation. However, production hardware description languages (HDL) lack the formal underpinnings required by formal methods in security. Still, there is no such thing as high assurance systems withou...
Conference Paper
Full-text available
Building memory protection mechanisms into embedded hardware is attractive because it has the potential to neutralize a host of software-based attacks with relatively small performance overhead. A hardware monitor, being at the lowest level of the system stack, is more difficult to bypass than a software monitor and hardware-based protections are a...
Conference Paper
Full-text available
Constructing high assurance, secure hardware remains a challenge, because to do so relies on both a verifiable means of hardware description and implementation. However, production hardware description languages (HDL) lack the formal underpinnings required by formal methods in security. Still, there is no such thing as high assurance systems withou...
Article
Full-text available
There is no such thing as high assurance without high assurance hardware. High assurance hardware is essential because any and all high assurance systems ultimately depend on hardware that conforms to, and does not undermine, critical system properties and invariants. And yet, high assurance hardware development is stymied by the conceptual gap bet...
Conference Paper
Full-text available
There are many algorithms whose implementations can benefit both from hardware acceleration and formal verification and we would like to develop high assurance implementations as rapidly as possible. Critical computing infrastructure like cryptographic algorithms are prime candidates both for such acceleration and for formal verification. We show h...
Article
Full-text available
We extend the relational algebra of Chin and Tarski so that it is multisorted or, as we prefer, typed. Each type supports a local Boolean algebra outfitted with a converse operator. From Lyndon, we know that relation algebras cannot be represented as proper relation algebras where a proper relation algebra has binary relations as elements and the a...
Conference Paper
Full-text available
FPGA programmability remains a concern with respect to the broad adoption of the technology. One reason for this is simple: FPGA applications are frequently implementations of concurrent algorithms that could be most directly rendered in concurrent languages, but there is little or no first-class support for concurrent applications in conventional...
Chapter
Full-text available
Modal logics typically have only one domain of discourse—i.e., the collection of worlds or states. For distributed computing systems, however, it makes sense to have several collections of worlds and to relate one domain’s local worlds to another’s using either relations or special maps. To this end, we introduce distributed modal logics. Distribut...
Conference Paper
Full-text available
There is a semantic gap between the hardware definition languages used to design and implement hardware and the languages and logics used to formally specify and verify them. Bridging this gap—i.e., constructing formal models from existing hardware artifacts—can be costly, time-consuming, and error prone—and yet utterly necessary if formal verifica...
Article
There is no such thing as high assurance without high assurance hardware. High assurance hardware is essential, because any and all high assurance systems ultimately depend on hardware that conforms to, and does not undermine, critical system properties and invariants. And yet, high assurance hardware development is stymied by the conceptual gap be...
Conference Paper
Full-text available
There is no such thing as high assurance without high assurance hardware. High assurance hardware is essential, because any and all high assurance systems ultimately depend on hardware that conforms to, and does not undermine, critical system properties and in-variants. And yet, high assurance hardware development is stymied by the conceptual gap b...
Conference Paper
Full-text available
Although FPGAs have the potential to bring software-like flexibility and agility to the hardware world, designing for FPGAs re-mains a difficult task divorced from standard software engineering norms. A better programming flow would go far towards realizing the potential of widely deployed, programmable hardware. We propose a general method-ology b...
Technical Report
Full-text available
Distributed systems are ubiquitous in computing and engineering, yet they have been somewhat obscured in the philosophical world. A distributed logic is a collection of local modal logics linked together by distributed modal connectives each of which takes formulas in one logic and returns formulas in a different logic. Semantically, each local log...
Conference Paper
Full-text available
The functional programming community has developed a number of powerful abstractions for dealing with diverse programming models in a modular way. Beginning with a core of pure, side effect free computation, modular monadic semantics (MMS) allows designers to construct domain-specific languages by adding layers of semantic features, such as mutable...
Article
Full-text available
Simulation relations have been discovered in many areas: Computer Science, philosophical and modal logic, and set theory. However, the simulation condition is strictly a first-order logic statement. We extend modal logic with modalities and axioms, the latter’s modeling conditions are the simulation conditions. The modalities are normal, i.e., comm...
Article
Full-text available
We extend an off-the-shelf, executable formal semantics of C (Ellison and Rosu's K Framework semantics) with the core features of CUDA-C. The hybrid CPU/GPU computation model of CUDA-C presents challenges not just for programmers, but also for practitioners of formal methods. Our formal semantics helps expose and clarify these issues. We demonstrat...
Conference Paper
Full-text available
In this paper, we establish a semantic foundation for the safe execution of untrusted code. Our approach extends Moggi's computational $lambda$-calculus in two dimensions with operations for asynchronous concurrency, shared state and software faults and with an effect type system $gravea$ la Wadler providing fine-grained control of effects. An equa...
Conference Paper
Full-text available
Pure, lazy functional languages like Haskell provide a sound basis for formal reasoning about programs in an equational style. In practice, however, equational reasoning is underutilized. We suggest that part of the reason for this is the lack of accessible tools for developing machine-checked equational reasoning proofs. This paper outlines the de...
Conference Paper
Full-text available
Simulation relations have been discovered in many areas: Computer Science, philosophical and modal logic, and set theory. However, the simulation condition is strictly a first-order logic statement. We extend modal logic with modalities and axioms, the latter's modeling conditions are the simulation conditions. The modalities are normal, i.e., comm...
Article
Full-text available
We recast parts of decision theory in terms of channel theory concentrating on qualitative issues. Channel theory allows one to move between model theoretic and language theoretic notions as is necessary for an adequate covering. Doing so clari?es decision theory and presents the opportunity to investigate alternative formulations. As an example, w...
Conference Paper
Full-text available
It has long been held that information flow security models should be organized with respect to a theory of information, but typically they are not. The appeal of a information-theoretic foundation for information flow security seems natural, compelling and, indeed, almost tautological. This article illustrates how channel theory---a theory of info...
Conference Paper
Full-text available
High assurance systems have been defined as systems "you would bet your life on." This article discusses the application of a form of functional programming---what we call "monadic programming"---to the generation of high assurance and secure systems. Monadic programming languages leverage algebraic structures from denotational semantics and functi...
Conference Paper
Full-text available
Modal logic is extended by partially ordering the modalities. The modalities are normal, i.e., commute with either conjunctions or disjunctions and preserve either Truth or Falsity (respectively). The partial order does not conict with type of modality (K, S4, etc.) although this paper will concentrate on S4 since partially ordered S4 systems appea...
Article
Full-text available
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 illus- trate this approach by constr...
Conference Paper
Full-text available
Recent research has shown how the formal modeling of concurrent systems can benefit from monadic structuring. With this approach, a formal system model is really a program in a domain specific language defined by a monad for shared-state concurrency. Can these models be compiled into efficient implementations? This paper addresses this question and...
Conference Paper
Full-text available
Asynchronous interrupts abound in computing systems, yet they remain a thorny concept for both programming and verification practice. The ubiquity of in- terrupts underscores the importance of developing programming models to aid the development and verification of interrupt-driven programs. The research re- ported here recognizes asynchronous inte...
Article
Full-text available
RNA plays a critical role in mediating every step of cellular information transfer from genes to functional proteins. Pseudoknots are functionally important and widely occurring structural motifs found in all types of RNA. Therefore predicting their structures is an important problem. In this paper, we present a new RNA pseudoknot structure predict...
Conference Paper
Full-text available
Monads as an organizing principle for programming and semantics are notoriously difficult to grasp, yet they are a central and powerful abstraction in Haskell. This paper introduces a domain-specific language, MonadLab, that simplifies the construction of monads, and describes its implementation in Template Haskell. MonadLab makes monad constructio...
Conference Paper
Full-text available
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 o...
Conference Paper
Full-text available
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 speci- fied in terms of resumption monads known heretofore exclusively in the literature of...
Conference Paper
Full-text available
Polymorphic recursion is a useful extension of Hindley- Milner typing and has been incorporated in the functional program- ming 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 bro...
Article
Full-text available
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...
Conference Paper
Full-text available
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 construc...
Conference Paper
Full-text available
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 predicti...
Article
Full-text available
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 on-strict" semantics can be quite dicult to reason with. This paper introduces a programming logic, P-logic, which neatl...
Article
Full-text available
This note reports a foundation for the denotational semantics of polymorphic recursion in Haskell98. The intention is to present sufficient detail so that members of the Progra-matica team get an up-to-date view of our approach to overloading and so that we can get useful feedback.
Article
Full-text available
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 bact...
Article
Language-based approaches to security typically use static type systems to control information flow, relying on type inference to distinguish secure programs from insecure ones. This paper advocates a novel approach to language-based security: by structuring software with monads (a form of abstract data type for eects), we are able to maintain sepa...
Article
Full-text available
Functional languages have the λ-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 suc...
Article
Full-text available
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 redu...
Conference Paper
Full-text available
Functional languages have the -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 lan- guages. The functional language Haskell is such a language, with features such a...
Conference Paper
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 metacomputationbased reference...
Article
Full-text available
The lazy functional language Haskell can be viewed at many levels. At the highest level it can be manipulated as if it were the call-by-name lambda calculus. Slightly below this level is the model of the call-by-need lambda calculus, where control over duplication of computation becomes explicit. Underneath this level is a more detailed model that...
Conference Paper
Full-text available
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 construct...
Article
Full-text available
This paper presents a modular and extensible style of language speciication based on meta-computations. This style uses two monads to factor the static and dynamic parts of the speci-cation, thereby staging the speciication and achieving strong binding-time separation. Because metacomputations are deened in terms of monads, they can be constructed...
Article
Full-text available
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 reflect 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...
Article
Full-text available
syntax of the expression language In general, program execution can be divided into two distinct phases: static (or compile-time) and dynamic (or run-time). The static phase consists of those reductions in the execution which can be made by inspection of the program text alone (hence at compile-time). The dynamic phase consists of those reductions...
Article
Full-text available
Our goal is to produce the same compiler as Reynolds [12] via partial evaluation. We develop a continuation semantics for a higher-order, imperative, call-by-name Algol-like language which is based on the functor category semantics of Reynolds and Oles [11], and compile programs via the first Futumura projection. Our "compilation semantics" is non-...
Article
Full-text available
The monadic style of language specification [6, 16, 15, 26] has the advantages of modularity and extensibility: it is simple to add or change features in an interpreter to reflect modifications in the source language. It has proven difficult to extend the method to compilation, because there is considerable interaction between different features. W...
Conference Paper
This paper presents the axiomatic semantics for a simple distributed language, and its mechanization in HOL. The constructs of this language include those basic to a very simple sequential programming language in addition to asynchronous send and synchronous receive statements. The language has the appearance of a system programming language that s...
Thesis
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 sequenti...
Conference Paper
Full-text available
Not Available
Article
Full-text available
This article demonstrates how a powerful and expressive abstraction from concurrency theory plays a dual r?ole as a programming tool for concurrent applications and as a foun-dation 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 r...
Article
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 dicult to reason with. This paper introduces a programming logic, P-logic, which nea...
Article
Full-text available
This paper advocates a novel approach to language-based security: by structuring software with monads, 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 formula-tion of...
Article
Full-text available
Printout. Thesis (Ph. D.)--University of Illinois at Urbana-Champaign, 2001. Vita. Includes bibliographical references (leaves 277-281).
Article
SPEC. COLL. HAS ARCHIVAL COPY; MICRO. ROOM HAS MICROFICHE COPY (2 SHEETS). Thesis (M.S.)--U. of Calif., Davis. Typescript. Degree granted in Computer Science.

Network

Cited By