PL10



Similar documents
ÀüÀÚÇö¹Ì°æ-Áß±Þ

2014밝고고운동요부르기-수정3

2005프로그램표지

λx.x (λz.λx.x z) (λx.x)(λz.(λx.x)z) (λz.(λx.x) z) Call-by Name. Normal Order. (λz.z)

PowerPoint 프레젠테이션

C프로-3장c03逞풚

Hi-MO 애프터케어 시스템 편 5. 오비맥주 카스 카스 후레쉬 테이블 맥주는 천연식품이다 편 처음 스타일 그대로, 부탁 케어~ Hi-MO 애프터케어 시스템 지속적인 모발 관리로 끝까지 스타일이 유지되도록 독보적이다! 근데 그거 아세요? 맥주도 인공첨가물이

기본자료형만으로이루어진인자를받아서함수를결과값으로반환하는고차함수 기본자료형과함수를인자와결과값에모두이용하는고차함수 다음절에서는여러가지예를통해서고차함수가어떤경우에유용한지를설명한다. 2 고차함수의 예??장에서대상체만바뀌고중간과정은동일한계산이반복될때함수를이용하면전체연산식을간 단

PowerPoint 프레젠테이션

Example. Do It Yourself

여행기

Semantic Consistency in Information Exchange

pdf 16..

Microsoft PowerPoint - semantics

歯처리.PDF

03장.스택.key

Microsoft PowerPoint - CHAP-03 [호환 모드]

야쿠르트2010 9월재출

Frama-C/JESSIS 사용법 소개

Microsoft PowerPoint - PL_03-04.pptx

Week5

slide2

HW5 Exercise 1 (60pts) M interpreter with a simple type system M. M. M.., M (simple type system). M, M. M., M.

SIGPLwinterschool2012

Chap 6: Graphs

2017 년 6 월한국소프트웨어감정평가학회논문지제 13 권제 1 호 Abstract

<BFEFBBEA20BDBAC5E4B8AE20C5DAB8B52DBEC6B9F6C1F6BFCD20B1CDBDC5B0EDB7A12E687770>

歯엑셀모델링

chap01_time_complexity.key


108 KOREA INSTITUTE OF LOCAL FINANCE

88 KOREA INSTITUTE OF LOCAL FINANCE

Page 2 of 5 아니다 means to not be, and is therefore the opposite of 이다. While English simply turns words like to be or to exist negative by adding not,

ÆÊÇ÷¿

Mango220 Android How to compile and Transfer image to Target

<B1E2C8B9BEC828BFCFBCBAC1F7C0FC29322E687770>

<5B D B3E220C1A634B1C720C1A632C8A320B3EDB9AEC1F628C3D6C1BE292E687770>

삼성955_965_09

Microsoft PowerPoint - lec3.ppt

<B9CCB5F0BEEEB0E6C1A6BFCDB9AEC8AD5F31322D32C8A35FBABBB9AE5FC3CAC6C731BCE25F6F6B5F E687770>

y 0.5 9, 644 e = 10, y = ln = 3.6(%) , May. 20, 2005

Microsoft PowerPoint - ch03ysk2012.ppt [호환 모드]

Page 2 of 6 Here are the rules for conjugating Whether (or not) and If when using a Descriptive Verb. The only difference here from Action Verbs is wh


DBPIA-NURIMEDIA

<C6F7C6AEB6F5B1B3C0E72E687770>

목차 설교자를 위한 전문 잡지 설교와 소통 2015 September Vol.10 - 주일설교 정인교 교수 (서울신대 설교학) 주일설교 1 오순절 후 열다섯 번째 주일설교 주일설교 2 오순절 후 열여섯 번째 주일설교 주일설교 3 오순절 후 열일곱

권두 칼럼 쁜 활동과 끊임없이 따라다니는 질투와 감시의 눈길을 피해 스도의 부활을 목격했기 때문이었다. 다시 사신 그리스도를 예수께서 이 집에 오시면 언제나 정성이 가득 담긴 음식을 그들이 눈으로 보고 손으로 만져 보았는데 도무지 아니라고 대접받고 휴식을 취했던 것으로

歯25차.PPT

OCaml

Polly_with_Serverless_HOL_hyouk

?????

May 2014 BROWN Education Webzine vol.3 감사합니다. 그리고 고맙습니다. 목차 From Editor 당신에게 소중한 사람은 누구인가요? Guidance 우리 아이 좋은 점 칭찬하기 고맙다고 말해주세요 Homeschool [TIP] Famil

#Ȳ¿ë¼®

October 2014 BROWN Education Webzine vol.8 울긋불긋 가을이야기 목차 From Editor 앉아서 떠나는 여행 Guidance 그림책 읽어주는 기술 Homeschool 다양한 세계문화 알아보기 Study Trip 올 가을!풍요로운 낭만축

歯TR PDF

untitled

9월1일자(최종).hwp

K&R2 Reference Manual 번역본

<28C3D6C1BE3129C0DAC1D6C7D020C1F6B5B5BCAD28C3CAB5EEC7D0BBFDBFEB292E687770>

¹Ìµå¹Ì3Â÷Àμâ

DIY 챗봇 - LangCon

<313220BCD5BFB5B9CCC1B6BFF8C0CF2E687770>

슬라이드 1

20, 41..,..,.,.,....,.,, (relevant).,.,..??.,

282서비스업관리-마트

4장.문장

DBPIA-NURIMEDIA

해양모델링 2장5~ :26 AM 페이지6 6 오픈소스 소프트웨어를 이용한 해양 모델링 물리적 해석 식 (2.1)의 좌변은 어떤 물질의 단위 시간당 변화율을 나타내며, 우변은 그 양을 나타낸 다. k 5 0이면 C는 처음 값 그대로 농

본 발명은 중공코어 프리캐스트 슬래브 및 그 시공방법에 관한 것으로, 자세하게는 중공코어로 형성된 프리캐스트 슬래브 에 온돌을 일체로 구성한 슬래브 구조 및 그 시공방법에 관한 것이다. 이를 위한 온돌 일체형 중공코어 프리캐스트 슬래브는, 공장에서 제작되는 중공코어 프

Modern Javascript

EBS직탐컴퓨터일반-06-OK


대한한의학원전학회지24권6호-전체최종.hwp

chap 5: Trees

02 중앙회 및 시 도회 소식 병원행정인신문 제 124호 2015 병원행정 장기연수과정 CEO아카데미 과정 연수생 모집 2015년도 병원행정장기연수과정과 병원경영CEO 아카데미 경영진단사과정(CEO과정)의 연수생을 모 집한다. 협회는 지난 3월 16일 2015년 장기연

Microsoft PowerPoint - AC3.pptx

°í¼®ÁÖ Ãâ·Â

Java ...

Chapter 4. LISTS


그린리포트-가을-pdf


5.스택(강의자료).key

,.,..,....,, Abstract The importance of integrated design which tries to i

PowerPoint 프레젠테이션

지능정보연구제 16 권제 1 호 2010 년 3 월 (pp.71~92),.,.,., Support Vector Machines,,., KOSPI200.,. * 지능정보연구제 16 권제 1 호 2010 년 3 월

<31325FB1E8B0E6BCBA2E687770>

untitled

10주차.key

<32B1B3BDC32E687770>

철학탐구 1. 들어가는말,. (pathos),,..,.,.,,. (ethos), (logos) (enthymema). 1).... 1,,... (pistis). 2) 1) G. A. Kennedy, Aristotle on Rhetoric, 1356a(New York :

05( ) CPLV12-04.hwp

[ ] : WT O ( )

야쿠르트2010 3월 - 최종

4 CD Construct Special Model VI 2 nd Order Model VI 2 Note: Hands-on 1, 2 RC 1 RLC mass-spring-damper 2 2 ζ ω n (rad/sec) 2 ( ζ < 1), 1 (ζ = 1), ( ) 1

- 2 -

4. 수업의 흐름 차시 창의 인성 수업모형에 따른 단계 수업단계 활동내용 창의 요소 인성 요소 관찰 사전학습: 날짜와 힌트를 보고 기념일 맞춰보기 호기심 논리/ 분석적 사고 유추 5 차시 분석 핵심학습 그림속의 인물이나 사물의 감정을 생각해보고 써보기 타인의 입장 감정


< BFCFB7E15FC7D1B1B9C1A4BAB8B9FDC7D0C8B85F31352D31BCF6C1A4C8AEC0CE2E687770>

Transcription:

assert(p!=null); *p = 10; assert(0<=i && i<buffersize); buffer[i]=10;

int bar(int n) { local int k, int j; k := 0; j := 1; while (k!= n) { k := k + 1; j := 2 + j; } return(j); } 1+2n } { n>0

precondition Hoare Triple {P }S{Q} program statement postcondition C. A. R. Hoare

{P }S{Q} precondition statement postcondition {x 0 y 0} z := x + y {z 0} {x 0 y 0} z := x + y {z 0 x 0 y 0} {x =5 y =2} z := x + y {x =5 z =7} {n 0 n 2 > 28} m := n + 1; m := m m { (m = 36)} { i.a[i] = 10 k 0} a[k] =0 { i.a[i] = 10 k 0} F M invalid

{Q[E/x]} x := E {Q} } { {y +7> 42} x := y +7{x >42} {y = y +7 7 y + 7 = 18} x := y +7{y = x 7 x = 18} } { {P } x := E {P [x /x] (x = E[x /x])} {y = x + 10 x =1} x := y {y = x + 10 x =1 x := x + 10}

{P } S 1 {R} {R} S 2 {Q} {P } S 1 ; S 2 {Q} } { {y + z > 4} y := y + z 1 {y > 3} {y > 3} x := y + 2 {x > 5} {y + z > 4} y := y + z 1; x := y + 2 {x > 5}

P P {P } S {Q } Q Q {P } S {Q} { } { } ((y > 4) (z > 1)) (y + z > 5) {y + z > 5} y := y + z {y > 5} (y > 5) (y > 3) {(y > 4) (z > 1)} y := y + z {y > 3}

{P B} S 1 {Q} {P B} S 2 {Q} {P } if B then S 1 else S 2 {Q} {(y > 4) (z > 1)} y := y + z {y > 3} {(y > 4) (z > 1)} y := y 1 {y > 3} {y > 4} if (z > 1) then y := y+z else y := y-1 {y > 3}

{I B} S {I} {I} while BS{I B}

{I B} S {I} {I} while BS{I B} {(y = x + z) (z = 0)} x := x + 1; z := z 1 {y = x + z} {y = x + z} while (z!= 0){x := x+1; z := z-1} {(y = x + z) (z = 0)} { } { } { {(y = x + z) true} x := x + 1; z := z 1 {y = x + z} {y = x + z} while (true){x := x+1; z := z-1} {(y = x + z) false}

i := 0; while i < 10 b := random_bool(); if b then i := i + 1; end 0 i 0 i 10 (0 i<10) (i = 10 b) The strongest invariant

{Q[E/x]} x := E {Q} {P } S 1 {R} {R} S 2 {Q} {P } S 1 ; S 2 {Q} } { P P {P } S {Q } Q Q {P } S {Q} { } { } {P B} S 1 {Q} {P B} S 2 {Q} {P } if B then S 1 else S 2 {Q} {I B} S {I} {I} while BS{I B}

int bar(int n) { local int k, int j; k := 0; j := 1; while (k!= n) { k := k + 1; j := 2 + j; } return(j); } {n 0} x = bar(n) {x =1+2n} { } { }

{n > 0} Precondition k := 0 {ϕ 1 } Midcondition j := 1 {ϕ 2 } Midcondition while (k!= n) { k := k+1; j := 2+j} {j =1+2.n} Postcondition {ϕ 2 } while (k!= n) { k := k+1; j := 2+j} {j =1+2.n}?

{ϕ 2 } while (k!= n) { k := k+1; j := 2+j} {j =1+2.n}? k =0 j =1 k =1 j =2+1 k =2 j =2+2+1...... { } { (j =1+2.k)

A Hoare logic proof To prove: {ϕ 2 } while (k!= n) k := k+1; j := 2+j {j =1+2.n} using loop invariant (j = 1 + 2.k) If we can show: ϕ 2 (j =1+2.k) {(j = 1 + 2.k) (k = n)} k := k+1; j:= 2+j {j = 1 + 2.k} ((j =1+2.k) (k = n)) (j =1+2.n) then By inference rule for loops {(j = 1 + 2.k) (k = n)} k := k+1; j:= 2+j {j = 1 + 2.k} {j = 1 + 2.k} while (k!= n) k := k+1; j:= 2+j {(j = 1 + 2.k) (k = n)} By inference rule for strengthening precedents and weakening consequents ϕ 2 (j =1+2.k) {j = 1 + 2.k} while (k!= n) k := k+1; j:= 2+j {(j = 1 + 2.k) (k = n)} ((j =1+2.k) (k = n)) (j =1+2.n) {ϕ 2 } while (k!= n) k := k+1; j:= 2+j {(j =1+2.n)}

How do we show: Note: ϕ 2 (j =1+2.k) {(j = 1 + 2.k) (k = n)} k := k+1; j:= 2+j {j = 1 + 2.k} ((j =1+2.k) (k = n)) (j =1+2.n) ϕ 2 (j =1+2.k) holds trivially if ϕ 2 is (j =1+2.k) ((j =1+2.k) (k = n)) (j =1+2.n) holds trivially in integer arithmetic Only remaining proof subgoal: {(j = 1 + 2.k) (k = n)} k := k+1; j:= 2+j {j = 1 + 2.k}

To show: {(j = 1 + 2.k) (k = n)} k := k+1; j:= 2+j {j = 1 + 2.k} Applying assignment rule twice {2+j =1+2.k} j := 2+j {j =1+2k} {2+j =1+2.(k + 1)} k := k+1 {2+j =1+2.k} Simplifying and applying sequential composition rule {1+j =2.k} j := 2+j {j =1+2k} {j =1+2.k)} k := k+1 {1+j =2.k} {j =1+2.k} k := k+1; j := 2+j {j =1+2.k} Applying rule for strengthening precedent (j =1+2.k) (k = n)} (j =1+2.k) {j =1+2.k} k := k+1; j := 2+j {j =1+2.k} {(j = 1 + 2.k) (k = n)} k := k+1; j := 2+j {j = 1 + 2.k}

We have thus shown that with ϕ 2 as (j =1+2.k) {ϕ 2 } while (k!= n) k := k+1; j := 2+j {j =1+2.n} is valid Recall our template: {n > 0} Precondition k := 0 {ϕ 1 } Midcondition j := 1 {ϕ 2 : j =1+2.k} Midcondition while (k!= n) k := k+1; j := 2+j {j =1+2.n} Postcondition The only missing link now is to show {n > 0} k := 0 {ϕ 1 } and {ϕ 1 } j := 1 {j =1+2.k}

To show {n > 0} k := 0 {ϕ 1 } and {ϕ 1 } j := 1 {j =1+2.k} Applying assignment rule twice and simplifying: {0 =k} j := 1 {j =1+2.k} {true} k := 0 {0 =k} Choose ϕ 1 as (k = 0), so {ϕ 1 } j := 1 {j =1+2.k} holds. Applying rule for strengthening precedent: (n > 0) true {true} k := 0 {ϕ 1 : k =0} {n > 0} k := 0 {ϕ 1 : k =0}