Lectures onType Theory
ch:nominal-syntax: ch:nominal-syntax
appendix sectionsolutions

ch:nominal-syntax: ch:nominal-syntax

Exercise 62.1.

Choose c{a,b}. Since c#var(a), [b]var(a)=[c](b c)var(a)=[c]var(a). This representative is fresh for the substituting term var(b), so lamB([b]var(a))[var(b)/a]=lamB([c]var(b)). Decoding gives λ(c:B).b, an alpha-variant of every result with a fresh binder. The captured term λ(b:B).b has no free b and is not alpha-equivalent to it.

Exercise 62.2.

The application body has support {a,b} and name abstraction removes its bound a, hence supp(t)={b}. Equivariance of least support gives supp((a c)t)=(a c){b}={b}, because a,b,c are distinct. The transposition (b c) fixes every atom of the empty set but changes the free occurrence of b to c; therefore the empty set does not support t.

Exercise 62.3.

The three least supports are respectively {a},{a,b},{b}. For var(a), the transposition (a c) fixes the empty remainder and changes the term. For the application, (a c) fixes b and changes the left component, while (b c) fixes a and changes the right component. For the abstraction, (b c) changes its sole free atom. Thus every atom in each displayed support is necessary; proposition 62.3 gives minimality.

Exercise 62.4.

Let a,b,c be distinct. First take t=var(b) and u=var(c). Then t[u/a]=var(b), so the left support is {b}, whereas the bound’s right side is {b,c}.

For a bound occurrence, take t=lamA([a]var(a)) and the same u. Substitution renames the binder away from a,c before descending and leaves the bound identity alpha-equivalent to itself. Its support is empty. The right side of the support inclusion is {c}={c}. Both inclusions are strict for the requested distinct reasons.

Exercise 62.5.

Use Γ=(p:C), Δ=, and the typed simultaneous substitution σ:ΓΔ with σ(p)=u. Choose binders a,bsupp(u){p}. Nominal substitution gives (λ(a:A).λ(b:B).p)[u/p]=λ(a:A).λ(b:B).u. Translation sends the body occurrence of p to index 2. The de Bruijn substitution maps the sole free position to db(u). Its first lift fixes the new zero and weakens the old component; the second repeats that operation. Both paths therefore end at λAλB(rename(+1)(rename(+1)db(u))). If a is replaced by another admissible a, nominal equivariance gives (a a)(t[u/p])=((a a)t)[((a a)u)/(a a)(p)]. The transposition fixes p and u by the fresh choice. Simultaneously permuting the ordered context and term preserves every lookup position, so both representatives translate to the same de Bruijn term.

Practical route.

The substitution checker of exercise 62.6 is developed in appendix F; its finite run is recorded in appendix E.

Search the book

Type to search the local edition.