The `DotProduct` is currently implemented as a `PreMetric`. This is unreasonable since it satisfies neither of the defining properties of a `PreMetric`.