I know, that a user cannot create a fork in the chain.
Also, it is said, that since every transaction is publicly announced, any attempt of double-spend on the same chain would be rejected as the network would know that these bitcoins have been spent previously in the chain. But how would the network determine, that these bitcoins have been spent previously because, the identity of payer and payee is not known? Only the newly created addresses are known at time of spending which can be later changed during double-spend.
For example, if Alice sends 10 BTC to Bob using 0000ab578c4 as her address and this forms part of 50th block in block chain. Now again she spents 10 BTC to Bob using another address 004325bda in the 67th block of same chain, how would the network determine that this is a double spend? (No one knows to whom 004325bda belongs).