Constraint-preserving operators