프로그래밍 언어 시맨틱 프로토 타이핑 도구


11

프로그래밍 언어 시맨틱 및 유형 시스템을 프로토 타이핑하는 도구가 있습니까? 또한 유형 건전성과 같은 표준 속성을 검사 할 수있는 도구가 있습니까?

나는 Alloy에 관한 책을 읽고 있기 때문에 내가 원하는 정확한 기능을 제공하지만 관계형 논리를 사용하여 표현 된 모델에 대해 이것을 요구하고 있습니다.

Ott에 대해 알고 있지만 이러한 유형의 "모델 검사"기능은 교정 보조 시스템 용 코드 생성에 중점을두고 있기 때문에 없습니다.

이러한 도구의 존재에 대한 참조는 좋을 것입니다.


1
Ott는 1 단계입니다. 그러면 좋아하는 증거 도우미에서 모델 검사를 수행합니다.
Gilles 'SO- 악마 중지

@Gilles : 좋습니다. 그러나 모델 검사 도구의 요점은 속성이 실제로 유효한지 확인하기 위해 주어진 크기의 전체 요소 집합을 생성한다는 것입니다. 이런 식으로, 정의 된 모든 언어에 대해이 생성 부분을 코딩해야합니다. 이 세대 단계를 자동화 할 수있는 방법이 있는지 알고 있습니까?
로드리고 리베이로

엄밀히 말하면 교정 조교 (적어도 Coq와 같은 장치)에서이 작업을 수행 할 수 있지만 속도가 매우 느릴 수 있습니다. 교정 보조원은 문제를 해결하기 위해 수백만 가지 방법을 자동으로 시도하지 않고 사람이 보조하는 증거를 지향합니다. Ott를 재사용하려는 경우 선호하는 모델 검사기의 백엔드를 추가 할 수 있습니다.
Gilles 'SO- 악의를 그만두십시오

답변:


8

프로그래밍 언어 프로토 타이핑 (시맨틱, 타입 시스템, 평가, 속성 확인 등)을 위해 특별히 만들어진 프레임 워크가 있지만 최선의 선택은 특정 사례와 특정 요구에 따라 다릅니다.

말했듯이, 당신이 취할 수있는 여러 가지 대안이있을 것입니다 (아마도 언급하지 않은 대안 포함).

  • 새로운 언어를 만들고 프로토 타이핑하도록 설계된 특정 언어 / 프레임 워크 사용 : 예를 들어, 프로그래밍 언어의 의미를 지정하고 확인하기 위해 라켓에 내장 된 도메인 별 언어 인 Redex [1]. 언어, 조판 (라텍스에서), 축소 흔적 검사, 단위 테스트 및 임의 테스트 (예 : 타이핑 확인)와 같은 작업을 쉽게 처리 할 수 ​​있습니다.
  • 특정 언어를 필요한 정도로 포착 할 수있는 한 특정 분석을 쉽게 정의하고 수행 할 수있는 일반 모델링 언어를 사용합니다. 합금 [2]는 이러한 접근 방식의 예입니다. 상당히 일반적이고 융통성이 있지만 언어는 상태 간의 관계로 모델링 될 수 있지만, 의미 확인이 의미론으로 표현 된 후 모델 확인 (예 : 해당 언어 내 평가)에 대한 지원은 무료입니다. 관계 모델 (예 : 언어의 의미론을 모델링하기위한 몇 가지 아이디어는 [3]에서 찾을 수 있음)
  • 정리 증명자를 사용하여 언어를 삽입하여 속성을 확인하는 단계; Coq [4]와 같은 증명 시스템에 언어를 포함시켜 언어와 의미를 정의하는 예가있다 [4]. 5])
  • Ott 사용 (이미 언급 한 바와 같이 Redex와 비슷한 정신을 가지고 있지만 포함되지 않고 새로운 정의 언어를 제공함); Ott를 사용하면 편리한 표기법으로 프로그래밍 언어를 정의하고 대부분의 검사 (즉, 교정)를 수동으로 수행해야하는 교정 시스템 (일반적으로 딥 임베딩)에서 조판 및 정의를 생성 할 수 있습니다.
  • 범용 프로그래밍 언어에서 "처음부터"적절한 점검 (예 : 테스트)뿐만 아니라 언어 및 그 의미를 개발하고 필요한 경우 다른 시스템으로의 번역 (레온 [6]과 같은 일부 언어) 특정 속성을 자동으로 증명하고이 접근 방식을 증명 시스템에 포함시키는 것과 유사한 확인 기능이 내장되어 있습니다)

프레임 워크 / 도구를 사용하는 것이 얼마나 쉬운 지 (예를 들어 종이나 라텍스에 정의를 내리는 것처럼 쉬운 지)와 언어의 속성을 확인하는 메커니즘이 얼마나 강력한 지 (예 : 정리 증명의 언어는 매우 정교한 속성을 확인할 수 있습니다).

[1] 케이시 클라인, John Clements, Christos Dimoulas, Carl Eastlund, Matthias Felleisen, Matthew Flatt, Jay A. McCarthy, Jon Rafkind, Sam Tobin-Hochstadt 및 Robert Bruce Findler. 경량 기계화의 효과에 관한 연구를 실행하십시오. POPL, 2012.

[2] 다니엘 잭슨. 합금 : 가벼운 물체 모델링 표기법. TOSEM, 2002.

[3] Greg Dennis, Felix Chang, Daniel Jackson. SAT를 사용한 코드의 모듈 검증. ISSTA, 2006

[4] Coq 공식적인 증거 관리 시스템

[5] 프로그램에 대한 공식 추론. 아담 클리 팔라, 2016

[6] 기능성 스칼라 프로그램의 검증, 수리 및 합성을위한 Leon 자동화 시스템

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.