In the book A Science of Concurrent Programs Leslie Lamport describes alternative way how to look at safety and liveness properties in distributed algorithms.
A.5 Another Way to Look at Safety and Liveness This section provides a different view of safety and liveness based on viewing behavior predicates as sets of behaviors. This view was first recognized by Gordon Plotkin. I find that it helps me understand safety and liveness. To understand it, we first need some more math.
They build a metric space where distance between behaviors is defined as $\delta(x, y) = 1/(1 + commonPrefixLength(x, y))$
Where can I read about this topological/metric space?
I am interested, in particular:
- What would be the open sets? All behaviors starting with the finit prefixes?
- What would be a closed set? In my understanding, open set will be also closed. Given an open set $U$ of behaviors starting with prefix
a,b,c, then any behavior outside of this set, for example,a,b,x,...will belong to another open set, and therefore will not be a limit point of $U$. - What would be a dense set? I think dense set will be a set consisting of all behaviors ending with stuttering steps - infinite tails where state of the system does not change.