Make applying substitutions partial...

...so that we don't need `canStrengthen'.