The Verification of Functional Programs by Applying Statechart Diagrams Construction Method
Andrew Mironov, IPI, Moscow
12 - 14 November 2015
Tools and Methods of Program Analysis in St. Petersburg
13. Ïðèìåð ãðàôîâîé ìîäåëè ôóíêöèîíàëüíîé ïðîãðàììû
y := sort(x)
ε
ε := x
'
$
%
y := a → u
u := sort(b)
ab := x
y
y
aε
aε := x
'
$
%
z := a → d
cd := sort(b)
ab := x
tail
tail
tail
tail
{a ≤ c}.acd
{c a}.cz
' $
z := a → d, d := p → j
cj := sort(q)
apq := x
'
$
%
z := a → ij
ij := sort(q)
acq := x
'
$
%
cd := sort(b)
ab := x
{c a}.caε
acε := x
c
c
E
E
E
c
rrr
rr‰
¨¨
¨¨¨¨B
rr
rrr‰
¨¨¨
¨¨B
d
d
dds
d
d
d
ds
A B
C
D E
G
F
I
H
{c a, c ≤ i}.cz
{c a, c p}.cz
Àíäðåé Ìèðîíîâ Âåðèôèêàöèÿ ôóíêöèîíàëüíûõ ïðîãðàìì ìåòîäîì ïîñòð
14. Ðåäóöèðîâàííàÿ ãðàôîâàÿ ìîäåëü äëÿ ÔÏ ñîðòèðîâêè
y := sort(x)
ε
ε := x
'
$
%
y := a → u
u := sort(b)
ab := x
y
y
aε
aε := x
'
$
%
z := a → d
cd := sort(b)
ab := x
tail
tail
{a ≤ c}.acd
{c a}.cz
'
$
%
cd := sort(b)
ab := x c
c
E
Er
rrr
r‰
¨¨¨
¨¨¨B
d
d
dds
A B
C
D E
G
Àíäðåé Ìèðîíîâ Âåðèôèêàöèÿ ôóíêöèîíàëüíûõ ïðîãðàìì ìåòîäîì ïîñòð
15. Ãðàôîâàÿ ìîäåëü ÔÏ ïðîâåðêè óïîðÿäî÷åííîñòè ñòðîêè
a b
c d
e f g
s
s := ord(y)
s
s := ord(cz)
cz := y
1
ε := y
1
cε := y
s'
$
%
s := ord(cvw)
cvw := y
cvw := y
'
$
%
s := ord(vw)
cvw := y
c
c
'
{c ≤ v}.s
E
{v c}.0
E
EE
Àíäðåé Ìèðîíîâ Âåðèôèêàöèÿ ôóíêöèîíàëüíûõ ïðîãðàìì ìåòîäîì ïîñòð
16. Ãðàôîâàÿ ìîäåëü ñóïåðïîçèöèè
Aa BaCe
Gc Da
Ec
Gf Ge
1'
$
%
. . .
1'
$
%
. . .E
'
$
%
'
$
%
s := ord(y)
y := sort(x)
c'
$
%
s := ord(y)
y := a → u
u := sort(b)
ab := x
d
d
d
d
ds
'
c
EE
'
$
%
s := ord(cz)
z := a → d
cd := sort(b)
ab := x
'
$
%
s := ord(vw)
vw := a → d
cd := sort(b)
ab := x
E
'
$
%
s := ord(cvw)
vw := a → d
cd := sort(b)
ab := x
'
$
%
s := ord(cd)
cd := sort(b)
ab := x
{a ≤ c}.s
{c a, c ≤ v}.s{c a}.s
{c a}.s s
s
d
d
dds
Àíäðåé Ìèðîíîâ Âåðèôèêàöèÿ ôóíêöèîíàëüíûõ ïðîãðàìì ìåòîäîì ïîñòð