<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Adam Procter, Ph.D.: Publications</title>
    <description>Academic website of Adam Procter, Ph.D.
</description>
    <link>http://adamprocter.com/</link>
    <atom:link href="http://adamprocter.com/feed-pubs.xml" rel="self" type="application/rss+xml"/>
    <pubDate>Sat, 05 Mar 2022 21:01:51 -0600</pubDate>
    <lastBuildDate>Sat, 05 Mar 2022 21:01:51 -0600</lastBuildDate>
    <generator>Jekyll v3.9.0</generator>
    
      <item>
        <title>Asynchronous Exceptions as an Effect</title>
        <description>Asynchronous interrupts abound in computing systems, yet they remain a thorny concept for both programming and verification practice. The ubiquity of interrupts underscores the importance of developing programming models to aid the development and verification of interrupt-driven programs. The research reported here recognizes asynchronous interrupts as a computational effect and encapsulates them as a building block in modular monadic semantics. The resulting modular semantic model can serve as both a guide for functional programming with interrupts and as a formal basis for reasoning about interrupt-driven computation as well.
</description>
         <pubDate>Mon, 14 Jul 2008 02:00:00 -0500</pubDate> 
        <link>http://adamprocter.com/publications/2008-mpc/</link>
        <guid isPermaLink="true">http://adamprocter.com/publications/2008-mpc/</guid>
        
        
      </item>
    
      <item>
        <title>Making Monads First-class with Template Haskell</title>
        <description>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 construction truly first class, meaning that arcane theoretical issues with respect to monad transformers are completely hidden from the programmer. The motivation behind the design of MonadLab is to make monadic programming in Haskell simpler while providing a tool for non-Haskell experts that will assist them in understanding this powerful abstraction.
</description>
         <pubDate>Thu, 25 Sep 2008 10:00:00 -0500</pubDate> 
        <link>http://adamprocter.com/publications/2008-haskell/</link>
        <guid isPermaLink="true">http://adamprocter.com/publications/2008-haskell/</guid>
        
        
      </item>
    
      <item>
        <title>Model-driven Engineering from Modular Monadic Semantics: Implementation Techniques Targeting Hardware and Software</title>
        <description>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 presents an overview of techniques for compiling monadic concurrency models directly into reasonably efficient software and hardware implementations. The implementation techniques described in this article form the basis of a semantics-directed approach to model-driven engineering.
</description>
         <pubDate>Wed, 15 Jul 2009 03:00:00 -0500</pubDate> 
        <link>http://adamprocter.com/publications/2009-dslwc/</link>
        <guid isPermaLink="true">http://adamprocter.com/publications/2009-dslwc/</guid>
        
        
      </item>
    
      <item>
        <title>Towards Semantics-directed System Design and Synthesis</title>
        <description>High assurance systems have been defined as systems &amp;ldquo;you would bet your life on.&amp;rdquo; This article discusses the application of a form of functional programming&amp;mdash;what we call &amp;ldquo;monadic programming&amp;rdquo;&amp;mdash;to the generation of high assurance and secure systems. Monadic programming languages leverage algebraic structures from denotational semantics and functional programming&amp;mdash;monads&amp;mdash;as a flexible, modular organizing principle for secure system design and implementation. Monadic programming languages are domain-specific functional languages that are both sufficiently expressive to express essential system behaviors and semantically straightforward to support formal verification.  
</description>
         <pubDate>Mon, 18 Jul 2011 09:00:00 -0500</pubDate> 
        <link>http://adamprocter.com/publications/2011-ersa/</link>
        <guid isPermaLink="true">http://adamprocter.com/publications/2011-ersa/</guid>
        
        
      </item>
    
      <item>
        <title>The Design of a Practical Theorem Prover for a Lazy Functional Language</title>
        <description>Pure, lazy functional languages like Haskell provide a sound basis for formal reasoning about programs in an equational style. In practice, however, equational reasoning about correctness proofs is underutilized. In the context of Haskell, we suggest that part of the reason for this is the lack of accessible tools for machine-checked equational reasoning. This paper outlines the design of MProver, a proof checker which fills just that niche. MProver features first-class support for reasoning about potentially undefined computations (particularly important in a lazy setting), and an extended notion of Haskell-like type classes, enabling a highly modular style of program verification that closely follows familiar functional programming idioms.
</description>
         <pubDate>Tue, 12 Jun 2012 03:00:00 -0500</pubDate> 
        <link>http://adamprocter.com/publications/2012-tfp/</link>
        <guid isPermaLink="true">http://adamprocter.com/publications/2012-tfp/</guid>
        
        
      </item>
    
      <item>
        <title>A Virtual Memory Based Runtime to Support Multi-tenancy in Clusters with GPUs</title>
        <description>Graphics Processing Units (GPUs) are increasingly becoming part of HPC clusters. Nevertheless, cloud computing services and resource management frameworks targeting heterogeneous clusters including GPUs are still in their infancy. Further, GPU software stacks (e.g., CUDA driver and runtime) currently provide very limited support to concurrency. &lt;br /&gt;&lt;br /&gt; In this paper, we propose a runtime system that provides abstraction and sharing of GPUs, while allowing isolation of concurrent applications. A central component of our runtime is a memory manager that provides a virtual memory abstraction to the applications. Our runtime is flexible in terms of scheduling policies, and allows dynamic (as opposed to programmer-defined) binding of applications to GPUs. In addition, our framework supports dynamic load balancing, dynamic upgrade and downgrade of GPUs, and is resilient to their failures. Our runtime can be deployed in combination with VM-based cloud computing services to allow virtualization of heterogeneous clusters, or in combination with HPC cluster resource managers to form an integrated resource management infrastructure for heterogeneous clusters. Experiments conducted on a three-node cluster show that our GPU sharing scheme allows up to a 28% and a 50% performance improvement over serialized execution on short- and long-running jobs, respectively. Further, dynamic inter-node load balancing leads to an additional 18-20% performance benefit.
</description>
         <pubDate>Mon, 18 Jun 2012 02:00:00 -0500</pubDate> 
        <link>http://adamprocter.com/publications/2012-hpdc/</link>
        <guid isPermaLink="true">http://adamprocter.com/publications/2012-hpdc/</guid>
        
        
      </item>
    
      <item>
        <title>The Confinement Problem in the Presence of Faults</title>
        <description>In this paper, we establish a semantic foundation for the safe execution of untrusted code. Our approach extends Moggi’s computational λ-calculus in two dimensions with operations for asynchronous concurrency, shared state and software faults and with an effect type system &amp;agrave; la Wadler providing fine-grained control of effects. An equational system for fault isolation is exhibited and its soundness demonstrated with a semantics based on monad transformers. Our formalization of the equational system in the Coq theorem prover is discussed. We argue that the approach may be generalized to capture other safety properties, including information flow security.
</description>
         <pubDate>Sun, 11 Nov 2012 17:00:00 -0600</pubDate> 
        <link>http://adamprocter.com/publications/2012-icfem/</link>
        <guid isPermaLink="true">http://adamprocter.com/publications/2012-icfem/</guid>
        
        
      </item>
    
      <item>
        <title>Formal semantics of heterogeneous CUDA-C: A modular approach with applications</title>
        <description>We extend an off-the-shelf, executable formal semantics of C (Ellison and Roșu's &amp;#x1d542; 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 demonstrate the usefulness of our semantics by generating a tool from it capable of detecting some race conditions and deadlocks in CUDA-C programs. We discuss limitations of our model and argue that its extensibility can easily enable a wider range of verification tasks.
</description>
         <pubDate>Tue, 27 Nov 2012 15:00:00 -0600</pubDate> 
        <link>http://adamprocter.com/publications/2012-ssv/</link>
        <guid isPermaLink="true">http://adamprocter.com/publications/2012-ssv/</guid>
        
        
      </item>
    
      <item>
        <title>Semantics-directed Machine Architecture in ReWire</title>
        <description>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 state and I/O, in an &amp;agrave; la carte fashion. In the realm of interpreter and compiler construction, the benefits of this approach are manifold and well explored. This paper advocates bringing the tools of MMS to bear on hardware design and verification. In particular, we shall discuss a prototype compiler called ReWire which translates high-level MMS hardware specifications into working circuits on FPGAs. This enables designers to tackle the complexity of hardware design in a modular way, without compromising efficiency.
</description>
         <pubDate>Sun, 08 Dec 2013 17:00:00 -0600</pubDate> 
        <link>http://adamprocter.com/icfpt13/</link>
        <guid isPermaLink="true">http://adamprocter.com/icfpt13/</guid>
        
        
      </item>
    
      <item>
        <title>Cheap (But Functional) Threads</title>
        <description>This article demonstrates how a powerful and expressive abstraction from concurrency theory plays a dual r&amp;ocirc;le as a programming tool for concurrent applications and as a foundation for their verification. This abstraction&amp;mdash;monads of resumptions expressed using monad transformers&amp;mdash;is &lt;em&gt;cheap&lt;/em&gt;: 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.
</description>
         <pubDate>Sat, 22 Nov 2014 15:16:41 -0600</pubDate> 
        <link>http://adamprocter.com/publications/2015-cheapthreads/</link>
        <guid isPermaLink="true">http://adamprocter.com/publications/2015-cheapthreads/</guid>
        
        
      </item>
    
  </channel>
</rss>
