Abstraction Logic is introduced as a foundation for Practical Types
. It combines the simplicity of ﬁrst-order logic with direct support for variable binding constants called abstractions. It also allows free variables to depend on parameters, which means that ﬁrst-order axiom schemata can be encoded as simple axioms. Conceptually abstraction logic is situated between ﬁrst-order logic and second-order logic. It is sound with respect to an intuitive and simple algebraic semantics. Completeness holds for both intuitionistic and classical abstraction logic, and all abstraction logics in between and beyond.