What he is missing is that he set dt equal to zero to get what he want but effect is zero in this limit.
The problem, I think, is that you’re missing part of the story, too.
If we were to break down the event, we would see that the moving object – let’s call it
x – (with some px>0), which is heading toward a stationary object – let’s call it
y – (with some py=0), at some point in time – let’s call it
t – makes contact with the stationary object.
Object y does not immediately have momentum py>0 at time t.
Rather, at the point of contact – that is, at the point at which the ‘cause’ is beginning to cause the ‘effect’ – it is transferring energy to the stationary object. Object
x has to impart sufficient energy into object
y to overcome its inertia. Once it does so (at some time
t+i ),
y begins to move (and have some momentum py>0).
However, in the (small) period of time that
x and
y are in contact,
x is actually
doing something. The cause of the motion of
y (the contact of
x into
y) actually
does act on
y, producing an effect.
Whether or not px goes to zero (or merely becomes a different vector with different magnitude) isn’t relevant to the discussion that
x caused
y to go from py=0 to py>0.
Strictly speaking, I don’t think that we would say that
x transfers
momentum into
y, but merely transfers force (which, in part, causes motion (and therefore, momentum) in the other object).
In any case, the ‘cause’ doesn’t vanish. There
is a transfer of energy, but that doesn’t mean that energy ‘vanishes’ or that the cause itself ‘vanishes’.