Programming Language Foundations

The Formal Semantics of Programming Languages: An Introduction by Glynn Winskel

Software Foundations

Practical Foundations of Programming Languages by Robert Harper

Types and Programming Languages by Benjamin C. Pierce

Type Theory

The Homotopy Type Theory Book

Proof Theory and Logics

The Little Prover by Daniel P. Friedman

The Reasoned Schemer by Daniel P. Friedman → miniKanren