Previous Page  9 / 16 Next Page
Information
Show Menu
Previous Page 9 / 16 Next Page
Page Background

Разработка и исследование синтетического метода верификации программы…

ISSN 0236-3933. Вестник МГТУ им. Н.Э. Баумана. Сер. Приборостроение. 2016. № 4

57

Шаг 1.

Разметка программы и трансляция ее в идентичный помеченный

текст. Каждый оператор помечен меткой

m

. Метки начала и конца программы

считаем заданными. При трансляции любого оператора вводим метку начала,

меткой конца является начало следующего оператора (табл. 2).

Таблица 2

Трансляция программы в помеченный текст

Оператор программы

Помеченный оператор программы

func

:

m func

v E

:

m v E

1 2

;

P P

1 1 2

: ;

:

m P m P

1

2

if bthenP elseP

1 1

2 2

:

:

:

m if bthenm P elsem P

1

whilebdo P

1

:

:

m while bdom P

Шаг 2.

Построение булевой формулы, определяющей множество начальных

состояний программы:

  

0

0

,

&

,

S V PC Prev V pc m

где

 

Prev V

— предусловие, определяю-

щее возможные начальные значения переменных (

0

m

метка начального со-

стояния программы,

( )

,

Prev V true

в случае если ограничений на начальные

состояния не наложено).

Шаг 3.

Построение предикатов для переходов:

1

:

;

:

m func m

 

 

 

1

1

,

,

m func m pc m pc m same V

   

R

в этом предикате ниче-

го не изменилось;

1

:

;

:

m v E m

 

 

 

1

1

,

,

{ }

m v E m pc m pc m v E same V v

     

R

измени-

лись

pc

и

;

v

1 1

2 2 3

:

:

:

:

m if b thenm P else m P m

 

 

1 1

2 2

1

,

,

,

m if b then m P elsem P b pc m pc m same V

      

R

если

b

истинно, то выполняем

1

;

P

 

 

 

  

  

1 1

2 2

2

:

:

if b then m P elsem P b pc m pc m same V

R

если

b

ложно, то выполняем

1

;

P

1 1 3

1 1 3

, ,

, ,

m P m m P m

R

R

выполняем

1

P

или

2

P

и выходим;

1

2

:

:

:

m while b do m P m

 

 

1

2

1

,

: ,

:

m while b do m P m b pc m pc m same V

      

R

— если

b

истинно, выполняем

;

P

 

 

2

b pc m pc m same V

     

1 1 2

, ,

m P m

R

— если

b

ложно, выходим из цикла.