There are a number of ProofPurposes in `lib/purposes/`. The main documentation should list each and explain what they are for and when to use them.