Since the early work of Church on $\lambda$I-calculus and Gentzen on structural rules, the control of variable use has gained an important role in computation and logic emerging different resource aware calculi and substructural logics with applications to programming language and compiler design. This paper presents the first formalization of variable control in calculi with implicit names based on de Bruijn indices. We design and implement three calculi: first, a restricted calculus with implicit names; then, a restricted calculus with implicit names and explicit substitution, and finally, an extended calculus with implicit names and resource control. We propose a novel concept of L-types, which are used (a) to define terms and (b) to characterize certain classes of terms in each of the presented calculi. We have adopted to work simultaneously on the design and implementation in Haskell and Agda. The benefit of this strategy is twofold: dependent types enable to express and check properties of programs in the type system and constructive proofs of preservation enable a constructive evaluator for terms (programs).
翻译:自教会早期就$lambda$I-calculus和Gentzen关于结构规则的工作以来,变数使用控制在计算和逻辑中发挥了重要作用,在计算和逻辑中产生了不同资源意识的计算和亚结构逻辑,并应用了语言编程和编译器设计。本文件介绍了根据de Bruijn指数以隐含名称对计算和子结构逻辑进行首次正式化变数控制的情况。我们设计和实施了三种计算:首先,有隐含名称的限定微积分;然后,有隐含名称和明确替代的限定微积分,最后,有隐含名称和资源控制的扩展微积分。我们提出了一个新的L型概念,用于:(a) 界定术语和(b) 确定每个所介绍的计算器中的某些术语类别。我们同意同时在Haskell和Agda进行设计和执行工作。这一战略的好处是双重的:依附类型,能够表达和检查类型系统中的方案属性,以及保存的建设性证据使一个术语的建设性评价员(方案)。