we can actually control that evaluation shouldn't happen in constraints, so we don't need separate CExpressions