Basic Simple Type Theory (Cambridge Tracts in Theoretical Computer Science)