Prerequisites. Direct starred prerequisites: Chapter 62, Chapter 23. No later core chapter depends on this route.
The LF declaration 𝗅𝖺𝗆:(𝖾𝗑𝗉→𝖾𝗑𝗉)→𝖾𝗑𝗉 represents a binder without choosing a numerical index. It does not make the object-language question “are these names different?” available inside the signature. The obstruction is not binding itself. It is the absence of first-class names, freshness, and a typed operation for opening an abstraction.
This chapter freezes Cheney’s dependent nominal type theory, abbreviated 𝖣𝖭𝖳𝖳 [Che12]. Its ordinary fragment is LF; its new ingredients are name types, fresh-name context extensions, name-abstraction types, and concretion at a literal name. Its equality algorithm erases dependencies and uses a Kripke logical relation. No hereditary-substitution argument is substituted for that proof.
Atoms, support, and abstraction
Let 𝔸 be a countably infinite set of atoms. A finite permutation 𝜋 is a bijection on 𝔸 that moves only finitely many atoms. Transpositions (𝑎 𝑏) generate the finite permutations. A permutation action on a set 𝑋 satisfies 𝗂𝖽⋅𝑥=𝑥,(𝜋2∘𝜋1)⋅𝑥=𝜋2⋅(𝜋1⋅𝑥). A finite set 𝑆 ⊆𝔸 supports 𝑥 ∈𝑋 when every permutation fixing 𝑆 pointwise fixes 𝑥. A nominal set is a permutation set in which every element has finite support. Write 𝑎𝖿𝗋𝖾𝗌𝗁𝑥 when 𝑎 is outside the least support of 𝑥.
For every finite family 𝑥1,…,𝑥𝑛 of elements of nominal sets, there is an atom 𝑎 fresh for every 𝑥𝑖.
Referenced from 2 locations
Proof of Lemma 64.1 — Fresh atoms exist
Proof. The union 𝑆 =⋃𝑖supp(𝑥𝑖) is finite. Since 𝔸 is infinite, choose 𝑎 ∈𝔸 ∖𝑆. ◻
Name abstraction is not an ordered pair. On 𝔸 ×𝑋, put (𝑎,𝑥)∼(𝑏,𝑦)⟺for some 𝑐𝖿𝗋𝖾𝗌𝗁𝑎,𝑏,𝑥,𝑦, (𝑎 𝑐)⋅𝑥=(𝑏 𝑐)⋅𝑦. The abstraction ⟨𝑎⟩𝑥 is the equivalence class of (𝑎,𝑥), and [𝔸]𝑋 is the set of such classes. Different fresh choices of 𝑐 give the same relation: conjugating one fresh transposition to another uses a permutation that fixes the finite support of the remaining data. The same witness proves symmetry because equality is symmetric. For transitivity, choose one atom fresh for both given witnesses and the three pairs, then compose the two transposition equations. Thus ∼ is an equivariant equivalence relation [GP02]. For a fixed binder, abstraction is injective: if ⟨𝑎⟩𝑥 =⟨𝑎⟩𝑦, choose 𝑐 fresh for 𝑎,𝑥,𝑦. The defining equation gives (𝑎 𝑐) ⋅𝑥 =(𝑎 𝑐) ⋅𝑦, and applying the same transposition gives 𝑥 =𝑦.
If 𝑋 is a nominal set, then supp(⟨𝑎⟩𝑥)=supp(𝑥)∖{𝑎}. Consequently 𝑎𝖿𝗋𝖾𝗌𝗁⟨𝑎⟩𝑥.
Referenced from 2 locations
Proof of Lemma 64.2 — Support of abstraction
Proof. Let 𝑆 =supp(𝑥) ∖{𝑎}. If 𝜋 fixes 𝑆, put 𝑑 =𝜋𝑎. If 𝑑 =𝑎, then 𝜋 fixes all of supp(𝑥). Otherwise 𝑑 ∉𝑆, and 𝜋 agrees on supp(𝑥) with the transposition (𝑎 𝑑). In either case, the abstraction equation gives ⟨𝜋𝑎⟩(𝜋 ⋅𝑥) =⟨𝑎⟩𝑥, so 𝑆 supports the class. Conversely, if 𝑏 ≠𝑎 belongs to supp(𝑥) but not to a support of the abstraction, choose 𝑐 fresh for that support, 𝑎,𝑏,𝑥. The transposition (𝑏 𝑐) would fix the class and 𝑎; fixed-binder injectivity would then make it fix 𝑥. This contradicts the fresh-transposition characterization of least support because 𝑏 ∈supp(𝑥) and 𝑐 is fresh for 𝑥. The atom 𝑎 is removed by abstraction itself. ◻
For example, ⟨𝑎⟩𝑎 =⟨𝑏⟩𝑏: choose 𝑐 fresh for 𝑎,𝑏, then (𝑎 𝑐) ⋅𝑎 =𝑐 =(𝑏 𝑐) ⋅𝑏. But ⟨𝑎⟩𝑏 ≠⟨𝑎⟩𝑐 for distinct 𝑎,𝑏,𝑐, since their supports are {𝑏} and {𝑐}.
★☆☆ Let 𝑎,𝑏,𝑐 be distinct. Calculate the supports of ⟨𝑎⟩(𝑎,𝑏) and ⟨𝑎⟩(𝑏,𝑐). Decide whether either abstraction is equal to ⟨𝑐⟩(𝑐,𝑏), giving the fresh transposition calculation. (Eight lines.)
Referenced from 3 locations
The dependent nominal signature
Fix disjoint countable sets of variables 𝑥,𝑦, literal names 𝑎,𝑏, object constants 𝑐, type constants 𝑝, and name-type constants 𝛼. The exact syntactic classes are 𝐾::=𝗍𝗒𝗉𝖾∣Π𝑥:𝐴.𝐾,𝐴,𝐵::=𝑝∣𝐴𝑀∣Π𝑥:𝐴.𝐵∣𝛼∣𝖭𝑎:𝛼.𝐵,𝑀,𝑁::=𝑐∣𝑥∣𝜆𝑥:𝐴.𝑀∣𝑀𝑁∣𝑎∣⟨𝑎:𝛼⟩𝑀∣𝑀@𝑎. The binders 𝖭𝑎 :𝛼.𝐵 and ⟨𝑎 :𝛼⟩𝑀 bind 𝑎. The expression 𝑀@𝑎, called concretion, may use only a literal name as its right argument. Name-type constants cannot depend on terms.
A signature contains closed declarations 𝑝 :𝐾, 𝑐 :𝐴, and 𝛼 :𝗇𝖺𝗆𝖾. Contexts are ordered lists Γ::=⋅∣Γ,𝑥:𝐴∣Γ;𝖿𝗋𝖾𝗌𝗁 𝑎:𝛼. The last extension asserts that 𝑎 is fresh for the whole prefix. Thus Γ,𝑥 :𝐴;𝖿𝗋𝖾𝗌𝗁 𝑎 :𝛼 embeds into Γ;𝖿𝗋𝖾𝗌𝗁 𝑎 :𝛼,𝑥 :𝐴, but the reverse embedding need not hold: the latter context does not assert that 𝑎 is fresh for 𝐴.
The judgment Γ𝗋𝖾𝗌𝗍𝗋𝗂𝖼𝗍𝑎 :𝛼 ⇒Γ′ removes 𝑎 and everything declared after it: 𝑋Γ;𝖿𝗋𝖾𝗌𝗁 𝑎:𝛼𝗋𝖾𝗌𝗍𝗋𝗂𝖼𝗍𝑎:𝛼⇒ΓR−Here Γ𝗋𝖾𝗌𝗍𝗋𝗂𝖼𝗍𝑎:𝛼⇒Γ′Γ;𝖿𝗋𝖾𝗌𝗁 𝑏:𝛽𝗋𝖾𝗌𝗍𝗋𝗂𝖼𝗍𝑎:𝛼⇒Γ′;𝖿𝗋𝖾𝗌𝗁 𝑏:𝛽R−Name Γ𝗋𝖾𝗌𝗍𝗋𝗂𝖼𝗍𝑎:𝛼⇒Γ′Γ,𝑥:𝐴𝗋𝖾𝗌𝗍𝗋𝗂𝖼𝗍𝑎:𝛼⇒Γ′R−Var. The asymmetry matters: R-Name retains a later fresh name, whereas R-Var discards a later variable because its type may mention 𝑎.
The ordinary LF formation, variable, product, abstraction, application, and conversion rules are those of chapter 23. The nominal rules are the following; all judgments are relative to a well-formed signature. 𝛼:𝗇𝖺𝗆𝖾∈ΣΓ⊢𝛼:𝗍𝗒𝗉𝖾Name−Type 𝛼:𝗇𝖺𝗆𝖾∈ΣΓ;𝖿𝗋𝖾𝗌𝗁 𝑎:𝛼⊢𝐵:𝗍𝗒𝗉𝖾Γ⊢𝖭𝑎:𝛼.𝐵:𝗍𝗒𝗉𝖾New−Type 𝑎:𝛼∈ΓΓ⊢𝑎:𝛼NameΓ;𝖿𝗋𝖾𝗌𝗁 𝑎:𝛼⊢𝑀:𝐵Γ⊢⟨𝑎:𝛼⟩𝑀:𝖭𝑎:𝛼.𝐵Name−Abs Γ𝗋𝖾𝗌𝗍𝗋𝗂𝖼𝗍𝑏:𝛼⇒Γ′Γ′⊢𝑀:𝖭𝑎:𝛼.𝐵Γ⊢𝑀@𝑏:𝐵[𝑏/𝑎]Concretion. The restriction premise prevents a term constructed with information declared after 𝑏 from being opened at 𝑏.
If restriction of Γ at 𝑎 :𝛼 produces both Γ1 and Γ2, then Γ1 =Γ2.
Referenced from 2 locations
Proof of Lemma 64.3 — Restriction is deterministic
Proof. Induct on the first derivation and invert the second. A final R-Here forces the same last name declaration. A final R-Name or R-Var forces the same outer context constructor; the induction hypothesis identifies the prefixes. These are all rules. ◻
★☆☆ For Γ=𝑥:𝑋;𝖿𝗋𝖾𝗌𝗁 𝑎:𝛼,𝑦:𝑃(𝑎);𝖿𝗋𝖾𝗌𝗁 𝑏:𝛽,𝑧:𝑄(𝑏), calculate restriction at 𝑎 and at 𝑏. Explain why 𝑦 is discarded at 𝑎, while the later name 𝑏 is retained. (Ten lines.)
Referenced from 3 locations
Substitution and the name beta–eta laws
A simultaneous substitution may assign objects to variables and literal names to names: 𝜃 ::= ⋅ ∣𝜃,𝑀/𝑥 ∣𝜃,𝑏/𝑎. It is well formed, written Δ ⊢𝜃 :Γ, when it maps every declaration of Γ to legal data in Δ, and the name case respects restriction: Δ𝗋𝖾𝗌𝗍𝗋𝗂𝖼𝗍𝑏:𝛼⇒Δ′Δ′⊢𝜃:ΓΔ⊢(𝜃,𝑏/𝑎):Γ;𝖿𝗋𝖾𝗌𝗁 𝑎:𝛼Sub−Name. The operation 𝜃 −𝑎 deletes the image of 𝑎 and all later variable assignments. It mirrors context restriction.
If Δ ⊢𝜃 :Γ and restriction of Γ at 𝑎 :𝛼 produces Γ0, then for some Δ0, Δ𝗋𝖾𝗌𝗍𝗋𝗂𝖼𝗍𝜃(𝑎):𝛼⇒Δ0,Δ0⊢𝜃−𝑎:Γ0.
Referenced from 3 locations
Proof of Lemma 64.4 — Substitution restriction
Proof. Induct on the restriction derivation. The R-Here case inverts the final Sub-Name rule. The R-Name case applies the induction hypothesis and rebuilds Sub-Name; the R-Var case discards the corresponding object assignment. Restriction determinacy identifies the intermediate contexts. ◻
If Γ ⊢J and Δ ⊢𝜃 :Γ, then Δ ⊢J[𝜃]. The assertion J may be a kind, type, object, or definitional-equality judgment.
Referenced from 4 locations
Proof of Theorem 64.5 — General substitution
Proof. Proceed by rule induction. The LF cases use ordinary capture-avoiding substitution. The name-formation and abstraction cases rename their bound atom fresh for 𝜃. For concretion, use lemma 64.4 to restrict Δ at 𝜃(𝑏), then apply the induction hypothesis to the abstraction in that restricted context. Rule Concretion rebuilds the result. Declarations discarded by restriction cannot occur freely in its term or type, so 𝑀[𝜃−𝑏]=𝑀[𝜃],𝐵[𝜃−𝑏][𝜃(𝑏)/𝑎]=𝐵[𝑏/𝑎][𝜃]. This is the only new critical case. ◻
Definitional equality contains ordinary LF beta–eta equality and (⟨𝑎:𝛼⟩𝑀)@𝑏≡𝑀[𝑏/𝑎] when restriction at 𝑏 is defined. Its name-eta rule is Γ;𝖿𝗋𝖾𝗌𝗁 𝑎:𝛼⊢𝑀@𝑎=𝑁@𝑎:𝐵Γ⊢𝑀=𝑁:𝖭𝑎:𝛼.𝐵Name−Eta. Beta is type preserving by the name-renaming instance of theorem 64.5; eta is type preserving because the fresh extension restricts back to Γ.
★★☆ Give the complete typing derivation for (⟨𝑎 :𝛼⟩𝑀)@𝑏, including the restricted context, and derive the type of 𝑀[𝑏/𝑎] using theorem 64.5. State the freshness failure if a variable declared after 𝑏 appeared free in 𝑀.
Referenced from 3 locations
Algorithmic beta–eta equivalence
Dependency is erased only for the equality algorithm: 𝜏::=𝑝−∣𝛼∣𝜏→𝜏∣[𝛼]𝜏,(Π𝑥:𝐴.𝐵)−=𝐴−→𝐵−,(𝖭𝑎:𝛼.𝐵)−=[𝛼]𝐵−. Erasure supplies a well-founded index for comparison; it does not assert that dependent types are simply typed. Write Δ ⊢𝑀 ⟺𝑁 :𝜏 for extensional algorithmic equivalence and Δ ⊢𝑀 ↔𝑁 :𝜏 for structural comparison of neutral heads. Both relations weak-head reduce before inspecting a head. The new clauses are 𝑎:𝛼∈ΔΔ⊢𝑎↔𝑎:𝛼Alg−Name Δ𝗋𝖾𝗌𝗍𝗋𝗂𝖼𝗍𝑎:𝛼⇒Δ′Δ′⊢𝑀↔𝑁:[𝛼]𝜏Δ⊢𝑀@𝑎↔𝑁@𝑎:𝜏Alg−Conc Δ;𝖿𝗋𝖾𝗌𝗁 𝑎:𝛼⊢𝑀@𝑎⟺𝑁@𝑎:𝜏Δ⊢𝑀⟺𝑁:[𝛼]𝜏Alg−New−Ext. At a function type the extensional clause compares 𝑀 𝑥 and 𝑁 𝑥 at a fresh variable; at an atomic type it invokes structural comparison. Structural application compares heads structurally and arguments extensionally. Kind and type comparison use the same erasure, with congruence for Π and 𝖭.
If Γ ⊢𝑀 :𝐴, Γ ⊢𝑁 :𝐴, and Γ− ⊢𝑀 ⟺𝑁 :𝐴−, then Γ ⊢𝑀 =𝑁 :𝐴. Structural comparison implies equality of neutrals; type and kind comparison imply their corresponding declarative equalities.
Referenced from 4 locations
Proof of Theorem 64.6 — Soundness of algorithmic equivalence
Proof. Use simultaneous induction on the algorithmic and structural derivations. The function case reconstructs declarative function eta, and each LF neutral head reconstructs its matching congruence rule. Rule Alg-Name reconstructs name reflexivity. For Alg-Conc, typing inversion and soundness of erased restriction recover the same unique restricted context for both terms; the induction hypothesis gives equality there, and concretion congruence rebuilds the conclusion. Rule Alg-New-Ext uses declarative name eta. Subject reduction justifies the preliminary weak-head steps. These cases exhaust the nominal additions. ◻
Completeness requires the direction syntax induction cannot supply. A Kripke relation is defined by induction on erased types. At atomic types it is algorithmic equivalence. At arrows and name abstractions it is Δ⊩𝑀=𝑁:𝜏→𝜐⟺for every Δ′⪰Δ and Δ′⊩𝑃=𝑄:𝜏,Δ′⊩𝑀𝑃=𝑁𝑄:𝜐;Δ⊩𝑀=𝑁:[𝛼]𝜏⟺for every Δ′⪰Δ and fresh 𝑎,Δ′;𝖿𝗋𝖾𝗌𝗁 𝑎:𝛼⊩𝑀@𝑎=𝑁@𝑎:𝜏. Logical substitutions relate pointwise, with the name clause mediated by restriction.
If Γ ⊢𝑀 =𝑁 :𝐴 and Δ ⊩𝜃 =𝜌 :Γ−, then Δ ⊩𝑀[𝜃] =𝑁[𝜌] :𝐴−.
Referenced from 3 locations
Proof of Lemma 64.7 — Fundamental logical-relation lemma
Proof. Induct on declarative equality. Lambda beta and eta use the arrow clause. In the name-beta case, logical substitution restriction yields a common context restricted at 𝜃(𝑏) =𝜌(𝑏); the induction hypothesis compares the bodies there, and closure under weak-head reduction relates the redex to its contractum. In the name-eta case, extend the substitutions by the same fresh name and invoke the abstraction clause. Concretion congruence again uses logical substitution restriction. The remaining cases are the LF clauses. ◻
If Δ ⊩𝑀 =𝑁 :𝜏, then Δ ⊢𝑀 ⟺𝑁 :𝜏.
Referenced from 3 locations
Proof of Lemma 64.8 — Logical implies algorithmic
Proof. Induct on 𝜏. The atomic case is the definition. At an arrow, weaken by a fresh variable, apply the relation to that variable, use the induction hypothesis, and finish by algorithmic function extensionality. At [𝛼]𝜏, extend by a fresh name, apply the name-abstraction clause, use the induction hypothesis on the concretions, and finish with Alg-New-Ext. ◻
For well-formed terms, Γ⊢𝑀=𝑁:𝐴⟺Γ−⊢𝑀⟺𝑁:𝐴−. All formation, typing, restriction, and definitional-equality judgments of 𝖣𝖭𝖳𝖳 are decidable.
Referenced from 2 locations
Proof of Theorem 64.9 — Completeness and decidability
Proof. Soundness is theorem 64.6. For completeness, use the identity logical substitution in lemma 64.7. Then apply lemma 64.8. Syntax directs the equality algorithm: weak-head reduction is invoked only on well-formed terms, and the logical relation proof supplies termination at the erased type. Restriction is a deterministic finite-context traversal. Bidirectional LF typing invokes the decidable equality algorithm at conversion points; the nominal constructors add only the displayed finite checks. Mutual induction yields a decision procedure. ◻
This is exactly the source’s beta–eta equality boundary. It is not a normalization theorem for a language with nominal recursion. Cheney’s earlier simply typed system has a separate strong-normalization proof; it does not silently strengthen this dependent calculus.
A canonical object is eta-long at its type and beta-normal: 𝐶::=𝜆𝑥:𝐴.𝐶∣⟨𝑎:𝛼⟩𝐶∣𝐻,𝐻::=𝑐∣𝑥∣𝑎∣𝐻𝐶∣𝐻@𝑎. Typing, not this grammar alone, decides whether a neutral is saturated.
If Σ,Γ,𝐴 are canonical, every Γ ⊢𝑀 :𝐴 has a unique canonical 𝐶 with Γ ⊢𝑀 =𝐶 :𝐴. Canonicalizing the signature, context, and type removes the canonical-input premise. Every name-free LF judgment over an LF signature that is derivable in 𝖣𝖭𝖳𝖳 is derivable in LF.
Referenced from 2 locations
Proof of Theorem 64.10 — Canonicalization and conservativity
Proof. Existence runs the complete equality algorithm against the eta-expansion dictated by 𝐴−. At [𝛼]𝜏, introduce a fresh name, canonicalize the concretion, and reabstract. Soundness follows from theorem 64.6; determinism follows by induction, using deterministic restriction for concretion. Hence two canonical forms are equal. For conservativity, a canonical LF judgment can contain no nominal head because its signature and result type contain none. Reading its derivation with the LF rules gives the result. ◻
Fix the signature 𝗏𝗋:𝗇𝖺𝗆𝖾,𝖾𝗑𝗉:𝗍𝗒𝗉𝖾,𝗏𝖺𝗋:𝗏𝗋→𝖾𝗑𝗉,𝖺𝗉𝗉:𝖾𝗑𝗉→𝖾𝗑𝗉→𝖾𝗑𝗉,𝗅𝖺𝗆:[𝗏𝗋]𝖾𝗑𝗉→𝖾𝗑𝗉. Encode untyped lambda terms by ⌜𝑎⌝=𝗏𝖺𝗋 𝑎,⌜𝑡𝑢⌝=𝖺𝗉𝗉 ⌜𝑡⌝ ⌜𝑢⌝,⌜𝜆𝑎.𝑡⌝=𝗅𝖺𝗆(⟨𝑎:𝗏𝗋⟩⌜𝑡⌝).
For free names among 𝑎1,…,𝑎𝑛, encoding is a bijection between untyped lambda terms modulo alpha-equivalence and canonical terms of type 𝖾𝗑𝗉 in the corresponding fresh-name context. It commutes with renaming: ⌜𝑡[𝑏/𝑎]⌝ =⌜𝑡⌝[𝑏/𝑎].
Referenced from 2 locations
Proof of Theorem 64.11 — Adequacy of the nominal encoding
Proof. The forward map is structural; abstraction is independent of the chosen bound name by name-abstraction equality. For surjectivity, invert canonical forms at 𝖾𝗑𝗉. The only fully applied heads are 𝗏𝖺𝗋, 𝖺𝗉𝗉, and 𝗅𝖺𝗆. Their arguments recursively decode to a name, two terms, or a name abstraction. In the last case choose a fresh representative and decode its body. The same inversion proves injectivity; for two lambdas, open both at one fresh name and use the induction hypothesis. Renaming commutation is another structural induction. ◻
Add 𝗇𝖾𝗊 :𝖾𝗑𝗉 →𝖾𝗑𝗉 →𝗍𝗒𝗉𝖾. Its constructor schemes are 𝗇𝖾𝗊𝑣𝑣:𝖭𝑎:𝗏𝗋.𝖭𝑏:𝗏𝗋.𝗇𝖾𝗊 (𝗏𝖺𝗋 𝑎) (𝗏𝖺𝗋 𝑏), 𝗇𝖾𝗊𝑎1:𝗇𝖾𝗊 𝑀1 𝑁1→𝗇𝖾𝗊 (𝖺𝗉𝗉 𝑀1 𝑀2)(𝖺𝗉𝗉 𝑁1 𝑁2),𝗇𝖾𝗊𝑎2:𝗇𝖾𝗊 𝑀2 𝑁2→𝗇𝖾𝗊 (𝖺𝗉𝗉 𝑀1 𝑀2)(𝖺𝗉𝗉 𝑁1 𝑁2),𝗇𝖾𝗊ℓℓ:𝖭𝑎:𝗏𝗋.𝗇𝖾𝗊 (𝑀@𝑎) (𝑁@𝑎)→𝗇𝖾𝗊 (𝗅𝖺𝗆 𝑀) (𝗅𝖺𝗆 𝑁). There are also constructors for each pair of unlike heads 𝗏𝖺𝗋/𝖺𝗉𝗉, 𝗏𝖺𝗋/𝗅𝖺𝗆, and 𝖺𝗉𝗉/𝗅𝖺𝗆, in both orders. The two nested freshness binders in 𝗇𝖾𝗊𝑣𝑣 force different literal names; the binder in 𝗇𝖾𝗊ℓℓ opens both bodies at one name [Che12].
For object terms 𝑡,𝑢, 𝑡≢𝛼𝑢⟺Γ⊢𝐷:𝗇𝖾𝗊 ⌜𝑡⌝ ⌜𝑢⌝ for some canonical proof term 𝐷.
Referenced from 2 locations
Proof of Theorem 64.12 — Adequacy of explicit alpha-inequality
Proof. Forward, induct on the first unequal constructor position. Different variables use the two-fresh-name constructor; application and unlike-head cases use their corresponding constructors. For lambdas, rename both binders to one fresh atom and use the induction hypothesis on the bodies. Conversely, induct on the canonical proof term. Inversion identifies its inequality constructor. The variable constructor can be concreted only at distinct names; the application and unlike-head constructors carry exactly the required smaller inequalities. In the lambda case, concreting at one fresh name produces a smaller inequality proof for the opened bodies. ◻
Adding a name-case operator, fresh-name generation, or recursion over abstractions changes the canonical heads and requires new adequacy and normalization arguments.
Suggested first pass.
Begin with exercise 64.4; then implement exercise 64.6.
★★☆ Encode 𝜆𝑎.𝜆𝑏.𝑎 twice using disjoint binder names. Open both outer abstractions at one fresh name, calculate the two beta steps, and derive algorithmic equality at [𝗏𝗋][𝗏𝗋]𝖾𝗑𝗉. Mark the use of restriction. (One page.)
Referenced from 4 locations
★★☆ The nominal-set function [𝔸]𝔸 →𝖮𝗉𝗍𝗂𝗈𝗇(𝔸) returns 𝗇𝗈𝗇𝖾 on ⟨𝑎⟩𝑎 and 𝗌𝗈𝗆𝖾(𝑏) on ⟨𝑎⟩𝑏 for 𝑎 ≠𝑏. Explain why frozen DNTT cannot define it. Name an eliminator that would make it expressible and the two metatheorems then requiring new proofs.
Referenced from 3 locations
★★★ Practical project.nominal-restriction-checker Implement in Agda or Kappa a finite checker for fresh-name contexts. It must calculate restriction, reject concretion when an abstraction depends on a later variable, accept alpha-renamed abstractions, and distinguish ⟨𝑎⟩𝑎 from ⟨𝑎⟩𝑏. Print retained and discarded declarations. State that the run checks a finite representation invariant, not DNTT decidability or adequacy.
Referenced from 5 locations
Sources. Atoms, finite permutations, support, and abstraction follow Gabbay and Pitts [GP02]. The frozen dependent syntax, restriction judgment, substitution theorem, beta–eta equality algorithm, Kripke completeness proof, decidability, canonicalization, conservativity, and adequacy results are Cheney’s [Che12]. The simply typed nominal calculus has its own normalization theorem [Che09]; the dependent theory of abstractable names has a different elimination discipline [PMD15]. Neither theorem is transferred here.