Exercise 102.1.
Induct on 𝐴. Constructors without binders commute with substitution by the induction hypotheses on their immediate components. For a universal, alpha-rename its binder to 𝑦 ∉FV(𝑀) ∪{𝑥}. Then ―――――――――(∀𝑦:𝜏.𝐵)[𝑀/𝑥]=―――――――――――∀𝑦:𝜏[𝑀/𝑥].𝐵[𝑀/𝑥]=∃𝑦:𝜏[𝑀/𝑥].―――――𝐵[𝑀/𝑥]𝐼𝐻=∃𝑦:𝜏[𝑀/𝑥].――𝐵[𝑀/𝑥]=(―――――∀𝑦:𝜏.𝐵)[𝑀/𝑥]. For an existential, use the same fresh 𝑦 and calculate ―――――――――(∃𝑦:𝜏.𝐵)[𝑀/𝑥]=―――――――――――∃𝑦:𝜏[𝑀/𝑥].𝐵[𝑀/𝑥]=∀𝑦:𝜏[𝑀/𝑥].―――――𝐵[𝑀/𝑥]𝐼𝐻=∀𝑦:𝜏[𝑀/𝑥].――𝐵[𝑀/𝑥]=(―――――∃𝑦:𝜏.𝐵)[𝑀/𝑥]. If the outer binder were also named 𝑥, substitution would stop at that binder; if it occurred free in 𝑀, substitution without alpha-renaming would capture it. The fresh 𝑦 makes both sides use the same capture-avoiding operation.
Exercise 102.2.
Let 𝑣3 =𝖼𝗈𝗇𝗌 𝑎(𝖼𝗈𝗇𝗌 𝑏(𝖼𝗈𝗇𝗌 𝑐 𝗇𝗂𝗅)), so Ψ ⊢𝑣3 :𝖵𝖾𝖼(𝐸,3). Two applications of ∃R derive the provider, first with witness 3, then with witness 𝑣3; dually the client uses ∃L twice. The first communication leaves ∃𝑣:𝖵𝖾𝖼(𝐸,3).1, and the second leaves 1. Both cut classifiers are identical after each functional substitution. If 𝑣2 :𝖵𝖾𝖼(𝐸,2) replaces 𝑣3, the first step still fixes the continuation index at three. The term premise Ψ ⊢𝑣2 :𝖵𝖾𝖼(𝐸,3) required by the second ∃R has no derivation, so the trace is rejected before its second communication.
Exercise 102.3.
Take an environment endpoint 𝑦 :∃𝑛 :𝖭𝖺𝗍.1. Rule 𝟏R derives 𝑛 :𝖭𝖺𝗍; ⋅; ⋅ ⟹0 ::𝑧 :1, and 𝟏L adds the inert assumption 𝑦 :1. From that premise, rule ∃L derives the live process ⋅;⋅;𝑦:∃𝑛:𝖭𝖺𝗍.1⟹𝑦(𝑛).0::𝑧:1. It is well typed, offers 1, and is live because it contains the input prefix. It is not closed: its linear environment contains 𝑦. No local reduction applies until a provider sends a witness on 𝑦. Thus every premise of theorem 102.9 except the empty linear context is represented, and the missing premise is exactly what permits the exposed environment action instead of a reduction.
Exercise 102.4.
At index 𝑛 =3, the guard is evaluated before a branch is selected at every unfolding. The successive positive indices 3,2,1 select the message branch, while 0 >0 is false. Thus 𝖺𝗋𝗋𝖺𝗒(𝜏,3)=𝗆𝗌𝗀(𝑆,𝗂𝗇𝗍(3))::𝗆𝗌𝗀(𝑆,𝜏)::=𝗆𝗌𝗀(𝑆,𝜏)::𝗆𝗌𝗀(𝑆,𝜏)::𝖾𝗇𝖽(𝑆). If the guard is changed to 𝑛 ≥0 over the integers, the terminating branch is never reached: at 𝑛 =0 the message branch is selected and the recursive index becomes −1, after which every further index still follows the recursive definition under the erroneous guard. The first wrong branch selection therefore occurs at 𝑛 =0.
Exercise 102.5.
Choose a fresh functional name 𝑎 ∉FV(𝑀) ∪dom(Ψ). The provider ends in ∃R with Ψ⊢𝑀:𝜏,Ψ;Γ;Δ1⟹𝑃::𝑥:𝐴[𝑀/𝑎], and the client ends in ∃L with Ψ,𝑎:𝜏;Γ;Δ2,𝑦:𝐴⟹𝑄::𝑧:𝐶. Before reduction the cut uses the disjoint split Δ1 ⊎Δ2. Functional substitution turns the client premise into Ψ;Γ;Δ2,𝑦:𝐴[𝑀/𝑎]⟹𝑄[𝑀/𝑎]::𝑧:𝐶[𝑀/𝑎]. The principal cut therefore reduces to (𝜈𝑦)(𝑃 ∣𝑄[𝑀/𝑎]), whose provider and client classifiers are both 𝐴[𝑀/𝑎]. Channel substitution removes 𝑦 and retains the same union Δ1 ⊎Δ2; no linear declaration is duplicated.
Exercise 102.6.
The companion prints rejected: expected Vec 2. The failed premise of ∃R is Ψ ⊢𝑀 :𝜏 at 𝜏 =𝖵𝖾𝖼(𝐸,2). Its length-one witness derives only Ψ ⊢𝑤1 :𝖵𝖾𝖼(𝐸,1), so the required premise cannot be constructed. This finite rejection does not establish theorem 102.8: that theorem also assumes that every linear declaration occurs in exactly one premise of each multiplicative rule, a property of complete derivations rather than of one execution trace.
Exercise 102.7.
Use 𝖯𝗈𝗌𝗂𝗍𝗂𝗏𝖾𝖥𝗂𝗇=∃𝑛:𝖭𝖺𝗍.∃𝑝:(𝑛>0).∃𝑖:𝖥𝗂𝗇(𝑛).1. For 𝑛 =2, transmit the canonical proof 𝑝2 :2 >0, then 𝖿𝗓𝖾𝗋𝗈 :𝖥𝗂𝗇(2). Successive substitutions leave ∃𝑝 :(2 >0).∃𝑖 :𝖥𝗂𝗇(2).1, then ∃𝑖 :𝖥𝗂𝗇(2).1, then 1. For a rejected trace, first transmit 1 but next supply 𝑝2 :2 >0. The second ∃R requires a term of type 1 >0, whereas 𝑝2 has type 2 >0; conversion cannot identify the two indices. Alternatively, a later 𝑖 :𝖥𝗂𝗇(2) fails the required 𝖥𝗂𝗇(1) premise. Proof irrelevance would identify proofs already inhabiting one proposition; it would not convert 2 >0 into 1 >0. Adding it changes equality and requires a separate preservation and erasure argument.