Is it really that important to avoid function extensionality, or is the real benefit that `op` commutes "on the nose"?