Thanks to Hugo Elbers.
Starting point is a language for mathematical objects. In this language we can express elementary mathematical objects, such as
We have constructs for building more complex mathematical objects like
We use typing to filter out meaningless expressions: for instance
Because formulae are represented by types in this language, we consider inhabitants of such types as proofs. Therefore type checking is good for verifying: