>>if a pure function (or block) regards all previously existing memory as one immutable region, it doesn't matter if there was any mutable aliasing happening before, because everything inside that region is shared and immutable now.
Pure functions don't usually need any of this. If they are handed a pointer it has to be to immutable data or not shared by another thread.