constraints and comonoids