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

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

Jun 15, 2015

Download

Documents

Iosif Itkin

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
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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

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