Exercise 113.1.
Decomposition of the root pair first equates the two 𝐹-nodes and then adds 𝑥∼𝐺(𝑦),𝐺(𝑎)∼𝑦. The quotient therefore has one 𝐹-class, one class containing 𝑥 and 𝐺(𝑦), one class containing 𝑦 and 𝐺(𝑎), and the class of 𝑎. Both mixed classes have one rigid representative, so the quotient is homogeneous. Its nonconstant arcs run from the 𝑥/𝐺(𝑦)-class to the 𝑦/𝐺(𝑎)-class and then to the 𝑎-class; hence it is acyclic. Reading the rigid recipes gives 𝑥↦𝐺(𝑦),𝑦↦𝐺(𝑎).
After replacing the second root by 𝐹(𝐺(𝑦),𝑥), propagation gives 𝑥 ∼𝐺(𝑦) and 𝐺(𝑎) ∼𝑥. The two 𝐺-nodes in this class force 𝑦 ∼𝑎. The quotient remains homogeneous and acyclic, and one triangular MGU is 𝑦↦𝑎,𝑥↦𝐺(𝑎).
Exercise 113.2.
The first root class contains the two 𝐻-nodes. Deleting it creates 𝑥∼𝐹(𝑎),𝐹(𝑦)∼𝐹(𝑎). The maximally shared input has one node for the two printed occurrences of 𝐹(𝑎). Consequently the two new links form the single live root class {𝑥,𝐹(𝑦),𝐹(𝑎)}. Its transition records 𝑥 ↦𝐹(𝑎) and, from the two rigid 𝐹-nodes, creates the child link 𝑦 ∼𝑎. The second and final root-class transition records 𝑦 ↦𝑎. The output 𝑥↦𝐹(𝑎),𝑦↦𝑎 is triangular. Unfolding sends both roots to 𝐻(𝐹(𝑎),𝐹(𝑎)), which verifies the input equation.
Exercise 113.3.
Choose one of the 𝑘 rigid 𝑞-ary nodes as representative. Each of the other 𝑘 −1 nodes contributes one equality at each of its 𝑞 child positions, so the transition creates 𝑞(𝑘 −1) links. Charge the link from position 𝑗 of nonrepresentative node 𝑠 to the unique outgoing arc (𝑠,𝑠[𝑗]). The pair (𝑠,𝑗) recovers the charged arc, so the charge is injective.
A node is deleted once. Consequently an outgoing arc is charged only in the transition that deletes its source. Summing over classes bounds all generated links by the input child arcs. Node visits, parent-cursor advances, incident-link advances, stack operations, and bindings likewise admit one constant charge per stored node, arc, link, or variable. Restarting an incident-link cursor after each merge destroys the last claim: a list prefix can then be rescanned after every newly discovered class member, producing quadratic work on a linear-size star of links.
Exercise 113.4.
For 𝑥 ≐𝑓(𝑥), the linked class contains the flexible node 𝑥 and the rigid node 𝑓(𝑥). With the completion mark inside the 𝑠 ≠𝑟 branch, the rigid representative 𝑟 remains 𝗈𝗐𝗇𝖾𝗋 =𝑟,𝖢𝗈𝗆𝗉𝗅𝖾𝗍𝖾 =𝖿𝖿 while its parent dependency is followed. The traversal reaches 𝑥, whose parent is the unfinished representative, and reports the quotient self-cycle. With the mark after the branch, the state instead becomes 𝗈𝗐𝗇𝖾𝗋(𝑟) =𝑟,𝖢𝗈𝗆𝗉𝗅𝖾𝗍𝖾(𝑟) =𝗍𝗍 before that revisit. The revisit is skipped and the cyclic recipe 𝑥 ↦𝑓(𝑥) escapes to post-processing.
For 𝑥 ≐𝑓(𝑦) and 𝑦 ≐𝑔(𝑥), the first link class records 𝑥 with 𝑓(𝑦), and the second records 𝑦 with 𝑔(𝑥). Following the parent of 𝑦 enters the first unfinished class; following the parent of 𝑥 returns to the second unfinished class. Thus the corrected procedure first revisits whichever of these two classes was entered first under the implementation’s fixed parent order. The certificate is the two-class quotient cycle [𝑥=𝑓(𝑦)]⟶[𝑦=𝑔(𝑥)]⟶[𝑥=𝑓(𝑦)].
Exercise 113.5.
Maximal sharing uses one node for each of 𝑥,𝑦,𝑧,𝑎,𝐺(𝑎), one node for each occurring 𝐻-recipe, and the two root 𝐹-nodes. Deleting the root class creates 𝑥∼𝐻(𝑧,𝑎),𝐻(𝑦,𝑎)∼𝐻(𝐺(𝑎),𝑎),𝑦∼𝐺(𝑎). The first mixed class records 𝑥 ↦𝐻(𝑧,𝑎). Decomposing the two 𝐻-nodes adds 𝑦 ∼𝐺(𝑎) and the reflexive link 𝑎 ∼𝑎. The remaining mixed class records 𝑦 ↦𝐺(𝑎); 𝑧 remains a variable-only quotient parameter. Hence 𝑆=(𝑥↦𝐻(𝑧,𝑎), 𝑦↦𝐺(𝑎)). Every unifier 𝜃 must give 𝑦 the tree 𝐺(𝑎), by rigid injectivity, and must give 𝑥 the tree 𝐻(𝜃(𝑧),𝑎). Define 𝛿(𝑧) =𝜃(𝑧). Then 𝜃(𝑦) =𝛿(𝑆(𝑦)) and 𝜃(𝑥) =𝛿(𝑆(𝑥)); the equation for 𝑧 is immediate. Thus 𝜃 =𝛿 ∘𝑆 on all input variables.
Exercise 113.6.
Use 𝐹(𝑥)≐𝐺(𝑥),𝑥≐𝐹(𝑥),𝑥≐𝐹(𝑦), 𝑦≐𝐺(𝑧), 𝑧≐𝐻(𝑥). The first problem fails in its initial root class because it contains unequal rigid heads 𝐹 and 𝐺. A common tree would have both heads, contradicting constructor disjointness. The second problem’s quotient has a self-loop from the class [𝑥,𝐹(𝑥)] to itself. If its tree had height ℎ, equality with the proper 𝐹-subtree would require ℎ >ℎ.
The third problem produces three quotient classes with strict child edges [𝑥] →[𝑦] →[𝑧] →[𝑥]. If their unfolded finite-tree heights are ℎ𝑥,ℎ𝑦,ℎ𝑧, the three equations imply ℎ𝑥 >ℎ𝑦 >ℎ𝑧 >ℎ𝑥, an impossible strict cycle. The failure becomes detectable when the last link closes that quotient cycle; no finite-tree substitution can remove it.
Exercise 113.7.
Store the recipes 𝑥0↦𝑎,𝑥𝑖↦𝑓(𝑥𝑖−1,𝑥𝑖−1)(1≤𝑖≤𝑛) once each. This representation has 𝑛 +1 bindings and 2𝑛 child pointers. To read the root of 𝑥𝑛, inspect its recipe. To follow a chosen leaf, read one of the two equal child pointers at each 𝑓-recipe; after 𝑛 pointer steps the traversal reaches 𝑎, so the cost is 𝑂(𝑛).
The expanded tree has 2𝑛 distinct leaf positions. Any enumeration that emits each position performs at least one output action per position and therefore takes Ω(2𝑛) time. The linear theorem constructs the recipe graph and triangular bindings. It does not claim to enumerate the expanded tree, so the two bounds concern different outputs.