if
p
the n
q
e lse
h
fi
f = [
if
p
the n
g
e lse
h
fi
]
•
Ve rifika si p a d a sa a t p e nulisa n p ro g ra m a d a la h untuk se tia p la ng ka h fung si ya ng d ib e rika n, d ike mb a ng ka n ke d a la m struktur p rime ya ng
se sua i, d a n ko mp o ne n func tio n d a n p re d ic a te d ite ntuka n d ima na hip o te sa a ka n me ng ha silka n se b ua h p ro g ra m func tio n ya ng id e ntik
d e ng a n fung si ya ng d ib e rika n
6.2.2. A lja b a r Ke b e na ra n Pro g ra m Te rstruktur
•
Ke b e na ra n p ro g ra m d ite ka nka n p a d a 2 ha l ya itu
1. Ap a ka h f = [p ] ? C o mp le te C o rre c tne ss c e nd e rung me nuju p a d a
d e fe nvise p ro g ra mming 2.
Ap a ka h f
⊂
[p ] ? Suffic ie nt C o rre c tne ss c e nd e rung me nuju p a d a e xe c p tio n p ro c e ssing
•
Pe rtimb a ng ka n untuk p ro g ra m d ib a wa h ini
f = x
≥ ∧
y
≥ →
x, y := x + y, 0
P1 =
while
y 0
do
x, y := x + 1, y - 1
o d
P2 =
while
y
≠
do
x,y := x + 1, y - 1
o d
f = x
≥ ∧
y
≥ →
x, y, z := x + y, 0, z |
true
→
x, y, z = x, y, “ e rro r” P3
=
if
x 0
∨
y 0
the n
z := “ e rro r”
e lse while
y 0
do
x, y := x + 1, y - 1
o d fi
•
Da la m me mb uktika n c o mp le te c o re c tne ss a ka n suka r untuk p ro g ra m d e ng a n b e ntuk c o mp o und p ro g ra m. C a ra ya ng d a p a t d ila kuka n
a d a ka h d e ng a n me ng hip o te sa fung si-fung si p o ko k, C o nto h
while
x 0
∧
y 0
do
x := x - 1 y := y - 1
o d if
y 0
the n
x := -y
fi fre e
y
SEQ :SUB
WDO :MAG IFE:SIG N fre e x
x 0
∧
y 0 SEQ :DEC R y 0 x := -y
x := x - 1 y := y - 1
Sub p ro ff
sub = [ma g ;sig n;
fre e
x ]
m a g = [
while
x 0
∧
y 0
do
d e c r
o d
] d e c r
= [x := x - 1; y := y - 1] sig n
= [
if
y 0
the n
x := -y
fi
]
a ta u
sub
⊂
[m a g ;sig n;
fre e
x] m a g
⊂
[
while
x 0
∧
y 0
do
d e c r
o d
] d e c r
⊂
[x := x - 1; y := y - 1] sig n
⊂
[
if
y 0
the n
x := -y
fi
]
6.3. Ke b e na ra n Pro g ra m - p ro g ra m Prim e
6.3.1. Pro g ra m Te rm ina si
•
Te rmina si p a d a p ro g ra m ya ng te rb e ntuk d a ri b e ntuka n ko mp o sisi fung si te rte ntu ya ng tite ntuka n o le h sa tu linta sa n p a d a e -c ha rt d e ng a n ta mp a
a d a p e ng ula ng a n a ma tla h mud a h d ite ntuka n d ima na d a la m e va lua sinya [P] a d a la h f, d a n f me rup a ka n ko mp o si fung si
•
Te rmina si p a d a p ro g ra m ya ng me ng a nd ung p e ng ula ng a n a ma t suka r d ite ntuka n. Ha l ini d ise b a b ka n a d a nya sua tu ke a d a a n ya ng tid a k d a p a t
d ip e rkira ka n untuk me ng a khiri sua tu p ro g ra m
6.3.2. Ite ra tio n Re c ursio n Le m m a
•
Ve rifika si untuk sua tu p ro g ra m d e ng a n a d a nya p e ng ula ng a n d a p a t d ila kuka n d e ng a n me rub a h p ro g ra m ke d a la m b e ntuk re c ursive
p =
while
p
do
g
o d
q =
if
p
the n
q ; f
fi
d ima na f b e rhe nti unutk se mua a rg ume nt f d a n f a d a la h p ro g ra m func tio n d a ri ifthe n ya ng tid a k me miliki p e ng ula ng a n
C o nto h p =
while
v 0
do
u,v := u+1,v-1
o d
d a ri p ro g ra m tsb d id a p a t f = u, v := u+v, 0
o le h ka re na itu d id a p a tka n
q =
if
v 0
the n
u,v := u+1,v-1; u, v := u+v,0
fi
•
De ng a n ha l te rse b ut ma ka
while do
f = [
while
p
do
g
o d
]
↔
te rm f,
while
p
do
g
o d
∧
f = [
if
p
the n
g ; f
fi
]
do until
f = [
do
g
until
p
o d
]
↔
te rm f,
do
g
until
p
o d
∧
f = [g ; if ~p the n f fi]
do while do
f = [
do 1
g
while
p
do 2
h
o d
]
↔
te rm f,
do 1
g
while
p
do 2
h
o d
∧
f = [g ;
if
p
the n
h; f
fi
]
6.3.3. Te o re m a Ke b e na ra n
•
Te o re ma ke b e na ra n ha nya me ne ntuka n re la si-re la si himp una n a p a ya ng ha rus d ive rifika si unutk me mb uktika n ke b e na ra n d a ri sua tu p ro g ra m
•
Te o re ma Ke b e na ra n me nunjuka n b a hwa sua tu sisi d a ri p e rta nya a n- p e rta nya a n te rmina si se mua p ro g ra m-p ro g re a m te rstruktur ya ng
d inya ta ka n d a la m p rime -p rime sa mp a i p a d a se b ua h p re d ic a te ya ng d a p a t d ive rifika si ha nya o le h p e ng g una me to d e -me to d e b e ra la sa n ya ng
d ib utuhka n o le h p ro g ra m se q ue nc e d a n ifthe n, p e mb uktia n mung kin me mb utuhka n ke sa b a ra n d ib a nd ing d e ng a n p e ng e ta hua n
•
Untuk fung si f d a n p ro g ra m p ke b e na ra n d ite ntuka n o le h se b ua h ko nd isi c untuk
C o mp le te c o rre c tne ss f = [p ] te rm f, p
∧
f = {x, y | c x , y}