We present a logic for the specification and analysis of deductive systems. This logic is an extension of a simple intuitionistic logic that admits higher-order quantification over simply typed $\lambda$-terms. These are key ingredients for higher-order abstract syntax, an elegant and declarative treatment of object-level abstraction and substitution. The logic also supports induction and a notion of definition. The latter concept of definition is a proof-theoretic device that allows certain theories to be treated as closed or as defining fixed points. We prove that cut-elimination and consistency results hold for this logic, adapting a technique due to Tait and Martin-Lof. We also demonstrate the effectiveness of the logic for encoding m...