exercise 41.1.
Let 𝛼 have auxiliary ports 𝛼1,𝛼2, and let 𝛽 have auxiliary port 𝛽1. Join 𝛼2 to 𝛽1. The three free ports are then the two principal ports 𝛼0,𝛽0 and the remaining auxiliary port 𝛼1. For example, 𝐼=(𝛼0,𝛼1,𝛽0)and𝐼′=(𝛽0,𝛼0,𝛼1) are two interfaces on the same underlying partial matching. They specify different positions at which a surrounding net must reconnect those ports. Joining 𝛼0 to 𝛽0 creates the active pair 𝛼 ⋈𝛽. That second wire consumes two previously free ports, so the new interface has the single entry (𝛼1).
exercise 41.2.
Name the three successor agents of the first addend 𝑆1,𝑆2,𝑆3, from root to zero, and name the three fresh output tails 𝑠1,𝑠2,𝑠3. The trace is 𝐴(――2,𝑟)⋈𝑆1(𝑆2(𝑆3(𝑍)))⟶𝐼𝑟=𝑆(𝑠1),𝐴(――2,𝑠1)⋈𝑆2(𝑆3(𝑍))⟶𝐼𝑟=𝑆(𝑆(𝑠2)),𝐴(――2,𝑠2)⋈𝑆3(𝑍)⟶𝐼𝑟=𝑆(𝑆(𝑆(𝑠3))),𝐴(――2,𝑠3)⋈𝑍⟶𝐼𝑟=𝑆(𝑆(𝑆(――2)))=――5. Each successor interaction inherits an ordered three-port boundary. It is (𝑦,𝑟𝑖,𝑥𝑖): 𝑦 is the unchanged root of ――2, 𝑟𝑖 is the current result wire, and 𝑥𝑖 leads to the predecessor constructor. The final 𝐴 ⋈𝑍 interaction has ordered boundary (𝑦,𝑟3) and splices those two wires. There are three successor interactions and one zero interaction, hence 3 +1 =4 steps, as the addition proposition predicts.
exercise 41.3.
Let 𝑁=𝐶[𝐴(𝑦,𝑟)⋈𝑆(𝑥),𝐴(𝑦′,𝑟′)⋈𝑍], where the two displayed pairs have disjoint agent occurrences and 𝐶 is their surrounding wiring context. Contracting the first pair gives 𝑀1=𝐶[𝑟=𝑆(𝑠),𝐴(𝑦,𝑠)⋈𝑥,𝐴(𝑦′,𝑟′)⋈𝑍]. The second pair is unchanged, so its contraction gives 𝑃=𝐶[𝑟=𝑆(𝑠),𝐴(𝑦,𝑠)⋈𝑥,𝑦′=𝑟′]. In the other order, 𝑀2=𝐶[𝐴(𝑦,𝑟)⋈𝑆(𝑥),𝑦′=𝑟′]⟶𝐼𝐶[𝑟=𝑆(𝑠′),𝐴(𝑦,𝑠′)⋈𝑥,𝑦′=𝑟′]=𝑃′. The isomorphism 𝑃 ≅𝑃′ fixes every old port and sends the one fresh internal name 𝑠 to 𝑠′. If two rules were allowed for the same unordered symbol pair, the coincident-redex case in theorem 41.9 would no longer imply isomorphic contracta; that is the exact failed line.
exercise 41.4.
The new left side Ω ⋈Ω still has a unique rule. For two distinct redexes, disjointness and commutation are unchanged. For the same redex, both reductions use that unique rule and create isomorphic fresh copies. Thus the proof of theorem 41.9 applies verbatim.
Starting from 𝑁0 =Ω ⋈Ω, the rule produces a fresh isomorphic active pair 𝑁1, then 𝑁2, and so on: 𝑁0⟶𝐼𝑁1⟶𝐼𝑁2⟶𝐼⋯. Hence the system is not strongly normalizing. Confluence asks whether two finite reducts can be joined; here any 𝑁𝑖,𝑁𝑗 join at 𝑁max(𝑖,𝑗). Uniqueness of normal forms is conditional on a normal form existing, and this component has none.
exercise 41.5.
The six orders are 𝑟𝑠𝑡,𝑟𝑡𝑠,𝑠𝑟𝑡,𝑠𝑡𝑟,𝑡𝑟𝑠,𝑡𝑠𝑟. The one-step diamond permits an adjacent swap of distinct residuals: 𝑟𝑠𝑡↔𝑠𝑟𝑡↔𝑠𝑡𝑟↔𝑡𝑠𝑟↔𝑡𝑟𝑠↔𝑟𝑡𝑠↔𝑟𝑠𝑡. Each swap compares the two sides of one commuting square, so all six endpoints are isomorphic. Every sequence has three steps because each initial redex has one residual until contracted.
A redex created by contracting 𝑟 was not a member of the selected frontier {𝑟,𝑠,𝑡}. A sequence that also contracts it has more than three steps and is not a development of that set under definition 41.11. The adjacent-swap proof says nothing about whether that new redex exists in schedules where 𝑟 has not yet been contracted.
exercise 41.6.
For (𝜆𝑥.𝑥)𝑢, the translated application and abstraction form 𝖠𝗉𝗉(T(𝑢),𝑟)⋈𝖫𝖺𝗆(𝑥,𝑥). The interaction splices T(𝑢) to the unique binder wire 𝑥 and the body wire 𝑥 to 𝑟. Eliminating the resulting wire splice leaves T(𝑢), which is T(𝑥[𝑢/𝑥]).
For (𝜆𝑥.𝜆𝑦.𝑥 𝑦)𝑢, the outer rule again connects the argument root to the unique 𝑥-port, but leaves the inner 𝖫𝖺𝗆 and 𝖠𝗉𝗉 agents intact. The result has the translation tree for (𝜆𝑦.𝑥𝑦)[𝑢/𝑥]=𝜆𝑦.𝑢𝑦, with the same free-variable interface as T(𝑢).
The body 𝑥 𝑥 has two free occurrences of 𝑥. A Lam agent supplies one binder auxiliary port, and a port belongs to at most one wire. It cannot be spliced simultaneously to both occurrences. A full encoding must therefore add explicit duplication agents and their rules; the two-agent linear beta rule alone is insufficient.
exercise 41.7.
Write ――2 =𝑆1(𝑆2(𝑍)). Erasure is 𝐸⋈𝑆1(𝑆2(𝑍))⟶𝐼𝐸⋈𝑆2(𝑍)⟶𝐼𝐸⋈𝑍⟶𝐼∅. Each 𝐸 ⋈𝑆 redex exposes the single child wire 𝑥, so both its left and right boundaries are (𝑥). The final 𝐸 ⋈𝑍 redex has empty boundary on both sides. There are three agents in ――2 and three interactions.
For ――1 =𝑆(𝑍), start with 𝐷(ℓ,𝑟) ⋈𝑆(𝑥). The first rule has ordered boundary (ℓ,𝑟,𝑥) and yields ℓ=𝑆(ℓ1),𝑟=𝑆(𝑟1),𝐷(ℓ1,𝑟1)⋈𝑍. The remaining redex has boundary (ℓ1,𝑟1) and yields ℓ1 =𝑍, 𝑟1 =𝑍. The outputs are two disjoint copies ℓ =――1 and 𝑟 =――1. The two original agents account for the two interactions.
The induction in proposition 41.16 decomposes a tree into disjoint child subtrees. In a shared diamond, two child wires can reach the same agent, so separate induction calls would count and copy that occurrence twice. In a cycle there is no finite constructor-tree height on which to induct. Neither graph satisfies the proposition’s hypothesis.
exercise 41.8.
In (𝜆𝑥.𝑍)――2, the template has 𝑘 =0. The binder is therefore attached to 𝐸. After the one 𝖠𝗉𝗉 ⋈𝖫𝖺𝗆 interaction, the manager trace is 𝐸⋈𝑆(𝑆(𝑍))⟶𝐼𝐸⋈𝑆(𝑍)⟶𝐼𝐸⋈𝑍⟶𝐼∅. The body root remains 𝑍, so the final net is Tres(𝑍). Since |――2| =3, the manager count is 𝑐(0,――2) =3.
For (𝜆𝑥.𝐶(𝑥,𝐶(𝑥,𝑥)))――1, choose the fixed left-associated manager tree whose root duplicator feeds the first occurrence directly and a second duplicator; the latter feeds occurrences two and three. The argument has two constructors, 𝑆 and 𝑍. The root manager performs 𝐷⋈𝑆⟶𝐼𝐷⋈𝑍⟶𝐼(――1,――1). One output is installed at the first 𝑥-port. The other meets the second manager and repeats the same two interactions, producing the copies for the remaining two ports. Thus the four manager interactions produce Tres(𝐶(――1,𝐶(――1,――1))),𝑐(3,――1)=(3−1)|――1|=2⋅2=4. The order of the two complete duplicator developments can change, but theorem 41.12 fixes their common endpoint.
A lambda graph is not a closed constructor tree: it may contain binders, sharing, cycles, and manager agents for which the 𝐸/𝐷 constructor schemas have not been defined. Replacing the argument by such a graph violates the hypothesis rather than extending the theorem.
exercise 41.9.
The unordered pairs with repetition from three symbols are {𝜀,𝜀}, {𝜀,𝛾}, {𝜀,𝛿}, {𝛾,𝛾}, {𝛿,𝛿}, {𝛾,𝛿}. Their boundary equations are 𝜀⋈𝜀⟶IC∅,𝜀⋈𝛾(𝑎1,𝑎2)⟶IC𝑎1=𝜀, 𝑎2=𝜀,𝜀⋈𝛿(𝑎1,𝑎2)⟶IC𝑎1=𝜀, 𝑎2=𝜀,𝛾(𝑎1,𝑎2)⋈𝛾(𝑏1,𝑏2)⟶IC𝑎1=𝑏2, 𝑎2=𝑏1,𝛿(𝑎1,𝑎2)⋈𝛿(𝑏1,𝑏2)⟶IC𝑎1=𝑏1, 𝑎2=𝑏2. For the mixed pair, with four fresh wire names, 𝑎1=𝛿(𝑝11,𝑝21),𝑎2=𝛿(𝑝12,𝑝22),𝑏1=𝛾(𝑝11,𝑝12),𝑏2=𝛾(𝑝21,𝑝22). Every old endpoint 𝑎1,𝑎2,𝑏1,𝑏2 occurs once on each side. Every 𝑝𝑖𝑗 occurs twice on the right: once at auxiliary port 𝑖 of the 𝑗-th new 𝛿 and once at auxiliary port 𝑗 of the 𝑖-th new 𝛾. Hence the mixed right side is a four-agent grid with no dangling or triply incident wire.
The 𝛾-self rule crosses intrinsic positions while the 𝛿-self rule preserves them. Transposing only one new agent in the mixed grid changes which two auxiliary ports a 𝑝𝑖𝑗 joins. Since auxiliary-port order belongs to the signature, that is a different rule even if a reflected drawing looks similar.
exercise 41.10.
Write the two streams as 𝛼(𝐴) and 𝛽(𝐵), where 𝐴,𝐵 are their tails. With both heads at the principal ports of 𝖺𝗆𝖻, the first selection has two outcomes: 𝖠𝖬(𝛼(𝐴),𝛽(𝐵))⟶Amb−0𝛼(𝖠𝖬(𝐴,𝛽(𝐵))) or 𝖠𝖬(𝛼(𝐴),𝛽(𝐵))⟶Amb−1𝛽(𝖠𝖬(𝛼(𝐴),𝐵)). The first branch preserves the whole right input 𝛽(𝐵); the second preserves the whole left input 𝛼(𝐴). If 𝐴 =𝛼′(𝐴′), the next left selection exposes 𝛼′ and leaves 𝖠𝖬(𝐴′,𝛽(𝐵)). The symmetric calculation applies to 𝐵. Thus each selected head recreates the merge state around the two remaining tails.
Nothing requires the next selection to alternate inputs. An infinite run may repeatedly select one ready side, so the calculation is not a fairness proof. The two displayed first steps also expose different root agents when 𝛼 ≠𝛽; with terminating tails they give the nonjoinable peak of proposition 41.19. Recursive restoration therefore proves the merge protocol’s shape, not strong confluence.
exercise 41.11.
Suppose 𝛼(⃗𝑥) :𝜎−𝑠. Fernández–Khalil’s Example 4.12 assigns 𝑦 :𝜎−𝑠, 𝑧 :𝜎𝑠, and 𝑧′ :𝜎𝑠. An instance of Graft-amb therefore assigns both principal ports of 𝖺𝗆𝖻(𝑧,𝑧′) the type 𝜎𝑠. Selecting the first port gives the source’s actual active equation: Γ,(−,𝑦)𝖺𝗆𝖻(𝑧,𝑧′):𝜎𝑠Δ,𝛼(⃗𝑥):𝜎−𝑠Γ,Δ,(−,𝑦)𝖺𝗆𝖻(𝑧,𝑧′)=𝛼(⃗𝑥):⋄Cut. The corresponding rule’s right-hand-side wiring relays 𝛼(⃗𝑥) to the main output and relays the unselected principal connection through 𝑦. Selecting the second port uses the other, identically typed conclusion component of Graft-amb; the derivation is the same after exchanging the two principal positions. Thus both rules cut the active type pair 𝜎𝑠,𝜎−𝑠 while preserving the boundary types 𝑦 :𝜎−𝑠, 𝑧 :𝜎𝑠, and 𝑧′ :𝜎𝑠.
For the failed cycle, connect the principal outputs of two agents whose Graft conclusions both assign 𝜏+ around a directed two-edge cycle. Each edge would require an instance of Cut with premises 𝜏+ and 𝜏−, but the cycle supplies 𝜏+ at both ends. Equating them would require + = −, so there is no derivation. Typed deadlock freedom excludes that principal cycle. It says nothing about uniqueness of an enabled rule: a well-typed 𝖺𝗆𝖻 may still have two simultaneously enabled, type-preserving interactions, which is exactly the peak excluded from the deterministic diamond proof.
exercise 41.12.
Suppose a rule creates a candidate principal wire 𝑝–𝑞 and enqueues it. Before that entry reaches the head, another interaction may consume 𝑝, reconnecting its former boundary peer elsewhere. On dequeue, either 𝑝 no longer exists or its current mate is not 𝑞. Endpoint-existence and mutual-connection validation therefore reject the stale entry before any rewrite. This is the safety part of the invariant.
Initial coverage is a separate base case. If the initial graph contains a live redex 𝑎 ⋈𝑏 but the initial queue is empty, no rewrite occurs and no rewiring event exists that could enqueue it. Validation and fairness cannot manufacture the missing candidate.
For enqueue preservation, let a rule reconnect two surviving principal ports 𝑎,𝑏 for which a rule exists, but omit the enqueue operation. If no other queue entry names that wire, the resulting live redex is never presented to the scheduler. Validation cannot recover a candidate it never sees. This violates the inductive completeness step. Finally, an enqueued, valid, permanently live candidate can still starve under an unfair queue that always chooses newer entries; fairness is the separate hypothesis that excludes that execution. Thus initial coverage handles old redexes, enqueue preservation handles new ones, validation supplies safety, and fairness supplies eventual service.
exercise 41.13.
The two many-to-one groupings are {𝑂𝑝𝑒𝑟𝑎𝑡𝑒1,𝑂𝑝𝑒𝑟𝑎𝑡𝑒2}↦𝙾𝙿𝙴𝚁,{𝑆𝑤𝑖𝑡𝑐ℎ1,𝑆𝑤𝑖𝑡𝑐ℎ2}↦𝚂𝚆𝙸𝚃. The other six names map one-to-one to LINK, CALL, VOID, ERAS, COMM, and ANNI. Hence ten paper names occupy eight dispatcher classes.
The tag VAR denotes a wire-level reference. The seven agent-like tags are REF, ERA, NUM, CON, DUP, OPR, and SWI. The pinned syntax parses a root tree and explicit redex bag. At role level, 𝜀/𝛾/𝛿 correspond to ERA/CON/DUP: eraser/binary pairs dispatch to ERAS, the unequal binary pair to COMM, and equal binary pairs to ANNI. This does not by itself identify the stored auxiliary port order with both distinct Lafont self-annihilations.
The table at src/hvm.rs, lines 147–158, selects a dispatcher class from two tags; lines 860–905 pop, order, dispatch, optionally requeue, and count a redex. The evaluator drains the local bag. The paper’s architecture supplies the CPU work-stealing and CUDA bag-sharing policies. The readback in src/ast.rs, lines 365–429, enters the root and reconstructs the AST by runtime tag.
For 0 & * ~ * & * ~ *, each ERA–ERA pair selects VOID. Call the pairs 𝑟,𝑠. Both schedules are two-step traces, (𝑟,𝑠)⟶(𝑠)⟶(),(𝑟,𝑠)⟶(𝑟)⟶(). They have work 2; because the pairs share no node, the ideal parallel span is 1. Neither touches the NUM 0 root, so the AST readback is 0. These are finite interaction-count and readback observations, not elapsed-time measurements.
Before applying theorem 41.9, one must at least show that each modeled interaction preserves a fixed port interface and that each unordered agent-symbol pair, including all side-condition cases, selects at most one abstract rule. One must also account for global references or mutable state so that a dispatcher action really denotes a local graph rewrite. In particular, the pinned paper flags CON–SWI as problematic; the current table is source evidence, not a completed confluence proof.
exercise 41.14.
Source inspection of the pinned commit establishes that the local rule is present in that program.
A mathematical proof over the precisely defined abstract rewrite relation establishes strong confluence.
An encoding theorem relating beta families to sharing-graph work establishes Lévy optimality.
A reproducible benchmark records a comparative runtime result for its exact builds, machine, workload, and protocol.
Source existence does not establish a universal property of all executions. A confluence proof counts neither beta families nor elapsed time. An optimality theorem is about duplicated semantic work, not a particular machine cost. A benchmark samples implementations and inputs but cannot replace a proof over every net. The four evidence classes are therefore not interchangeable.
exercise 41.15.
There are six unordered pairs with repetition. In intrinsic boundary order (𝑎1,𝑎2,𝑏1,𝑏2), their complete right sides are 𝜀⋈𝜀∅𝜀⋈𝛾𝑎1=𝜀, 𝑎2=𝜀𝜀⋈𝛿𝑎1=𝜀, 𝑎2=𝜀𝛾⋈𝛾𝑎1=𝑏2, 𝑎2=𝑏1𝛿⋈𝛿𝑎1=𝑏1, 𝑎2=𝑏2 and the mixed right side is 𝑎1=𝛿(𝑝11,𝑝21),𝑎2=𝛿(𝑝12,𝑝22),𝑏1=𝛾(𝑝11,𝑝12),𝑏2=𝛾(𝑝21,𝑝22). The old names each occur once on the right; each 𝑝𝑖𝑗 occurs twice. Reading 𝑝𝑖𝑗 at its two occurrences gives precisely one auxiliary port on a fresh 𝛿 and one on a fresh 𝛾, so the result is the four-agent grid of Lafont’s Figure 2, §2.1. This wire-by-wire reconstruction is local to the chapter.
The imported map has domain nets over a finitely presented source interaction system 𝐼 =(Σ,R) satisfying the paper’s reduced-right-side convention, and codomain nets over {𝛾,𝛿,𝜀}. For each source 𝑛-ary symbol, Φ𝐼 supplies a principal combinator net of arity 𝑛; compositional extension therefore preserves every ordered free-port interface. Its compatibility clause is 𝑁⟶𝐼𝑀⟹Φ𝐼(𝑁)⟶∗ICΦ𝐼(𝑀) up to interface-fixing isomorphism. Translation is defined in §1.7 on printed pp. 7–8; universality is Theorem 1 on printed p. 8; the construction is §§2.2–2.7. The gadget construction is not reconstructed here, and no converse is imported. Lafont’s Proposition 4 gives source-system-dependent linear bounds on the number of simulating combinator steps; it is not an implementation-cost theorem.
exercise 41.16.
Write the two disjoint live arithmetic pairs as 𝑟𝐿,𝑟𝑅, and append newly created candidates at the tail. If contracting 𝑟𝑖 creates the next arithmetic pair 𝑟′𝑖, the two initial queue orders are (𝑁;[𝑟𝐿,𝑟𝑅])⟶𝐼(𝑁𝐿;[𝑟𝑅,𝑟′𝐿])⟶𝐼(𝑁𝐿𝑅;[𝑟′𝐿,𝑟′𝑅]),(𝑁;[𝑟𝑅,𝑟𝐿])⟶𝐼(𝑁𝑅;[𝑟𝐿,𝑟′𝑅])⟶𝐼(𝑁𝑅𝐿;[𝑟′𝑅,𝑟′𝐿]). Omit 𝑟′𝑖 when the zero rule finishes that addition. Disjointness gives an interface-fixing isomorphism 𝑁𝐿𝑅 ≅𝑁𝑅𝐿; repeating the same two rows for the residual pairs enumerates the complete left-first and right-first executions.
After each dequeue, the contracted rule writes both directions of every peer entry, so incidence symmetry is preserved, while the untouched component is unchanged. Initially [𝑟𝐿,𝑟𝑅] covers both live pairs. Each rule appends every newly exposed 𝑟′𝑖, establishing enqueue-completeness inductively. At dequeue, validation checks that the named agents are live, mutually linked at principal ports, and have a rule; any duplicate left after the other schedule contracts its pair is therefore rejected as stale. Finally these queues are finite and FIFO. Every candidate that remains live has only finitely many entries ahead of it, so it is eventually dequeued. This is the fairness condition used in proposition 41.22.
exercise 41.17.
Take distinct nullary agents 𝜅0,𝜅1 with no rules on their exposed forms, and connect them to the two principal ports of one 𝖺𝗆𝖻. The two steps are 𝑁⟶Amb−0𝑁0,𝑁⟶Amb−1𝑁1. In 𝑁𝑖, the agent at the fixed main output is 𝜅𝑖. Both nets are normal, and an interface-fixing isomorphism cannot change that symbol, so the peak has neither the isomorphism branch nor the one-step-join branch of strong confluence.
If 𝜅𝑖 :𝜎−𝑠, Graft-amb gives either selected principal port type 𝜎𝑠, and Cut types its active equation against 𝜅𝑖. The interaction’s typeable-rule witness preserves the same boundary on the corresponding right side. Subject reduction says each chosen branch remains typed. It does not assert that the two typed outcomes join, so it is compatible with nondeterminism.