Skip to main content
QUICK REVIEW

[논문 리뷰] Generic Description of Well-Scoped, Well-Typed Syntaxes

Gergő Érdi|ArXiv.org|2018. 03. 31.
Logic, programming, and type systems참고 문헌 15인용 수 3
한 줄 요약

이 논문은 종속형 타입 언어에서 유니버스 내의 기술서를 사용하여 잘 스코프가 지정되고 잘 타입이 지정된 문법을 기술하기 위한 일반적인 프레임워크를 소개한다. 이는 타입-지속성 있는 이름 변경과 치환을 한 번만 정의하고 재사용 가능한 Agda 라이브러리로 구현함으로써, 바인더를 가진 다양한 타입 언어에 걸쳐 '한 번만, 끝내고 말자'의 해결책을 제공한다.

ABSTRACT

We adapt the technique of type-generic programming via descriptions pointing into a universe to the domain of typed languages with binders and variables, implementing a notion of "syntax-generic programming" in a dependently typed programming language. We present an Agda library implementation of type-preserving renaming and substitution (including proofs about their behaviour) "once and for all" over all applicable languages using our technique.

연구 동기 및 목표

  • 바인더를 가진 다양한 타입 언어 간에 이름 변경과 치환과 같은 반복적인 타입-지속성 연산의 반복적 구현 문제를 해결하기 위해.
  • 모든 잘 스코프가 지정되고 잘 타입이 지정된 문법에 대해 균일하게 적용 가능한 일반적이고 재사용 가능한 프레임워크를 제공하기 위해.
  • 모든 특정 언어에 종속되지 않고 한 번만, 끝내고 말자로 이름 변경과 치환 연산의 정확성을 형식적으로 공식화하고 검증하기 위해.
  • 유니버스 내의 기술서가 변수 스코프와 타입 안전성을 갖춘 타입 언어의 구조를 효과적으로 인코딩할 수 있는지 보여주기 위해.
  • 단일 통합 기반으로 언어별 구성 요소를 체계적이고 모듈러하게 구축할 수 있도록 하기 위해.

제안 방법

  • 언어의 문법과 타입 규칙에 대한 기술서를 파ameterizing하여 언어별로 구체화된 문법을 일반화하는 방식으로, 유니버스 내의 기술서를 사용해 바인딩을 포함한 문법 트리를 타입-지속성 방식으로 표현하기 위해.
  • 잘 스코프가 지정되고 잘 타입이 지정된 조건을 기술서 프레임워크 내부에 직접 통합하여, 구축 과정에서 타입 안전성을 보장하기 위해.
  • 종속형 타입을 사용하여 기술서 기반의 문법을 기반으로 한 일반화된 연산(이름 변경과 치환)을 정의하기 위해.
  • Agda의 종속형 타입 시스템을 활용하여 이름 변경과 치환이 타입과 스코프 조건을 유지하는 것을 증명하기 위해.
  • 인도크티브 가족과 종속형 패턴 매칭을 활용하여 빌드 과정에서 정확성을 보장하기 위해.
  • 언어별로 구체화된 문법을 기술서 기반으로 추상화하여, 언어의 문법과 타입 규칙에 대한 기술서를 매개변수로 사용하기 위해.

실험 결과

연구 질문

  • RQ1한 개의 일반적 프레임워크가 바인더를 가진 다양한 타입 언어에 걸쳐 잘 스코프가 지정되고 잘 타입이 지정된 문법을 기술할 수 있는가?
  • RQ2모든 이러한 언어에 걸쳐 형식적 증명이 함께하는 타입-지속성 이름 변경과 치환을 어떻게 일반화하여 구현할 수 있는가?
  • RQ3유니버스 내의 기술서가 변수와 바인더를 가진 타입 언어의 구조적 및 타입 제약 조건을 어느 정도 효과적으로 포괄할 수 있는가?
  • RQ4이름 변경과 치환의 정확성은 특정 언어마다 따로 증명하는 대신, 한 번만 끝내고 말자로 증명할 수 있는가?
  • RQ5종속형 타입은 이러한 일반적이고 정확성 보장이 되는 구현을 가능하게 하는 데 어떤 역할을 하는가?

주요 결과

  • 프레임워크는 유니버스 내의 기술서를 사용하여 잘 스코프가 지정되고 잘 타입이 지정된 문법을 성공적으로 인코딩하여, 구축 과정에서 타입 안전성을 보장한다.
  • 이름 변경과 치환은 모든 지원되는 언어에 걸쳐 일반화되어 있으며, 타입 유지 및 스코프 유지 행동에 대한 완전한 형식적 증명이 함께 제공된다.
  • Agda 라이브러리가 이러한 연산이 한 번만 정의되고 여러 언어에 걸쳐 재사용 가능하다는 것을 보여주며, 재구현이 필요 없다.
  • 기술서의 사용은 문법의 구조와 타입 제약 조건을 분리함으로써 모듈러하고 확장 가능한 언어 기술 방식을 가능하게 한다.
  • 언어별 세부 사항을 추상화함으로써 언어 구현에서 반복적이고 실수를 유발하기 쉬운 코드를 줄여준다.
  • 프레임워크는 바인더를 가진 타입 언어를 구축하기 위한 체계적이고 재사용 가능하며 형식적으로 검증된 기반을 제공한다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.