Exercise 88.1.
For return 2, the target transition is [2,1]𝖽𝖾𝗊/2[1]. The state [1,2] has only a return-1 dequeue transition, so it is rejected. The inhabited successor predicate is therefore the singleton state [1].
Exercise 88.2.
For the empty predicate 𝑄, the assertion “every 𝜎 satisfying 𝑄 has a predecessor” is true because there is no such 𝜎. The assertion ∃𝜎. 𝑄(𝜎) is false. Deleting that existential would let an impossible concrete return update every precondition to 𝑄 and then discharge every later universal obligation by vacuity. The nonemptiness clause blocks exactly this derivation.
Exercise 88.3.
Let P𝑖(𝑠,𝑃) mean that the lock owner in 𝑠 is none or 𝑖. Suppose an R𝑖 step leaves owner 𝑖 unchanged and may change none only to none. From owner none, the result is none and P𝑖 holds; from owner 𝑖, the result is 𝑖 and P𝑖 holds. These two cases prove stability. If the rely restriction is deleted, another thread 𝑗 may change owner 𝑖 to owner 𝑗. The initial state satisfies P𝑖 and the final state does not, so that step is a counterexample.
Exercise 88.4.
Choose 𝜎0 with 𝑌(𝜎0). For each 𝜎 satisfying 𝑌, define 𝜏𝜎 by (𝜏𝜎)𝑆:=𝜎𝑆,(𝜏𝜎)𝐶(𝑗):={𝖢𝖺𝗅𝗅𝖨𝖽𝗅𝖾,𝑗=𝑖,𝜎𝐶(𝑗),𝑗≠𝑖,(𝜏𝜎)𝑅(𝑗):={𝖱𝖾𝗍𝖨𝖽𝗅𝖾,𝑗=𝑖,𝜎𝑅(𝑗),𝑗≠𝑖. The hypotheses on 𝜎 give the two pre-consumption clauses of the consumption relation in definition 88.6; the definitions give its other five clauses. Hence 𝖢𝗈𝗇𝗌𝗎𝗆𝖾𝖲𝖾𝗍𝑖,𝑚,𝑣(𝑌)(𝜏𝜎0), which proves inhabitation. For any consumed 𝜏, its witness 𝜎 and the seven conjuncts of 𝖢𝗈𝗇𝗌𝗎𝗆𝖾𝑖,𝑚,𝑣 give idle entries at 𝑖, equality 𝜏𝑆 =𝜎𝑆, and 𝜏𝐶(𝑗) =𝜎𝐶(𝑗) and 𝜏𝑅(𝑗) =𝜎𝑅(𝑗) for every 𝑗 ≠𝑖. These are exactly the reset-map facts requested; no relational postcondition or guarantee has been postulated.
Exercise 88.5.
In state 𝖴𝖢𝖺𝗅𝗅(𝑚,𝑢,𝑘), every retained possibility has the overlay call for 𝑚 recorded and the call-commit postcondition for 𝑢. When the underlay returns 𝑣, the return-commit premise of LHL-Vis advances to an inhabited predicate in which thread 𝑖 records the target return and every 𝑗 ≠𝑖 retains its call and return components. The concrete thread state becomes 𝖢𝗈𝗇𝗍(𝑚,𝑘(𝑣)). Relational composition of the call and return postconditions supplies the precondition of the continuation judgment for 𝑘(𝑣). Hence the resulting state satisfies the continuation case of the soundness invariant.
Exercise 88.6.
Clauses one and two of I permit a predicate containing only the reachable possibility [2,1] after the two enqueues: it has the correct concrete prefix and was reached by compatible updates. Without clause three, the equally compatible state [1,2] need not be retained. When the concrete dequeue returns 1, [2,1] has no matching target successor, so update nonemptiness fails. Clause three requires every compatible target continuation to have a represented prefix and therefore forces [1,2] to remain until the return is observed. The weakened invariant fails; the completeness theorem, which uses all three clauses, is unaffected.