···11\taxon{Research Notebook}
22-\title{Linear-time Temporal Properties}
22+\title{Linear-time temporal properties}
33\author{liamoc}
44\transclude{ltp-0002}
55\transclude{ltp-0003}
66+\subtree{
77+ \title{Concerning safety properties}
68\transclude{ltp-0004}
99+\scope{\put\transclude/metadata{true}\transclude{ltp-000B}}
1010+\transclude{ltp-000A}
1111+\transclude{ltp-0009}
1212+\transclude{ltp-000E}
1313+\transclude{ltp-0008}
1414+}
1515+\subtree{
1616+ \title{Concerning guarantee properties}
717\transclude{ltp-0005}
88-\p{The [famous paper](alpern-schneider-1985) of [[alpern]] and [[schneider]] defines a topology where the closed sets are safety properties, and the open sets are the guarantee properties. The closure operator #{\overline{X}} therefore gives the smallest safety property #{\supseteq X}, and the interior operator #{\underline{X}} gives the largest guarantee property #{\subseteq X}. }
99-\p{This space is a metric space, using the standard prefix-agreement metric that one might use for a Baire or Cantor space: }
1010-##{
1111- \begin{array}{l}
1212- d : \Sigma^\omega \times \Sigma^\omega \rightarrow \mathbb{R} \\
1313- d(\sigma,\rho) = 2^{-\sup\{ i \mid \sigma_{0\dots{}i} = \rho_{0\dots{}i}\}} \\
1414- \\
1515- \qquad\text{where}\ 2^{-\infty} = 0
1616-\end{array}}
1717-\p{[[alpern]] and [[schneider]] then go on to prove that all properties are the intersection of \em{safety} and \em{liveness} (i.e. \em{dense} sets, #{\overline{X} = \Sigma^\omega})}1818+\scope{\put\transclude/metadata{true}\transclude{ltp-000D}}
1919+\transclude{ltp-000C}
2020+\transclude{ltp-000G}
2121+\transclude{ltp-000H}
2222+\transclude{ltp-000F}
2323+}
2424+\subtree{
2525+ \title{Properties as a topological space}
2626+ \scope{\put\transclude/metadata{true}\transclude{ltp-0007}}
2727+ \scope{\put\transclude/metadata{true}\transclude{ltp-000I}}
2828+ \scope{\put\transclude/metadata{true}\transclude{ltp-000J}}
2929+ \transclude{ltp-000M}
3030+}
3131+\subtree{
3232+ \title{Concerning liveness properties}
3333+ \transclude{ltp-0006}
3434+ \scope{\put\transclude/metadata{true}\transclude{ltp-000K}}
3535+ \scope{\put\transclude/metadata{true}\transclude{ltp-000L}}
3636+ % closure properties go here?
3737+}
+4-2
trees/ltp/ltp-0002.tree
···11\taxon{Definition}
22-\title{The space #{\Sigma^\omega}}
22+\import{ltp-macros}
33+\title{Traces and behaviours}
34\author{liamoc}
44-\p{Let the set of all possible \em{states} be #{\Sigma}. Then, the set of all possible \em{behaviours} —infinite sequences of states — is #{\Sigma^\omega}. Note that we do not require that #{\Sigma} is finite.}
55+\p{Let the set of all possible \em{states} be #{\Sigma}. Note that we do not require that #{\Sigma} is finite. Then, #{\ftraces} is the set of finite sequences of states. We denote the empty sequence as #{\varepsilon}. The concatenation of two sequences #{t} and #{u} is written #{tu}. }
66+\p{The set of all \em{behaviours} — \em{infinite} sequences of states — is #{\itraces}. We define #{\sigma{}t = \sigma} when the sequence #{\sigma} is infinite. }
57\p{We shall model terminating systems, which have finite behaviours, as behaviours that infinitely repeat their final state.}
+2-1
trees/ltp/ltp-0003.tree
···11\title{Properties}
22\taxon{Definition}
33+\import{ltp-macros}
34\author{liamoc}
44-\p{A property, being a specification of a system, can be thought of as simply a set of behaviours, i.e. a subset of [the space #{\Sigma^\omega}](ltp-0002). A property is \em{satisfied} by a system if all behaviours exhibited by the system are contained within the set. It is \em{violated} by a system if there exists a behaviour exhibited by the system that is not contained within the set. }55+\p{A property, being a specification of a system, can be thought of as simply a set of behaviours, i.e. a subset of [the space #{\itraces{}}](ltp-0002). A property is \em{satisfied} by a system if all behaviours exhibited by the system are contained within the set. It is \em{violated} by a system if there exists a behaviour exhibited by the system that is not contained within the set. }
+1-1
trees/ltp/ltp-0004.tree
···11\taxon{Definition}
22\author{liamoc}
33-\title{Safety Properties}
33+\title{Safety properties}
44\p{A \em{safety} [property](ltp-0003) says that a bad thing does not happen. The "bad thing" in this case is some finite, observable event. In other words, safety properties are those [properties](ltp-0003) whose \em{violation} can be established by examining only a \em{finite} prefix of the behaviour.}
55\p{For example, the safety property "The state #{\mathtt{a}} is never reached" is violated by any finite prefix containing the state #{\mathtt{a}}.}
+5-3
trees/ltp/ltp-0005.tree
···11+\import{ltp-macros}
12\taxon{Definition}
23\author{liamoc}
33-\title{Guarantee Properties}
44-\p{A \em{guarantee} [property](ltp-0003) is the complement of a [safety property](ltp-0004). A guarantee property says that a good thing happens eventually. As with safety properties, the "good thing" is some finite, observable event. In other words, guarantee properties are those [properties](ltp-0003) whose \em{satisfaction} can be established by examining only a \em{finite} prefix of the behaviour.}
55-\p{For example, the guarantee property "The state #{\mathtt{a}} is eventually reached" is satisfied by any finite prefix containing the state #{\mathtt{a}}.}44+\title{Guarantee properties}
55+\p{A \em{guarantee} (or \em{cosafety}) [property](ltp-0003) is the complement of a [safety property](ltp-0004). A guarantee property says that a good thing happens eventually. As with safety properties, the "good thing" is some finite, observable event. In other words, guarantee properties are those [properties](ltp-0003) whose \em{satisfaction} can be established by examining only a \em{finite} prefix of the behaviour.}
66+\p{For example, the guarantee property "The state #{\mathtt{a}} is eventually reached" is satisfied by any finite prefix containing the state #{\mathtt{a}}.}
77+\p{[[lamport]] [originally called](lamport-1977) these \em{liveness} properties, but we use [the more popular definition](ltp-0006) of that term from [Alpern and Schneider](alpern-schneider-1985). }
+6
trees/ltp/ltp-0006.tree
···11+\taxon{Definition}
22+\import{ltp-macros}
33+\author{liamoc}
44+\title{Liveness properties}
55+\p{A \em{liveness} [property](ltp-0003) says that a good thing happens eventually, but unlike [guarantee properties](ltp-0005), the "good thing" need not be some finite, observable event. Rather, liveness properties are those [properties](ltp-0003) whose violation \em{cannot} be established by examining only a \em{finite} prefix of the behaviour. In other words, #{P} is a liveness property iff for any finite prefix #{t \in \ftraces}, there exists an infinite extension #{\sigma \in \itraces} such that #{t\sigma} is in the property #{P}.}
66+\p{For example, the property "Every #{\mathtt{r}}equest state is eventually followed by an #{\mathtt{a}}nswer state" is a liveness property: No matter how many unanswered #{\mathtt{r}}equests are in a finite prefix, we could always see the #{\mathtt{a}}nswer in the future. }
+5
trees/ltp/ltp-0007.tree
···11+\taxon{Construction}
22+\import{ltp-macros}
33+\meta{source}{(from [[alpern-schneider-1985]])}
44+\title{Behaviours as topology}
55+\p{The [space #{\itraces{}}](ltp-0002) forms a topology where [safety properties](ltp-0004) are the closed sets and [guarantee properties](ltp-0005) are the open sets. This follows from \ref{ltp-000C}, \ref{ltp-000G}, and \ref{ltp-000F} (or, equivalently, from \ref{ltp-000A}, \ref{ltp-0009} and \ref{ltp-0008}).}
+7
trees/ltp/ltp-0008.tree
···11+\taxon{Theorem}
22+\import{dt-macros}
33+\import{ltp-macros}
44+\author{liamoc}
55+\title{Safety properties are closed under intersection}
66+\p{For a (possibly infinite) collection of properties #{P_{i \in I}}, if every #{P_i} is a [safety property](ltp-0004) then #{\bigcap_{i \in I} P_i} is a [safety property](ltp-0004). }
77+\proofblock{ Let #{ P_{i \in I}} be a (possibly infinite) family of [safety properties](ltp-0004) and let #{P = \bigcap_{i \in I} P_i}. Take any behaviour #{\sigma \notin P}. Then there exists some #{j \in I} such that #{\sigma \notin P_j}. Since #{P_j} is a [safety property](ltp-0004), there is a finite prefix #{u} of #{\sigma} such that no extension of #{u} lies in #{P_j}. But then no extension of #{u} can lie in #{\bigcap_{i \in I} P_i}, because membership in the intersection requires membership in #{P_j}, which is already ruled out. Hence #{u} is a [bad prefix](ltp-000B) for #{P}, so #{P} is a [safety property](ltp-0004).}
+10
trees/ltp/ltp-0009.tree
···11+\taxon{Theorem}
22+\import{dt-macros}
33+\import{ltp-macros}
44+\author{liamoc}
55+\title{Safety properties are closed under finite union}
66+\p{The union of any two [safety properties](ltp-0004) is a [safety property](ltp-0004). }
77+\proofblock{
88+\p{Let #{P} and #{Q} be [safety properties](ltp-0004). Take any violating behaviour #{\sigma \notin P \cup Q}. Then, #{\sigma \notin P} and #{\sigma \notin Q}. Since #{P} and #{Q} are safety properties, there exist finite prefixes #{t} and #{u} of #{\sigma} such that no extension of #{t} is in #{P} and no extension of #{u} is in #{Q}. Let #{v} be the longer of #{t} and #{u}; then #{v} is still a prefix of #{\sigma}. Any extension of #{v} is also an extension of both [bad prefixes](ltp-000B) #{t} and #{u}, so it is in neither in #{P} nor #{Q}, and hence not in #{P \cup Q}. Thus the violation of #{P} can be established just by examining the [bad prefix](ltp-000B) #{v}, so #{P \cup Q} is a [safety property](ltp-0004).
99+ }
1010+}
+11
trees/ltp/ltp-000A.tree
···11+\taxon{Theorem}
22+\import{dt-macros}
33+\import{ltp-macros}
44+\author{liamoc}
55+\title{Trivial properties are safety properties}
66+\p{The empty property #{\emptyset} and the [property](ltp-0003) #{\itraces} are both [safety properties](ltp-0004).}
77+\proofblock{
88+\p{The property #{\itraces} has no violating [behaviours](ltp-0002), so vacuously all violations can be established by finite prefixes.}
99+\p{For the property #{\emptyset}, all [behaviours](ltp-0002) are violating, so the empty prefix #{\varepsilon} is a [bad prefix](ltp-000B).
1010+}
1111+}
+8
trees/ltp/ltp-000B.tree
···11+\taxon{Definition}
22+\import{dt-macros}
33+\import{ltp-macros}
44+\meta{source}{(from [[kupferman-vardi-2001]])}
55+\title{Bad prefixes}
66+\p{For a [property](ltp-0003) #{P}, the \em{bad prefixes} of #{P} are those finite prefixes #{t \in \ftraces} from which the violation of #{P} can be established, i.e. #{\forall \sigma \in \itraces.\ t\sigma \notin P}.}
77+\p{A [property](ltp-0003) #{P} is a [safety property](ltp-0004) iff all violating [behaviours](ltp-0002) are extensions of bad prefixes.
88+}
+9
trees/ltp/ltp-000C.tree
···11+\taxon{Theorem}
22+\import{dt-macros}
33+\import{ltp-macros}
44+\author{liamoc}
55+\title{Trivial properties are guarantee properties}
66+\p{The empty property #{\emptyset} and the [property](ltp-0003) #{\itraces} are both [guarantee properties](ltp-0005).}
77+\proofblock{
88+\p{Follows from \ref{ltp-000A} as the complement of any [safety property](ltp-0004) is a [guarantee property](ltp-0005).}
99+}
+8
trees/ltp/ltp-000D.tree
···11+\taxon{Definition}
22+\import{dt-macros}
33+\import{ltp-macros}
44+\meta{source}{(from [[kupferman-vardi-2001]])}
55+\title{Good prefixes}
66+\p{For a [property](ltp-0003) #{P}, the \em{good prefixes} of #{P} are those finite prefixes #{t \in \ftraces} from which the satisfaction of #{P} can be established, i.e. #{\forall \sigma \in \itraces.\ t\sigma \in P}.}
77+\p{A [property](ltp-0003) #{P} is a [guarantee property](ltp-0005) iff all satisfying [behaviours](ltp-0002) are extensions of good prefixes.
88+}
+6
trees/ltp/ltp-000E.tree
···11+\taxon{Counterexample}
22+\import{dt-macros}
33+\import{ltp-macros}
44+\author{liamoc}
55+\title{Safety properties are not closed under infinite union}
66+\p{Consider the family of properties #{P_{i \in \mathbb{N}} = \{ \sigma \in \itraces \mid \sigma_i = \texttt{a}\}}, i.e. the property where the #{i}th state is #{\texttt{a}}. Each #{P_i} is a [safety property](ltp-0004), as all violating behaviours are extensions of [bad prefixes](ltp-000B) of length #{i}. Their union #{\bigcup_{i \in \mathbb{N}} P_i}, however, is not a [safety property](ltp-0004), as any finite prefix can be extended to a [good prefix](ltp-000D) by appending an #{\texttt{a}}-state, and therefore cannot be a [bad prefix](ltp-000D). }
+7
trees/ltp/ltp-000F.tree
···11+\taxon{Theorem}
22+\import{dt-macros}
33+\import{ltp-macros}
44+\author{liamoc}
55+\title{Guarantee properties are closed under union}
66+\p{For a (possibly infinite) collection of properties #{P_{i \in I}}, if every #{P_i} is a [guarantee property](ltp-0005) then #{\bigcup_{i \in I} P_i} is a [guarantee property](ltp-0005). }
77+\proofblock{ \p{Let #{ P_{i \in I}} be a (possibly infinite) family of [guarantee properties](ltp-0005). Then each #{\compl{P_i}} is a [safety property](ltp-0004) and therefore #{\bigcap_{i \in I} \compl{P_i}} is a [safety property](ltp-0004) by \ref{ltp-0008}. Its complement #{\compl{(\bigcap_{i \in I} \compl{P_i})} = \bigcup_{i \in I} P_i} is therefore a [guarantee property](ltp-0005).}}
+10
trees/ltp/ltp-000G.tree
···11+\taxon{Theorem}
22+\import{dt-macros}
33+\import{ltp-macros}
44+\author{liamoc}
55+\title{Guarantee properties are closed under finite intersection}
66+\p{The intersection of any two [guarantee properties](ltp-0005) is a [guarantee property](ltp-0005). }
77+\proofblock{
88+\p{Let #{P} and #{Q} be [guarantee properties](ltp-0005). Then #{\compl{P}} and #{\compl{Q}} are [safety properties](ltp-0004). By \ref{ltp-0009} their union #{\compl{P} \cup \compl{Q}} is a [safety property](ltp-0004) and thus its complement #{\compl{(\compl{P} \cup \compl{Q})} = P \cap Q} is a [guarantee property](ltp-0005).
99+ }
1010+}
+6
trees/ltp/ltp-000H.tree
···11+\taxon{Counterexample}
22+\import{dt-macros}
33+\import{ltp-macros}
44+\author{liamoc}
55+\title{Guarantee properties are not closed under infinite intersection}
66+\p{Consider the family of properties #{P_{i \in \mathbb{N}} = \{ \sigma \in \itraces \mid \sigma_i \neq \texttt{a}\}}, i.e. the property where the #{i}th state is not #{\texttt{a}}. Each #{P_i} is a [guarantee property](ltp-0005), as all satisfying behaviours are extensions of [good prefixes](ltp-000D) ending in a non-#{\mathtt{a}} state of length #{i}. Their intersection #{\bigcap_{i \in \mathbb{N}} P_i}, however, is not a [guarantee property](ltp-0005), as any finite prefix can be extended to a [bad prefix](ltp-000B) by appending an #{\texttt{a}}-state, and therefore cannot be a [good prefix](ltp-000D). }
+9
trees/ltp/ltp-000I.tree
···11+\taxon{Definition}
22+\import{dt-macros}
33+\import{ltp-macros}
44+\title{Guarantee kernel}
55+\meta{source}{(from [[amjad-vanglabbeek-oconnor-2026]])}
66+\p{Given a [property](ltp-0003) #{P \subseteq \itraces}, the \em{guarantee kernel} of #{P}, written #{\gk{P}}, is the largest subset of #{P} which is a [guarantee property](ltp-0005). That is, #{\gk{P}} is the set of all infinite extensions of the [good prefixes](ltp-000D) of #{P}. }
77+\p{It follows that #{P} is a [guarantee property](ltp-0005) iff #{\gk{P} = P}.}
88+\p{This is a kernel operator, so it is co-extensive (#{\gk{P} \subseteq P}), idempotent (#{\gk{\gk{P}} = \gk{P}}), and monotonic (#{P \subseteq R} implies #{\gk{P} \subseteq \gk{R}}). }
99+\p{[Topologically speaking](ltp-0007), the guarantee kernel is the \em{interior operator}.}
+9
trees/ltp/ltp-000J.tree
···11+\taxon{Definition}
22+\import{dt-macros}
33+\import{ltp-macros}
44+\title{Safety closure}
55+\meta{source}{(from [[alpern-schneider-1985]])}
66+\p{Given a [property](ltp-0003) #{P \subseteq \itraces}, the \em{safety closure} of #{P}, written #{\sc{P}}, is the smallest superset of #{P} which is a [safety property](ltp-0004). It is the dual of the [guarantee kernel](ltp-000I), so #{\gk{\compl{P}} = \compl{\sc{P}}}. This means that the safety closure of #{P} contains all behaviours which cannot be shown to violate #{P} by a finite [bad prefix](ltp-000B).}
77+\p{It follows that #{P} is a [safety property](ltp-0004) iff #{\sc{P} = P}.}
88+\p{This is a closure operator, so it is extensive (#{\sc{P} \supseteq P}), idempotent (#{\sc{\sc{P}} = \sc{P}}), and monotonic (#{P \subseteq R} implies #{\sc{P} \subseteq \sc{R}}). }
99+\p{[Topologically speaking](ltp-0007), the safety closure is the (limit-)\em{closure}.}
+9
trees/ltp/ltp-000K.tree
···11+\taxon{Theorem}
22+\import{dt-macros}
33+\import{ltp-macros}
44+\title{Liveness properties are dense}
55+\meta{source}{(from [[alpern-schneider-1985]])}
66+\p{In the [topology of properties](ltp-0007), a property #{P} is a [liveness property](ltp-0006) iff #{P} is dense. In other words, when the [safety closure](ltp-000J) #{\sc{P} = \itraces}.}
77+\proofblock{
88+\p{ If #{\sigma \in \sc{P}} that means no finite prefix of #{\sigma} can be used to rule out #{P}, i.e. every prefix of #{\sigma} can be extended in some way to a behaviour in #{P}. If #{\sc{P} = \itraces}, this means that \em{every} finite prefix can be extended to a behaviour in #{P}, which is exactly the definition of a [liveness property](ltp-0006).
99+}}
+18
trees/ltp/ltp-000L.tree
···11+\taxon{Theorem}
22+\import{dt-macros}
33+\import{ltp-macros}
44+\title{Safety-liveness decomposition}
55+\meta{source}{(from [[alpern-schneider-1985]])}
66+\p{Every [property](ltp-0003) is the intersection of a [safety](ltp-0004) and a [liveness](ltp-0006) property.}
77+\proofblock{
88+\p{Let #{P} be a property. Then, let #{L} = #{\compl{(\sc{P} \setminus P)}}. Then: }
99+##{\begin{array}{lcl}
1010+L \cap \sc{P} & = & \compl{(\sc{P} \setminus P)} \cap \sc{P} \\
1111+& = & (\compl{\sc{P}} \cup P) \cap \sc{P} \\
1212+& = & (\compl{\sc{P}} \cap \sc{P}) \cup (P \cap \sc{P}) \\
1313+& = & \emptyset \cup (P \cap \sc{P}) \\
1414+& = & P
1515+\end{array}}
1616+\p{The set #{\sc{P}} is clearly [closed](ltp-000J) and therefore a [safety property](ltp-0004). It remains to show that #{L} is [dense](ltp-000K) (and therefore a [liveness property](ltp-0006)). }
1717+\p{Assume for contradiction that #{A = \compl{(\sc{P}\setminus P)}} is not [dense](ltp-000K), so there exists #{\sigma \in \itraces} such that #{\sigma \notin \sc{A}}. By our definition of [safety closure](ltp-000J), some finite prefix #{u} of #{\sigma} is a [bad prefix](ltp-000B) of #{A}, meaning no extension of #{u} lies in #{A}. Hence every extension of #{u} lies in #{\sc{P} \setminus P}, i.e. every extension of #{u} lies in #{\sc{P}} but not in #{P}. Because every extension of #{u} lies in #{\sc{P}}, #{u} cannot finitely refute #{P}, so every extension of #{u} must be extendable to some trace in #{P}, contradicting that no extension of #{u} lies in #{P}. Therefore no such #{u} exists, so every [behaviour](ltp-0002) #{\sigma} is in #{\sc{A}}, and #{A} is [dense](ltp-000K).
1818+}}
+16
trees/ltp/ltp-000M.tree
···11+\taxon{Theorem}
22+\import{dt-macros}
33+\import{ltp-macros}
44+\author{liamoc}
55+\title{A metric space of properties}
66+\p{The [topological space of properties](ltp-0007) is a metric space by the following metric, standard for Cantor or Baire spaces:}
77+##{d(\sigma,\rho) = \begin{cases} 0 & \text{if}\ \sigma = \rho \\
88+ 2^{-\startverb\!\stopverb\sup\{\ \ell\ \mid\ \forall i < \ell.\ \sigma_i = \rho_i\}} & \text{otherwise}\end{cases}}
99+\p{The function #{d} is a valid metric as #{d(\sigma,\rho) = 0} iff #{\sigma = \rho}, #{d} is symmetric, and the triangle inequality holds: ##{d(\sigma,\rho) \leq d(\sigma,\tau) + d(\tau,\rho)}}
1010+\proofblock{
1111+ It suffices to show that a [property](ltp-0003) #{P} is a [guarantee property](ltp-0005) (i.e. [open](ltp-0007)) iff #{P} is open in the metric topology, i.e. #{\forall \sigma \in P.\ \exists \varepsilon > 0.\ \{ \rho \mid d(\sigma,\rho) < \varepsilon \} \subseteq P }.
1212+ \ul{
1313+ \li{#{\implies\startverb\!:\stopverb} Assume #{P} is a [guarantee property](ltp-0005). Let #{\sigma \in P}. Then, because #{P} is guarantee, there must exist some finite prefix #{p} of #{\sigma} which is [good](ltp-000D) for #{P}, i.e. all extensions of #{p} are in #{P}. Set #{r = |p| - 1} and #{\varepsilon = 2^{-r}}. Then the metric ball of radius #{\varepsilon}, i.e. #{\{ u \mid d(t,u) < \varepsilon \}}, is the set of all infinite extensions of #{p}, because #{d(\sigma,\rho) < 2^{-r}} iff #{\sigma} and #{\rho} agree for a prefix of length #{r + 1} — that is, #{p}. Since #{\sigma} was arbitrary, this shows that #{\forall \sigma \in P.\ \exists \varepsilon > 0.\ \{ \rho \mid d(\sigma,\rho) < \varepsilon \} \subseteq P} as required.}
1414+ \li{#{\impliedby\startverb\!:\stopverb} Assume #{P} is open in the metric topology, i.e. that #{\forall \sigma \in P.\ \exists \varepsilon > 0.\ \{ \rho \mid d(\sigma,\rho) < \varepsilon \} \subseteq P}. We shall show that #{P} is a [guarantee property](ltp-0005), by showing that it is contained in its [guarantee kernel](ltp-000I) #{P \subseteq \gk{P}}. Assume #{\sigma \in P}. Let #{\varepsilon > 0} be such that #{\{ \rho \mid d(\sigma,\rho) < \varepsilon \} \subseteq P }. By the Archimedean property, there must be some natural number #{r} such that #{2^{-r} < \varepsilon}. The ball of radius #{2^{-r}}, i.e. #{\{ \rho \mid d(\sigma,\rho) < 2^{-r} \}} is therefore contained within the ball of radius #{\varepsilon}, which, by our openness assumption, must in turn be contained within #{P}. Because #{d(\sigma,\rho) < 2^{-r}} iff #{\sigma} and #{\rho} agree for a prefix of length #{r + 1}, let #{p} be a prefix of #{\sigma} of length #{r + 1}. Then the ball of radius #{2^{-r}} is exactly all infinite extensions of #{p}. As our openness assumption says that this ball is a subset of #{P}, all infinite extensions of #{p} are therefore in #{P} and thus #{p} is a [good prefix](ltp-000D) of #{P}. This shows, as #{\sigma} was arbitrary, that all #{\sigma \in P} are the extension of some [good prefix](ltp-000D), and therefore that #{\sigma \in \gk{P}}. Therefore #{P \subseteq \gk{P}} and {P} is a [guarantee property](ltp-0005).}
1515+}
1616+}
···11+\title{Moshe Vardi}
22+\taxon{Person}
33+\meta{external}{https://www.cs.rice.edu/~vardi/}
44+\meta{institution}{[[rice]]}
55+\meta{orcid}{0000-0002-0661-5773}
66+\meta{position}{Karen Ostrum George Distinguished Service Professor}
+5
trees/places/fmsd.tree
···11+\title{Formal Methods in System Design}
22+\taxon{Journal}
33+\meta{external}{https://link.springer.com/journal/10703}
44+55+\p{Formal Methods in System Design is a journal dedicated to presenting the latest advancements in formal methods for hardware and software system design.}