변경 프리 서버로서의 프레임 규칙?


18

프레임 규칙은 , 아래의 하나처럼, 프로그램 주어진한다는 생각 캡처 c전제 조건으로 p이 실행되기 전에 보유 및 사후 q이후 보유, 일부 분리 된 조건이 r전후를 보유해야 c실행됩니다. ( *연결은 인수가 분리되어야합니다.) 종종 사전 및 사후 조건은 힙의 상태이며 c힙을 어떤 방식 으로든 수정하는 효과적인 프로그램입니다.

    {p} c {q}
----------------- (where no free variable in r is modified by c)
{p * r} c {q * r}

내가 본 프레임 규칙에 대한 논의는 항상 힙의 분리 된 부분이 어떻게 r보존 되는지에 초점을 맞추는 것처럼 보입니다 . 이것은 "로컬 추론"을 가능하게합니다. 그 영향에 대해 추론 할 때 c, 우리는 r힙 부분을 무시하고 실제로 변하는 부분에만 관심을 가질 수 있습니다. 그러나 그것을 보는 또 다른 방법 은 지금 거기에 앉아 있지만 에서 p로의 변화q 가 유지 된다는 r것입니다. 다시 말해, 우리는 다른 {q * r}것보다는 사후 조건으로 끝내는 것이 중요합니다 .{q' * r}q'

그래서, 내 질문은 나와 나 차종이 보존 --의 변화 단으로의 사용을 프레임 규칙의 어떤 치료가 있는지 여부입니다 pDi의 q일.


내 자신의 질문에 대한 한 가지 대답은이 백서에 있습니다 : software.imdea.org/~gotsman/papers/interproc-sas06.pdf , 문장 (강조 광산) "P가 C의 발자국을 할당하면 프레임에 따라 실행 추가 메모리가 있는 경우 C는 동일한 동작 을하며 C는 추가 메모리를 건드리지 않습니다. " "C는 여분의 메모리를 건드리지 않는다"는 것 외에 다른 사람이 지적한 것은 "같은 행동으로 귀결된다"는 것입니다. (링크를 위해 @kaosjester에게 감사합니다.)
Lindsey Kuper

1
프레임 규칙 및 기타 분리 논리 규칙의 건전성 증명을 읽으면, 그들이 정확히 무엇을하고 있는지, 즉 에서 로의 변경이 어떻게 보존 되는지에 대해 이야기한다는 것을 알게 될 것 입니다. 여기에 언급 된 지역 및 프레임 속성에주의하십시오. qpq
Uday Reddy

답변:


11

그러나이 q부동산 변경 없음 은 실제로 유지되지 않습니다!

고려하십시오 {emp} x := alloc(0) {x |-> 0}. 이제 프레임에 y |-> 3들어가면

{y |-> 3} x := alloc(0) {x |-> 0 * y |-> 3}

그러나 결과에 따라 사후 조건을 다음과 같이 변경할 수 있습니다.

{y |-> 3} x := alloc(0) {(x |-> 0 /\ x != y) * y |-> 3}

보다 구체적으로하기 위해 y숫자가 있다고 가정 합니다 37. 나는 완전히 비어 힙에 할당 명령을 실행하면, 내가 주소를 할당 끝날 가능성이 있습니다 37있도록 x = 37. 그러나 address에 단일 셀을 포함하는 힙으로 시작 y = 37하면이 결과는 더 이상 가능하지 않습니다! 사전 조건에 프레임을 추가하면 사후 조건에서 일부 비결 정성이 정리되었습니다.

"로컬 액션과 추상 분리 로직"(Calcagno, O'Hearn, Yang)이라는 논문은 프레임 규칙을보다 심층적이고 의미있는 관점에서 이해하는 것에 관한 것입니다. 이 논문의 주요 정의 는 행동이 프로그램의 의미 론적 표현 인 "행동"에 대한 지역성 이다. 지역은 일부 프레임 힙을 추가 할 때 원래 사후 조건을 변경할 수있는 유일한 방법은 위와 같이 비결 정성을 정리하는 것입니다. 실제로, 가지 치기는 할당 때문에 만 발생합니다.


예제와 참조 주셔서 감사합니다! 당신의 예는 말이됩니다. 그래도 q" q, 그리고 ..." 로만 바뀔 수 있다고 말하는 것이 공평 합니까? 또한 할당이 사후 조건에서 비결정론을 제거 할 수있는 유일한 방법이라면 (그 자체로 멋진 결과입니다), 위치 독립적 인 사후 조건의 일부가 있다면 사후 조건의 일부입니다 동일하게 유지? 사후 조건이 위치의 알파 이름 변경과 동일하게 유지된다고 말할 수 있습니까? (예를 염두에 두었지만 이메일을 통해 더 잘 설명 할 수 있습니다.)
Lindsey Kuper

1
예, q""로만 변경할 수 있습니다 q. 그리고 다시 말해서 ... 사후 조건은 더 강해질 수 있습니다 . 원래의 사후 조건을 암시합니다. 이것은 활동에 대한 지역성 정의의 일부입니다. 그러나 사후 조건의 변경이 이름 변경에만 관련되는 것은 사실이 아닙니다. 예제에서 나는, 여분의 사실을 준 x하고 y뚜렷한 상관없이 위해 선택된 특정 주소의 사실이다 y. 이 예는 이름 변경시 변하지 않는 할당 의 신선도 를 캡처합니다 .
Aaron Turon

11

먼저, 당신의 질문에 대한 약간의 오해가 있는데, 그것은 Aaron이 그의 답변에서 얻고있는 것입니다. 분리 논리의 술어 세트 (또는 동일하게 힙의 술어)이며 분리 연결 는 다음과 같이 정의됩니다.PQ

PR{h1h2|h1Ph2Rdom(h1)dom(h2)=}

프레임 규칙에서

{P}c{Q}{PR}c{QR}

P QR (및 와 )은 특정 힙에 대해 이야기하지 않습니다 --- 힙의 속성 이므로 하위 집합과 술어가 동일하므로. 무슨 일이 일어나고 있는지 이해하는 가장 좋은 방법은 Hoare 트리플이 보유하는 것이 무엇을 의미하는지에 대한 정의를 보는 것입니다.PQ

{P}c{Q}h1P.hHeaps.t.h#h1.h2Q.h1h;ch2h;skip

이 정의는 기본적으로 당신이 실행하는 경우 (1)이 있다고 어떤으로 에서 , 당신은 몇 가지 최종 상태에서 끝내도록 에서 , 당신은 여분의 메모리에 추가하는 경우 (2) , 즉 메모리가 변경되지 않습니다 달리기 끝. 그러나 당신이 얻는 특정 는 의 다른 선택에 따라 다를 수 있습니다. --- 보장되는 것은 와 속성 이 계속해서 동일한 결과 힙을 얻는 것이 아니라 확장을 계속 유지한다는 것입니다.h 1 P h 2 Q h h 2 h P Qch1Ph2Qh h2h PQ

Hoare triple에 대한이 정의가 프레임 규칙이 어떻게 적용되는지를 이해하는 것은 너무 어렵지는 않지만 여전히 운동 할 가치가 있습니다. 아시다시피, 이것은 일종의 "변경 보존"속성이며, 동시 분리 로직의 병렬 구성 규칙에 대한 설명에서 특히 생생한 표현입니다.

{P1}c1{Q1}{P2}c2{Q2}{P1P2}c1||c2{Q1Q2}

과 가 분리 된 메모리 영역에 작용하는 경우 , 서로 병렬로 실행될 때 각각이 다른 쪽의 실행 속성을 방해하지 않습니다.c 2c1c2

Hoare et al., On Locality 및 Concurrent Processes에 대한 Exchange Law 의 논문에서 이것에 대한 토론이 있습니다.


Hoare triples에 대한 정의는 틀린 것처럼 보입니다. 실행이 잘못되지 않았다고 말해야합니다. 종료되지 않아야하며 안전 단 조성이없는 모델을 배제해서는 안됩니다. (그러나, 네가 설명하는 이유로 "변경 보존"에 대해 이야기하는 것이 합리적이라고 동의합니다.)
Radu GRIGore

3
(1) 나는 총체 정확성의 세 배에 대한 의미를 부여했으며, 명령이 안전하게 완료되었다고 주장합니다. 총체적인 정확성으로 인해 사전 및 사후 조건의 전체 / 존재 특성을 쉽게 볼 수 있습니다. (2)이 삼중의 의미론은 언어 의미론에 안전 단 조성이없는 언어를 삼중의 의미로 구축함으로써 실제로 다루기 위해 (Birkedal과 Yang의 IIRC) 발명되었다. 결과적으로 Hoare 논리에 대한 프레임 규칙을 유지하면서 언어가 아닌 구문이 아닌 구문 (예 : 힙 크기에 대한 쿼리)을 가질 수 있습니다.
Neel Krishnaswami

(1) 좋습니다. 그러나 그 트리플은 다르게 쓰여집니다. (2) 나는 몰랐다. 당신이 말한 것을 바꾸려면 : 단조 로움없이 평소와 같이 프레임 규칙을 잃고 Hoare 트리플을 계속 사용할 수 있습니다. 이는 첫 번째 주석에서 얻은 것입니다. 그러나 트리플의 정의를 강화하여 다시 얻을 수 있습니다. 프레임 규칙. (3) 왜 그것이 결함을 배제하는지 알 수 없습니다. 가 결정 론적 이라고 가정 합니까? c
Radu GRIGore

1
고마워, 닐! 맞습니다. 특성 힙으로 P 및 Q 속성을 병합했습니다. 따라서 의견을 요약하면 Q는 유지되지만 마지막에 얻는 특정 힙은 이전 과 다른 Q 만족 힙이 될 수 있습니다 . 예?
Lindsey Kuper

1
@RaduGRIGore : 예, 언어가 결정 론적이라고 가정하고 있으며 동시성을 추가하면이 가정이 실패합니다. 좋은 캐치!
Neel Krishnaswami

2

100 % 관련성이 없지만 계약 불일치의 풍미가 있습니다.

{p}를 c의 전제 조건으로 생각하고 {q}를 c의 후 조건으로 생각하면 프레임 규칙에 대한이 아이디어는 전제 조건과 사후 조건이 모든 계산 컨텍스트에서 유지되도록 보장합니다. 아무것도 존재하지 않는 간단한 경우.

즉, 내가 읽은 수십 개의 계약서 중 하나에 제시된 프레임 규칙을 보지 못했다고 말할 수는 없습니다. 그러나 그것은 반드시 좋은 아이디어이며, 그러한 변화를 요구하면 dem 등원 계약에 대한 합리적이고 실질적인 이해를 개발하는 데 많은 도움이 될 수 있습니다 .


의견 주셔서 감사합니다. 흠, 흥미 롭습니다. 다른 사람이 프레임 속성을 나타내는 계약서를 알고 있는지 궁금합니다.
Lindsey Kuper
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.