Coq에서 OCaml의 형식적 의미


14

OCamllight 라고하는 OCaml의 큰 부분 집합의 의미는 몇 년 전 Owens에 의해 HOL로 공식화되었습니다. 보다 최근에는 Kuple , Hayden 및 Hickey 가 Nuprl에서 더 작은 OCaml 하위 집합의 유형 이론적 의미론을 구현했습니다 .

Coq에도 비슷한 발전이 있습니까?


CakeML에 관심이있을 수도 있습니다 : cakeml.org . 그래도 OCaml은 아닙니다.
jmite

답변:


12

Arthur Charguéraud의 박사 학위 논문, 기계화 프로그램 검증을위한 특성 공식을 보셨습니까 ?

그는 타입 시스템과 작은 단계 의미론을 유도 관계로 구축하는 대신 Caml 프로그램을 특성 공식으로 변환하는 기술을 제공합니다. 이것은 기본적으로 술어 변압기 의미론의 일반화로, 특히 안전하지 않은 캐스트를 포함하여 매우 큰 Ocaml 서브 세트를 지원합니다 Obj.magic. 그의 논문에서 인용하자면 :

저는 OCaml 프로그래밍 언어의 하위 집합에 중점을 두 었으며, 이는 순차 가치 별 고급 프로그래밍 언어입니다. CFML의 현재 구현은 고차 함수, 재귀, 상호 재귀 및 다형성 재귀를 포함한 핵심 λ 미적분을 지원합니다. 튜플, 데이터 생성자, 패턴 일치, 참조 셀, 레코드 및 배열을 지원합니다. null 포인터 및 강력한 업데이트에 대한 지원을 추가하는 추가 Caml 라이브러리를 제공합니다.

특정 Caml 프로그램의 정확성을 입증하고 싶을 때 매우 매력적입니다.


따라서 내가 올바르게 이해한다면 Ocaml의 의미론의 사양이 시스템에 내장되어 있습니다. 시스템의 특징적인 공식을 그러한 사양으로 해석 할 수 있습니까? 또한 시스템이 OCaml로 작성된 것으로 가정합니다. 시스템 자체에서 정확성을 지정하고 증명할 수 있습니까?
Andrea Asperti

주어진 OCaml 프로그램의 경우, 그 특징적인 공식은 프로그램의 바람직한 특성을 증명하는 데 사용될 수있는 "최소의 일반"사양 인 의미 론적 의미로 생각할 수 있습니다. CFML 자체의 "정확성"에 대해 말하면 문제는 다음과 같습니다. 어떤 대체 공식 의미론과 관련하여?
gasche

소프트웨어를 인증해야하고 동작을 지정할 수없는 프로그램이 이상합니다. :)
Andrea Asperti

@AndreaAsperti "시스템에 내장"이란 무슨 뜻입니까? 특성 수식 (CF)의 기본 개념은 매우 간단합니다. 프로그램을 논리 수식 (일반적으로 사전 및 사후 조건)에 매핑하면 수식이 프로그램의 의미를 정확하게 설명합니다. 다시 말해, 두 프로그램은 상황에 따라 구별 할 수없는 동일한 CF를 만족시킵니다. 프로그램에서 CF 로의 매핑은 프로그램 구조의 유도에 의해 수행되며 충분히 표현적인 논리를 대상으로 할 수 있습니다. A. Charguéraud가 Coq의 논리를 선택했지만 이는 우연한 선택입니다.
Martin Berger

1
@MartinBerger : Guéneau et al 논문은 파생 된 사전 / 포스트 파생 된 프로그램의 특성을 나타내지 않기 때문에 건전성을 입증 합니다. CF는 CakeML의 형식화되지 않은 의미론에서 파생되지만 형식화 된 언어는 다른 관측 적 동등성을 갖습니다. (실제적인 검증을 위해 이것은 매우 중요하지 않으며 더 쉽습니다.)
Neel Krishnaswami

8

Jacques Garrigue의 구조적 다형성 및 재귀 유형을 사용한 ML의 인증 된 구현에 관심이있을 수 있습니다 . 이는 구조적 다형성 을 가진 ML 언어에 대한 정적 및 동적 의미론의 견고성 유형 추론의 속성을 설정하여 OCaml의 고급 코너 (다형성 변형 및 객체 유형).

즉,이 작업은 기존 OCaml 프로그램의 기능 세트를 다루는 것보다 유형 시스템의 고급 부품의 건전성을 검증하는 데 더 중점을 둡니다. 기존 OCaml 프로그램의 정확성을 입증하려는 관점에서 CFML이 더 나은 선택이라고 생각합니다.

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