논리적 관계와 시뮬레이션의 차이점은 무엇입니까?


29

프로그램 동등성을 입증하는 방법을 연구하는 초보자입니다. 두 프로그램이 동등하다는 것을 증명하기 위해 논리 관계 또는 시뮬레이션을 정의하는 것에 대한 몇 가지 논문을 읽었습니다. 그러나 나는이 두 가지 기술에 대해 상당히 혼란 스럽습니다.

나는 논리 관계가 유도 적으로 정의되는 반면 시뮬레이션은 일치를 기반으로한다는 것을 알고 있습니다. 왜 그런 식으로 정의됩니까? 그들의 장단점은 각각 무엇입니까? 다른 상황에서 어떤 것을 선택해야합니까?


1
읽은이 논문들에 대한 링크를 제공 할 수 있습니다. 이를 통해 어떤 구체적인 예제가 혼란 스러울 수 있는지 더 명확하게 알 수 있습니다.
Marc Hamann

1
논리적 관계에 대해서는 Hur와 Dreyer의 최근 논문 "ML과 어셈블리 사이의 Kripke 논리적 관계"(POPL'11)를 읽었습니다. 또한 Pierce의 저서 "유형 및 프로그래밍 언어의 고급 주제"에서 고전 장을 읽었습니다. 논리적 관계가 언어의 형식 구조에 귀납적으로 정의되어 있지만 언어에 형식 구조 (예 : C)가없는 경우 어떻게해야합니까? (또 다른 질문 인 것 같습니다.)
Hongjin Liang

1
시뮬레이션을 위해, 나는 Hennessy와 Milner가 쓴 "비결정론과 동시성에 대한 대수 법칙"원본을 읽었습니다. Koutavas와 Wand의 "고차 명령 프로그램에 대한 추론을위한 작은 시뮬레이션"(POPL'06)은 이해할 수 없으며 왜 그들이 그들의 방법을 "비 시뮬레이션"이라고 불렀는지 잘 모르겠습니다.
Hongjin Liang

3
게시물에 댓글에 제공 한 정보를 포함하면 더 좋습니다. 질문 아래의 편집 링크를 클릭하여 질문을 편집 할 수 있습니다.
Kaveh

1
@HongjinLiang : 유형 구조가 없거나 (또는 ​​재귀 유형이있는 경우) 단계 색인 논리 관계를 사용할 수 있습니다. 논리 관계에서는 유형에 유도를 사용하고 단계 색인을 사용하면 관찰 단계에 유도를 수행합니다. Amal Ahmed의 연구 성명서에 ccs.neu.edu/home/amal/ahmed-research.pdf가 있습니다. (논리적 관계에 대한 연구에 또 다른 개요는 이 이야기 : 데릭 드레에서 그의 연구 문에 mpi-sws.org/~dreyer/research.pdf ).
Blaisorblade

답변:


20

이 질문에 대한 답이있을 수 있습니다. 사실, 나는 여전히 지난 6 개월 동안 그것을 통해 생각하고 있으며, 아직 논문에 대해서는 쓰여지지 않았습니다.

일반적인 이론은 "논리적 관계", "시뮬레이션"및 "불 변형"과 같은 관계 추론 원칙은 데이터 추상화 또는 정보 숨기기의 표현이라는 것입니다. 정보가 숨겨져있는 곳이라면 어디에서나이 원칙은 잘립니다.

그것을 발견 한 최초의 사람들은 오토마타 이론가였습니다. 오토마타는 숨겨진 상태입니다. 따라서 동등성에 대해 이야기하려면 관계형 추론이 필요합니다. 오토마타 이론가들은 한동안 동질성 (homomorphisms)으로 고생하고 포기하고 시뮬레이션 관계의 한 형태 인 "관계 커버링"이라는 개념을 생각 해냈다.

Milner는 1971 년에 " 프로그램 사이의 대수적 시뮬레이션 개념 "이라고하는 거의 알려지지 않았지만 매우 기초적인 논문에서 아이디어를 얻었습니다 . Hoare는이를 알고 1972 년에 " 데이터 표현의 정확성 증명 "을 제시하는데 사용했습니다. 그는 관계가 아니라 추상화 기능이 더 단순하다고 생각했기 때문이다. 그는 이후 단순성 주장을 철회하고 " 데이터 구체화 개선 "의 관계를 다시 사용했습니다 . 레이놀즈는 " 크래프트 오브 프로그래밍 "에서 관계 추론을 사용했습니다.", Chapter 5 (1981). 그는 관계가 추상화 함수보다 더 자연스럽고 일반적이라고 생각했다. 되돌아 가서이 장을 읽으면, 발견되기를 기다리는 관계형 파라 메트릭 아이디어가 발견 될 것이다. 2 년 후, 레이놀즈는 "유형, 추상화 및 파라 메트릭 다형성"(1983)을 발표했다.

이 모든 아이디어는 유형과 관련이없는 것처럼 보이지만 실제로는 관련이 있습니다. 상태 저장 언어 및 모델에는 데이터 추상화 기능내장되어 있습니다. 정보를 숨기려면 "추상 데이터 유형"을 정의 할 필요가 없습니다. 당신은 단지 지역 변수를 선언하고 숨 깁니다. 우리는 처음 몇 주 동안 자바 수업 첫 해 학생들에게 가르 칠 수 있습니다. 땀 없습니다.

반면 기능적 언어와 모델은 유형을 통해 정보를 숨겨야 합니다 . 기능적 모델에는 내장 된 데이터 추상화가 없습니다. 또는 사용하여 명시 적으로 추가해야 . 따라서 상태 저장 언어를 기능 언어로 변환하면 모든 로컬 상태가 유형 변수로 변환되는 것을 볼 수 있습니다. 이것이 어떻게 작동하는지에 대한 명확한 설명은 나의 논문 " 알골과 같은 언어로 된 객체와 클래스 "를 참조하십시오 . 그러나 아이디어는 실제로 Reynolds 1981 ( "알골의 정수")에서 나왔습니다. 우리는 지금 그 고전적인 아이디어를 더 잘 이해하고 있습니다.

동등한 것으로 입증하려는 두 기계 과 을 가져 가십시오 . Milner 1971은 과 상태 사이의 관계를 정의 하고 두 기계가 관계를 유지함을 보여줍니다. 레이놀즈의 파라 메트릭은 기계의 상태를 와 유형에 속한다고 생각합니다 . 그들 사이 의 관계 정의하십시오 . 머신이 상태 유형별로 매개 변수화 된 및 유형 인 경우 두 머신이 관계에 의해 관련되어 있는지 확인하십시오 . M ' M M ' X X ' R F ( X ) F ( X ' ) F ( R )MMMMXXRF(X)F(X)F(R)

따라서 시뮬레이션과 관계형 파라 메트릭은 기본적으로 같은 생각 입니다. 그것은 단지 피상적 인 유사점이 아닙니다. 전자는 내장 된 데이터 추상화가있는 상태 저장 언어에 적합합니다. 후자는 타입 변수를 통해 데이터 추상화를 얻는 상태 비 저장 언어를 위해 만들어졌습니다.

그렇다면 논리적 관계는 어떻습니까? 표면적으로 논리적 관계는보다 일반적인 아이디어 인 것으로 보입니다. 파라 메트릭 성이 동일한 모델 내에서 유형 변수를 연관시키는 방법에 대해 설명하는 반면, 논리적 관계는 다른 모델에서 유형을 연관시키는 것으로 보입니다. 데이브 클라크 (Dave Clarke)는 이것에 대한 훌륭한 설명을 썼다. 앞으로 더 발전 할 수 있도록 계속 지켜봐 주시기 바랍니다.


[참고 사항 추가] 논리 관계와 시뮬레이션 사이의 연결은 최근 논문 논리 관계 및 매개 변수 : 범주 이론 및 프로그래밍 언어를위한 레이놀즈 프로그램 에서 논의됩니다 .


위에서 언급 한 관계 가 기계를 설명하는 주어진 관계 해제라고 말하는 것이 사실인지 궁금합니다 . R FF(R)Rfunctor F
Dave Clarke

@DaveClarke 예, 같은 생각입니다. 레이놀즈 스타일의 정의에서, 각 타입 생성자 는 각 관계 에 대응 하는 관계 액션 을 갖추고 있습니다 , 해당 관계 일부 공리를 만족시킵니다. 일부 다른 공동체에서는 다른 원칙들로부터 를 도출하기를 원하며 ,이를 관계 해제 라고 부릅니다 . 그들이 레이놀즈 의미에서 관련 조치가 될 것이다이 과정에 의해 생산하고 있습니다. R : X X F ( R ) : F ( X ) F ( X ' ) F ( R ) F ( R )FR:XXF(R):F(X)F(X)F(R)F(R)
Uday Reddy

14

주요 차이점 중 하나는 논리 관계가 프로그램 클래스 (예 : 컴파일러에 대한 입력)가 다른 클래스의 프로그램 (예 : 컴파일러의 출력)에 해당하는 반면 시뮬레이션 관계가 사용됨을 보여주는 기술로 사용된다는 것입니다 두 프로그램 간의 통신을 보여줍니다.

두 개념 사이의 유사점은 두 개체 사이의 일치 성을 나타내는 데 사용되는 관계를 정의한다는 것입니다. 어떤 의미에서 논리적 관계는 유형의 구문에 귀납적으로 정의되는 시뮬레이션 관계로 생각할 수 있습니다. 그러나 다른 종류의 시뮬레이션 관계가 존재합니다.

논리적 관계는 ML과 같은 언어와 읽은 논문에서와 같이 어셈블리 언어로의 번역 간의 대응 관계를 표시하는 데 사용할 수 있습니다. 논리적 관계는 유형 구조에 귀납적으로 정의됩니다. 논리적 관계는 각 유형 생성자에 대해 번역이 올바르다는 것을 보여줌으로써 번역이 올바르다는 것을 보여주는 구성 수단을 제공합니다. 함수 유형에서 정확성 조건 조건은 다음과 같이 말할 수 있습니다.이 함수의 변환은 변환 된 입력을 변환 된 출력으로 가져옵니다.

논리 관계는 람다 미적분학을 기반으로하는 언어에 대한 다양한 기술입니다. 논리 관계의 다른 애플리케이션 (부터 포함 여기 ), 람다 definability 특성화 denotational 시맨틱 정의 관련된 파라 메트릭 다형 특성화 추상 해석 모델링 데이터 표현을 검증 완전히 추상적 인 의미를 정의하고 고차원 언어 로컬 상태 모델링.

시뮬레이션 관계는 일반적으로 두 프로그램의 동등성을 보여주기 위해 사용됩니다. 일반적으로 이러한 프로그램은 채널에서 메시지를 보내는 것과 같은 일종의 관찰을 생성합니다. P가 Q가 할 수있는 모든 것을 할 수 있다면 한 프로그램 P는 다른 Q를 시뮬레이트합니다.

Bisimulation은 대략 두 가지 시뮬레이션 관계입니다. 추가 조건이 일반적으로 존재하지만 프로그램 P를 보여주고 프로그램 Q를 시뮬레이트하고 해당 프로그램 Q가 프로그램 P를 시뮬레이트 할 수 있으며 시뮬레이션을 수행 할 수 있습니다. Bisimulation 에 대한 Wikipedia의 항목 은 좋은 (보다 정확한) 출발점입니다. 아이디어의 수천 가지 변형이 존재하지만 그것은 거의 같은 형태의 컴퓨터 과학, 모달 논리 및 모델 이론으로 재창조 된 근본적인 아이디어입니다. Sangiorgi의 기사 는 아이디어의 훌륭한 역사를 제공합니다.

두 개념 사이의 관계를 설정하는 한 논문은 Andy Pitts의 의미론과 구문의 논리적 관계에 대한 참고 사항으로 논리적 관계, 궁극적으로 구문 적으로 정의 된 의미 론적 개념을 사용하여 순응 적 개념 인 응용 적 이중화 에 대한 특정 속성을 증명합니다 .


자세한 설명을 주셔서 감사합니다! 나는 당신의 참고 문헌을 읽고 둘 사이의 깊은 연결 / 차이점을 알아 내려고 노력할 것입니다.
Hongjin Liang

"프로그램 P를 표시하고 프로그램 Q를 시뮬레이트하고 해당 프로그램 Q가 프로그램 P를 시뮬레이트 할 수 있으며 이중 시뮬레이션을 가지고 있음"에 대해 확실합니까? A가 B와 비슷하고 B가 A와 비슷하지만 A는 A와 비슷하다고 말할 때 A = (a. (b + c)) + (a.b + ac) 및 B = a.b + ac B는 동일하지 않습니다.
András Salamon

@ András : 네 말이 맞아. 나의 진술은 정확하지 않다. 차이점은 "일부 추가 조건이있을 수 있습니다"라는 문구로 요약됩니다.
Dave Clarke

헤네시와 밀 너는 원래 논문 에서 세 종류의 등가 관계를 정의 하여 이들의 차이를 설명 할 수있는 몇 가지 예를 제시했다. 당신의 원래 진술은 실제로 그들의 논문에서 중간 정도의 진술이며, 이것은 bisimulation보다 약하고 미량 동등성보다 더 강합니다. 어떤 동등성이 더 좋은지 잘 모르겠습니다. 실제 사용에 따라 다를 수 있습니다.
Hongjin Liang

시뮬레이션은 또한 두 가지 데이터 유형 사이의 데이터 세분화를 확립하기위한 증명 기술로 사용됩니다. 이러한 시뮬레이션 증명의 모든 하나는 전체 클래스의 프로그램과 관련이 있습니다. 자세한 내용은 예를 들어 [1]을 참조하십시오. 이것은 두 개념의 구별이 더 흐릿하다는 것을 암시합니다. [1] : CAR Hoare, He J 및 JW Sanders. 데이터 세분화의 사전 사양. 정보 처리 서한 , 25 : 71-76, 1987.
Kai

8

두 가지 유형의 관계는 다른 상황에서 사용되는 것으로 보입니다. 전이 시스템에서 해석되는 프로세스 계산 또는 모달 논리를 처리 할 때 형식화 된 언어 및 시뮬레이션 관계에 대한 논리 시뮬레이션. Dave Clarke는 매우 직관적 인 설명을 제공하므로 도움이 될만한 몇 가지 포인터 만 추가하겠습니다.

추상적 해석을 사용하여 두 가지 개념을 특성화하는 작업이 진행되었습니다. 그것은 당신이 원하는 것이 아닐 수도 있지만, 적어도 두 가지 개념은 동일한 수학적 틀에서 취급됩니다.

Samson Abramsky는 논리 관계를 사용하여 게으른 Lambda 미적분학에 대한 견고성 및 엄격 성 분석 종료 ( 추상 해석, 논리 관계 및 Kan 확장 ) 를 증명했습니다 . 그는 또한 논리적 관계가 Galois 연결 추상 해석 의미에서 추상화 기능을 정의 함을 보여 주었다. 최근에 Backhouse와 Backhouse는 기본 유형의 Galois 연결에서 고차 유형의 Galois 연결을 구성하는 방법을 보여 주었으며 이러한 구성은 논리적 관계 ( 논리 관계 및 Galois 연결 )를 사용하여 동일하게 설명 할 수 있습니다 . 따라서 유형화 된 기능 언어의 특정 컨텍스트에서 두 개념은 동일합니다.

시뮬레이션 관계는 다양한 모달 및 시간 논리에 대한 Kripke 구조 간의 속성 보존을 특징으로합니다. 유형 대신 논리에 양식이 있습니다. 시뮬레이션 관계는 또한 갈루아 연결과 추상화를 정의합니다. 이러한 추상화에 특별한 속성이 있는지 물어볼 수 있습니다. 답은 표준 추상화가 건전하고 시뮬레이션 관계 기반 추상화가 완료되었다는 것입니다. 완전성의 개념은 Galois 연결과 관련이 있으며, 이는 직관적 인 해석과 일치하지 않을 수 있습니다. 이 작업 라인은 David Schmidt ( 프로그램 추상화를위한 구조 보존 바이너리 관계 )와 Francesco Ranzato 및 Francesco Tapparo ( 추상 해석에 의한 일반화 된 강력한 보존)에 의해 개발되었습니다 .


귀하의 답변은 개념을 추상적 해석과 연결하는 데 매우 유용합니다. 고맙습니다!
Hongjin Liang

진실한 질문 : 저는 전문가는 아니지만 레이놀즈 (1983, "유형, 추상화 및 파라 메트릭 다형성")가 갈루아 연결 (6 장) 인 논리적 관계를 이미 정의하지 않았습니까? 내가 알아 차린 유일한 차이점은 : "Galois connection"이라는 용어를 말하지 않고 "부분 순서로 분류 된 부분 순서 사이의 인접 펑터"만 말하고 도메인으로 제한합니다. OTOH, Backhouse 및 Backhouse는 레이놀즈를 인용하지만이 주장에 대해서는 어떤 식 으로든 논의하지 않습니다.
Blaisorblade

6

두 가지 개념이 다소 모호하다고 말하고 싶습니다. 둘 다 어떻게 든 평등의 개념을 구현하는 계산 메커니즘의 이진 관계에 관한 것입니다. 논리 관계는 유형 구조의 유도에 의해 정의되지만 시뮬레이션은 원하는대로 정의 할 수 있지만 용어는 일치를 암시합니다.

π


당신의 참조는 정말 좋습니다! 이전에 동시 프로그램에 대한 논리적 관계를들은 적이 없습니다. 고맙습니다! 논리적 관계를 정의하는 데 어려움이 유형 구조를 찾는 데 있다고 생각합니다. 동일한 유형 구조를 사용하면 서로 다른 프로그래밍 언어간에 논리적 관계를 정의 할 수 있습니다. 다른 한편으로, 시뮬레이션은 상태 전이 시스템에 의한 모델링 프로그램을 필요로하는데, 이는 프로그램이 다른 상태 모델 용으로 작성되면 쉽지 않을 수 있습니다.
Hongjin Liang

안녕하세요! 예, 적절한 유형 구조를 찾는 것이 항상 쉬운 것은 아닙니다. 비교하려는 두 미적분에 대해 서로 다른 전이 시스템을 사용하여 시뮬레이션을 정의 할 수 있습니다. 약한 시뮬레이션의 정의가 바로 그렇게 할 수 있다고 주장 할 수 있습니다. 시뮬레이션을 정의하기 위해 실제로 필요한 것은 전환 레이블을 비교하기위한 관계입니다.
Martin Berger
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.