타입 시스템이 외국 기능의 교정 보조 역할을 할 수 있습니까?


9

을 고려하면:

  1. 표현력이 매우 높은 시스템 (예 : Idris )을 사용 하는 언어에는 외부 기능 인터페이스 / 안전하지 않은 PerformanceIO와 같은 이스케이프 메커니즘이있을 수 있습니다.
  2. 이러한 속성을 표현할 수있는 형식 시스템이없는 언어로 작성된 프로그램의 일부 속성을 증명하는 데 사용할 수있는 증거 도우미가 있습니다.
  3. Curry–Howard 서신은 주어진 유형을 가진 함수의 형식 확인이 성공적으로 구현 된 것이 해당 유형으로 표현 된 내용의 증거라는 것을 보여줍니다.

모국어의 타입 시스템에서 외국어 코드의 일부 속성에 대한 사소한 증거를 표현할 수 있습니까?

예를 들어, 이미 동일한 요소의 순서를 유지하면서 굉장히 영리하고 효율적인 방식으로 숫자를 정렬하는 stable_qsort라는 C 함수와 FFI를 통해 steady_qsort를 호출하는 Idris 프로그램을 가지고 있지만 상대적으로 모호하지는 않습니다. C 기능. 함수가 별도의 증명 도우미를 사용하는 대신 Idris 코드에서 모든 입력에 대해 동일한 요소의 순서를 바꾸지 않는다는 것을 증명할 수 있습니까?

답변:


10

간단히 말해서 : 불가능합니다. 외래 함수는 블랙 박스와 같으며 그에 따르는 유형은 커리 하워드 통신에서 이론에 공리를 추가하는 것과 일치한다는 약속입니다.

그 말에는 방법이 있습니다. 예를 들어 Coq에는 C 표준의 다양한 공식화가 있습니다 (예 : Robbert Krebbers의 작업 ). C 프로그램과 해당 시맨틱을 명시 적으로 나타내므로 교정 보조에서 직접 코드를 작성하면 해당 특성 중 일부를 증명할 수 있습니다.

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