Exercise 83.1.
Writing strict, weak, and unknown as <, =,? temporarily, 𝑀𝑓𝑔;𝑀𝑔𝑓=(<?<?). For entry (1,1) the intermediate first parameter of 𝑓 witnesses < ⊗ =. For (2,1) the same intermediate parameter witnesses = ⊗ <. Every path to column 2 contains an unknown entry. Squaring the result preserves the matrix, so it is idempotent and its first diagonal entry is strict.
Exercise 83.2.
The one-by-one matrix 𝑀 =( ⇓<) is idempotent and has a strict diagonal, so the finite test accepts. But the concrete call preserves 𝑥, so the strict label is false: truthfulness, the execution-to-graph hypothesis of theorem 83.8, fails. The strongest truthful matrix is 𝑀 =( ⇓=); it is idempotent with no strict diagonal and is rejected.
Exercise 83.3.
With rows callee and columns caller, the two branch matrices are 𝐴=⎛⎜
⎜
⎜
⎜
⎜
⎜⎝=????<?=?⎞⎟
⎟
⎟
⎟
⎟
⎟⎠,𝐵=⎛⎜
⎜
⎜
⎜
⎜
⎜⎝??=?<?=??⎞⎟
⎟
⎟
⎟
⎟
⎟⎠. Here 𝐴 is the 𝑟 >0 branch and 𝐵 the 𝑟 =0,𝑛 >0 branch. Saturation has four idempotent diagonal patterns: (=,<,=),(=,<,<),(<,<,=),(<,<,<). For example 𝐴;𝐴 has pattern ( =, <, <) and 𝐵;𝐵 has ( =, <, =). Mixed products strengthen the first or third entries and give the remaining two patterns. Every idempotent has a strict second diagonal, so the criterion accepts.
Exercise 83.4.
For false truthfulness, use ℎ(𝑛) =ℎ(𝑛) but label the self-edge strict over the well-founded natural order; the test accepts a lie. For a non-well-founded order, use integers with the usual < and ℎ(𝑧) =ℎ(𝑧 −1); the label is truthful and strict, but the calls descend forever. For failure of the strict-diagonal condition, use ℎ(𝑛) =ℎ(𝑛) with the truthful weak matrix. The order is well founded and the graph truthful, but the idempotent has no strict diagonal and the execution is infinite.
Exercise 83.5.
The direct matrices are those of the chapter. Closure contains two self-matrices at 𝑓, one at 𝑔, and their typed cross-edges. The idempotent self-matrix at either function is (<?<?); the weaker self-composite (<?=?) at 𝑓 squares to it and is not idempotent. Thus every idempotent self-cycle has a strict first diagonal.
After both positivity guards are erased from the abstraction, the two direct strict entries become weak. Composing the mutated edges gives (=?=?). Its square is itself and neither diagonal is strict, so it is the requested bad idempotent. Weakening only the 𝑓 →𝑔 edge would not suffice: the strict 𝑔 →𝑓 edge would still force descent around every alternating cycle.
Exercise 83.6.
Suppose an infinite multipath has no descending thread. One function name 𝑓 occurs infinitely often; this is the first use of finiteness. Color each pair of selected occurrences by the composite matrix between them. There are finitely many such matrices; this is the second use. Infinite Ramsey for pairs yields an infinite homogeneous subsequence with color 𝑀 :𝑓 →𝑓. For three members 𝑖 <𝑗 <𝑘, the segment 𝑖 →𝑘 has color 𝑀 and is the composition of the two color-𝑀 segments, hence 𝑀;𝑀 =𝑀. If 𝑀𝑟𝑟 were strict, choosing parameter 𝑟 through every homogeneous segment would give an infinitely descending thread, contrary to the assumption. Therefore 𝑀 is an idempotent in the closure with no strict diagonal.
Exercise 83.7.
Associate each callee variable with its source expression. A projection or unchanged variable gives a weak edge to that caller variable; a syntactic predecessor 𝗉𝗋𝖾𝖽(𝑥) under a positive guard gives a strict edge; a variable permutation merely relocates that edge. All other entries are unknown. The call (𝑥,𝑦) ↦(𝑥,𝑥 +𝑦) therefore records only the weak edge from the new first component to 𝑥, even when a surrounding invariant implies a useful decrease of some arithmetic measure. Missing that semantic fact can make a terminating program fail the test, but every recorded edge remains true, so soundness is unchanged.