tmpa-2013 anureyev: on the road to technology of developing the means of deductive program...

37
1 На пути к технологии разработки средств дедуктивной верификации программ Игорь Ануреев Институт систем информатики имени А.П. Ершова Новосибирск [email protected]

Upload: iosif-itkin

Post on 15-Jun-2015

176 views

Category:

Documents


3 download

DESCRIPTION

TMPA-2013 Conference in Kostroma Anureyev, I., A.P.Ershov Institute of Informatics Systems On the Road to Technology of Developing the Means of Deductive Program Verification

TRANSCRIPT

Page 1: TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Deductive Program Verification

1

На пути к технологии разработки средств

дедуктивной верификации программ

Игорь Ануреев

Институт систем информатики имени А.П. Ершова

Новосибирск

[email protected]

Page 2: TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Deductive Program Verification

2

План доклада:

дедуктивная верификация;

схема дедуктивного верификатора;

недостатки существующих дедуктивных верификаторов;

унифицированный предметно-ориентированный подход

к разработке дедуктивных верификаторов.

Page 3: TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Deductive Program Verification

3

Дедуктивная верификация — процедура

Параметры дедуктивной верификации:

AnProgSet — множество аннотированных программ;

Log — логика (язык + семантика);

AxSem — аксиоматическая семантика программ из

AnProgSet относительно Log

Page 4: TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Deductive Program Verification

4

3 этапа дедуктивной верификации:

порождение условий корректности (формул Log)

по A ∈ AnProgSet в соответствии с AxSem;

доказательство условий корректности;

интерпретация результатов доказательства для A.

Page 5: TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Deductive Program Verification

5

Аннотированная программа =

программа на целевом языке + аннотации на языке

аннотаций.

Аннотации описывают свойства программы.

Page 6: TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Deductive Program Verification

6

Аннотированная программа ≡ формула «Свойства

программы, представленные аннотациями, выполнены»

Пример: тройка Хоара {P} A {Q}.

P, Q ∈ Log — предусловие и постусловие

Аннотированная программа корректна, если

соответствующая ей формула истинна.

Page 7: TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Deductive Program Verification

7

Аксиоматическая семантика программ из AnProgSet

относительно Log — набор правил вывода, включающих

формулы из AnProgSet и Log.

Пример:

{P ∧ A} B {Q} {P ∧ ¬ A} C {Q}

-----------------------------------------

{P} if A then B else C {Q}

Page 8: TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Deductive Program Verification

8

Вход дедуктивного верификатора:

A ∈ AnProgSet

Выход дедуктивного верификатора:

A корректна;

A некорректна;

A некорректна + интерпретация результата

доказательства условий корректности;

Не знаю.

Page 9: TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Deductive Program Verification

9

Параметры дедуктивного верификатора:

целевой язык, язык аннотаций;

AnProgSet, Log, AxSem;

стратегии вывода в AxSem;

решатели условий корректности;

Page 10: TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Deductive Program Verification

10

Параметры дедуктивного верификатора:

техники трансформации аннотированных программ;

техники трансформации УК;

техники комбинирования решателей УК;

техники применения решателей УК при выводе УК;

техники применения трансформаций аннотированных

программ при выводе УК.

Page 11: TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Deductive Program Verification

11

Недостатки существующих дедуктивных верификаторов:

дедуктивный верификатор — черный ящик;

корректность дедуктивного верификатора;

выразительная сила;

адаптируемость под конкретную задачу верификации;

интуитивно-понятный интерфейс.

Page 12: TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Deductive Program Verification

12

Унифицированый предметно-ориентированный подход к

разработке дедуктивных верификаторов —

использование предметно-ориентированного языка (DSL)

для этой предметной области.

Page 13: TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Deductive Program Verification

13

Основные понятия языка Atoment …

Выражения (аля Лисп)

(aa (bbbb uu) ′′\′′s( d)′′)

aa, ′′\′′s( d)′′ — атомы.

Page 14: TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Deductive Program Verification

14

Выражения используются для представления объектов

верификации (аннотированных программ, условий

корректности, …):

(if A then B else C)

(forall x (A or B)) или (∀ x (A ∨ B))

Две семантики выражения:

операционная (изменение состояния)

денотационная (получение значения)

Page 15: TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Deductive Program Verification

15

Символы (функциональные)

(+v + +v)

(forall –v -v)

(send message +v to +v)

используются для описания состояния (в операционной

семантики выражений) и вычисления значения (в

денотационной семантике выражений).

Page 16: TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Deductive Program Verification

16

Символы делятся на

предопределенные (значение определяется

интерпретацией);

определяемые (значение определяется состоянием) .

Page 17: TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Deductive Program Verification

17

Интерпретация I — функция на символах такая, что

I(символ) = функция из En → E.

E — множество элементов (денотат).

выражения ⊆ E

Пример:

I(+v + +v) = функция сложения чисел.

Page 18: TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Deductive Program Verification

18

Состояние — функция на символах такая, что

s(символ) = конечная функция из En → E.

Примеры:

s(value of -v) = {(x, 1), (y, true)}

s(type of -v) = {(x, int), (y, bool)}

Page 19: TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Deductive Program Verification

19

Денотационная семантика выражений

val(AA, s) = AA; // AA — атом

val(((2 + 3) + (value of x)), s) =

I(+v + +v)(val(2+3, s), s(value of +v)(x))

Page 20: TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Deductive Program Verification

20

Операционная семантика выражений

определяется отношением перехода на конфигурациях.

Конфигурация — пара (U, s).

U — (управляющая) последовательность выражений.

Отношение перехода → ⊆ Conf × Conf.

Conf — множество всех конфигураций.

Page 21: TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Deductive Program Verification

21

Выражения делятся на

предопределенные

(E U, s) → (U′, s′);

определяемые (правилами переходов).

Page 22: TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Deductive Program Verification

22

Особенности подхода на примерах:

инкрементальность разработки (операционной

семантики, аксиоматической семантики, …);

легкость введения дополнительных конструкций в

целевой язык;

гибкость разработки;

разрешение на месте побочных эффектов при

дедуктивном выводе;

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

дедуктивном выводе.

Page 23: TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Deductive Program Verification

23

Версия 1 операционной семантики блока:

(if ({ A }) var (+s A) then A)

Не подходит, если целевой язык имеет средства передачи

управления (операторы посылки исключений, операторы

break, continue, return и т. п.)

Page 24: TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Deductive Program Verification

24

Добавляем в целевой язык новую концепцию — выражение

перехода (jump E).

Последовательность выражений E кодирует информацию о

том, какой оператор перехода сработал, и какую

информацию он передал.

(jump break) // break;

(jump throw v) // throw e;

(jump return v) // return e

v — значение выражения e.

Page 25: TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Deductive Program Verification

25

Версия 2 операционной семантики для блока:

(if ({ A }) var (+s A) then A)

// просачивание выражения перехода

(if (jump E) ({ A })

var (+s E) (+s A) then (jump E))

Page 26: TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Deductive Program Verification

26

Не подходит, если целевой язык имеет оператор перехода

goto L.

({ U (label L) V (goto L) W })

(jump goto L) просачивается за блок

Page 27: TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Deductive Program Verification

27

Версия 3 операционной семантики для блока:

(if ({ A }) var (+s A)

then A (gotoStop A))

(if (jump E) ({ A })

var (+s E) (+s A) then A)

Добавление в целевой язык новой конструкции (gotoStop

A), которая «ловит» (jump goto L).

Page 28: TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Deductive Program Verification

28

Определение конструкции (gotoStop A):

(if (gotoStop A) var A then)

Page 29: TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Deductive Program Verification

29

(if (jump E) (gotoStop A)

var (+s E) (+s A) then

(matchCases (jump E)

(if (jump goto L) var L then

(matchCases (A)

(if (B (label L) C)

var (+s B) (+s C)

then C (gotoStop A))

(else (jump E))))

(else (jump E)) ))

Page 30: TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Deductive Program Verification

30

Не подходит, если целевой язык имеет локальные

переменные:

{int x = 0;

{int x = 1;}

x = 2;}

Версия 4 …

Page 31: TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Deductive Program Verification

31

Инкрементальность разработки.

Баланс между выразительной силой и

производительностью.

Page 32: TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Deductive Program Verification

32

Логика безопасности versus логика Хоара

символ (pre) хранит предусловие;

нет ростусловия;

вместо этого есть условия безопасности;

«бесконечные» программы;

символ (verCond) хранит список порожденных УК.

Page 33: TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Deductive Program Verification

33

Логика безопасности для блока:

(if ({ A }) var (+s A)

then A (gotoStop A))

(if (jump E) ({ A })

var (+s E) (+s A) then A)

Правила перехода не меняются! Меняется способ их

применения.

Page 34: TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Deductive Program Verification

34

Логика безопасности для (gotoStop A):

(if (gotoStop A) var A then)

Page 35: TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Deductive Program Verification

35

(if (jump E) (gotoStop A)

var (+s E) (+s A) then

(matchCases (jump E)

(if (jump goto L) var L then

(matchCases (A)

(if (B (label L inv I) C)

var (+s B) (+s C) I then

(assert I))

(else (jump E)) ))

(else (jump E)) ))

Page 36: TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Deductive Program Verification

36

Операционная семантика и логика безопасности для

условного оператора:

(if (if A then B else C)

var A (+s B) (+s C) then A (cases

(if ((val) = true) then B)

(else C)))

(if (jump E) (if A)

var (+s E) (+s A) then (jump E))

Page 37: TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Deductive Program Verification

37

Спасибо за внимание!