Proof-theoretic semantics (P-tS) is the paradigm of semantics in which meaning in logic is based on proof (as opposed to truth). A particular instance of P-tS for intuitionistic propositional logic (IPL) is its \emph{base-extension semantics} (B-eS). In this paper, we prove completeness of IPL with respect to the B-eS through logic programming (LP). This reveals that inherent to P-tS is \emph{proof-search} and the \emph{negation-as-failure} protocol. Traditionally, the denial of a proposition is understood as the assertion of its negation, which is indeed the case in the model-theoretic semantics for IPL, but the connection to LP reveals that in P-tS the denial of a proposition refers to the failure of finding a proof of it. In this way, assertion and denial are both prime concepts in P-tS.