Symbolic Execution and Proof of Properties

Learning Objectives

1. Symbolic Execution

: program behavior(execution) 과 logic(predicate) 사이의 다리 역할

https://www.lazenca.net/pages/viewpage.action?pageId=6324534

2) Summary information

정보를 덜 가지고 있지만 correctness를 추론하는 데에는 충분하다.

3) Weaker Precondition

4) Loops and Assertions

5) Precondition and Postcondition

: 사람이 제공한다.

2. Verification of Program Correctness (#109-#111)

: precondition이 주어지고, invariant한 loop를 다 실행한 후 postCondition을 만족한다면

⇒ pre&post condition에 대해 correct하다고 할 수 있다.

1) Hoare triple : inference

: precondition을 만족하고 block에 들어가서 postCondition을 만족하는 상태로 간다.

https://ropas.snu.ac.kr/~dreameye/PL/slide/PL10.pdf

Top을 증명한다면, 아래를 추론할 수 있다.

Top을 증명한다면, 아래를 추론할 수 있다.

새로운 프로그래밍 언어를 만들었을 때 정상 동작을 증명하기 위해 위를 밝히면 아래를 추론할 수 있다.

새로운 프로그래밍 언어를 만들었을 때 정상 동작을 증명하기 위해 위를 밝히면 아래를 추론할 수 있다.

2) Reasoning Style

: contract = precondition + postcondition을 만들어 놓고 필요한 곳에서 불러서 씀

Summary