Martin-Löf 형식 이론, 즉 Coq / Agda로 공식화 된 검증 된 컴파일러에 관심이 있습니다. 현재 나는 작은 장난감 예제를 작성했습니다. 이를 통해 최적화가 올바른지 확인할 수 있습니다. 예를 들어, 0을 사용한 추가는 제거 할 수 있습니다 (예 : "x + 0"과 같은 표현식).
일반적인 컴파일러로는 수행하기 어려운 최적화가 있습니까? 일반 컴파일러로는 수행 할 수없는 최적화를 허용하는 프로그램의 특정 속성을 증명할 수 있습니까? (즉 정리 정리로 가능한 추론없이)
아이디어 나 예제에 관심이 있고 주제에 대한 참조도 있습니다.
관련 질문 : 컴파일러 정확성 증명
편집 : 쓰요시 (Tsuyoshi)는 주석에 멋지게 넣었습니다. 컴파일러가 C로 작성된 경우 구현하기는 어렵지만 컴파일러가 Coq로 작성된 경우 구현하기 쉬운 최적화 기술을 찾고 있습니다. Agda가 C로 컴파일 할 때 (haskell을 통해) C에서도 Agda에서 가능한 모든 작업을 수행 할 수 있습니다. Coq / Agda와 같은 정리 프로 바이더의 유일한 이점은 컴파일러와 최적화를 확인할 수 있다는 것입니다.
edit2 : Vijay DI가 제안한대로 지금까지 읽은 내용을 작성하십시오. 저는 주로 INRIA의 Xavier Leroy와 CompCert 프로젝트에 중점을 두었습니다 (80 페이지의 좋은 논문이 있습니다). 두 번째 관심사는 대화식 프로그램에 대한 Anton Setzer의 작업에있었습니다. 나는 아마도 그의 작품이 IO 프로그램과 IO 프로그램의 bisimulation에 대한 속성을 증명하는 데 사용될 수 있습니다. Sewell을 언급 해 주셔서 감사합니다. ICFP에서 그의 이야기 "정글에서 이야기"를 듣고 아마 그의 논문 중 2-3을 읽었습니다. 그러나 나는 그의 작품과 그의 공동 저자의 작품을 구체적으로 보지 않았습니다.
아직 컴파일러 최적화에 대한 논문을 어디서 찾거나 찾아야하는지 찾지 못했습니다. 예를 들어, 검증 된 컴파일러의 설정에서 살펴볼 수있는 최적화는 무엇입니까?