Tactics now take as input a list of goals instead of a single goal. This allows constraints to be treated globally instead of one at a time. However, to have the same expressive power, we need some additional tactics. The destruct tactic is now more powerful, and the instances tactic is much more powerful. Type classes are now almost usable.