SlideShare a Scribd company logo
1
На пути к технологии разработки средств
дедуктивной верификации программ
Игорь Ануреев
Институт систем информатики имени А.П. Ершова
Новосибирск
anureev@iis.nsk.su
2
План доклада:
 дедуктивная верификация;
 схема дедуктивного верификатора;
 недостатки существующих дедуктивных верификаторов;
 унифицированный предметно-ориентированный подход
к разработке дедуктивных верификаторов.
3
Дедуктивная верификация — процедура
Параметры дедуктивной верификации:
AnProgSet — множество аннотированных программ;
Log — логика (язык + семантика);
AxSem — аксиоматическая семантика программ из
AnProgSet относительно Log
4
3 этапа дедуктивной верификации:
 порождение условий корректности (формул Log)
по A ∈ AnProgSet в соответствии с AxSem;
 доказательство условий корректности;
 интерпретация результатов доказательства для A.
5
Аннотированная программа =
программа на целевом языке + аннотации на языке
аннотаций.
Аннотации описывают свойства программы.
6
Аннотированная программа ≡ формула «Свойства
программы, представленные аннотациями, выполнены»
Пример: тройка Хоара {P} A {Q}.
P, Q ∈ Log — предусловие и постусловие
Аннотированная программа корректна, если
соответствующая ей формула истинна.
7
Аксиоматическая семантика программ из AnProgSet
относительно Log — набор правил вывода, включающих
формулы из AnProgSet и Log.
Пример:
{P ∧ A} B {Q} {P ∧ ¬ A} C {Q}
-----------------------------------------
{P} if A then B else C {Q}
8
Вход дедуктивного верификатора:
A ∈ AnProgSet
Выход дедуктивного верификатора:
 A корректна;
 A некорректна;
 A некорректна + интерпретация результата
доказательства условий корректности;
 Не знаю.
9
Параметры дедуктивного верификатора:
 целевой язык, язык аннотаций;
 AnProgSet, Log, AxSem;
 стратегии вывода в AxSem;
 решатели условий корректности;
10
Параметры дедуктивного верификатора:
 техники трансформации аннотированных программ;
 техники трансформации УК;
 техники комбинирования решателей УК;
 техники применения решателей УК при выводе УК;
 техники применения трансформаций аннотированных
программ при выводе УК.
11
Недостатки существующих дедуктивных верификаторов:
 дедуктивный верификатор — черный ящик;
 корректность дедуктивного верификатора;
 выразительная сила;
 адаптируемость под конкретную задачу верификации;
 интуитивно-понятный интерфейс.
12
Унифицированый предметно-ориентированный подход к
разработке дедуктивных верификаторов —
использование предметно-ориентированного языка (DSL)
для этой предметной области.
13
Основные понятия языка Atoment …
Выражения (аля Лисп)
(aa (bbbb uu) ′′′′s( d)′′)
aa, ′′′′s( d)′′ — атомы.
14
Выражения используются для представления объектов
верификации (аннотированных программ, условий
корректности, …):
 (if A then B else C)
 (forall x (A or B)) или (∀ x (A ∨ B))
Две семантики выражения:
 операционная (изменение состояния)
 денотационная (получение значения)
15
Символы (функциональные)
(+v + +v)
(forall –v -v)
(send message +v to +v)
используются для описания состояния (в операционной
семантики выражений) и вычисления значения (в
денотационной семантике выражений).
16
Символы делятся на
 предопределенные (значение определяется
интерпретацией);
 определяемые (значение определяется состоянием) .
17
Интерпретация I — функция на символах такая, что
I(символ) = функция из En
→ E.
E — множество элементов (денотат).
выражения ⊆ E
Пример:
I(+v + +v) = функция сложения чисел.
18
Состояние — функция на символах такая, что
s(символ) = конечная функция из En
→ E.
Примеры:
s(value of -v) = {(x, 1), (y, true)}
s(type of -v) = {(x, int), (y, bool)}
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))
20
Операционная семантика выражений
определяется отношением перехода на конфигурациях.
Конфигурация — пара (U, s).
U — (управляющая) последовательность выражений.
Отношение перехода → ⊆ Conf × Conf.
Conf — множество всех конфигураций.
21
Выражения делятся на
 предопределенные
(E U, s) → (U′, s′);
 определяемые (правилами переходов).
22
Особенности подхода на примерах:
 инкрементальность разработки (операционной
семантики, аксиоматической семантики, …);
 легкость введения дополнительных конструкций в
целевой язык;
 гибкость разработки;
 разрешение на месте побочных эффектов при
дедуктивном выводе;
 конструкции с переменным числом аргументов при
дедуктивном выводе.
23
Версия 1 операционной семантики блока:
(if ({ A }) var (+s A) then A)
Не подходит, если целевой язык имеет средства передачи
управления (операторы посылки исключений, операторы
break, continue, return и т. п.)
24
Добавляем в целевой язык новую концепцию — выражение
перехода (jump E).
Последовательность выражений E кодирует информацию о
том, какой оператор перехода сработал, и какую
информацию он передал.
(jump break) // break;
(jump throw v) // throw e;
(jump return v) // return e
v — значение выражения e.
25
Версия 2 операционной семантики для блока:
(if ({ A }) var (+s A) then A)
// просачивание выражения перехода
(if (jump E) ({ A })
var (+s E) (+s A) then (jump E))
26
Не подходит, если целевой язык имеет оператор перехода
goto L.
({ U (label L) V (goto L) W })
(jump goto L) просачивается за блок
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).
28
Определение конструкции (gotoStop A):
(if (gotoStop A) var A then)
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)) ))
30
Не подходит, если целевой язык имеет локальные
переменные:
{int x = 0;
{int x = 1;}
x = 2;}
Версия 4 …
31
Инкрементальность разработки.
Баланс между выразительной силой и
производительностью.
32
Логика безопасности versus логика Хоара
 символ (pre) хранит предусловие;
 нет ростусловия;
 вместо этого есть условия безопасности;
 «бесконечные» программы;
 символ (verCond) хранит список порожденных УК.
33
Логика безопасности для блока:
(if ({ A }) var (+s A)
then A (gotoStop A))
(if (jump E) ({ A })
var (+s E) (+s A) then A)
Правила перехода не меняются! Меняется способ их
применения.
34
Логика безопасности для (gotoStop A):
(if (gotoStop A) var A then)
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)) ))
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))
37
Спасибо за внимание!

More Related Content

PDF
TMPA-2013 Vert Krikun: Finding Defects in C and C++ Pointers Using Static Ana...
PDF
TMPA-2015: Expanding the Meta-Generation of Correctness Conditions by Means o...
PDF
TMPA-2015: Lexical analysis of dynamically formed string expressions
PDF
A System of Deductive Verification of Predicate Programs
PDF
Probabilistic Verification in Computational Systems Design
PDF
A Method of Reducing Computational Complexity in Verification of Programming ...
PDF
TMPA-2013 Dmitry Zaitsev
PDF
A Method of Building Extended Finite State Machines According to HDL-Descript...
TMPA-2013 Vert Krikun: Finding Defects in C and C++ Pointers Using Static Ana...
TMPA-2015: Expanding the Meta-Generation of Correctness Conditions by Means o...
TMPA-2015: Lexical analysis of dynamically formed string expressions
A System of Deductive Verification of Predicate Programs
Probabilistic Verification in Computational Systems Design
A Method of Reducing Computational Complexity in Verification of Programming ...
TMPA-2013 Dmitry Zaitsev
A Method of Building Extended Finite State Machines According to HDL-Descript...

What's hot (20)

PPTX
Программирование на языке C Sharp (СИ решетка)
PPT
Программирование линейных алгоритмов
PPTX
Статический анализ: вокруг Java за 60 минут
PPT
PPTX
Принципы работы статического анализатора кода PVS-Studio
PDF
2. Операторы языка C#
PPTX
Обобщенное программирование в C++ или как сделать свою жизнь проще через стра...
PPT
Программирование разветвляющихся алгоритмов
PPT
PPT
PPT
Презентация на тему: ЕГЭ информатика
PPTX
Статический анализ кода: Что? Как? Зачем?
PDF
1. Типы данных. Операции. Ввод и вывод C#
PPTX
Язык программирования C#
PDF
Догнать и перегнать boost::lexical_cast
PPT
Запись вспомогательный алгоритмов на языка Паскаль
PDF
Rambler.iOS #9: Анализируй это!
PPT
паскаль. часть1
PPTX
Павел Беликов, Как избежать ошибок, используя современный C++
Программирование на языке C Sharp (СИ решетка)
Программирование линейных алгоритмов
Статический анализ: вокруг Java за 60 минут
Принципы работы статического анализатора кода PVS-Studio
2. Операторы языка C#
Обобщенное программирование в C++ или как сделать свою жизнь проще через стра...
Программирование разветвляющихся алгоритмов
Презентация на тему: ЕГЭ информатика
Статический анализ кода: Что? Как? Зачем?
1. Типы данных. Операции. Ввод и вывод C#
Язык программирования C#
Догнать и перегнать boost::lexical_cast
Запись вспомогательный алгоритмов на языка Паскаль
Rambler.iOS #9: Анализируй это!
паскаль. часть1
Павел Беликов, Как избежать ошибок, используя современный C++
Ad

Viewers also liked (9)

PPTX
TMPA-2013 Pakulin: Automation of Conformance Testing of TLS
PPT
КГТУ Лекция 2: Обеспечение Качества Программного Обеспечения
PPT
Presentation to ILFQ on HFT
PPT
IATE Lecture 1: Quality Assurance for Highload Systems
PPTX
TMPA-2013 Itsykson: Java Program Analysis
PDF
TMPA-2013: LTL Specification
PPT
IT Education Kostroma 22 May 2013
PPT
Высоконагруженные трейдинговые системы и их тестирование
PPT
TMPA-2013 Conference: Verification of Parallel Programs – Current Stage and P...
TMPA-2013 Pakulin: Automation of Conformance Testing of TLS
КГТУ Лекция 2: Обеспечение Качества Программного Обеспечения
Presentation to ILFQ on HFT
IATE Lecture 1: Quality Assurance for Highload Systems
TMPA-2013 Itsykson: Java Program Analysis
TMPA-2013: LTL Specification
IT Education Kostroma 22 May 2013
Высоконагруженные трейдинговые системы и их тестирование
TMPA-2013 Conference: Verification of Parallel Programs – Current Stage and P...
Ad

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

PDF
C++ Базовый. Занятие 04.
PPTX
Dsl for c++
PPTX
Компилируемые в реальном времени DSL для С++
PPTX
Технологии анализа бинарного кода приложений: требования, проблемы, инструменты
PDF
С.Ковалёв -- теория категорий как математическое основание MBSE
PDF
Formal verification of operating system kernels
PPT
Функции в языке программирования QBasic
PDF
«Статический анализ: гордость и предубеждения», Алексей Кузьменко, аналитик И...
PDF
Основы программирования на C++
PDF
C# Desktop. Занятие 16.
PPTX
C# Deep Dive
PPTX
C sharp deep dive
PPT
язык програмирования
PDF
Инструментальная поддержка встроенных языков в IDE.
PPT
Языки программирования
PDF
Лекция 12 (часть 1): Языки программирования семейства PGAS: Cray Chapel
PDF
О сложностях программирования, или C# нас не спасет?
PPTX
Специфика разработки и тестирования статического анализатора
PDF
static - defcon russia 20
PPTX
Урок 8. Введение в редукцию графов
C++ Базовый. Занятие 04.
Dsl for c++
Компилируемые в реальном времени DSL для С++
Технологии анализа бинарного кода приложений: требования, проблемы, инструменты
С.Ковалёв -- теория категорий как математическое основание MBSE
Formal verification of operating system kernels
Функции в языке программирования QBasic
«Статический анализ: гордость и предубеждения», Алексей Кузьменко, аналитик И...
Основы программирования на C++
C# Desktop. Занятие 16.
C# Deep Dive
C sharp deep dive
язык програмирования
Инструментальная поддержка встроенных языков в IDE.
Языки программирования
Лекция 12 (часть 1): Языки программирования семейства PGAS: Cray Chapel
О сложностях программирования, или C# нас не спасет?
Специфика разработки и тестирования статического анализатора
static - defcon russia 20
Урок 8. Введение в редукцию графов

More from Iosif Itkin (20)

PDF
Foundations of Software Testing Lecture 4
PPTX
QA Financial Forum London 2021 - Automation in Software Testing. Humans and C...
PDF
Exactpro FinTech Webinar - Global Exchanges Test Oracles
PDF
Exactpro FinTech Webinar - Global Exchanges FIX Protocol
PDF
Operational Resilience in Financial Market Infrastructures
PDF
20 Simple Questions from Exactpro for Your Enjoyment This Holiday Season
PDF
Testing the Intelligence of your AI
PDF
EXTENT 2019: Exactpro Quality Assurance for Financial Market Infrastructures
PDF
ClearTH Test Automation Framework: Case Study in IRS & CDS Swaps Lifecycle Mo...
PPTX
EXTENT Talks 2019 Tbilisi: Failover and Recovery Test Automation - Ivan Shamrai
PDF
EXTENT Talks QA Community Tbilisi 20 April 2019 - Conference Open
PDF
User-Assisted Log Analysis for Quality Control of Distributed Fintech Applica...
PPTX
QAFF Chicago 2019 - Complex Post-Trade Systems, Requirements Traceability and...
PDF
QA Community Saratov: Past, Present, Future (2019-02-08)
PDF
Machine Learning and RoboCop Testing
PDF
Behaviour Driven Development: Oltre i limiti del possibile
PDF
2018 - Exactpro Year in Review
PPTX
Exactpro Discussion about Joy and Strategy
PPTX
FIX EMEA Conference 2018 - Post Trade Software Testing Challenges
PDF
BDD. The Outer Limits. Iosif Itkin at Youcon (in Russian)
Foundations of Software Testing Lecture 4
QA Financial Forum London 2021 - Automation in Software Testing. Humans and C...
Exactpro FinTech Webinar - Global Exchanges Test Oracles
Exactpro FinTech Webinar - Global Exchanges FIX Protocol
Operational Resilience in Financial Market Infrastructures
20 Simple Questions from Exactpro for Your Enjoyment This Holiday Season
Testing the Intelligence of your AI
EXTENT 2019: Exactpro Quality Assurance for Financial Market Infrastructures
ClearTH Test Automation Framework: Case Study in IRS & CDS Swaps Lifecycle Mo...
EXTENT Talks 2019 Tbilisi: Failover and Recovery Test Automation - Ivan Shamrai
EXTENT Talks QA Community Tbilisi 20 April 2019 - Conference Open
User-Assisted Log Analysis for Quality Control of Distributed Fintech Applica...
QAFF Chicago 2019 - Complex Post-Trade Systems, Requirements Traceability and...
QA Community Saratov: Past, Present, Future (2019-02-08)
Machine Learning and RoboCop Testing
Behaviour Driven Development: Oltre i limiti del possibile
2018 - Exactpro Year in Review
Exactpro Discussion about Joy and Strategy
FIX EMEA Conference 2018 - Post Trade Software Testing Challenges
BDD. The Outer Limits. Iosif Itkin at Youcon (in Russian)

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

  • 1. 1 На пути к технологии разработки средств дедуктивной верификации программ Игорь Ануреев Институт систем информатики имени А.П. Ершова Новосибирск anureev@iis.nsk.su
  • 2. 2 План доклада:  дедуктивная верификация;  схема дедуктивного верификатора;  недостатки существующих дедуктивных верификаторов;  унифицированный предметно-ориентированный подход к разработке дедуктивных верификаторов.
  • 3. 3 Дедуктивная верификация — процедура Параметры дедуктивной верификации: AnProgSet — множество аннотированных программ; Log — логика (язык + семантика); AxSem — аксиоматическая семантика программ из AnProgSet относительно Log
  • 4. 4 3 этапа дедуктивной верификации:  порождение условий корректности (формул Log) по A ∈ AnProgSet в соответствии с AxSem;  доказательство условий корректности;  интерпретация результатов доказательства для A.
  • 5. 5 Аннотированная программа = программа на целевом языке + аннотации на языке аннотаций. Аннотации описывают свойства программы.
  • 6. 6 Аннотированная программа ≡ формула «Свойства программы, представленные аннотациями, выполнены» Пример: тройка Хоара {P} A {Q}. P, Q ∈ Log — предусловие и постусловие Аннотированная программа корректна, если соответствующая ей формула истинна.
  • 7. 7 Аксиоматическая семантика программ из AnProgSet относительно Log — набор правил вывода, включающих формулы из AnProgSet и Log. Пример: {P ∧ A} B {Q} {P ∧ ¬ A} C {Q} ----------------------------------------- {P} if A then B else C {Q}
  • 8. 8 Вход дедуктивного верификатора: A ∈ AnProgSet Выход дедуктивного верификатора:  A корректна;  A некорректна;  A некорректна + интерпретация результата доказательства условий корректности;  Не знаю.
  • 9. 9 Параметры дедуктивного верификатора:  целевой язык, язык аннотаций;  AnProgSet, Log, AxSem;  стратегии вывода в AxSem;  решатели условий корректности;
  • 10. 10 Параметры дедуктивного верификатора:  техники трансформации аннотированных программ;  техники трансформации УК;  техники комбинирования решателей УК;  техники применения решателей УК при выводе УК;  техники применения трансформаций аннотированных программ при выводе УК.
  • 11. 11 Недостатки существующих дедуктивных верификаторов:  дедуктивный верификатор — черный ящик;  корректность дедуктивного верификатора;  выразительная сила;  адаптируемость под конкретную задачу верификации;  интуитивно-понятный интерфейс.
  • 12. 12 Унифицированый предметно-ориентированный подход к разработке дедуктивных верификаторов — использование предметно-ориентированного языка (DSL) для этой предметной области.
  • 13. 13 Основные понятия языка Atoment … Выражения (аля Лисп) (aa (bbbb uu) ′′′′s( d)′′) aa, ′′′′s( d)′′ — атомы.
  • 14. 14 Выражения используются для представления объектов верификации (аннотированных программ, условий корректности, …):  (if A then B else C)  (forall x (A or B)) или (∀ x (A ∨ B)) Две семантики выражения:  операционная (изменение состояния)  денотационная (получение значения)
  • 15. 15 Символы (функциональные) (+v + +v) (forall –v -v) (send message +v to +v) используются для описания состояния (в операционной семантики выражений) и вычисления значения (в денотационной семантике выражений).
  • 16. 16 Символы делятся на  предопределенные (значение определяется интерпретацией);  определяемые (значение определяется состоянием) .
  • 17. 17 Интерпретация I — функция на символах такая, что I(символ) = функция из En → E. E — множество элементов (денотат). выражения ⊆ E Пример: I(+v + +v) = функция сложения чисел.
  • 18. 18 Состояние — функция на символах такая, что s(символ) = конечная функция из En → E. Примеры: s(value of -v) = {(x, 1), (y, true)} s(type of -v) = {(x, int), (y, bool)}
  • 19. 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))
  • 20. 20 Операционная семантика выражений определяется отношением перехода на конфигурациях. Конфигурация — пара (U, s). U — (управляющая) последовательность выражений. Отношение перехода → ⊆ Conf × Conf. Conf — множество всех конфигураций.
  • 21. 21 Выражения делятся на  предопределенные (E U, s) → (U′, s′);  определяемые (правилами переходов).
  • 22. 22 Особенности подхода на примерах:  инкрементальность разработки (операционной семантики, аксиоматической семантики, …);  легкость введения дополнительных конструкций в целевой язык;  гибкость разработки;  разрешение на месте побочных эффектов при дедуктивном выводе;  конструкции с переменным числом аргументов при дедуктивном выводе.
  • 23. 23 Версия 1 операционной семантики блока: (if ({ A }) var (+s A) then A) Не подходит, если целевой язык имеет средства передачи управления (операторы посылки исключений, операторы break, continue, return и т. п.)
  • 24. 24 Добавляем в целевой язык новую концепцию — выражение перехода (jump E). Последовательность выражений E кодирует информацию о том, какой оператор перехода сработал, и какую информацию он передал. (jump break) // break; (jump throw v) // throw e; (jump return v) // return e v — значение выражения e.
  • 25. 25 Версия 2 операционной семантики для блока: (if ({ A }) var (+s A) then A) // просачивание выражения перехода (if (jump E) ({ A }) var (+s E) (+s A) then (jump E))
  • 26. 26 Не подходит, если целевой язык имеет оператор перехода goto L. ({ U (label L) V (goto L) W }) (jump goto L) просачивается за блок
  • 27. 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).
  • 29. 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)) ))
  • 30. 30 Не подходит, если целевой язык имеет локальные переменные: {int x = 0; {int x = 1;} x = 2;} Версия 4 …
  • 31. 31 Инкрементальность разработки. Баланс между выразительной силой и производительностью.
  • 32. 32 Логика безопасности versus логика Хоара  символ (pre) хранит предусловие;  нет ростусловия;  вместо этого есть условия безопасности;  «бесконечные» программы;  символ (verCond) хранит список порожденных УК.
  • 33. 33 Логика безопасности для блока: (if ({ A }) var (+s A) then A (gotoStop A)) (if (jump E) ({ A }) var (+s E) (+s A) then A) Правила перехода не меняются! Меняется способ их применения.
  • 34. 34 Логика безопасности для (gotoStop A): (if (gotoStop A) var A then)
  • 35. 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)) ))
  • 36. 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))