Belangrijkste concepten
우리는 실행 가능하고, 안전하며, 충실하고, 미래 지향적인 Coq 기계화를 제시한다. 이를 통해 JavaScript 정규 표현식 매칭의 의미론을 정형화하고 검증할 수 있다.
Samenvatting
이 논문은 JavaScript 정규 표현식(regex) 매칭의 실행 가능하고, 안전하며, 충실하고, 미래 지향적인 Coq 기계화를 제시한다.
- 개요
- JavaScript는 정규 표현식을 기본적으로 제공하며, 이는 텍스트 처리에 매우 유용하다.
- 그러나 JavaScript 정규 표현식 의미론은 복잡하고 미묘한 특성을 가지고 있다.
- 이전 연구에서는 JavaScript 정규 표현식에 대한 형식 모델을 제시했지만, 불완전하거나 잘못된 부분이 있었다.
- Coq 기계화
- 우리는 ECMAScript 표준의 정규 표현식 의미론을 얕은 임베딩 방식으로 Coq에 기계화했다.
- 잠재적으로 실패할 수 있는 연산을 오류 모나드로 인코딩하여 충실하게 표현했다.
- 비지역적 연산은 지퍼 컨텍스트를 사용하여 인코딩했다.
- 일반 재귀는 연료 기반 인코딩을 사용하여 처리했다.
- 의미론 검증
- 우리는 Coq에서 중요한 불변 조건을 증명했다: 모든 매처 함수는 종료하며, 실패하지 않는다.
- 이 불변 조건은 정규 표현식 의미론의 안전성과 종료성을 보장한다.
- 우리는 이 불변 조건을 증명하는 과정에서 흥미로운 세부 사항을 발견했다.
- 응용 및 평가
- 우리의 기계화는 정규 표현식 컴파일 및 최적화 연구를 위한 유용한 기반을 제공한다.
- 또한 추출을 통해 ECMAScript 표준 테스트 스위트를 통과하는 실행 가능한 참조 인터프리터를 생성할 수 있다.
- 새로운 기능을 지원하도록 기계화를 확장하는 데 필요한 노력은 합리적인 수준이다.
종합적으로, 우리의 Coq 기계화는 JavaScript 정규 표현식 의미론을 충실하게 포착하고, 형식적으로 검증할 수 있는 기반을 제공한다.