Prerequisites. Direct starred prerequisites: none. No later core chapter depends on this route.
The raw substitution clause (𝜆(𝑏:𝐴).𝑡)[𝑢/𝑎]?=𝜆(𝑏:𝐴).𝑡[𝑢/𝑎] fails when 𝑏 occurs free in 𝑢. For example, it sends (𝜆(𝑏 :𝐴). 𝑎)[𝑏/𝑎] to 𝜆(𝑏 :𝐴). 𝑏 and captures the free 𝑏. Renaming the binder first to an atom 𝑐 ∉{𝑎,𝑏} gives 𝜆(𝑐 :𝐴). 𝑏. Nominal syntax must make this choice independent of 𝑐 while retaining atoms as data.
Atoms and name abstraction
HOAS makes alpha-renaming an LF conversion, but it does not provide an object-level atom that a program may compare or choose fresh. Nominal syntax keeps atoms as data while quotienting the choice of a bound atom.
Let 𝔸 be a countably infinite set of atoms, which are names that may be permuted. A finite permutation 𝜋 :𝔸 →𝔸 is a bijection that moves only finitely many atoms. Composition and inverse make these permutations a group. The transposition (𝑎 𝑏) exchanges 𝑎 and 𝑏 and fixes every other atom.
Referenced from 4 locations
Let the group of finite permutations of 𝔸 act on a set 𝑋. A finite set 𝑆 ⊆𝔸 supports 𝑥 ∈𝑋 when every permutation that fixes each atom of 𝑆 also fixes 𝑥. A set in which every element has finite support is a nominal set. The least finite support of 𝑥 is written supp(𝑥). Write 𝑎#𝑥, read 𝑎 is fresh for 𝑥, if and only if 𝑎 ∉supp(𝑥).
A map 𝑓 :𝑋 →𝑌 of nominal sets is equivariant if and only if 𝑓(𝜋 ⋅𝑥) =𝜋 ⋅𝑓(𝑥) for every finite permutation 𝜋. A predicate is equivariant when its truth value is invariant under the simultaneous permutation of all nominal parameters.
Referenced from 4 locations
Every finitely supported element has a unique least finite support. If 𝑆 supports 𝑥, then supp(𝑥) ⊆𝑆. In particular, 𝑎#𝑥 if and only if some finite support of 𝑥 omits 𝑎. Moreover, if 𝑐#𝑥 and 𝑏 ≠𝑐, then 𝑏∈supp(𝑥)⟺(𝑏 𝑐)⋅𝑥≠𝑥.
Referenced from 4 locations
Proof of Proposition 62.3 — Least finite support
Proof. Gabbay and Pitts prove the claim for the finite-permutation action of definition 62.1 [GP02]. They construct the least support from the transpositions that move 𝑥 and prove that it is contained in every finite support; this construction also gives the displayed transposition criterion. The freshness equivalence is the definition in terms of that least support. ◻
For atoms, 𝜋 ⋅𝑎:=𝜋(𝑎) and {𝑎} supports 𝑎. For pairs and syntax trees, permutations act componentwise, so the union of component supports is a support. The support condition is stronger than saying that one particular transposition fixes 𝑥: it quantifies over every permutation that fixes the chosen finite set.
For a nominal set 𝑋, a name abstraction [𝑎]𝑥 is the equivalence class of (𝑎,𝑥) ∈𝔸 ×𝑋 under the least equivalence relation containing (𝑎,𝑥)∼(𝑏,(𝑎 𝑏)⋅𝑥)whenever 𝑏#𝑥. The permutation action is 𝜋 ⋅[𝑎]𝑥:=[𝜋(𝑎)](𝜋 ⋅𝑥).
Referenced from 7 locations
The freshness premise is necessary. Without 𝑏#𝑥, renaming a binder to a name already used freely in 𝑥 would identify 𝜆𝑎.𝑏 with 𝜆𝑏.𝑎.
Let 𝑋 be a nominal set, let 𝑎,𝑏,𝑑 ∈𝔸, and let 𝑥,𝑦 ∈𝑋. If 𝑑#(𝑎,𝑥,𝑏,𝑦), then [𝑎]𝑥=[𝑏]𝑦⟺(𝑎 𝑑)⋅𝑥=(𝑏 𝑑)⋅𝑦.
Referenced from 3 locations
Proof of Lemma 62.5 — Fresh comparison of abstractions
Proof. First observe that the comparison atom is immaterial. If both 𝑑 and 𝑒 are fresh for (𝑎,𝑥,𝑏,𝑦), then applying (𝑑 𝑒) to (𝑎 𝑑) ⋅𝑥 =(𝑏 𝑑) ⋅𝑦 gives (𝑎 𝑒) ⋅𝑥 =(𝑏 𝑒) ⋅𝑦: the two permutation composites agree on supports of 𝑥 and 𝑦. Applying (𝑑 𝑒) again proves the converse.
For the forward direction, represent equality in the least equivalence of definition 62.4 by a finite chain and choose an auxiliary 𝑒 fresh for every body and binder in that chain. It suffices to check one generating step (𝑎,𝑥)∼(𝑏,(𝑎 𝑏)⋅𝑥),𝑏#𝑥. On a support of 𝑥, both (𝑎 𝑒) and the composite (𝑏 𝑒)(𝑎 𝑏) send 𝑎 to 𝑒 and fix every other supported atom, because 𝑏,𝑒#𝑥. Hence their actions on 𝑥 agree. Equality is preserved by reversing or composing chain steps, which proves the implication. The first observation replaces the auxiliary 𝑒 by the 𝑑 in the statement.
Conversely, freshness gives the two generating equalities [𝑎]𝑥=[𝑑]((𝑎 𝑑)⋅𝑥),[𝑏]𝑦=[𝑑]((𝑏 𝑑)⋅𝑦). If the displayed bodies are equal, transitivity proves [𝑎]𝑥 =[𝑏]𝑦. ◻
For every atom 𝑎 and finitely supported element 𝑥, supp([𝑎]𝑥)=supp(𝑥)∖{𝑎}.
Referenced from 3 locations
Proof of Proposition 62.6 — Support of name abstraction
Proof. This is the support calculation for the abstraction set in Gabbay and Pitts’s construction [GP02]. For the forward inclusion, a permutation fixing supp(𝑥) ∖{𝑎} may change 𝑎, but name abstraction identifies the correspondingly renamed representative. For the reverse inclusion, let 𝑏 ≠𝑎 lie in supp(𝑥) and choose an atom 𝑐 fresh for 𝑥, 𝑎, and 𝑏. The transposition criterion of proposition 62.3 gives (𝑏 𝑐) ⋅𝑥 ≠𝑥. If (𝑏 𝑐) fixed [𝑎]𝑥, apply lemma 62.5 with a comparison atom fresh for both bodies; because (𝑏 𝑐) fixes 𝑎, the resulting body equality would imply (𝑏 𝑐) ⋅𝑥 =𝑥, a contradiction. Hence every support of [𝑎]𝑥 contains 𝑏. Leastness gives the reverse inclusion. ◻
Let [𝑎]𝑥 be a name abstraction and let 𝐶 ⊆𝔸 be finite. There are 𝑏 ∉𝐶 and 𝑦 ∈𝑋 such that [𝑎]𝑥 =[𝑏]𝑦. More generally, if 𝑧 is a finite tuple of external nominal parameters and 𝐶 contains a support of 𝑧, then 𝑏 may be chosen with 𝑏#𝑧.
Referenced from 7 locations
Proof of Lemma 62.7 — Fresh representative
Proof. Choose 𝑏∉𝐶∪𝑆𝑥∪𝑆𝑧, where 𝑆𝑥 supports 𝑥 and 𝑆𝑧 supports the external tuple 𝑧; omit 𝑆𝑧 in the first claim. Such a 𝑏 exists because 𝔸 is infinite. Put 𝑦:=(𝑎 𝑏) ⋅𝑥. Since 𝑏#𝑥, definition 62.4 gives [𝑎]𝑥 =[𝑏]𝑦. The set 𝑆𝑧 witnesses 𝑏#𝑧. ◻
For the types of definition 61.11, nominal terms are generated by 𝑡::=𝗏𝖺𝗋(𝑎)∣𝖺𝗉𝗉(𝑡,𝑢)∣𝗅𝖺𝗆𝐴([𝑎]𝑡). Permutations act on variables, applications componentwise, and abstractions as in definition 62.4. The quotient built into [𝑎]𝑡 is the alpha-equivalence of nominal abstractions.
The typing judgment is generated by 𝑎:𝐴∈ΓΓ⊢𝗇𝗈𝗆𝗏𝖺𝗋(𝑎):𝐴Nom−Var Γ⊢𝗇𝗈𝗆𝑡:𝐴→𝐵Γ⊢𝗇𝗈𝗆𝑢:𝐴Γ⊢𝗇𝗈𝗆𝖺𝗉𝗉(𝑡,𝑢):𝐵Nom−App Γ,𝑎:𝐴⊢𝗇𝗈𝗆𝑡:𝐵𝑎∉dom(Γ)Γ⊢𝗇𝗈𝗆𝗅𝖺𝗆𝐴([𝑎]𝑡):𝐴→𝐵Nom−Lam. Contexts are finite lists of distinctly named atoms. The abstraction rule may use any representative fresh for the context; the fresh-comparison lemma and equivariance below show that its conclusion is independent of that choice.
Referenced from 2 locations
For every finite permutation 𝜋, Γ ⊢𝗇𝗈𝗆𝑡 :𝐴 if and only if 𝜋 ⋅Γ ⊢𝗇𝗈𝗆𝜋 ⋅𝑡 :𝐴. Here permutation of a context acts only on its atom labels.
Referenced from 3 locations
Proof of Lemma 62.9 — Typing equivariance
Proof. The typing claim is rule induction. A variable declaration 𝑎 :𝐴 ∈Γ maps to 𝜋(𝑎) :𝐴 ∈𝜋 ⋅Γ; application is componentwise. An abstraction premise under Γ,𝑎 :𝐴 maps by the induction hypothesis to a premise under 𝜋 ⋅Γ,𝜋(𝑎) :𝐴. Bijection of 𝜋 preserves the freshness side condition, so Nom-Lam reconstructs the permuted abstraction. Applying 𝜋−1 proves the reverse implication. ◻
Let 𝑃 be a predicate on nominal terms such that 𝑃(𝜋⋅𝑡)⟺𝑃(𝑡) for every finite permutation 𝜋 and nominal term 𝑡. Let 𝐶 ⊆𝔸 be finite. To prove 𝑃(𝑡) for every nominal term, it suffices to prove:
𝑃(𝗏𝖺𝗋(𝑎)) for every atom 𝑎;
for all nominal terms 𝑡,𝑢, 𝑃(𝑡) and 𝑃(𝑢) imply 𝑃(𝖺𝗉𝗉(𝑡,𝑢));
for every object type 𝐴, atom 𝑎, and nominal term 𝑡, if 𝑎 ∉𝐶 and 𝑃(𝑡), then 𝑃(𝗅𝖺𝗆𝐴([𝑎]𝑡)).
Referenced from 2 locations
Proof of Theorem 62.10 — Freshness induction
Proof. Induct on the quotient syntax. Variable and application use the first two clauses. For an abstraction [𝑏]𝑢, use lemma 62.7 to choose [𝑏]𝑢 =[𝑎]𝑡 with 𝑎∉𝐶,𝑡=(𝑏 𝑎)⋅𝑢. The induction hypothesis gives 𝑃(𝑢); the displayed equivalence for the transposition (𝑏 𝑎) gives 𝑃(𝑡). The third clause gives 𝑃(𝗅𝖺𝗆𝐴([𝑎]𝑡)), which is the required property because [𝑎]𝑡 =[𝑏]𝑢. ◻
Let 𝑋 be a nominal set and let 𝑧 be a finite tuple of external nominal parameters. Suppose the following data are equivariant jointly in 𝑧 and their displayed arguments: V𝑧(𝑎)∈𝑋,A𝑧(𝑟1,𝑟2)∈𝑋,L𝐴,𝑧(𝑎,𝑡,𝑟)∈𝑋(𝑎#𝑧). Assume the binder data satisfy the fresh-renaming equation L𝐴,𝑧(𝑎,𝑡,𝑟)=L𝐴,𝑧(𝑏,(𝑎 𝑏)⋅𝑡,(𝑎 𝑏)⋅𝑟) whenever 𝑎#𝑧, 𝑏#𝑧, and 𝑏#(𝑡,𝑟). Then there is a unique function 𝐹𝑧 from nominal terms to 𝑋, equivariant jointly in 𝑧 and its term argument, such that 𝐹𝑧(𝗏𝖺𝗋(𝑎))=V𝑧(𝑎),𝐹𝑧(𝖺𝗉𝗉(𝑡,𝑢))=A𝑧(𝐹𝑧(𝑡),𝐹𝑧(𝑢)),𝐹𝑧(𝗅𝖺𝗆𝐴([𝑎]𝑡))=L𝐴,𝑧(𝑎,𝑡,𝐹𝑧(𝑡))(𝑎#𝑧). The final equation may use any representative whose binder is fresh for 𝑧.
Referenced from 4 locations
Proof of Theorem 62.11 — Freshness recursion
Proof. For an abstraction, lemma 62.7 chooses a representative [𝑎]𝑡 with 𝑎#𝑧. Recurse on 𝑡 and apply L𝐴,𝑧. If [𝑏]𝑢 is another representative with 𝑏#𝑧, choose 𝑑#(𝑧,𝑎,𝑡,𝑏,𝑢,𝐹𝑧(𝑡),𝐹𝑧(𝑢)). The fresh-comparison equation transports both representatives to binder 𝑑; equivariance of the recursive calls and the fresh-renaming hypothesis for L make the two results equal. Thus the definition is independent of representatives.
Structural induction proves joint equivariance for variables and applications. In the abstraction case, choose a binder fresh for both 𝑧 and its permuted image and use equivariance of L. Freshness induction proves uniqueness: choose the abstraction representative fresh for 𝑧 and apply the third defining equation after the induction hypothesis for its body. ◻
Apply theorem 62.11 with external parameters (𝑎,𝑢) and codomain the nominal terms. The variable and application data are the first three clauses below, and L𝐴,(𝑎,𝑢)(𝑏,𝑡,𝑟):=𝗅𝖺𝗆𝐴([𝑏]𝑟). Name abstraction gives the required fresh-renaming equation. The resulting capture-avoiding substitution is 𝗏𝖺𝗋(𝑎)[𝑢/𝑎]:=𝑢,𝗏𝖺𝗋(𝑏)[𝑢/𝑎]:=𝗏𝖺𝗋(𝑏)(𝑏≠𝑎),𝖺𝗉𝗉(𝑡1,𝑡2)[𝑢/𝑎]:=𝖺𝗉𝗉(𝑡1[𝑢/𝑎],𝑡2[𝑢/𝑎]),𝗅𝖺𝗆𝐴([𝑏]𝑡)[𝑢/𝑎]:=𝗅𝖺𝗆𝐴([𝑏](𝑡[𝑢/𝑎])), where the final clause first chooses a representative satisfying 𝑏#(𝑎,𝑢) by lemma 62.7. If 𝑏 =𝑎, choose a different representative before applying the clause.
Referenced from 4 locations
The operation in definition 62.12 is independent of the chosen fresh representative and satisfies 𝜋⋅(𝑡[𝑢/𝑎])=(𝜋⋅𝑡)[(𝜋⋅𝑢)/𝜋(𝑎)]. If Γ,𝑎:𝐴,Δ⊢𝗇𝗈𝗆𝑡:𝐵andΓ⊢𝗇𝗈𝗆𝑢:𝐴, then Γ,Δ ⊢𝗇𝗈𝗆𝑡[𝑢/𝑎] :𝐵.
Referenced from 3 locations
Proof of Lemma 62.13 — Nominal substitution and typing
Proof. Theorem 62.11 gives independence of the representative. Its joint equivariance equation, instantiated at the parameter tuple (𝑎,𝑢), is exactly 𝜋⋅(𝑡[𝑢/𝑎])=(𝜋⋅𝑡)[(𝜋⋅𝑢)/𝜋(𝑎)].
For typing, perform rule induction on the given typing derivation, generalized over the context split and substituting derivation. Variables and application use the defining clauses and induction hypotheses. In an abstraction case, choose a finite support 𝑆𝑢 of 𝑢 and use lemma 62.7 to select a representative with 𝑏 ∉dom(Γ,𝑎 :𝐴,Δ) ∪𝑆𝑢. Typing equivariance transports the original abstraction premise to that representative, because the required transposition fixes the external context. The transported premise is Γ,𝑎:𝐴,Δ,𝑏:𝐶0⊢𝗇𝗈𝗆𝑡0:𝐷. The induction hypothesis gives Γ,Δ,𝑏 :𝐶0 ⊢𝗇𝗈𝗆𝑡0[𝑢/𝑎] :𝐷; the abstraction rule closes the result. The fresh choice prevents capture. ◻
Let Γ be an STLC context with pairwise distinct atom labels. Define the untyped carriers 𝖭𝖺𝗆𝖾𝖽(Γ):={𝑡∣FV(𝑡)⊆dom(Γ)}/=𝛼,𝖭𝗈𝗆(Γ):={𝑛∣𝑏#𝑛 for every 𝑏∈𝔸∖dom(Γ)}. Encoding and decoding are inverse bijections 𝖭𝖺𝗆𝖾𝖽(Γ)⟷𝖭𝗈𝗆(Γ) that commute with renaming and capture-avoiding substitution. For every object type 𝐴, they also satisfy the separate typing equivalence Γ⊢𝗌𝗍𝑡:𝐴⟺Γ⊢𝗇𝗈𝗆𝖾𝗇𝖼𝗈𝖽𝖾(𝑡):𝐴.
Referenced from 2 locations
Proof of Theorem 62.14 — Nominal adequacy for STLC
Proof. Decode 𝗏𝖺𝗋(𝑎) and 𝖺𝗉𝗉 componentwise. Decode 𝗅𝖺𝗆𝐴([𝑎]𝑡) by choosing any representative and returning 𝜆(𝑎 :𝐴). 𝖽𝖾𝖼𝗈𝖽𝖾(𝑡). Name abstraction makes this independent of the representative modulo object alpha-equivalence. Encode variables and applications componentwise and encode 𝜆(𝑎 :𝐴). 𝑡 as 𝗅𝖺𝗆𝐴([𝑎]𝖾𝗇𝖼𝗈𝖽𝖾(𝑡)).
Structural induction gives both inverse equations; the abstraction equation uses exactly the alpha quotient in definition 62.4. Equivariance gives the renaming equation, and induction using the fresh representative in the abstraction case gives the substitution equation. Typing preservation and reflection are rule inductions because the nominal and named rules have the same premises after choosing a representative. ◻
Given an ordered nominal context 𝑎0 :𝐴0,…,𝑎𝑛−1 :𝐴𝑛−1, replacing 𝑎𝑖 by its context position defines a translation to typed de Bruijn syntax. It is invariant under simultaneous permutation of the context and term, and it commutes with typed substitution.
Referenced from 3 locations
Proof of Proposition 62.15 — Nominal and de Bruijn comparison
Proof. Translate variables by lookup, application componentwise, and abstraction by choosing a representative whose binder is outside the context and extending the context at the left. Lemma 62.7 supplies the choice. Simultaneously permuting context and term preserves every lookup position, so induction on terms proves invariance. The same induction proves the substitution square; under a binder it is the lifted-substitution equation of lemma 61.19. ◻
★★☆ Compute 𝗅𝖺𝗆𝐵([𝑏]𝗏𝖺𝗋(𝑎))[𝗏𝖺𝗋(𝑏)/𝑎]. Choose an atom 𝑐 with 𝑐 ∉{𝑎,𝑏}, display the transposition used to change representatives, and show that the result decodes to an alpha-variant of 𝜆(𝑐 :𝐵). 𝑏, not 𝜆(𝑏 :𝐵). 𝑏. (Half a page.)
Referenced from 3 locations
The substitution support bound
The substitution theorem preserves typing, but it also controls which atoms may remain free. The bound is stated using least support, so it is independent of the particular fresh representative selected under a binder.
For nominal terms 𝑡,𝑢 and an atom 𝑎, supp(𝑡[𝑢/𝑎])⊆(supp(𝑡)∖{𝑎})∪supp(𝑢).
Referenced from 3 locations
Proof of Lemma 62.17 — Support of nominal substitution
Proof. Use freshness induction with the finite set 𝐶 ={𝑎} ∪supp(𝑢). The variable case is the defining split of substitution. Application uses the two induction hypotheses and the fact that the support of a pair is the union of its component supports.
For an abstraction, choose 𝑏 ∉𝐶 and a representative 𝗅𝖺𝗆𝐴([𝑏]𝑡0). The defining substitution clause gives 𝗅𝖺𝗆𝐴([𝑏](𝑡0[𝑢/𝑎])). By the induction hypothesis, supp(𝑡0[𝑢/𝑎])⊆(supp(𝑡0)∖{𝑎})∪supp(𝑢). Name abstraction removes the bound atom 𝑏 from support. Since 𝑏 ∉{𝑎} ∪supp(𝑢), removing 𝑏 from the right-hand side yields exactly the required bound for the abstraction by proposition 62.6. ◻
★☆☆ Let 𝑡=𝗅𝖺𝗆𝐴([𝑎]𝖺𝗉𝗉(𝗏𝖺𝗋(𝑎),𝗏𝖺𝗋(𝑏))). Compute supp(𝑡) and the support of (𝑎 𝑐) ⋅𝑡 for pairwise distinct atoms 𝑎,𝑏,𝑐. Then exhibit one permutation fixing the empty set but changing 𝑡. (Six lines.)
Referenced from 3 locations
One obligation across four representations
The comparison in theorem 61.26 fixes one STLC renaming and substitution obligation. Nominal syntax satisfies that obligation by lemma 62.9, lemma 62.13; it does not inherit the proof invariant of any of the other representations. The binder case is the point of separation: representationbinder operationde Bruijnlift the substitution and weaken old componentslocally namelessopen outside a finite exclusion setPHOASextend the relation family by the bound pairnominalchoose a representative fresh for the substitution data. Each row proves the same typing implication. No row provides the side condition named in another row.
A typed substitution 𝜎 :Γ →Δ assigns to each declaration 𝑎 :𝐴 ∈Γ a nominal term satisfying Δ ⊢𝗇𝗈𝗆𝜎(𝑎) :𝐴. Its finite support is supp(𝜎):=⋃𝑎∈dom(Γ)supp(𝜎(𝑎)). The simultaneous action on variables and applications is componentwise. At an abstraction, choose a representative 𝗅𝖺𝗆𝐴([𝑏]𝑡0) with 𝑏∉dom(Γ)∪dom(Δ)∪supp(𝜎) and put 𝗅𝖺𝗆𝐴([𝑏]𝑡0)[𝜎]:=𝗅𝖺𝗆𝐴([𝑏](𝑡0[𝜎+𝑏])). Here 𝜎+𝑏 :Γ,𝑏 :𝐴 →Δ,𝑏 :𝐴 maps 𝑏 to 𝗏𝖺𝗋(𝑏) and maps every old atom 𝑎 to 𝜎(𝑎). Freshness recursion makes the action independent of the chosen representative; rule induction gives Γ⊢𝗇𝗈𝗆𝑡:𝐶⟹Δ⊢𝗇𝗈𝗆𝑡[𝜎]:𝐶. The one-variable operation of definition 62.12 is the instance that is the identity away from its target.
Referenced from 2 locations
Let Γ be an ordered nominal context, let 𝜎 :Γ →Δ be a typed nominal substitution, and let 𝖽𝖻Γ be the translation of proposition 62.15. If Γ ⊢𝗇𝗈𝗆𝑡 :𝐶, then 𝖽𝖻Δ(𝑡[𝜎])=𝖽𝖻Γ(𝑡)[𝖽𝖻(𝜎)]. Here 𝖽𝖻(𝜎) maps the de Bruijn position of each 𝑎 in Γ to 𝖽𝖻Δ(𝜎(𝑎)). Changing every atom label by one simultaneous permutation changes neither side.
Referenced from 2 locations
Proof of Proposition 62.19 — Nominal substitution square
Proof. Induct on 𝑡. Variables are lookup in 𝜎 and applications use the two induction hypotheses. For an abstraction, choose a representative [𝑎]𝑡0 with 𝑎∉dom(Γ)∪dom(Δ)∪supp(𝜎). The nominal substitution enters 𝑡0 with the fresh representative. The de Bruijn translation extends both ordered contexts by their newest declaration and therefore uses the lifted substitution 𝖽𝖻(𝜎)↑. The body equation is the induction hypothesis under those extensions; lemma 61.19 identifies the lifted right-hand side. If another fresh representative is selected, typing equivariance transports the nominal premise while simultaneous permutation preserves every de Bruijn lookup position. Hence the equation is independent of the representative. ◻
Suggested first pass.
None of these problems is a prerequisite for a later chapter. Begin with exercise 62.3, then complete exercise 62.6.
★☆☆ For pairwise distinct 𝑎,𝑏,𝑐, compute least supports of 𝗏𝖺𝗋(𝑎), 𝖺𝗉𝗉(𝗏𝖺𝗋(𝑎),𝗏𝖺𝗋(𝑏)), and 𝗅𝖺𝗆𝐴([𝑎]𝖺𝗉𝗉(𝗏𝖺𝗋(𝑎),𝗏𝖺𝗋(𝑏))). For each atom in a computed support, give a transposition that fixes the other computed atoms but changes the term. (Half a page.)
Referenced from 4 locations
★★☆ Prove that the inclusion in lemma 62.17 can be strict. Give one example because 𝑎 does not occur in 𝑡, and one because an occurrence of 𝑎 lies under a binder. Compute both sides of the inclusion in each example.
Referenced from 3 locations
★★★ Let Γ =(𝑝 :𝐶), let Δ = ⋅, let 𝑢 be a closed term of type 𝐶, and define 𝜎 :Γ →Δ by 𝜎(𝑝) =𝑢. For 𝑡 =𝜆(𝑎 :𝐴). 𝜆(𝑏 :𝐵). 𝑝, prove the nominal–de Bruijn substitution square. Name the representative chosen fresh for 𝑢, the two lifted de Bruijn substitutions, and the equivariance equation used after changing the outer representative. (Two pages.)
Referenced from 3 locations
★★★ Practical project.nominal-substitution-checker Implement in Agda or Kappa finite permutations, finite-support probes, and capture-avoiding substitution for the untyped nominal lambda fragment. Reserve every atom occurring in the body or substitution argument before choosing a replacement binder. Check that the support of 𝜆𝑎.𝑎 𝑏 is {𝑏}, that transposing 𝑏 and 𝑑 transports that support to {𝑑}, that (𝜆𝑏.𝑎)[𝑏/𝑎] becomes the fresh representative 𝜆𝑐.𝑏, and that substitution stops beneath a binder equal to its target. A version that descends beneath that shadowing binder must fail the fourth oracle.
Referenced from 6 locations
Sources. Finite support and its least-support property are Definition 3.3 and Proposition 3.4 of Gabbay and Pitts [GP02]. Their abstraction-set construction and local-freshness eliminator appear on pp. 15–16; structural iteration, recursion, and induction are Theorem 6.5, Corollary 6.7, and Theorem 6.8 on pp. 17–18; capture-avoiding substitution is Example 6.9 on p. 18. Pitts motivates equivariant predicates and swapping on pp. 2–3; those nominal-logic axioms do not strengthen the nominal-set theorem boundary [Pit03].