use Mul instead of Pow to avoid calls that update assumptions