Table of Contents
Fetching ...

Nominal Sets in Rocq

Fabrício Sanches Paranhos, Daniel Ventura

TL;DR

The paper addresses the challenge of formalizing constructive nominal sets within Rocq, bridging nominal techniques with a dependent type framework. It develops a typeclass-based Rocq formalization of core nominal concepts including freshness, alpha-equivalence, name abstraction, and finitely supported functions, leveraging Rocq's generalized rewriting to reduce setoid boilerplate. Key constructive results are established, notably the Freshness Theorem and the Freshness Condition for Binders, alongside the NameAbstraction construction and bundled finitely supported function definitions. The work sets the stage for alpha-structural reasoning in Rocq, outlining approaches to alpha-structural recursion and induction and discussing future directions for a fully nominal framework in dependent-type systems.

Abstract

Nominal techniques have been praised for their ability to formalize grammars with binding structures closer to their informal developments. At its core, there lies the definition of nominal sets, which capture the notion of name (in)dependence through a simple, and uniform, metatheory based on name permutations. We present a formal constructive development of nominal sets in Rocq (formerly known as Coq), with its main design and project decisions. Furthermore, we formalize the concepts of freshness, nominal alpha-equivalence, name abstraction, and finitely supported functions. Our implementation relies on a type class hierarchy which, combined with Rocq generalized rewriting mechanism, achieves concise definitions and proofs, whilst easing the well-known "setoid hell" scenario. We conclude with a discussion on how to obtain the constructive alpha-structural recursion and induction combinators, towards a nominal framework.

Nominal Sets in Rocq

TL;DR

The paper addresses the challenge of formalizing constructive nominal sets within Rocq, bridging nominal techniques with a dependent type framework. It develops a typeclass-based Rocq formalization of core nominal concepts including freshness, alpha-equivalence, name abstraction, and finitely supported functions, leveraging Rocq's generalized rewriting to reduce setoid boilerplate. Key constructive results are established, notably the Freshness Theorem and the Freshness Condition for Binders, alongside the NameAbstraction construction and bundled finitely supported function definitions. The work sets the stage for alpha-structural reasoning in Rocq, outlining approaches to alpha-structural recursion and induction and discussing future directions for a fully nominal framework in dependent-type systems.

Abstract

Nominal techniques have been praised for their ability to formalize grammars with binding structures closer to their informal developments. At its core, there lies the definition of nominal sets, which capture the notion of name (in)dependence through a simple, and uniform, metatheory based on name permutations. We present a formal constructive development of nominal sets in Rocq (formerly known as Coq), with its main design and project decisions. Furthermore, we formalize the concepts of freshness, nominal alpha-equivalence, name abstraction, and finitely supported functions. Our implementation relies on a type class hierarchy which, combined with Rocq generalized rewriting mechanism, achieves concise definitions and proofs, whilst easing the well-known "setoid hell" scenario. We conclude with a discussion on how to obtain the constructive alpha-structural recursion and induction combinators, towards a nominal framework.

Paper Structure

This paper contains 15 sections, 2 theorems, 18 equations.

Key Result

Theorem 2.1

Given a nominal set $X$ and a finitely supported function $h \in \mathbb{A} \to_{\mathtt{fs}} X$ satisfying then exists a unique element $\mathtt{fresh}(h) \in X$ such that

Theorems & Definitions (2)

  • Theorem 2.1: Freshness theorem Pitts2006
  • Theorem 2.2: Freshness Condition for Binders (FCB) Pitts2009Choudhury2015