소프트웨어 검증에 대한 다른 접근 방식을 스스로 가르치려고합니다. 몇 가지 기사를 읽었습니다. 내가 아는 한, 시간이있는 제안 논리는 일반적으로 SAT 솔버와 함께 모델 검사를 사용합니다 (진행중인 시스템에서) 시간이있는 1 차 논리는 어떻습니까? 정리 프로 버를 사용합니까? 아니면 SAT도 사용할 수 있습니까?
이 문제에서 초보자를위한 책이나 기사에 대한 조언은 대단히 높이 평가됩니다.
소프트웨어 검증에 대한 다른 접근 방식을 스스로 가르치려고합니다. 몇 가지 기사를 읽었습니다. 내가 아는 한, 시간이있는 제안 논리는 일반적으로 SAT 솔버와 함께 모델 검사를 사용합니다 (진행중인 시스템에서) 시간이있는 1 차 논리는 어떻습니까? 정리 프로 버를 사용합니까? 아니면 SAT도 사용할 수 있습니까?
이 문제에서 초보자를위한 책이나 기사에 대한 조언은 대단히 높이 평가됩니다.
답변:
1 차 논리는 결정할 수 없으므로 SAT 해석은 실제로 도움이되지 않습니다. 즉, 1 차 공식의 경계 모델 검사 기술이 존재합니다. 이는 공식이 참인지 거짓인지를 결정할 때 고정 된 수의 객체 만 고려할 수 있음을 의미합니다. 분명히 이것은 완전하지는 않지만, 반대의 예가 발견되면, 그것은 실제로 반대의 예입니다.
툴 Alloy 는 모델이 1 차 로직으로 설명 될 수있게하는 툴 중 하나입니다 (표면 구문은 관계 설명 모델을 기반으로 함). 경계 모델 검사를 사용하여 솔루션을 찾습니다. SAT 솔버는 후드 아래에 사용됩니다. 하나의 합금 확장은 시간적 특성을 가진 모델을 허용하지만 기술적으로는 시간적 논리를 지원하지 않습니다.
예를 들어 프로그램 정확성을 확인하기 위해 추가로 탐색하려면 프로그램 확인 도구를 살펴보십시오. 이들은 일반적으로 Hoare 논리 (사전 조건 및 사후 조건에 대한 추론)를 기반으로하며 분리 논리 (힙에 대한 추론)로 확장 될 수 있습니다. 이러한 논리는 일반적으로 결정하기 어렵 기 때문에 사람과 검증 도구 사이에 일정한 양의 상호 작용이 필요합니다. 몇 가지 도구 예는 다음과 같습니다.
귀하의 질문을 읽은 후 주제를 함께 묶을 수있는 충분한 지식을 가진 유일한 방법은 모델 확인 및 정리 증명을 통합하려고 시도하는 소프트웨어 검증에서 드릴 다운되는 일련의 기사를 제공하는 것이 었습니다. 바라건대 내 의견은 다음과 같습니다.
소프트웨어 확인 , 정식 확인 , 모델 확인 및 정식 소프트웨어 확인 : 모델 확인 및 정리 증명을 살펴보십시오.
Dave는이 질문에 익숙하지 않기 때문에 Dave가 한 것보다 질문의 첫 부분에 대해 더 많은 정의를 할 수없는 좋은 대답을했습니다.
이것이 SE 사이트 의 첫 번째 질문 이므로, 답변을하지 않았지만 의견을 제시 한 이유는 여기서 답변이 단지 링크 집합 일 수는 없지만 답변을 제공하기 위해 서면 답변을 제공하고 링크를 사용해야하기 때문입니다. 따라서 답변 대신 의견.
에 관해서:
이 문제에서 초보자를위한 책이나 기사에 대한 조언은 대단히 높이 평가됩니다.
내가 제안하고 사용할 책은 다음과 같습니다.
컴퓨터 과학의 논리-시스템에 대한 모델링 및 추론 2nd Ed. Huth and Ryan의 글 이것은 논리를 소개하고 모델 확인으로 넘어가지만 정리 증명에 들어가지는 않습니다. 따라서 여기에는 논리 및 모델 검사와 관련된 모든 기본 질문이 포함됩니다.
Baier와 Katoen의 모델 검사 원칙 이 책을 읽기 시작했으며 많은 논문을 읽고 그것들이 모두 어떻게 조화를 이루는지를 보는 것보다 훨씬 낫습니다. 이것은 모델 검사의 주제에 대해 가장 권장되는 책은 아니지만 가장 많이 사용되는 책 중 하나입니다. 모델 검사에 대한 고급 질문에 답변해야합니다.
Kroger와 Merz의 시간적 논리와 상태 시스템 주제를 스스로 학습 할 때 종종 다른 저자의 책을 갖고 싶어합니다. 이것은 "모델 점검의 원칙"을 보완 / 반올림하는 것입니다.
해리슨의 실용적인 논리와 자동화 된 추론 핸드북 프로그래머이기 때문에 나는이 책을 충분히 추천 할 수 없다. 이 책은 논리를 소개하는 것으로 시작하여 HOL Light 의 작업을 기반으로 정리 증명을위한 커널을 만드는 지점까지 이동합니다 . 이 책이 작동하는 OCaml 코드를 사용한다는 점을 강조하기 위해 내가 친숙하다고 생각하는 정리를 설명하고 당신이 알아야 할 것은 아니지만 당신이 연결을 만들거나 사이드 트랙을 달리는 것처럼 느낄 수는 없습니다. 논리에서 특정 정리 증명 자 유형으로 전환하는 데 매우 중점을 둔 책입니다.
그것을 증명하는 방법 : Velleman의 구조적 접근 정리 증명을 위해 증명 조교 로 들어가기 위해서는 정리를하고 잠을 자야합니다.
일별 증거 및 수학적 언어 소개이 책은 "증명 방법"을 보완 할뿐만 아니라 요약하여 볼 수있는 무료 책입니다. 나는 이것이 인기가있는 것을보고 놀라지 않을 것입니다.
현재 나는 여전히 각각의 장단점을 배우고 있기 때문에 정리 증명에 대해 더 확장 할 수는 없지만, 내가 집중하고있는 것은
이자벨 은 고차원 통일을 기반으로하기 때문에
이러한 증거 조수는 일반적으로 서적을 보유하고 있으며 최신의 인기있는 오픈 소스이며 유지 관리되며 활발한 지원 커뮤니티가 있습니다.
참고 : 책을 참조하기 위해 worldcat.org를 사용했지만 Amazon의 look inside 기능을 사용하여 책을 검토 할 수 있습니다.