Types for Proofs and Programs by Thorsten Altenkirch & W. Naraschewski