Your observation is correct.
The original intention of the "Undo" creation was:
"Undo" = Undo the last move/shot, NOT undo the last ACTION.
(See the starting page of the game, "U - Undo Move". Or
click "Help" -> "Index" -> "Commands", you will see, "Move,
Undo Last Move/Shot - U".)
Your examples: Save position 75. Restore at position X.
(X=100 in Example 1; X=50 in Example 2.) There are two
pointers, at 75 and at X. If you continue the play, pointer
at 75 is used. If you Undo, pointer at X is used. (You want
X; LT gives you X-1.)
Once we do "Save Position", we can do any combination of
undo, restore, restart, move, and shot -as long as in the
same level, then "Restore Position" and directly continue
from there WITHOUT LOSING anything.
The combination of Save & Restore (Position) is very
important when we optimize our lpb. If at certain point we
doubt which way will give less number of moves, we save the
position and choose one possible way. We save the lpb at
the intermediate destination point. Restore the position
(go back to the breakaway point) and choose another
possible way. Compare the results at the same destination
point. If the later is the better, we save the lpb.
(Sometimes, we need to save using different names. For
example: Sokoban-I_1999a.lpb and Sokoban-I_1999b.lpb.)
Bye,
Suyono