데이터 흐름 분석, 추상 해석 및 형식 유추의 동등성?


9

최근 질문에 대한 @Babou의 대답 은 한 번에 데이터 흐름 분석 의 동등성 (추론되거나 입증 될 수있는 사실과 추론 알고리즘을 실행하는 시간 복잡성)에 관한 논문을 읽은 것으로 생각 합니다. , 추상 해석형식 유추 .

일부 하위 사례 (정방향 상황에 따른 절차 간 데이터 흐름 분석과 추상 해석 등)에서 동등성은 비교적 분명하지만 질문은 다른 비교에서 더 미묘하게 보입니다. 예를 들어, Hindley-Milner 형식 유추를 사용하여 흐름에 민감한 데이터 흐름 분석 으로 증명할 수있는 일부 속성을 증명하는 방법을 알 수 없습니다 .

데이터 흐름 분석, 추상 해석 및 형식 유추의 동등성 (또는 차이점)을 설명하는 기본 참조는 무엇입니까?

답변:


4

데이터 흐름 분석 및 형식 유추는 추상 해석의 특정 예입니다.

데이터 흐름 분석과 추상 해석은 모두 수정 점 계산에 관한 것이므로 비슷합니다. 데이터 흐름 분석에는 일반적으로 유한 높이 추상 도메인이있어 종료를 보장합니다. 일반적으로 추상 해석은 그러한 추상 영역을 가정하지 않습니다. 무한 높이 영역을 다루기 위해 추상 해석은 확대 및 축소 기술을 사용합니다.

타입 추론 역시 수정 점 계산에 관한 것으로 밝혀졌지만, imo와는 거리가 멀다. 다음은 유형이 추상적 해석이라는 것을 명시 적으로 보여주는 논문 입니다. paper . 기본적으로 유형은 프로그램 콘크리트 의미의 추상화로 간주됩니다. 예를 들어 Hindley-Milner 유형 시스템에서 유형의 추상 도메인은 높이가 무한하며 통합을 사용하여 (가장 일반적인) 유형을 계산하는 것은 본질적으로 (매우 부정확 한) 확장 작업을 수행합니다.


4

이 세 가지 접근 방식과 Nielson, Nielson 및 Hankin 의 프로그램 분석 원칙 (Principles of Program Analysis )이라는 책이 어떻게 관련되어 있는지 배울 수있는 좋은 곳 입니다.

데이터 흐름 분석, 추상 해석 및 형식 유추가 같은 것이라고 말하는 것이 옳지 않다고 생각합니다. 세 가지가 다른 공동체에서 유래했다는 점을 감안하면 많은 유사점이 있고 아마도 예상보다 많을 수도 있지만, 많은 차이가 있습니다.


3

나는 그것들을 기본적으로 동일하다고 생각합니다. 그들은 처음에 다른 목표를 가졌고 다른 컴퓨터 과학 파벌에 의해 만들어졌습니다.

데이터 흐름 분석은 최적화 알고리즘에 대해 이야기하고 복잡성 등에 대한 상한을 교정하려는 컴파일러 엔지니어링 진영에서 비롯됩니다.

추상적 해석은 컴퓨터 과학의 형식적이고 수학적 분야에서 비롯됩니다. 이것은 정확성에 더 관심이 있고 실제 컴파일러를 작성하는 데는 덜 공식적인 버전입니다.

타입 추론은 기능 프로그래밍의 학문 분야에서 비롯된 것으로서, 초기에는 컴파일러로 멋진 작업을 수행하는 도구였습니다. 그런 다음 유형은 "int"또는 "float"뿐만 아니라 고전적인 데이터 흐름 분석과 같은 다른 것들도 될 수 있다는 아이디어가 나왔습니다.

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