Exercise 103.1.
Without 𝐶[𝑡] ≡𝖿𝖺𝗅𝗌𝖾, substitution still yields ⊢ ⋆ :𝐶[𝑡] =𝖡𝗍𝗋𝗎𝖾. The next proof line can no longer convert that judgment to ⊢ ⋆ :𝖿𝖺𝗅𝗌𝖾 =𝖡𝗍𝗋𝗎𝖾. A diverging Boolean term supplies no judgmental equation with 𝖿𝖺𝗅𝗌𝖾: divergence is the absence of a terminating computation, whereas conversion requires a finite equality derivation. Thus it does not restore the missing observability premise.
Exercise 103.2.
Let 𝑀 =𝗋𝖾𝗍𝗎𝗋𝗇 2 :𝐹𝖭𝖺𝗍, let 𝑧 :𝑈𝐹𝖭𝖺𝗍, and put 𝐵――(𝑧) =𝐹(𝖱𝖾𝗌𝗎𝗅𝗍𝖵𝖾𝖼(𝑧)). Before the beta step the rule conclusion is Γ⊢𝖼𝑀𝗍𝗈𝑥𝗂𝗇𝗋𝖾𝗍𝗎𝗋𝗇(𝗋𝖾𝗉𝗅𝗂𝖼𝖺𝗍𝖾𝑥𝗍𝗋𝗎𝖾):𝐹(𝖱𝖾𝗌𝗎𝗅𝗍𝖵𝖾𝖼(𝗍𝗁𝗎𝗇𝗄𝑀)). The continuation premise is formed under 𝑥 :𝖭𝖺𝗍 and has classifier 𝐹(𝖱𝖾𝗌𝗎𝗅𝗍𝖵𝖾𝖼(𝗍𝗋 𝑥)). Beta reduction substitutes two and gives 𝗋𝖾𝗍𝗎𝗋𝗇(𝗋𝖾𝗉𝗅𝗂𝖼𝖺𝗍𝖾2𝗍𝗋𝗎𝖾):𝐹(𝖱𝖾𝗌𝗎𝗅𝗍𝖵𝖾𝖼(𝗍𝗋2))≡𝐹(𝖵𝖾𝖼𝖡2). Replacing 𝗍𝗁𝗎𝗇𝗄 𝑀 by 𝑀 is ill sorted because 𝖱𝖾𝗌𝗎𝗅𝗍𝖵𝖾𝖼 accepts a value of type 𝑈𝐹𝖭𝖺𝗍, while 𝑀 is a computation of type 𝐹𝖭𝖺𝗍.
Exercise 103.3.
Let 𝖨𝖽𝖡(𝑏,𝑐) have constructor 𝗋𝖾𝖿𝗅𝑏 :𝖨𝖽𝖡(𝑏,𝑏) and eliminator 𝐽. Dependent Boolean elimination on 𝑥 constructs 𝑥:𝖡⊢𝑞(𝑥):𝖨𝖽𝖡(𝐶[𝑥],𝗍𝗋𝗎𝖾), because both branch classifiers reduce to 𝖨𝖽𝖡(𝗍𝗋𝗎𝖾,𝗍𝗋𝗎𝖾). Substitute the effectful term 𝑡, then use 𝐶[𝑡] ≡𝖿𝖺𝗅𝗌𝖾 to convert 𝑞(𝑡) to an identity 𝑒 :𝖨𝖽𝖡(𝖿𝖺𝗅𝗌𝖾,𝗍𝗋𝗎𝖾). Take the family 𝐷(𝖿𝖺𝗅𝗌𝖾) =⊥ and 𝐷(𝗍𝗋𝗎𝖾) =𝟏. Identity elimination transports 𝗎𝗇𝗂𝗍 :𝐷(𝗍𝗋𝗎𝖾) along the symmetry of 𝑒, producing an inhabitant of 𝐷(𝖿𝖺𝗅𝗌𝖾) =⊥. The only conversion using observability is the conversion of 𝑞(𝑡)’s left endpoint from 𝐶[𝑡] to 𝖿𝖺𝗅𝗌𝖾.
Exercise 103.4.
Use the classifier from the chapter, 𝐵――(𝑧):=𝐹(𝖱𝖾𝗌𝗎𝗅𝗍𝖵𝖾𝖼(𝑧)),𝖱𝖾𝗌𝗎𝗅𝗍𝖵𝖾𝖼(𝗍𝗋𝑛)≡𝖵𝖾𝖼(𝖡,𝑛). It stays stuck on the thunk of an effect operation but computes after a selected branch returns a numeral.
The computation 𝖾𝗋𝗋𝗈𝗋𝐹𝖭𝖺𝗍 𝑒 is thunkable for every well-formed family. There is no transition 𝖾𝗋𝗋𝗈𝗋𝐹𝖭𝖺𝗍 𝑒 ⟶𝑀′, so the required implication 𝖾𝗋𝗋𝗈𝗋𝐹𝖭𝖺𝗍𝑒⟶𝑀′⟹𝐵――[𝗍𝗁𝗎𝗇𝗄(𝖾𝗋𝗋𝗈𝗋𝐹𝖭𝖺𝗍𝑒)/𝑧]≡𝐵――[𝗍𝗁𝗎𝗇𝗄𝑀′/𝑧] has no instances. This is the vacuous positive case.
The other three machine operations are negative. Set 𝑊:=𝗐𝗋𝗂𝗍𝖾1.(𝗋𝖾𝗍𝗎𝗋𝗇0). The step from store zero to store one has successor 𝗋𝖾𝗍𝗎𝗋𝗇 0. Its two classifiers have normal forms 𝐹(𝖱𝖾𝗌𝗎𝗅𝗍𝖵𝖾𝖼(𝗍𝗁𝗎𝗇𝗄𝑊))and𝐹(𝖵𝖾𝖼(𝖡,0)), so they are not judgmentally equal. For 𝑅:=𝗋𝖾𝖺𝖽𝗍𝗈𝑠(𝗋𝖾𝗍𝗎𝗋𝗇 𝑠), stores zero and one select successors whose classifiers are respectively 𝐹(𝖵𝖾𝖼(𝖡,0)) and 𝐹(𝖵𝖾𝖼(𝖡,1)), while the source classifier remains the stuck form 𝐹(𝖱𝖾𝗌𝗎𝗅𝗍𝖵𝖾𝖼(𝗍𝗁𝗎𝗇𝗄 𝑅)). Finally, for 𝐶:=𝖼𝗁𝗈𝗈𝗌𝖾𝑖(𝗋𝖾𝗍𝗎𝗋𝗇0,𝗋𝖾𝗍𝗎𝗋𝗇1), the two branches again yield the distinct vector classifiers at lengths zero and one; neither is judgmentally equal to the stuck source classifier. Thus 𝗐𝗋𝗂𝗍𝖾, 𝗋𝖾𝖺𝖽𝗍𝗈, and 𝖼𝗁𝗈𝗈𝗌𝖾 are not thunkable for this family.
A fixed-environment reader is not an operation of definition 103.8, so thunkability has no reader transition to classify. With 𝑒 :𝐸 in the value context, reading is represented directly by 𝗋𝖾𝗍𝗎𝗋𝗇 𝑒, and a classifier may mention 𝑒; no machine step observes or changes an environment.
The first claim of theorem 103.10 therefore admits 𝖾𝗋𝗋𝗈𝗋, whose terminal configuration cannot violate preservation, and the fixed-environment reader, because it contributes no effect rule. The state operations 𝗐𝗋𝗂𝗍𝖾 and 𝗋𝖾𝖺𝖽𝗍𝗈 require Incl-Write and Incl-Read; erratic choice requires Incl-Choose. The reader lies on the admitted side because it is a value parameter, not because a read transition satisfies a thunkability equation.