- function and variable naming - social conventions around ownership - stated intent by code writers - common sense
By any reasonable standard, this was theft.
Is a door with a pickable lock always unlocked? No, that would be silly. What makes using a key on a lock different from using a lockpick. Social convention, intent of the creator, common sense, the fact that one thing is called a key, and the other a lockpick.
IMO, the answer is fundamentally that it expands the market (no more limitations like medallions, scales better than hiring dispatchers, etc.), and creates more demand overall (more people use these cars than would've used traditional taxis).
Of course, even the customer support gets automated away, until humans only need to deal with exceptions to the exceptions (that automated support was supposed to handle). So there can still be economies of scale and efficiency.
Now, it seems that the thief was afraid of legal reprecussions, but that is sort of outside the scope of ethereum. It happens purely 'off chain'.
The interesting exception to this story is the original DAO heist. Where an Eth hard-fork was made to reverse the heist. In this case there was an intervention. That intervention took broad consensus of miners and developers. So it takes a pretty big effort to get disputes "resolved" away from what the smart contract says. That is an interesting deviation from normal contracts before a court. Personally, I do think that Eth should not have forked the DAO heist away, but I understand why they did.
halting problem smart contract that's
both fraudulent and not at the same time
How would the halting problem help with that? With the halting problem, can't you just write code so that nobody knows if it will halt or not? I wouldn't say it halts and not halts at the same time. We just don't know if it will halt.