A computational interpretation of extensional higher-order logic