AbstractDynamic programming has been used since the late 1950s to solve numerical problems that have natural recursive formulations that succumb to divide-and-conquer strategies. However, to improve the efficiency of the divide-and-conquer strategy, conventional methods of dynamic programming use intricate and imperative tabular techniques that are entirely excluded from the purely relational/functional world of logic programming. This is ironic when one considers that dynamic programming is often used for problems that can be specified elegantly in logic, abstracting away from considerations of table storage and access. This paper describes a method by which problems normally solved by dynamic programming can be expressed in Horn clauses, ...