Typed Lambda Calculi and Applications by Martin Hofmann