완전성 대 프로그램 번역의 완전 추상화


15

컴파일러 검증 노력은 종종 컴파일러가 완전히 추상적임을 입증하기 위해 내려집니다. 즉, (상황적인) 동등성을 보존하고 반영한다는 것입니다.

완전한 추상화 증명을 제공하는 대신, Hasegawa [ 1 , 2 ] 및 Egger et al.의 최근 (범주 기반) 컴파일러 검증 작업 알. [ 3 ]은 다양한 CPS 번역의 완전성을 증명합니다.

질문 : 완전 완전성과 완전 추상화의 차이점은 무엇입니까?

나에게 완전성은 번역에 대한 동등성 반영처럼 보이고 충만 성은 동등성 보존의 결과 인 것으로 보인다.

참고 : Curien [ 7 ]과 Abramsky [ 8 ] 모두 정의 가능성, 완전 추상화 및 어느 정도 완전한 완전성 사이의 관계를 탐색합니다. 나는이 자료가 내 질문에 대한 답을 가지고 있다고 생각하지만 표면을 읽은 후에는 아직 그것을 확인하지 못했습니다.

어떤 배경 : 용어 "전체 완성도는"Abramsky 및 Jagadeesan [에 의해 만들어졌다 4 곱셈 선형 논리의 게임 - 의미 론적 모델의 정확성을 특성화하기].

Blute [ 5 ]는 다음 정의를 제공합니다.

하자 에프 무료 카테고리합니다. 우리는 범주 형 모델 미디엄F에 대해 완전히 완성 되었거나 발전기에 대한 일부 해석과 관련하여 고유 한 자유 functor 인 경우 M 과 관련하여 F의 완전 완성도를 가진다고 말합니다 .에프에프미디엄[[]]:에프미디엄 이 가득 찼습니다.

내가 알 수있는 한, [ 6 ]의 하세가와 는 범주 적 의미 론적 모델 대신 프로그램 번역을 설명하기 위해 완전한 완성도를 가장 먼저 적용한 것이다. 이 경우 지라드는 단순히 입력 된 람다 미적분에서 선형 람다 미적분으로 변환됩니다. 나중에 [ 1 ]에서 그는 CPS 번역 완전성을 다음과 같이 정의합니다 ().

경우 ; N : ( σ O ) OΓ;:(σ영형)영형 에서 유도되는 선형 람다 계산법 후 존재 Γ미디엄:σ 되도록 계산 람다 계산법에 Γ;미디엄=:(σ영형)영형 는 선형 람다 미적분을 유지합니다.

여기서 영형 는 선형 람다 미적분 (대상 언어)의 기본 유형이지만 계산 람다 미적분 (소스 언어)의 기본 유형은 아닙니다.

나에게, 하세가와의 정의는 충만처럼 보이고 완전 완전성을 얻기 위해 완전성과 완전하게 결합되어야합니다.

에거 등. 알. [ 3 ] CPS 번역의 완전성 를 (1) 완전성 및 (2) 완전성 조합으로 정의합니다.()V

(1) : Θ v | M v = β η N v : ! τ v 그리고 Θ M = λ c N : τΘ미디엄,:τΘV|미디엄V=βηV:!τVΘ미디엄=λ:τ

(2) : 다음 용어가 존재 Θ M을 : τ 등이 Θ의 V | M v = β η t : ! τ vΘV|:!τVΘ미디엄:τΘV|미디엄V=βη:!τV

(여기서 는 Moggi의 계산 방정식 이론입니다)=λ


[1] " 선형 적으로 사용 된 효과 : 선형 Lambda 미적분학으로의 Monadic 및 CPS 변환 ", Hasegawa 2002

[2] " Hasegawa 2004, 이름 별 선형 연속 통과의 의미 "

[3] " 풍부한 효과 미적분학에서의 선형 사용 CPS 번역 ", Egger et al. 알. 2012 년

[4] " 승리 선형 논리를위한 게임 및 완전성 ", Abramsky 및 Jagadeesan 1992

[5] " 선형 논리학자를위한 범주 이론 ", Blute 2003

[6] " 지라드 번역 및 논리 술어 ", 하세가와 2000

[7] " 정의 및 완전 추상화 ", Curien 2007

[8] " 정의 및 완전성을위한 원칙 ", Abramsky 1999

답변:


12

불행히도, 여기에 너무 많은 일이 일어나고 있습니다. 따라서 혼합하기가 쉽습니다. "완전한 완전성"및 "완전한 추상화"에서 "완전한"의 사용은 완전히 다른 완전성에 대한 아이디어를 나타냅니다. 그러나 그들 사이에는 모호한 관계가 있습니다. 따라서 이것은 복잡한 답변이 될 것입니다.

완전성 : "Sound and complete"는 의미와 관련하여 전통적인 논리에 원하는 속성입니다. 건전성은 의미 론적 모델에서 논리에서 증명할 수있는 모든 것이 사실임을 의미합니다. 완전성은 의미 론적 모델에서 사실이 무엇이든지 논리에서 입증 될 수 있음을 의미합니다. 논리 는 특정 의미 론적 모델에 대해 건전하고 완벽 하다고 말합니다 . 우리가 건설적인 논리에 올 때Martin-Lof 유형 이론 또는 선형 논리와 같이 공식을 증명할 수 있을지 여부와 그 증명이 무엇인지에 관심이 있습니다. 입증 가능한 공식은 많은 증거를 가질 수 있으며 건설적인 논리는 그것들을 분리시키고 싶어합니다. 따라서 구성 논리의 의미론에는 공식이 참인지 여부뿐만 아니라 사실에 대한 "증거"( "증거")의 추상 의미 론적 개념을 지정하는 것이 포함됩니다. Abramsky와 동료들은 "완전한 완전성"이라는 용어를 만들어 논리의 증거가 모델의 모든 의미 론적 증거를 표현할 수 있음을 의미했습니다. 따라서 "전체"는 여기서 증거를 나타냅니다. "완전한"논리는 필요한 모든 것을 증명할 수 있습니다. "완전한"논리에는 필요한 모든 증거가 있습니다. 따라서 "완전한 완전성"은 "구성 적 완전성"또는 "증명 된 완전성"을 의미합니다. 이것은 완전한 추상화와 관련이 없습니다.

완전 추상화 : "적절하고 완전 추상화"는 프로그래밍 언어 의 의미 론적 모델 에 원하는 속성 입니다. (첫 번째 차이점에 주목 : 이제 시맨틱 모델 의 속성을 다루고 있습니다.적절성이란 의미 론적 모델에서 두 용어가 동일한 의미를 가질 때마다 (일부 실행 개념과 관련하여) 프로그래밍 언어에서 관측 적으로 동일하다는 것을 의미합니다. 완전 추상화는 두 용어가 관측 적으로 동일 할 경우 의미 체계 모델에서 동일한 의미를 갖음을 의미합니다. 이러한 아이디어는 건전성과 완전성과 관련이있을 수 있지만 다소 결정적인 방식으로 제공됩니다. 만약 우리가 프로그래밍 언어의 의미 론적 모델을 관측 적 동등성에 대해 이야기하기위한 "논리적"또는 "증거 방법"으로 생각한다면,이 증명 방법이 적절하다는 것을 의미합니다. 완전한 추상화는이 증명 방법이 완료되었음을 의미합니다. "완전성"이라는 개념은 없습니다증명 방법. (그러나 이론적으로는 가능하며 요즘에는 누군가가 그렇게 할 수 있습니다.)

귀하의 경우 시맨틱 모델보다는 번역에 관심이 있습니다. 적절성과 완전 추상화의 속성은 다음과 같이 번역을 처리하도록 확장 될 수 있습니다. 대상 언어를 "의미 론적 모델", 즉 어떻게 든 완전히 이해하는 형식주의라고 생각합니다. 그렇다면 동등성이라는 개념이 있습니다. 그런 다음 두 가지 소스 프로그램의 번역이 대상 언어로 동등한 경우에는 번역이 소스 언어로 동등한 경우 번역이 적절 하다고 말합니다 . 우리는 두 개의 소스 프로그램이 소스 언어에서 관측 적으로 동일 할 때마다 번역이 대상 언어에서 동등한 경우 완전히 추상적 이라고 말합니다 .

실제로, 나는 우리가 정말로 "알고있는"어떤 대상 언어도 모른다. 우리가 아는 것은 목표 언어에 대한 관측 적 등가의 다른 개념입니다. 이 경우, 대상 언어에서 번역의 관측 적 동등성이 원어에서 관측 동등성을 암시하는 경우 번역이 적합합니다. 원어 의 용어에서 관측 된 동등성이 대상 언어에서의 번역의 관찰 가능한 동등성을 암시하는 경우, 번역은 완전히 추상적입니다. M N τ ( M )

τ(미디엄)τ()미디엄
: 몇몇 저자는 "완전히 추상적 번역"을 가지고이 두 가지 특성의 조합을 의미하는 M N을
미디엄τ(미디엄)τ()
미디엄τ(미디엄)τ()

:τ().미디엄:.τ(미디엄)=

이제 완전 완전성과 완전 추상화 사이 의 모호한 연결 . 시맨틱 모델 또는 변환이 완전히 추상적이라는 것을 증명하려면 종종 정의 가능성이 필요합니다. 우리의 언어는 일반적으로 고차이기 때문입니다. 따라서 시맨틱 모델 또는 대상 언어에 "컨텍스트"가 너무 많으면 용어 또는 시맨틱 의미를 바람직하지 않은 방식으로 찔러서 동등성을 망칠 수 있습니다. "바람직하지 않은 방법"은 프로그래밍 언어 자체가 그것을 찌를 수없는 방법을 의미합니다. 따라서 완전한 추상화를 위해서는 시맨틱 모델 또는 대상 언어에서 사용 가능한 "컨텍스트"가 소스 언어의 형태에서 어떤 형태로 나오는지 확인해야합니다. 이는 완전성 속성과 관련이 있습니다.

왜 우리는 그러한 속성을 원합니까? 그것은 아무것도 없다컴파일러와 관련이 있습니다! 소스 언어가 대상 언어에 포함되어 있다고 주장하기 위해 이러한 속성을 원합니다. 만약 우리가 특정한 목표 언어에 만족한다면 (깨끗하고 이해 가능하며, 근본적으로 또는 신이 부여한), 소스 언어에 포함되어 있다면, 소스 언어에 새로운 것이 없다고 주장 할 수 있습니다. 우리가 알고 사랑하는 대상 언어의 일부일뿐입니다. 그것은 단지 구문 설탕입니다. 따라서, 사람들이 완전히 추상적 인 번역을하여 특정 대상 언어가 훌륭하다는 것을 확립합니다. 그들은 또한 다루기 힘들거나 복잡한 언어를 가진 사람들에 의해 주어집니다. 따라서 의미를 직접 정의하는 대신 핵심 언어로 번역 한 다음 핵심 언어에 의미를 부여합니다. 예를 들어, Haskell 보고서가이를 수행합니다. 그러나 소스 언어가 크고 복잡하기 때문에 이러한 번역의 완전한 추상화는 거의 증명되지 않습니다. 사람들은 번역이 좋다고 믿음으로 생각합니다.

다시 한 번, 이것은 컴파일러와 관련이 없습니다. 컴파일러가 거의 적절하거나 완전히 추상적 인 것은 아닙니다. 그리고 그들은 필요하지 않습니다! 컴파일러가해야 할 일은 완전한 프로그램의 실행 동작을 유지하는 것입니다. 컴파일러의 대상 언어는 일반적으로 엄청 나기 때문에 등가를 망칠 수있는 많은 컨텍스트가 있습니다. 따라서, 소스 언어의 동등한 프로그램은 컴파일 할 때 상황에 따라 동등하지 않습니다.


우리가 실제로 완전히 이해하는 언어가 없다고 말하는 것은 무엇을 의미합니까?
Martin Berger

아직 아무도 건설적인 증명 방법을 나타내는 의미 론적 모델을 만들지 않았다는 말의 의미는 무엇입니까?
Martin Berger

1
죄송하지만, "번역"에 대한 의미는 이전 텍스트와 비교하여 잘못된 방향으로 보입니다. 예를 들어, PCF에 대한 완전한 추상화는 M (N⟹τ (M) ≅τ (N)을 요구합니다 (τ는 의미 상 의미론이고 기호를 변경할 필요는 무시 함) : "완전한 추상화는 두 용어는 관측 적으로 동일하며 의미 론적 모델에서 동일한 의미를 갖는다 ". 그러나 당신의 의미는 반대입니다 (즉, 당신은 τ (M) ≅τ (N) ⟹M⟹N을 씁니다)! 아니면 번역이 의미 론적 의미와 다르게 작동합니까?
Blaisorblade

1
@Blaisorblade : 당신은 절대적으로 맞습니다! 나는 대답의 내용을 수정했다.
Uday Reddy

1
완전한 추상화는 언어 수준 보안 및 잠재적 언어 간 통합에도 관심이 있습니다. 즉, 대상 언어의 어떤 것도 소스 언어의 추상화를 위반할 수 없다는 것을 아는 것이 유용합니다.
dmbarbour

5

요약 : 완전성이란 해석 기능이 완전 할뿐만 아니라 프로그램에 대한 예측도를 의미합니다. 완전 추상화에는 노출에 대한 요구 사항이 없습니다.

[[.]]

  • [[]]

  • Γ[[Γ]]

  • Γ:α[[Γ]][[]]:[[α]]

[[.]]

에스     iff     [[]][[]]

,에스

Γ,α에스     iff     [[]][[Γ]],[[α]][[]]
Γ,α,,[[.]]

[[.]]

[[.]][[Γ]]:[[α]]Γ:α=[[]][[.]]

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