Abstract : Nominal abstract syntax and higher-order abstract syntax provide a means for describing binding structure which is higher-level than traditional techniques. These approaches have spawned two different communities which have developed along similar lines but with subtle differences that make them difﬁcult to relate. The nominal abstract syntax community has devices like names, freshness, name-abstractions with variable capture, and the N-quantiﬁer, whereas the higher-order abstract syntax community has devices like lambda-binders, lambda-conversion, raising, and the nabla-quantiﬁer. This paper aims to unify these communities and provide a concrete correspondence between their different devices. In particular, we develop a semantics-preserving translation from alpha Prolog, a nominal abstract syntax based logic programming language, to G−, a higher-order abstract syntax based logic programming language. We also discuss higher-order judgments, a common and powerful tool for speciﬁcations with higher-order abstract syntax, and we show how these can be incorporated into G−. This establishes G− as a language with the power of higher-order abstract syntax, the ﬁne-grained variable control of nominal speciﬁcations, and the desirable properties of higher-order judgments.