Constructions:a higher order proof system for mechanizing mathematics