aren't value types immutable by definition?
No they're not: if you look at the System.Drawing.Point struct for example, it has a setter as well as a getter on its X property.
However it may be true to say that all value types should be defined with immutable APIs.