• Keine Ergebnisse gefunden

Verifikation von Algorithmen, Hoare-Kalkül Zuweisung und Kontrollstrukturen, Hoare-Kalkül

N/A
N/A
Protected

Academic year: 2022

Aktie "Verifikation von Algorithmen, Hoare-Kalkül Zuweisung und Kontrollstrukturen, Hoare-Kalkül"

Copied!
21
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Grundlagen der Programmierung (Vorlesung 11)

z Vorige Vorlesung

y Prädikatenlogik mit Axiomen z.B. für natürliche Zahlen y Elemente von Programmiersprachen (Variablen, Felder) y Spezifikationen

z Inhalt dieser Vorlesung

y Verifikation von Algorithmen

y Zuweisungen und Kontrollstrukturen

z Lernziele

y Grundlagen der systematischen Programmentwicklung

Ralf Möller, FH-Wedel

(2)

u ï>ûð°'y üû

~3ò-ó

þaôð°'y

ñ û

~ û ~

ý$õö÷H‰ySø

~ €

ù ú û$ü ýÞþlÿ û ý

ýü ýþ

û ý

û

ýÞþý

! #"#$%'&)(*+(

‹ ,%-/.0-@å1,32

45 Ì 6

798':9;

6 @ k œ

 i G Ð B

J3K

B J Í 

798':<;

DB-œ

=i Љ9

K B J Ì Õ

798>:9;

? m VA@ œ

 i G Ð B

J3K

B J Í

45

Û¼®¬«@¬Å­¯®i° Ãb´ƒªB ©b¸iª ´ƒ°P³#´ƒ°º¸Ù

Ö ÊÒª‡ÝMË Ù«ª+´ƒ°º¸ƒ±:öÚ®iÝM´ƒÂA©b°3¬«@¬­¯®i° Ø ±2¯«ª+´ƒÂ ©b­¯°

Ü_ª+®i¸iª«ÂAÂ Ö R3„3¬ ´PÍÝÙ Ø Ýi®iª‡ª+©Rݬɫª+Ä>©R­‚¬©g¬

ÌÛá'áIáXÍ ­¯»+¬©b­¯° ºK®iÂAÂA©b°3¬«ªR±

ÎP«@¬NÄ>©b­e³Û©RªÜ_ª+®i¸iª…«ÂA«´º»Åµ ´ƒÎºª+´ƒ°º¸˜Ýi©b­¯°ƒ©b°Ù Ê¢”©Rݬ

©b°3¬Î ٫˂¬N©b­¯° ÜÒª Ù«i³#­¯Ý«@¬ Ö B ©'³#­¯°ƒ¸i´º°ƒ¸ƒ±.P}´º»é³Ûª+´½ÍÅÝ:±P³#©bª

Ãb´

Ï

—Ð)Ñ®³#©bª  ª–rÒÔÓaÑÌ«´º»¸i© ¯U©Rª¬Å©r¬_¯U©Rª³#©b° Ý«°º°

Ø

6 C 2Yï Õ »­¯°P³ Ü_ª'Ù«i³#­¯Ý«@¬©



­¯»+¬©b­¯°GÜ_ª+®i¸iª…«ÂAÂ

D C

æE-/.F2YïYægÀ

íGæl«0¬IHJG#åí C 2 ì

³LKMŠ>´ƒ»+¬ON°P³PKb­¯°%Kb»ÜQM‡®i¸RMSNÂAÂA»

Ö

B)KbËTKb¸i´ƒ°ƒ¸A³UKVM

ó)NWM+­XNăËTKb° Ø ÝYN°ƒ°GÂA­‚¬U»…®iËÏÍÅÎ%Kb°GÜZM'ÙNi³#­¯ÝYN@¬9Kb°

Ä[Kb»éÍÅÎ%M+­TKbÄ[KR°­¯KVM…³LKR°

6 »9\[KRÃb­‚¹PÃb­TKVM']ê³LKR° ö^Kr¹/°ƒ­_]­¯®i°º»…Ä[KVM`KR­ÏÍÅÎ ³UKVMÃR´

Ä[KVM`K ÍÅ΃°aKR°P³UKb° P´ƒ°ºÝb]­¯®i°

Õ »9\[KRÃb­‚¹PÃb­TKVM']ê³Û­TKÉÃb´ Ä3KVM`K'Í΃°aKR°P³UK:P´ƒ°ºÝb]­¯®i°

45 6 ´º°½³ Õ ¯KVM…³UKb° Š>´ƒ»­ÏÍÎaKM+´º°ƒ¸RKb° c! ` *ed"3`f

(3)

u ï>ûð°'y üû

~3ò-ó

þaôð°'y

ñ û

~ û ~

ý$õö÷H‰ySø

~ €

ù ú û$ü ýÞþlÿ û ý

ýü ýþ

û ý

û

ýÞþý

! #"#$%'&)(*+(

‹ ,%-/.0-@å1,32

45 Ì 6

798':9;

6 @ k œ

 i G Ð B

J3K

B J Í 

798':<;

DB-œ

=i Љ9

K B J Ì Õ

798>:9;

? m VA@ œ

 i G Ð B

J3K

B J Í

45

Û¼®¬«@¬Å­¯®i° Ãb´ƒªB ©b¸iª ´ƒ°P³#´ƒ°º¸Ù

Ö ÊÒª‡ÝMË Ù«ª+´ƒ°º¸ƒ±:öÚ®iÝM´ƒÂA©b°3¬«@¬­¯®i° Ø ±2¯«ª+´ƒÂ ©b­¯°

Ü_ª+®i¸iª«ÂAÂ Ö R3„3¬ ´PÍÝÙ Ø Ýi®iª‡ª+©Rݬɫª+Ä>©R­‚¬©g¬

ÌÛá'áIáXÍ ­¯»+¬©b­¯° ºK®iÂAÂA©b°3¬«ªR±

ÎP«@¬NÄ>©b­e³Û©RªÜ_ª+®i¸iª…«ÂA«´º»Åµ ´ƒÎºª+´ƒ°º¸˜Ýi©b­¯°ƒ©b°Ù Ê¢”©Rݬ

©b°3¬Î ٫˂¬N©b­¯° ÜÒª Ù«i³#­¯Ý«@¬ Ö B ©'³#­¯°ƒ¸i´º°ƒ¸ƒ±.P}´º»é³Ûª+´½ÍÅÝ:±P³#©bª

Ãb´

Ï

—Ð)Ñ®³#©bª  ª–rÒÔÓaÑÌ«´º»¸i© ¯U©Rª¬Å©r¬_¯U©Rª³#©b° Ý«°º°

Ø

6 C 2Yï Õ »­¯°P³ Ü_ª'Ù«i³#­¯Ý«@¬©



­¯»+¬©b­¯°GÜ_ª+®i¸iª…«ÂAÂ

D C

æE-/.F2YïYægÀ

íGæl«0¬IHJG#åí C 2 ì

³LKMŠ>´ƒ»+¬ON°P³PKb­¯°%Kb»ÜQM‡®i¸RMSNÂAÂA»

Ö

B)KbËTKb¸i´ƒ°ƒ¸A³UKVM

ó)NWM+­XNăËTKb° Ø ÝYN°ƒ°GÂA­‚¬U»…®iËÏÍÅÎ%Kb°GÜZM'ÙNi³#­¯ÝYN@¬9Kb°

Ä[Kb»éÍÅÎ%M+­TKbÄ[KR°­¯KVM…³LKR°

6 »9\[KRÃb­‚¹PÃb­TKVM']ê³LKR° ö^Kr¹/°ƒ­_]­¯®i°º»…Ä[KVM`KR­ÏÍÅÎ ³UKVMÃR´

Ä[KVM`K ÍÅ΃°aKR°P³UKb° P´ƒ°ºÝb]­¯®i°

Õ »9\[KRÃb­‚¹PÃb­TKVM']ê³Û­TKÉÃb´ Ä3KVM`K'Í΃°aKR°P³UK:P´ƒ°ºÝb]­¯®i°

45 6 ´º°½³ Õ ¯KVM…³UKb° Š>´ƒ»­ÏÍÎaKM+´º°ƒ¸RKb° c! ` *ed"3`f

(4)

€ u ï>ûð°'y üû

~3ò-ó

þaôð°'y

ñ û

~ û ~

ý$õö÷H'ytø

~

hGå™æîå1G¿1G ÜZM`ii¸RM9NÂAÂA»S\[KbÃj‚¹/ÝkNl]<jTiRg

Gåm2 <nHl,

ì

Hl. 6 6 »9ii˯ˢÈlÈlÈ

·^¸.¹

È)ÈlÈ)KjTgaKÉóoNWM`jXNăËTK I NWp0qrUKVgGõ KVM']

ø

à»9KE]ÃKVgts

Kb»N»9ii˯Ëuj¯ÂAÂvKMq1p%gƒÝw]9jTiRg%jTKVM`KVg

·a½

. ¹

È)ÈlÈrUjTKDŽxpºÂAÂyKDÃe¯KVjTKVM¼ŠuN΃ËTKVg I p%gzr|{yjTgPKjTgaKM

ó)NWM`jXNăËTKVg 9 »9\[KjÏÍÅÎ%KVM`g

·a½

í ¹

È)ÈlÈr%N»} Nloaj¯Â~pƒÂ Ãe¯KVjTKMŠuN΃ËTKVg I p%gFr|{yjTg

KVjTg%KVM–óoNWM`jXNăËTKVg

k

»9\[KjÏÍÅÎ%KVM`g

·'¿+¹

È)ÈlÈrUjTKÉõ KM']<Kà ¯KjTKVMœó)NWM`jXNăËTKVg’…wKVM']ONWpƒ»ÍÅÎ%KVg

·\ÁE¹

È)ÈlÈ à~gFNl]Ùp%M+ËTjÏÍÅÎ%KNJuN΃ËTKVg

I

p%gzrP{A¸bNWgºÃRÃAN΃ËTj¯¸Âyj_]

€KR»`]]9Kj¯ËTKVgPpagFr‚jTg rLKgGóoNWMjXNăËTKVgPƒp%gzr

k

€KR»9pƒË_]„Nl]pagFr­ÂKb»`]»9\3KVjÏÍÎaKM`g

·aÃW¹

È)ÈlÈrUjTK$È3B gFNl]ÙpaM+ËTjÏÍÎaKg ŠuN΃ËTKVg Ö B … š Ø jTgPKVjTg%KVM

ó)NWM`jXNăËTKVg 9 NWpUqe†9pƒÂAÂyjTKVM`KVg

·'Ä+¹

È)ÈlÈZq paMKjTgaK‡gzNl]Ù p%M+ËTjÏÍÅÎ%KNJuN΃˰BÙ rLKg ˆRM iiÇY]9KVgÙ

±‰KVj¯ËTKVM

k Ž B Ä[K†`]9j¯ÂAÂyKVg

(5)

x0z e~ ~

Ž ,zHlHlG2>u-¬IGå- …wiRg ÜZM`iRˆRMSNÂAÂyKVg

HJG#¿e.U-åƒ ÃVp KjTgaKM„x\[KbÃj_/ÝkNl]<jTiRg

45

KVjTgGÜZM`iRˆRMSNÂA ÖH© †`] pPÍÝÙ Ø jT†`]ÝRiRM`MKRÝb]/s

·^¸.¹

¯Kgag K†jTgPKVjTg%Kb Pg0qmNWg%ˆR†Ãpa†`]ONWgFr|ˆRKV†<]„NWM']9KE]

¯‘jTMSr’s%jTg rUKb rUjTK}óZiRM+Ä[K“rLjTg%ˆRp%gaˆ 6 ˆRj¯Ë_]As

r#ÈtÎ rUjTK}óoNWM`jXNĺËTKgMÄ[KbËTKˆRpag%ˆ”ˆRKbÎ iRM>]NÃVpƒÂÙ

ö^K•–g%j_]9jTiRga†Ä3KVM`KVjÏÍÎts

·a½W¹

¯Kgag K†]9KVM+ÂyjTg%jTKVM']

·'¿+¹

¯Kgag j¯Â ÊZgFrÛÃpa†`]ONWgFr rUjTK8ÛNiÍÎMÄ[K“rLjTg%ˆRpag%ˆ Õ ˆRj¯Ë_]

·^¸U—­¿+¹

\zNWM']9jTKb˯ËTK|º˜iRM`MKRÝb]ÅÎ%KVj_]

45

ó™iRM+Ä3KArUjTgaˆRp%gaˆšr%NWM>q…wKM`†`]

ÙNWM‡Ýb]_¯KVMSrLKg

45

ö^K•–g%j_]9jTiRga†…Ä[KVM`KjÏÍÅΒ¯‘jTMSr‚KVjTg%ˆRKV†éÍÅÎ%M ÙNWgºÝb]

45

ÛNiÍÅÎMÄ3KArUjTgaˆRp%gaˆšr%NWM>qNÄ%ˆRKV†éÍÅί ÙNiÍÎb]_¯KM9rUKVg

45

!œ› `e › ^"3¨,.^`8/.^`l%‰&(" *4

hGxhGå™æVHlG

ì

G0ž „w] ÙNWM+Ýxpag%ˆyKVjTg%KVMóZiRM`Ÿ[K“rLjTg%ˆRpag%ˆ”pagFr

„#Íί NiÍΠp%g%ˆvKjTgaKM_ÛNiÍÎxŸ[KArUjTg%ˆRpag%ˆÙ

÷ .Fžmž™æ

·^¸.¹

6 Y 6Þ

·a½W¹

ÌR6 Þ Í  ÌÕ Þ Í

·'¿+¹

ՔÞY Õ

ïI.F2‰2 åmž- ÌR6 Í  ÌÕ£Í

(6)

gültig

gültig korrekt

korrekt

(7)

~ñ ~3ò-ó ñ ~ñ ~ ~ ~

ð‡,zH

ì

G;¬IG02 ÜZM`iRˆRM9NW¡y¡yKgb]\¯‘p%M>q

·^¸.¹

ÜZM`iRŸºËTK¡ †S\[KV¢j_–¢jTKVM`KVg

·^¸

. ¹ } j_]ܯKRËÏÍÅÎ%KVgóoNWM`jXNWŸºËTKg|†Sii˯ˈRKANWM`Ÿ[Kj_]9KE]¯KVMSrUKVg

Y öKbÝMËXNWMSNl]<jTiRg%KVg

·^¸

í ¹ õ NW††9ii˯ËuŸ[KMK ÍÅÎ%g%KE]_¯KMSrLKg Y Õ

·^¸

« ¹ õ NWg%g †9ii˯ËtraNW†NÜZM`iRˆRMSNW¡y¡ qepagƒÝb]9jTiRgajTKMKg Y 6

·a½W¹

ÎajTKM9NWp%†KVjTgGÜZM`iRˆRMSNW¡y¡ ÝRiRg%†`]9M`pajTKMKg

ð‡.%Hå1.ƒí£ž1G02 ö^jTK‡jTg rLKM„x\[KV¢j_/ÝkNl]<jTiRg pagFr‚jT¡ ÜQMiRˆRMSNW¡y¡

Ÿ[KVgxp0]9¢E]9KVg óoNWMjXNWŸƒËTKVgPp%gzr rLKMKg ±“²L\

Ö õ KVM']9KVŸ3KVM`KVjÏÍÎ

Ø

¯KM9rUKVg ¡yj_]¤‘j¯Ë_qeK…wiRg

ö^KRÝjËXNWMSNl]9jTiRg%KVgPqeKV†`]9ˆRKbËTKˆY]lÈ

P}˯ËTK p%Ÿ%MjTˆRKgÙ ÛNW¡yKVg¥†9jTgzr­º˜iRg%†`]ONWgb]<Kg

45 ¦

–— I †Wfg

45 ¦

–—  †[§

45 ¦

–—• †–—³—–e˜™›š

á¯á

B[œdež ŸC  fg

(8)

~ñ ~3ò-ó ñ ~ñ ~ ~ ~

ð‡,zH

ì

G;¬IG02 ÜZM`iRˆRM9NW¡y¡yKgb]\¯‘p%M>q

·^¸.¹

ÜZM`iRŸºËTK¡ †S\[KV¢j_–¢jTKVM`KVg

·^¸

. ¹ } j_]ܯKRËÏÍÅÎ%KVgóoNWM`jXNWŸºËTKg|†Sii˯ˈRKANWM`Ÿ[Kj_]9KE]¯KVMSrUKVg

Y öKbÝMËXNWMSNl]<jTiRg%KVg

·^¸

í ¹ õ NW††9ii˯ËuŸ[KMK ÍÅÎ%g%KE]_¯KMSrLKg Y Õ

·^¸

« ¹ õ NWg%g †9ii˯ËtraNW†NÜZM`iRˆRMSNW¡y¡ qepagƒÝb]9jTiRgajTKMKg Y 6

·a½W¹

ÎajTKM9NWp%†KVjTgGÜZM`iRˆRMSNW¡y¡ ÝRiRg%†`]9M`pajTKMKg

ð‡.%Hå1.ƒí£ž1G02 ö^jTK‡jTg rLKM„x\[KV¢j_/ÝkNl]<jTiRg pagFr‚jT¡ ÜQMiRˆRMSNW¡y¡

Ÿ[KVgxp0]9¢E]9KVg óoNWMjXNWŸƒËTKVgPp%gzr rLKMKg ±“²L\

Ö õ KVM']9KVŸ3KVM`KVjÏÍÎ

Ø

¯KM9rUKVg ¡yj_]¤‘j¯Ë_qeK…wiRg

ö^KRÝjËXNWMSNl]9jTiRg%KVgPqeKV†`]9ˆRKbËTKˆY]lÈ

P}˯ËTK p%Ÿ%MjTˆRKgÙ ÛNW¡yKVg¥†9jTgzr­º˜iRg%†`]ONWgb]<Kg

45 ¦

–— I †Wfg

45 ¦

–—  †[§

45 ¦

–—• †–—³—–e˜™›š

á¯á

B[œdež ŸC  fg

(9)

~ñ ~3ò-ó ñ ~ñ ~ ~ ~

® ¯ ()° >±a²‡(*³Z+(´~«µ()$–"·¶ ²‡(¸ ^+¹ "Z()$–>

Áº½uº¸

D C

hG0»m¼

C

2I½zG02

D C œGU»¾¼ C 2I½ Ÿ[KV†<]<K¿aKg NWp%†‘KjTgaKMóoNWMjXNWŸ%ÀTKVgPp%gzrPKVjTg%KV¡

Ppa†ÁrLM`pFÂ<Ã

6

m2kYijm

 F i

†ŒÅ D K 9 G

kCK

VAÆ I †ŒÅ 



†ŒÅ

Ï

—³ÐlÑ

D C

¼E-/.F2‰Ç ÈZM`iRˆRM9NW¡y¡y¢pa†<]„NWgFruÉ

B)KVÀTKVˆRp%g%ˆyrUKVM«ÈZM`iRˆRM9NW¡y¡ËÊRNWM`jXNWŸaÀTKgy¡yj_]KjTgaK¡

Ì KVM']¢Vp KVjTg%KV¡ Ÿ3KV†`]9jT¡y¡]9KgPÍ[KVj_]9\%pag%Ãb]rUKVM

ÈZM`iRˆRM9NW¡y¡¥NWp%†`q„Îpa¿%M`pag%ˆ

ÏhG0ÇIG C - C 2I½ РK¡¥NWgw]9jTÃ

ÑTÒ%ÓmdlÔ`ÕPÖO×T× rLKMØÙUÚÛWÜEÙz݄ޫßjTM9rPNWp%†9ˆRKEßKVM']9KE]p%gzrPrUKVM

àzáYÜEâãáwäVåTæOç~¢Vp%ˆRKEߑjTK†9KVgts

raNWgFNRÂ<¿ †9\[KjXÂ<¿%KVM']rUjTK*è)NWM`jXNWŸ%ÀTKnrUKVg Ÿ[KVM`K“Â<¿%gaK•]9KVg

Ì KVM']

45

Í[pa†<]„NWgFrU†`]9M9NWg%†`qeiRM¡¥Nl]9jTiRgts

Í[pa†<]„NWgFrU† NWgzrUKVM`p%gaˆÎ

(10)

ÏhG0ÇIG C - C

2I½ РK¡¥NWgw]9jTÃ

Ó¾dlÔ`ÕPúl× rLp%MSÂ<¿ KjTgaKœûKˆRKVÀãs%rLjTKnŸ3KV†OÂ9¿%MKjTŸU]AsUßjTKnNWp%†KjTgaKM

üNRÂ<¿xŸ3KArUjTgaˆRp%gaˆýpagFr‚KVjTg%KVMÍ[pbßKVjT†9p%gaˆR†ÁNWgwßKVjT†Spag%ˆ

rLjTK”þe†OÂ<¿bßÎNRÂ<¿%†`]9KlÿoèZiRM`Ÿ[KArUjTg%ˆRpag%ˆvŸ3KVM`KAÂ9¿%gaK•]

ßKM9rUKVg ÃYNWgag

l» †9KjKVjTgp%†Or`pzÂ9Ã3sajTg r¡ ÊwiÃRiR¡y¡/s

†`ˆ ŸÀVŸTˆ "!%†#$!FÂ9Ã

&%')(

+*

T†,+-"!%†#,!zÂ9à ./ ¡ 0WÀTÀ*è21`Ã1R¡y¡3”Ê41

!/SÂ9¿ ,569¢6«ß718 589

þ!|¡ 1:RÀXÂ<¿'ß 5;!SÂ<¿Î ¢!/5JÎ0<<¢ÀXÂ<¿

=˜À>0W¡y¡3,)-5,?@#0WÃ@A5ÁÂ<¿BC!DeŸ90E!PÊ41

`¿90WÀF ŸaÀTŸEÿ#G

ÏIHxIH0»m¼J<Hx½9H0ž D„Î!˜Í !wß 58!/:

K

&%'( L*NM ɌŠK M

",:!a¡34#0<1PÀ­Î0E!D>OYÎ!FÂ<Ãbß Î0EP5

È2AÎ0TÃQ0<R‰Î!/PDS T:RÀXÂ<¿bß P:

DU0RÂ9¿/$œÈ2AÎ0TÃV0<AW!%¡3:6DS1`¡X)ß 8

(11)

Beispiele: Zuweisung x := A

❚ Beispiel 1

❙ P: (x * x) > 0

❙ A: y + 1

❙ V = P[x ← A]: (y+1)*(y+1)>0 (korrekt unter dieser Vorbedingung)

❚ Beispiel 2

❙ P: x = 42

❙ A: 42

❙ V = P[x ← A]: 42=42 (tautologisch, korrekt ohne bes. Vorbed.)

❚ Beispiel 3

❙ P: x = 42

❙ A: 43

❙ V = P[x ← A]: 43=42 (unerfüllbar, nie korrekt)

(12)

Wann arbeitet das folgende Programm korrekt?

❚ var x : Z, f: array[0..n-1] of Z, i: N 0

❚ { 42 = 42 } x := 42 { x = 42 } immer

❚ { 42 = 43 } x := 43 { x = 42 } nie

❚ { x + 1 > 0 } x := x + 1 { x > 0 }

❙ wenn x vor der Zuweisung größer oder gleich 0 ist

❚ { y * y = 16 } x := y * y { x = 16 }

❙ wenn y vor der Zuweisung gleich 4 oder -4 ist

(13)

iCJ<jIH0»klHmJVnoI½ p3V¿^Dq0RÂ<¿Í!bß 5!/:

rstu v6wlxlxlxyw zɌÅ

v{wxlxlx6w z

&%'v|( v#wlxlxlx6w zB( z *

5,+-"!5#,!zÂ9à ./ p 0WÀTÀ*è21`Ã1p3p3”Ê41

}~!/SÂ9¿ } þS:RÀXÂ<¿FA:xÿ€,5Aß7185

rH‚ l»ƒ

ÏIH„jIH0»m¼J<Hx½9H… D„Î!Op3¿/PDq0RÂ<¿hÍ !wß 58!/:

K

&%'v†( v#wlxlxlx6w zB( z *NM

v wlxxlx6w z ɌŠv wlxlxlx6w z K M

‡ˆ

D„Î!˜Ð„‰FŠzÃQ0<1P¿IÎ0E!Š‹:b5¿/Œ#Î!VÀXÂ9¿

(14)

Beispiele: Parallele Zuweisung

❚ Beispiel 1

❙ { true } x, y := 0, 1 { y = 2 x }

❙ (y = 2 x )[ x ← 0 , y ← 1] µ 1 = 2 0 µ true

❚ Beispiel 2

❙ {y=w1 x=w2} x, y := y, x {x=w1 y=w2}

❚ Beispiel 3

❙ { x + y = r} x, y := x-1, y+1 { x + y = r}

µ (x + y = r) [x ← x-1, y ← y+1]

µ (x-1)+(y+1)=r

µ x+y=r

(15)

Programmkonstruktion

❚ { y = 2 x } x, y := x+1, E { y = 2 x }

❚ ( y = 2 x )[ x ← x+1, y ← E]

µ E = 2 x+1

µ E = 2 x * 2 (Arithm.) µ E = y * 2 (Vorbed.)

❚ Programmstück: x, y := x+1, y*2

❚ Ohne Nachdenken, nur ausrechnen

(16)

Beweisregel für die Zuweisung: Präzisierung

❚ Vorbedin g ung verstärken

❚ Wann kann die rechte Seite ausgewertet werden?

❚ { "A kann ausgewertet werden" } x := A { P }

❚ { Def(A), P[x ← A] } x := A { P }

❚ Beispiele:

❙ { y > 0, P[q ← x div y]} q := x div y { P }

❙ var i:N 0 , m:Z, f:array [0..n-1] of Z (Def(f) = ?) {0 ≤ i i < n P[ m ← f[i] ] } m := f[i] { P }

(0 ≤ i redundant wegen i:N 0 )

(17)

Mittelwert berechnen, Vorbedingung finden

❚ var f : array [0..n-1] of R, am : R, i : N 0

❚ { ... } arithm. Mittel berechnen {am = amittel(f,n)}

❚ amittel(g,k) entspr.

❚ Berechnung in der Form, daß zu jedem Zeitpunkt der Mittelwert des Anfangstücks bis i in am steht

❚ Versuch 1

❙ {...} i, am := 0, E {am = amittel(f,i)}

❙ (am = amittel(f,i))[i<-0, am<-E]

❙ E = (1/0) ?? Falsche Initialisierung

(18)

Mittelwert berechnen, Vorbedingung

❚ Versuch 2

❙ {...} i, am := 1, E {am = amittel(f,i)}

❙ (am = amittel(f,i))[i ← 1, am ← E]

❙ E = (1/1) * f[0]

❙ E = f[0] (Arithm.)

❚ also: Vorbedingung n > 0

(19)

Mittelwert berechnen, Programmschritt

❚ {am = amittel(f,i)} i,am := i+1, E {am = amittel(f,i)}

❚ (am = amittel(f,i))[i ← i+1, am ← E]

❚ E =

❚ E =

❚ Zusätzliche Vorbedingung: 0 ≤ i < n

❚ Programmschritt: i,am := i+1,(f[i] + (i * am))/(i+1)

(20)

Zusammenfassung, Kernpunkte

❚ Logik und die systematische Entwicklung von Programmen

❚ Zuweisung

❚ Fallunterscheidung

(21)

Was kommt beim nächsten Mal?

❚ Korrektheit von Anweisungfolgen

Referenzen

ÄHNLICHE DOKUMENTE

2 Alle Nachbedingungen der Prämissen müssen disjunkte, offene Variablen sein..

Es gibt zwei Zuweisungsregeln, eine für die Rückwärtsanwendung von Regeln, eine für die Vorwärtsanwendung. Korrekte Software

I Für Iterationen wird eine Invariante benötigt (die nicht hergeleitet

I Für Iterationen wird eine Invariante benötigt (die nicht hergeleitet

I Für Iterationen wird eine Invariante benötigt (die nicht hergeleitet werden kann).. Korrekte Software

Korrekte Software: Grundlagen und Methoden Vorlesung 10 vom 12.06.18: Vorwärts mit Floyd und Hoare.. Serge Autexier,

I Rückwärtsberechnung ist einfacher zu handhaben, erzeugt aber (tendenziell sehr) große Terme.. Korrekte Software

I Axiomatische Semantik beschreibt die Bedeutung eines Programmes durch Beweisregeln, mit welchem sich gültige Eigenschaften herleiten lassen.. Das prominenteste Beispiel hierzu ist