The document itself is available locally. Errata corrected in this version (relative to the official version held at the JHU library) are detailed below.

The slide deck from my defense is available in PDF form.

In addition to the thesis document itself, an addendum is available, containing a more fully fleshed-out variant of the EarthBound algorithm of chapter 2.


We investigate the design of an expressive, purely-declarative, weighted logic programming language, Dyna. Dyna is a decade-plus effort in pushing the boundaries of declarative programming and “executable mathematics;” it instantiates an unusual point in the design space, as it is both Turing-complete (unlike Datalog) and devoid of a specified execution order (unlike Prolog). That is, it is designed to be, at once, both highly expressive and rich in opportunities for automated optimization. This thesis contains two major thrusts. We first consider both the denotational (§2.1.2 and §3.1.4) and operational aspects (§2.2 to §2.5, §3.2 to §3.6, and §4) of Dyna. In particular, for operational semantics, we introduce (§2.2) and extend (through §2.5) our EarthBound solver for finite circuits; §3 considers the generalization to logic programs proper. We then turn our attention to the static analysis of this language, considering mechanisms for reasoning both about abstract notions of well-formedness of programs (§5.2) as well as more mundane concerns of realizability of programs in actual computation (§5.3 and §5.4). Along the way we endeavour to place our work in the context of the larger field of logic programming languages and present our current thoughts on future avenues of exploration.


  author  = {Nathaniel Wesley Filardo},
  institution={Johns Hopkins University},
  year    = {2017},
  month   = {10},
  title   = {Dyna 2: Towards a General Weighted Logic Language}