Exercise 107.1.
Binding the implementation gives 𝑛:𝜇(𝑐:{𝐴:ℕ..ℕ}∧{𝑣𝑎𝑙𝑢𝑒:𝑐.𝐴}). Rule DOT-Rec-E exposes 𝑛 :{𝐴 :ℕ..ℕ} ∧{𝑣𝑎𝑙𝑢𝑒 :𝑛.𝐴}. Intersection elimination gives 𝑛 :{𝑣𝑎𝑙𝑢𝑒 :𝑛.𝐴}, and DOT-Fld-E gives 𝑛.𝑣𝑎𝑙𝑢𝑒 :𝑛.𝐴. The other intersection projection gives 𝑛 :{𝐴 :ℕ..ℕ}, so DOT-Sel-U derives 𝑛.𝐴 <:ℕ (and DOT-Sel-L derives the reverse bound). Replacing the member declaration by {𝐴 :⊥..⊤} changes the DOT-Sel-U conclusion to 𝑛.𝐴 <:⊤. The step that formerly supplied 𝑛.𝐴 <:ℕ is therefore absent.
Exercise 107.2.
Interpret types in the lattice 0 <1, with ⊥ =0 and ⊤ =1. After deleting DOT-Sel-L, interpret 𝑥.𝐴 =0. The remaining upper premise 𝑥.𝐴 <:⊥ is 0 ≤0, while ⊤ <:⊥ is the false statement 1 ≤0. After restoring DOT-Sel-L and deleting DOT-Sel-U, interpret 𝑥.𝐴 =1. The lower premise ⊤ <:𝑥.𝐴 is 1 ≤1, while the collapsed conclusion remains false. Each selection rule supplies a different half of the path from top to bottom; neither half alone collapses the lattice.
Exercise 107.3.
Let the inert context extracted from 𝐸 bind 𝑥 =𝜆(𝑧 :𝑆′)𝑡. Clause 1 of theorem 107.9 locates the dependent-function declaration bound to 𝑥 and supplies its domain comparison; clause 2 identifies the value as that lambda and supplies the comparison needed to obtain Γ ⊢𝑦 :𝑆′. Inversion of lambda typing supplies Γ,𝑧:𝑆′⊢𝑡:𝑇′. The required source substitution lemma is exactly Γ,𝑧:𝑆′⊢𝑡:𝑇′Γ⊢𝑦:𝑆′Γ⊢𝑡[𝑦/𝑧]:𝑇′[𝑦/𝑧]. The canonical-form codomain comparison and subsumption then recover the original application result 𝑇[𝑦/𝑧], and the typing reconstruction for 𝐸 places the reduct at the original whole-term type. Without inertness, general typing cannot be converted to tight and precise typing: a bad-bound selection may fabricate the function type of 𝑥, so canonical forms cannot recover a lambda and the proof stops before the displayed substitution premise.
Exercise 107.4.
The type ∀(𝑥 :𝑆)𝑇 is inert by the function clause. The type 𝜇(𝑥 :{𝐴 :𝑆..𝑆} ∧{𝑎 :𝑥.𝐴}) is inert by the recursive-record clause: its type member has equal bounds, its field has a well-formed type, and its labels are distinct. The type 𝜇(𝑥 :{𝐴 :𝑆..𝑈}) with 𝑆 ≠𝑈 is not inert because its sole member violates the equal-bounds condition.
Exercise 107.5.
Rule DOT-Rec-E gives 𝑥:{𝐴:𝑇..𝑇}∧{𝑎:𝑥.𝐴}. The field intersection projection followed by DOT-Fld-E yields 𝑥.𝑎 :𝑥.𝐴. The member projection is the precise judgment Γ ⊢!𝑥 :{𝐴 :𝑇..𝑇}; therefore DOT-T-Sel-L and DOT-T-Sel-U give Γ⊢#𝑇<:𝑥.𝐴,Γ⊢#𝑥.𝐴<:𝑇. The field result is retained between these equal tight bounds.
Exercise 107.6.
Choose distinct closed record types 𝑆 ={𝑎 :⊤} and 𝑈 ={𝑏 :⊤}. In 𝑥 :{𝐴 :⊤..⊥}, selection and transitivity give 𝑆 <:⊤ <:𝑥.𝐴 <:⊥ <:𝑈, hence 𝑆 <:𝑈; the symmetric outer top/bottom chain also gives 𝑈 <:𝑆. However, DOT-Def-Type types a concrete definition {𝐴 =𝑇} only as {𝐴 :𝑇..𝑇}. Definition intersection preserves that equality and DOT-Obj-I installs precisely those member declarations. Consequently an object value placed in the runtime context can contribute only equal bounds; it cannot contribute {𝐴 :⊤..⊥}, since ⊤ ≠⊥.
Exercise 107.7.
Suppose 𝐸 binds 𝑥 =𝜈(𝑧 :𝑇′)𝑑 and the redex is 𝐸[𝑥.𝑎]. Canonical forms recover the precise recursive type 𝜇(𝑧 :𝑇′); DOT-Rec-E exposes 𝑇′[𝑥/𝑧]. Precise intersection decomposition locates the declaration {𝑎 :𝑆}. Pairwise label disjointness makes this occurrence unique, so inversion of definition typing locates the corresponding definition {𝑎 =𝑡} and gives 𝑡 :𝑆 after receiver substitution. The projection root therefore replaces 𝑥.𝑎 by a term of the same field type. Rebuild the surrounding let bindings of 𝐸 from the innermost one outward; each unchanged value retains its inert declaration and each let rule retains the original result type. Thus the whole reduct has the type of the original projection context.