The paper is available locally.

This is largely a machine learning paper; my contributions were rather limited and largely confined to section 3, which discusses solver strategies for Dyna.


Declarative programming is a paradigm that allows programmers to specify what they want to compute, leaving how to compute it to a solver. Our declarative programming language, Dyna, is designed to compactly specify computations like those that are frequently encountered in machine learning. As a declarative language, Dyna’s solver has a large space of (correct) strategies available to it. We describe a reinforcement learning framework for adaptively choosing among these strategies to maximize efficiency for a given workload. Adaptivity in execution is especially important for software that will run under a variety of workloads, where no fixed policy works well. We hope that reinforcement learning will identify good policies reasonably quickly—offloading the burden of writing efficient code from human programmers.


  author  = {Tim Vieira and Matthew Francis-Landau and Nathaniel Wesley
            Filardo and Farzad Khorasani and Jason Eisner},
  title   = {Dyna: Toward a Self-Optimizing Declarative Language for Machine
            Learning Applications},
  booktitle={Proceedings of the First ACM SIGPLAN Workshop on Machine
            Learning and Programming Languages (MAPL)},
  year    = {2017},
  month   = {6},
  address = {Barcelona}