If `self.transform(x, f(x))` is to be interpreted as `{ f(x) | x \in self }`, shouldn't the resulting interval be `Interval(0, 4)`?