Exercise 86.1.
Two uses of (Bind-Tau) give 𝖻𝗂𝗇𝖽(𝖳𝖺𝗎(𝖳𝖺𝗎(𝖱𝖾𝗍(3))),𝑘)(𝐵𝑖𝑛𝑑−𝑇𝑎𝑢)≡𝖳𝖺𝗎(𝖻𝗂𝗇𝖽(𝖳𝖺𝗎(𝖱𝖾𝗍(3)),𝑘))(𝐵𝑖𝑛𝑑−𝑇𝑎𝑢)≡𝖳𝖺𝗎(𝖳𝖺𝗎(𝖻𝗂𝗇𝖽(𝖱𝖾𝗍(3),𝑘)))(𝐵𝑖𝑛𝑑−𝑅𝑒𝑡)≡𝖳𝖺𝗎(𝖳𝖺𝗎(𝑘(3))). All three steps are judgmental bind computations. Two finite applications of Eutt-TauL then give 𝖾𝗎𝗍𝗍(𝖳𝖺𝗎(𝖳𝖺𝗎(𝑘(3))),𝑘(3)); that last relation is weak equivalence, not judgmental equality.
Exercise 86.2.
Let 𝐵(𝑡,𝑢) relate only the pair (𝖻𝗂𝗇𝖽(𝗌𝗉𝗂𝗇,𝑘),𝗌𝗉𝗂𝗇). Unfolding both components once gives 𝖻𝗂𝗇𝖽(𝗌𝗉𝗂𝗇,𝑘)≡𝖻𝗂𝗇𝖽(𝖳𝖺𝗎(𝗌𝗉𝗂𝗇),𝑘)(𝐵𝑖𝑛𝑑−𝑇𝑎𝑢)≡𝖳𝖺𝗎(𝖻𝗂𝗇𝖽(𝗌𝗉𝗂𝗇,𝑘)),𝗌𝗉𝗂𝗇≡𝖳𝖺𝗎(𝗌𝗉𝗂𝗇). The two continuations are again in 𝐵, so matched-silent coinduction proves strong bisimilarity.
Suppose 𝖾𝗎𝗍𝗍(𝗌𝗉𝗂𝗇,𝖱𝖾𝗍(𝑏)). A finite number of Eutt-TauL uses leaves the left observation equal to 𝖳𝖺𝗎(𝗌𝗉𝗂𝗇) again. The right observation is a return. Neither Eutt-Ret, Eutt-Vis, nor Eutt-Tau aligns these forms, and Eutt-TauR cannot apply to a return. Hence no one-layer witness exists. Termination sensitivity is exactly the requirement that asymmetric silent stripping occurs in a finite inductive derivation.
Exercise 86.3.
Let 𝐺 carry state and output events. Define 𝐻(𝖱𝖾𝖺𝖽):=𝖵𝗂𝗌(𝖦𝖾𝗍,𝖱𝖾𝗍),𝐽(𝖶𝗋𝗂𝗍𝖾(𝑛)):=𝖵𝗂𝗌(𝖤𝗆𝗂𝗍(𝑛),𝜆𝑢.𝖱𝖾𝗍(𝑢)). Their copair sends 𝗂𝗇𝗅(𝖱𝖾𝖺𝖽) to 𝐻 and 𝗂𝗇𝗋(𝖶𝗋𝗂𝗍𝖾(𝑛)) to 𝐽. For the program that reads and writes its answer, 𝗂𝗇𝗍𝖾𝗋𝗉([𝐻,𝐽],𝖵𝗂𝗌(𝗂𝗇𝗅(𝖱𝖾𝖺𝖽),𝜆𝑥.𝖵𝗂𝗌(𝗂𝗇𝗋(𝖶𝗋𝗂𝗍𝖾(𝑥)),𝖱𝖾𝗍)))≡𝖵𝗂𝗌(𝖦𝖾𝗍,𝜆𝑥.𝖵𝗂𝗌(𝖤𝗆𝗂𝗍(𝑥),𝖱𝖾𝗍)). The outer 𝗂𝗇𝗅 selects 𝐻 before the read continuation receives 𝑥; the inner 𝗂𝗇𝗋 selects 𝐽 after that substitution. Removing the tags would leave no branch-selection datum.
Exercise 86.4.
Use the coinductive relation containing, for each 𝑡, (𝗆𝖺𝗉(𝑔,𝗆𝖺𝗉(𝑓,𝑡)),𝗆𝖺𝗉(𝑔∘𝑓,𝑡)). At 𝑡 =𝖱𝖾𝗍(𝑎), both sides compute to 𝖱𝖾𝗍(𝑔(𝑓(𝑎))). At 𝑡 =𝖵𝗂𝗌(𝑒,𝑘), the two sides compute to visible nodes with the same 𝑒; their continuations are the displayed pair at 𝑘(𝑥), so Eutt-Vis applies. At 𝑡 =𝖳𝖺𝗎(𝑢), both sides compute to one 𝖳𝖺𝗎 around the displayed pair at 𝑢, so Eutt-Tau applies. If the given weak witness first strips a silent node on only one side, restore it with Eutt-TauL or Eutt-TauR. These cases form a post-fixed point, and coinduction proves the fusion equation.
Exercise 86.5.
Use 𝑆2(𝑡,𝑣):=∃𝑢.𝖾𝗎𝗍𝗍(𝑡,𝑢) ∧𝖾𝗎𝗍𝗍(𝑢,𝑣). Suppose the left witness strips two silent nodes and the right witness strips one before exposing aligned nodes 𝑡0,𝑢0,𝑣0. Apply the matching return, visible, or paired-silent generator to 𝑡0 and 𝑣0; in a visible case, use the coinduction hypothesis pointwise on their continuations. Restore the left constructors by two applications of Eutt-TauL. Restore the right constructor by one application of Eutt-TauR. Thus the outer result lies in 𝖤𝗎𝗍𝗍𝖥(𝑆2, −, −). Finiteness of the three restorations is the side condition needed by the nested fixed-point definition.
Exercise 86.6.
Define the write handler 𝐷(𝖶𝗋𝗂𝗍𝖾(𝑛)):=𝖵𝗂𝗌(𝖶𝗋𝗂𝗍𝖾(𝑛),𝜆𝑢.𝖵𝗂𝗌(𝖶𝗋𝗂𝗍𝖾(𝑛),𝖱𝖾𝗍)), and let it preserve reads. A source prefix 𝖱𝖾𝖺𝖽;𝖶𝗋𝗂𝗍𝖾(3);𝖱𝖾𝖺𝖽;𝖶𝗋𝗂𝗍𝖾(5) becomes 𝖱𝖾𝖺𝖽;𝖶𝗋𝗂𝗍𝖾(3);𝖶𝗋𝗂𝗍𝖾(3);𝖱𝖾𝖺𝖽;𝖶𝗋𝗂𝗍𝖾(5);𝖶𝗋𝗂𝗍𝖾(5). Each doubled pair follows from (Interp-Vis) and two bind computations.
The host equation 𝑝:=𝑝 has no enclosing 𝖳𝖺𝗎 and no visible continuation. It therefore supplies no outer observation and violates the guard condition of definition 86.1. The frozen interpreter does not admit it as an interaction tree.