I have just finished pulling the same sprocket off a Kohler SV720.
Took 4 heatings to red hot to get it to shift, thus cooking the oil seal.\
About 3 hours work, after the engine was out.
The only liquid that will work is hydrochloric acid which dissolves rust.
It also dissolves alloy pretty quick as well.
The parts are not stuck, they are rusted together.
This is a physical and chemical bond.
If you have an air hammer and oxy gear then heat it red hot all round then cool with water.
Down side is you have to get the sleeve red on both side of the pulley which is difficult if you can not pull the engine without setting the mower on fire.
What might work is heating the pulley sleeve then spraying inside the PTO shaft with liquid freeze, just watch your hands and wear heavy gloves cause that liquid freeze will burn very deeply before you know it is on your hands.
Other alternative is clamping a bearing seperator in the V of the pulley , pop a dummy bolt in the PTO shaft hole to protect the thread a.nd clamp the puller down tight.
Now hit the pulley sleeve with the oxy and if you are lucky it will shift about 1/32"
Tighten the puller and repeat several times .
If you got some hot gear then an impact gun on the end of the puller while the shaft is being heated will also work.
If you go this route, take the plugs out and stuff some rope down the one that is on the firing stroke then compress the piston into the rope to prevent the engine spinning when you are using the rattle gun.
If you remove the battery & drain or remove the fuel tank then you can stand the mower vertical to get better access to the pulley.
I use a yard crane to do it now, previously I used an engine crane.
On ZTRs you are still working 14" off the ground but at least you are not upside down.
IF you stand it up then you can rotate the shaft so the key slot is up then degrease the shaft followed with some acid applied up the key slot with a syringe.