[ minor refactor ] mhead instead of hand-rolled head'.
[ minor refactor ] ifNotM to get shorter branch first.

Save the parentheses!
[ new ] Lenses for Constraints in state.
[ refactor ] Use lenses for constraints.