It prevents double spends under a set of assumptions. One of the assumptions it makes is that the Bitcoin code on your device faithfully implements the system in the paper. It doesn't claim to be the thing that causes that assumption to be valid; you have to ensure that using separate means.