Every time you call read() on it - you get a different result. It has side-effects.
This violates the “purity” of Mathematics.
That's not a train-smash for your argument if you can show me a Mathematical model for a global mutex.
When the discussion turns to control-flow you are inevitably in the land of well-ordered imperatives, not Mathematical, lazy-evaluated declaratives.
Every time you call read() on it - you get a different result. It has side-effects.
This violates the “purity” of Mathematics.