Defining substitution for a language with binders like the simply typed $λ$-calculus requires repetition, defining substitution and renaming separately. To verify the categorical properties of this calculus, we must repeat the same argument many times. We present a lightweight method that avoids repetition and that gives rise to a simply typed category with families (CwF) isomorphic to the initial simply typed CwF. Our paper is a literate Agda script.
Авторы: Thorsten Altenkirch (University of Nottingham), Nathaniel Burke (Imperial College London), Philip Wadler (University of Edinburgh and Input Output)
Классификация: cs.LO (Логика в информатике)
Конференция: LFMTP 2025 (International Workshop on Logical Frameworks and Meta-Languages: Theory and Practice)
При определении операции подстановки для языков с связывающими операторами (таких как просто типизированное λ-исчисление) традиционно требуется отдельное определение операций подстановки и переименования, что приводит к значительному дублированию кода. Для верификации категориальных свойств исчисления необходимо многократно повторять одни и те же аргументы. В данной работе предложен легковесный подход для избежания такого дублирования и построена просто типизированная CwF, изоморфная семейству начальных просто типизированных категорий с семействами (CwF). Статья представлена в виде литературного программного скрипта на языке Agda.
Унифицированная структура: предложена единая операция подстановки на основе параметризации Sort, объединяющая обработку переменных и термов в одно определение
Гарантия завершаемости: умелое использование структурной рекурсии Agda и проверки завершаемости по лексикографическому порядку обеспечивает корректность определения
Категориальная верификация: доказано, что рекурсивно определённая подстановка удовлетворяет всем законам просто типизированной CwF
Результат начальности: установлено изоморфное соответствие между рекурсивно определённым синтаксисом подстановки и начальной CwF
Теорема нормализации: стандартная форма подстановки λ-термов соответствует λ-термам без явной подстановки
data _ ⊢ [_]_ : Con → Sort → Ty → Set where
zero : Γ ▷ A ⊢ [ V ] A
suc : Γ ⊢ [ V ] A → (B : Ty) → Γ ▷ B ⊢ [ V ] A
`_ : Γ ⊢ [ V ] A → Γ ⊢ [ T ] A
_ ·_ : Γ ⊢ [ T ] A ⇒ B → Γ ⊢ [ T ] A → Γ ⊢ [ T ] B
λ_ : Γ ▷ A ⊢ [ T ] B → Γ ⊢ [ T ] A ⇒ B
где Γ ⊢ [ V ] A соответствует переменным, а Γ ⊢ [ T ] A соответствует термам.
_[_] : Γ ⊢ [ q ] A → ∆ ⊩ [ r ] Γ → ∆ ⊢ [ q ⊔ r ] A
Ключевое наблюдение: Sort результата является наименьшей верхней границей Sort входных данных, обеспечивая, что результат является переменной/переименованием только когда оба входа являются переменными/переименованиями.