exercise 7.1.
In the context 𝑐::𝖳𝗒→𝖳𝗒,𝑑::𝖳𝗒→𝖳𝗒,𝑎::𝖳𝗒, write this context as Δ. Every leaf and rule instance is Δ⊢𝑐::𝖳𝗒→𝖳𝗒𝐾−𝑉𝑎𝑟,Δ⊢𝑑::𝖳𝗒→𝖳𝗒𝐾−𝑉𝑎𝑟,Δ⊢𝑎::𝖳𝗒𝐾−𝑉𝑎𝑟,Δ⊢𝑑𝑎::𝖳𝗒𝐾−𝐴𝑝𝑝,Δ⊢𝑐(𝑑𝑎)::𝖳𝗒𝐾−𝐴𝑝𝑝. Now apply K-Abs three times. The complete judgment ladder is 𝑐,𝑑⊢𝜆𝑎::𝖳𝗒.𝑐(𝑑𝑎)::𝖳𝗒→𝖳𝗒𝐾−𝐴𝑏𝑠,𝑐⊢𝜆𝑑::𝖳𝗒→𝖳𝗒.𝜆𝑎::𝖳𝗒.𝑐(𝑑𝑎)::(𝖳𝗒→𝖳𝗒)→𝖳𝗒→𝖳𝗒𝐾−𝐴𝑏𝑠,⋅⊢𝖢𝗈𝗆𝗉::(𝖳𝗒→𝖳𝗒)→(𝖳𝗒→𝖳𝗒)→𝖳𝗒→𝖳𝗒𝐾−𝐴𝑏𝑠. The last line discharges the binders in the same order in which they occur in the definition of 𝖢𝗈𝗆𝗉.
exercise 7.2.
Compatible constructor reduction gives 𝖢𝗈𝗆𝗉𝖯𝖯ℕ⟶𝛽(𝜆𝑑::𝖳𝗒→𝖳𝗒.𝜆𝑎::𝖳𝗒.𝖯(𝑑𝑎))𝖯ℕ⟶𝛽(𝜆𝑎::𝖳𝗒.𝖯(𝖯𝑎))ℕ⟶𝛽𝖯(𝖯ℕ)⟶𝛽(𝖯ℕ)×(𝖯ℕ)⟶𝛽(ℕ×ℕ)×(𝖯ℕ)⟶𝛽(ℕ×ℕ)×(ℕ×ℕ). The last constructor contains no constructor application whose head is a lambda, so it is normal.
exercise 11.3.
Choose 𝑣 ≠𝑢 fresh; it is also fresh for 𝐵 =ℕ ×ℕ. Before substitution, the relevant premise is 𝑢 ::𝖳𝗒,𝑣 ::𝖳𝗒 ⊢𝑢 →𝑣 ::𝖳𝗒. After applying lemma 7.8, the complete rebuilt tree is 𝑋𝑣::𝖳𝗒⊢ℕ::𝖳𝗒K−Nat𝑋𝑣::𝖳𝗒⊢ℕ::𝖳𝗒K−Nat𝑣::𝖳𝗒⊢ℕ×ℕ::𝖳𝗒K−Prod𝑣::𝖳𝗒∈𝑣::𝖳𝗒𝑣::𝖳𝗒⊢𝑣::𝖳𝗒K−Var𝑣::𝖳𝗒⊢(ℕ×ℕ)→𝑣::𝖳𝗒K−Arr⋅⊢∀𝑣::𝖳𝗒.(ℕ×ℕ)→𝑣::𝖳𝗒K−All. The subject is exactly (∀𝑣 ::𝖳𝗒.𝑢 →𝑣)[(ℕ ×ℕ)/𝑢]; freshness prevents capture at the quantifier.
exercise 11.4.
Let 𝐴 be neutral with every reduct in Red𝜅1→𝜅2, and let 𝐵 ∈Red𝜅1. By (CR1) at 𝜅1, 𝐵 ∈SN; induct on its reduction height 𝜈(𝐵). Every step from the neutral application 𝐴 𝐵 has one of two forms: 𝐴𝐵⟶𝛽𝐴′𝐵or𝐴𝐵⟶𝛽𝐴𝐵′. In the first case the hypothesis on 𝐴 gives 𝐴′ ∈Red𝜅1→𝜅2, hence 𝐴′𝐵 ∈Red𝜅2. In the second, (CR2) gives 𝐵′ ∈Red𝜅1 and 𝜈(𝐵′) <𝜈(𝐵), so the side induction gives the result. A root beta step would require 𝐴 to be an abstraction, contradicting neutrality. Thus (CR3) at 𝜅2 yields 𝐴 𝐵 ∈Red𝜅2.
exercise 11.5.
The root contraction and the argument contraction are (𝜆𝑢::𝜅.𝐴0)𝐵0⟶𝛽𝐴0[𝐵0/𝑢],(𝜆𝑢::𝜅.𝐴0)𝐵0⟶𝛽(𝜆𝑢::𝜅.𝐴0)𝐵′0. Take 𝐴0[𝐵′0/𝑢] as the common reduct. The right branch reaches it by one TR-Beta step. The left branch reaches it by lemma 7.17(3), which transports 𝐵0 ⟶𝛽𝐵′0 through every occurrence of 𝑢 in 𝐴0, using zero or more compatible steps.
exercise 11.6.
Write paths from the root with 𝐿 for the left child of an application and 𝜖 for the root. The deterministic run is ((𝜆𝑐.𝜆𝑎.𝑐𝑎)𝖯)ℕ𝑎𝑡𝐿⟶𝛽(𝜆𝑎.𝖯𝑎)ℕ𝑎𝑡𝜖⟶𝛽𝖯ℕ𝑎𝑡𝜖⟶𝛽ℕ×ℕ. Kind annotations on the two constructor binders are those in the exercise and are unchanged by the calculation. The comparison constructor ℕ ×ℕ has no redex, so both inputs normalize to alpha-identical forms. By corollary 7.26, their constructor equality holds.
Exercise 7.3.
In the unannotated rule, the kind assigned to the bound constructor is a choice made by the derivation rather than syntax. Choosing 𝑢 ::𝖳𝗒 gives 𝑢::𝖳𝗒∈𝑢::𝖳𝗒𝑢::𝖳𝗒⊢𝑢::𝖳𝗒K−Var⋅⊢𝜆𝑢.𝑢::𝖳𝗒→𝖳𝗒K−Abs. Choosing instead 𝑢 ::𝖳𝗒 →𝖳𝗒 gives the distinct tree 𝑢::𝖳𝗒→𝖳𝗒∈𝑢::𝖳𝗒→𝖳𝗒𝑢::𝖳𝗒→𝖳𝗒⊢𝑢::𝖳𝗒→𝖳𝗒K−Var⋅⊢𝜆𝑢.𝑢::(𝖳𝗒→𝖳𝗒)→(𝖳𝗒→𝖳𝗒)K−Abs. The subjects of the two conclusions are literally the same unannotated constructor. Their kinds differ, so the Church-style uniqueness proof fails exactly where it formerly read the domain kind from the abstraction annotation.
Exercise 7.4.
The failure occurs immediately in candidate condition CR1. If the base candidate at 𝖳𝗒 contains raw constructors having merely one terminating reduction sequence, membership no longer implies strong normalization. Thus the first reducibility-candidate obligation already fails; the fundamental lemma has no valid base candidate to use.
The arrow candidate also exposes the defect through CR3. Its neutral expansion argument reasons about every one-step reduct and uses a subsidiary induction whose measure is supplied by strong normalization. Existence of one terminating branch gives neither the universal premise nor a bound on the other compatible branches.
Let Ω=(𝜆𝑢::𝖳𝗒.𝑢𝑢)(𝜆𝑢::𝖳𝗒.𝑢𝑢). The displayed raw constructor is (𝜆𝑥::𝖳𝗒.ℕ)Ω. Reducing the outer redex first yields ℕ, so it has a terminating path. Compatible reduction may instead reduce inside the argument: Ω →Ω. Repeating that step produces an infinite path beneath the unchanged outer application. Weak normalization therefore does not control all compatible-reduction paths.
The example is deliberately ill-kinded: the self-application in Ω cannot be assigned a kind in 𝐹𝜔. This does not make the diagnostic circular. Reducibility is first defined as a predicate on raw constructors; the fundamental lemma later proves that well-kinded constructors inhabit the appropriate candidates. A proposed base predicate must satisfy the candidate conditions on the raw terms to which its definition applies, before kinding selects the terms used by the theorem.
exercise 7.5.
Normalize beneath the two universal binders. The left side becomes ∀𝑎::𝖳𝗒.∀𝑏::𝖳𝗒.(𝑎→𝑏)→((𝑎×𝑎)×(𝑎×𝑎))→((𝑏×𝑏)×(𝑏×𝑏)), whereas the right side becomes ∀𝑎::𝖳𝗒.∀𝑏::𝖳𝗒.(𝑎→𝑏)→(𝑎×𝑎)→(𝑏×𝑏). Both are normal. Their next domains after (𝑎 →𝑏) have distinct product trees, so they are not alpha-equal. By the common-normal-form decision theorem, the proposed constructor equality does not hold.
Practical route.
The 𝐹𝜔 checker of exercise 11.9 is built in appendix F; its normalization oracle and kind-boundary mutation are recorded in appendix E.