람다 미적분학 : 상황과 평가 상황의 차이


12

먼저 아래 텍스트에 오류가있을 수 있으므로 질문을 구성 할 때 실수를 지적하십시오.

부울과 if 구문이 포함 된 형식화되지 않은 람다 미적분을 고려하십시오.

 t ::= v | t t | if t t t | x
 v ::= \x.t | #t | #f

이 경우 컨텍스트 C는 다음 구문에 따라 제공됩니다.

C ::= [-] | \x. C | C t | t C | if C t t | if t C t | if t t C 

또한이 다른 구문에 따라 평가 컨텍스트 E를 정의 할 수 있습니다.

E ::= [-] | \x. E | v E | E t | if E t t 

질문을 세 가지 하위 지점으로 나누고 자합니다.

  1. 두 개념은 언제 사용됩니까? 예를 들어 평가 컨텍스트가 미적분의 의미를 정의하는 데 사용된다는 것을 알고 있지만 컨텍스트 사용은 여전히 ​​다소 어려워집니다. 또한 여기에 내 지식을 확인하고 싶습니다.
  2. 하나는 언제 다른 쪽을 선호합니까?
  3. 이 문제를 정리하는 데 도움이되는 관련 기사를 말씀해 주시겠습니까?

답변:


15

컨텍스트는 많은 목적으로 사용되지만 일반적으로 프로그램에 대한 합의를 정의하는 데 사용됩니다. 평가 컨텍스트는 컨텍스트의 서브 세트입니다. 이들은 일반적으로 축소 관계를 정의하는 데 사용됩니다. 각각의 예를 들어 보겠습니다.

프로그램 평등을 정의하는 한 가지 공식적인 방법은 두 프로그램 과 이 상황에 따라 동일 하다고 말하면 행동의 변화없이 각 상황에서 서로를 대체 할 수 있다는 것입니다. 다음과 같다 : 우리는 이것을 정의 할 수 과 문맥 모두 폐쇄 컨텍스트 제공된 동일한 에 대한 및 : 경우에만, . 만약 이나 이 자유 변수를 가지지 않는다면 컨텍스트가 대해 닫혀 있다고 합니다. 표현식N M N C [ ] M N C [ M ] t C [ N ] t M , N C [ M ] C [ N ] M t M tMNMNC[]MNC[M]tC[N]tM,NC[M]C[N]Mt즉, 프로그램 은 유한 한 단계 수만큼 값 합니다. (제외 적으로, 문맥 상 동등성의 정의는 동시 처리와 같은 풍부한 계산 개념에 더 관여한다는 점에 유의하십시오.)Mt

반대로 평가 컨텍스트는 평가를 차단하지 않는 컨텍스트입니다. 보다 정확하게 평가 문맥은 다음 원자 감소 단계가 발생해야하는 지점에 구멍이있는 용어입니다 (또는 비 결정적 계산을 위해 발생할 수 있음). 따라서 평가 컨텍스트에 대해 다음 규칙을 준수해야합니다. 평가 컨텍스트를 사용하는 예로, 호출 에 대한 축소 규칙을 고려하십시오. 우리가 아래로 줄이지 않는 미적분학 . 따라서 일 때도 감소하지 않습니다 λλMNλx. Mλx. Nλ

MNE[M]E[N]
λλMNλx.Mλx.N. 이는 -expression 을 생략하는 평가 컨텍스트에 대한 문법과 함께 위의 일반적인 컨텍스트 규칙으로 쉽게 표현할 수 있습니다 . 평가 맥락은 Felleisen과 Hieb 의 순차 통제와 국가의 구문론에 관한 개정 보고서 에서 처음 사용되었다 .λ

14

문맥은 구문 개념입니다. 문맥은 하나의 구멍이있는 용어입니다. (다중 구멍 컨텍스트가있는 경우가 종종 있으며,이 경우 정의가 명확하게 제공됩니다.) 컨텍스트 구문은 용어 구문을 사용하여 하나의 하위 용어가 용어 대신 구멍 이되도록 정의하여 정의됩니다 . BNF에서 (부울과 예제가없는 if 문이없는 람다 미적분학을 예제로 사용합니다.) : C : : = [ ] x t[]

C::=[]xtCCtλx.C

컨텍스트 정의와 함께 용어를 컨텍스트에 넣는 정의가 제공됩니다. 경우 컨텍스트이고 용어이다 후 바꾸어 얻어진 용어 정공 어디 구문 트리에서 에 . 이것은 기본적으로 변수가 정확히 한 번만 발생하는 치환입니다. 그러나 대체되는 "변수" 는 람다 미적분 또는 다른 용어의 변수가 아닌 메타 수준 에서 변수입니다. ).t C [ t ] t [ ] C [ t ] [ ] tC[]tC[t]t[]C[t][]t

컨텍스트는 시맨틱에서 다양한 정의를 공식화하는 데 사용됩니다. 일반적인 예는 대부분의 평가 개념이 평가를 수행 할 수있는 컨텍스트를 정의하는 것입니다. 예를 들어 람다 미적분을 고려하십시오. 평가의 기본 개념은 베타-감소 규칙에 의해 주어진다 : 여기서 은 치환이다 은 적용됩니다 .M { x N } x N M

(λx.M)NβM{xN}
M{xN}xNM

이것은 베타 감소의 완전한 정의는 아닙니다. 용어 주어지면 하위 용어 과 과 과 같은 변수 가 있으면 베타 감소가 가능합니다 . 그러나 과 같은 하위 용어 가 있으면 더 일반적으로 는 베타를 줄일 수 있습니다 . 이것을 표현하는 또 다른 방법 은 컨텍스트 와 일부 용어 과 있고 과 같은 변수 가 있으면 가 베타를 줄일 수 있다는 것입니다tMNxt=(λx.M)Nttt=(λx.M)NtCMNxt=C[(λx.M)N]. 이러한 축소가있는 경우 오른쪽은 입니다. 공식 표기법을 사용하기 위해 베타 감소는 다음 공제 규칙에 의해 정의됩니다. 모든 종류의 컨텍스트를 명시 적으로 지정하여 동일한 정의를 표현할 수 있습니다. C[M{xN}]

(λx.M)NβM{xN}(β)MβNC[M]βC[N](γ)
(λx.M)NβM{xN}(β)MβNλx.Mβλx.N(Cλ)MβNMPβNP(C@<)MβNPMβPN(C@>)

이 정의는 베타 감소, 즉 하위 용어를 줄일 수있는 평가 개념을 산출합니다. 프로그래밍 언어로 수행되는 계산에서는 종종 함수 내부의 하위 용어를 줄일 수 없습니다. 축소 규칙은 응용 프로그램의 최상위 또는 왼쪽 또는 오른쪽에만 적용 할 수 있습니다. 모든 구문 형태를 허용하지 않는 새로운 종류의 컨텍스트를 정의하여이를 표현할 수 있습니다. 이 구문을 사용하여 의미 개념을 정의 할 수 있습니다 비 부분 평가 : 또한 전체 베타 축소를 위해 위에서 설명한 것처럼 확장하여이 정의를 제시 할 수도 있습니다.

D::=[]xtDDt
(λx.M)NnpM{xN}MnpND[M]npD[N]
(λx.M)NnpM{xN}(β)MnpNMPnpNP(C@<)MnpNPMnpPN(C@>)
D 는 평가 개념을 정의하는 데 사용되므로 평가 컨텍스트라고합니다. 평가 컨텍스트는 특별한 종류의 컨텍스트가 아닙니다. 오히려 평가 컨텍스트라고 부르는 것은 컨텍스트가 사용되는 문제입니다 .

문맥의 예를 하나 더 보여 드리겠습니다. 다음 구문에 따라 값을 정의 해 봅시다 : 이제 다른 종류의 컨텍스트를 정의 해 봅시다 : 위의 와 비교할 때 응용 프로그램의 인수가 다음과 같은 경우에는 응용 프로그램의 함수쪽에 구멍이있을 수 있습니다. 가치. 다음 감소 개념을 정의하십시오. V

V::=xV1Vnλx.M
E::=[]MEEV
D
(λx.M)VcbvaM{xV}(βcbva)MβNE[M]cbvaE[N](γcbva)
함수의 인수가 첫 번째 규칙의 값이어야하고 람다 추상화가 컨텍스트가 아니라는 제한으로, 값별 평가 전략을 정의하고 있습니다. 인수가 함수보다 먼저 평가된다는 추가 제한 사항은 값을 기준으로 적용 순서 호출입니다.

1
평가 맥락에 대한 후자의 정의는 원래 Felleisen 및 Hieb 개념에 더 가깝습니다. 미적분학 용어의 평가 순서를 표현하는 데 도움이되는 구문 적 수단입니다. 평가 컨텍스트 특수한 컨텍스트 유형으로, 용어를 컨텍스트와 리 덱스 (가능한 경우)로 고유하게 인수 화하여 다음 축소 단계가 발생해야하는 위치를 결정적으로 표시 할 수 있습니다.
Dave Clarke

@DaveClarke 따로, 평가 컨텍스트를 사용하여 비 결정적 계산 개념에 대한 평가를 정의 할 수 있습니다. 여기서 평가 컨텍스트와 redex로 고유 한 분해가 없습니다.
Martin Berger

@MartinBerger : 인디 디.
Dave Clarke

@DaveClarke " 결정 론적 평가 맥락은 특별한 종류의 맥락"을 의미합니까? 임의의 컨텍스트 집합을 사용하고이를 기반으로 평가 전략을 정의 할 수 있습니다.
Gilles 'SO- 악마 그만'

@Gilles : 평가 컨텍스트는 결정적 축소 전략을 정의 할 수 있습니다. 나는 "결정 론적 평가 맥락"이라는 구절을 보지 못했다고 생각한다. 그들은 물론 특별한 종류의 맥락입니다. 귀하의 의견에 동의합니다. 요점은 당신의 대답이 결정적 축소 개념을 정의하는 평가 맥락의 역사적 중요성을 놓친다는 것입니다.
Dave Clarke
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.