  Despite significant progress in the development of neural-symbolic
frameworks, the question of how to integrate a neural and a symbolic system in
a \emph{compositional} manner remains open. Our work seeks to fill this gap by
treating these two systems as black boxes to be integrated as modules into a
single architecture, without making assumptions on their internal structure and
semantics. Instead, we expect only that each module exposes certain methods for
accessing the functions that the module implements: the symbolic module exposes
a deduction method for computing the function's output on a given input, and an
abduction method for computing the function's inputs for a given output; the
neural module exposes a deduction method for computing the function's output on
a given input, and an induction method for updating the function given
input-output training instances. We are, then, able to show that a symbolic
module -- with any choice for syntax and semantics, as long as the deduction
and abduction methods are exposed -- can be cleanly integrated with a neural
module, and facilitate the latter's efficient training, achieving empirical
performance that exceeds that of previous work.
