SlideShare ist ein Scribd-Unternehmen logo
1 von 18
Downloaden Sie, um offline zu lesen
Система дедуктивной верификации предикатных программ 
Чушкин М.С 
ИСИ СО РАН им. А. П. Ершова 
г. Новосибирск
Система предикатного программирования 
P 
исходный код 
внутреннее 
представление 
IR 
Front end 
C++ 
Back end 
PVS 
+CVC3 
Back end 
Генератор формул 
корректности программы
Определение предиката 
A(X x: Y y) 
pre P(x) 
{ 
S(x: y) 
} 
post Q(x, y) 
measure m(x); 
•A – имя предиката 
•S – оператор 
–x, y – аргументы и результаты 
•[P(x), Q(x, y)] – спецификация 
–P(x) – предусловие 
–Q(x, y) – постусловие 
•m(x) – функция меры
Пример 
НОД(nat a, b : nat c) 
pre a >= 1 & b >= 1 
{ 
if (a = b) 
c = a 
else if (a < b) 
НОД(a, b - a : c) 
else 
НОД(a - b, b : c) 
} 
post gcd(c, a, b) 
measure a + b;
Корректность программы 
•L(S(x: y)) 
–логика оператора S(x: y) 
–сильнейший предикат, истинный при завершении исполнения оператора S(x: y) 
•Corr(S, P, Q)(x) 
–Корректность оператора S(x: y) 
–P(x)  [ L(S(x: y))  Q(x, y) ] & y. L(S(x: y)) 
•Corr*(A, P, Q)(x) 
–Корректность рекурсивного предиката A(x: y) 
–Induct(A, P, Q)(t)  Corr(A, P, Q)(t) 
–Induct(A, P, Q)(t) 
 u (m(u) < m(t)  Corr(A, P, Q)(u))
Примеры правил вывода 
Corr(B, P & E, Q)(x); 
Corr(C, P & E, Q)(x) 
Corr(if (E) B(x: y) else C(x: y), P, Q)(x) 
P(x) ⇒ z. L(B(x: z)); 
Corr(C, P & L(B(x: z)), Q)(x) 
Corr(B(x: z); C(z: y), P, Q)(x) 
Условный оператор: 
Оператор суперпозиции:
Генерация формул корректности 
•Схема работы генератора 
–Преобразование оператора 
–Построение формул корректности 
Программа 
A(x: y); 
Преобразование 
оператора 
Построение 
формул 
корректности 
S' 
Теория 
Формулы корректности
Преобразование оператора 
{ 
b = foo(a) 
c = b 
} 
{ } 
c = b 
b = foo(a) 
“Развертка” 
{ } 
foo(a: v) 
b = v 
{ } 
c = b 
Преобразование 
{ } 
c = b 
foo(a: v) 
b = v 
Упрощение 
{ 
foo(a: v) 
{ 
b = v; 
c = b 
} 
} 
“Свертка”
Построения формул корректности 
Иерархия классов внутри генератора 
P, Q – конъюнкции 
Corr(P, S, Q)(x) 
Корректность 
A, B – конъюнкции 
A ⊢ B 
Секвенция 
Условие 
корректности 
Ai – конъюнкты 
A1 ⋀ ... ⋀ An 
Конъюнкция 
Конъюнкт 
L(S) 
Логика 
C – конъюнкт 
∃ x C 
Квантор 
F 
Формула 
S - оператор 
F – выражение
Построения формул корректности 
Схема построения формул корректности 
Создание 
множества 
целей 
Множество 
целей 
Применение 
правила 
Есть 
цель? 
Corr(P, S', Q)(x) 
Условие корректности 
S' 
Новые цели 
Нет 
Да
Построения формул корректности 
Схема применения правил вывода
Пример 
// Formulas 
formula P(nat a, b) = a >= 1 & b >= 1; 
formula Q(nat a, b, c) = gcd(c, a, b); 
formula m(nat a, b : nat) = a + b; 
// Lemmas 
lemma forall nat a, b. P(a, b) & a = b => exists nat c. c = a; 
lemma forall nat a, b, c. P(a, b) & a = b & c = a => Q(a, b, c); 
lemma forall nat a, b. P(a, b) & a != b & a < b 
=> m(a, b - a) < m(a, b) & P(a, b - a); 
lemma forall nat a, b. P(a, b) & a != b & a >= b 
=> m(a - b, b) < m(a, b) & P(a - b, b);
Трансляция на CVC3 
CVC3 
–система автоматического доказательства для задачи SMT 
•Достоинства 
–Кванторные выражения 
–Подтипы 
–API 
•Недостатки 
–Рекурсия 
–Параметрические типы 
–…
Пример 
lemma valid forall nat c, nat a, nat b. 
P_Умн(a, b) & a = 0 & c = 0 => Q_Умн(a, b, c); 
lemma unknown forall nat a, nat b. 
P_Умн(a, b) & a = 0 => (exists nat c. c = 0); 
lemma valid forall nat c, nat a, nat b, nat d. 
Q_Умн(a - 1, b, d) & P_Умн(a, b) & a != 0 & c = b + d 
=> Q_Умн(a, b, c); 
lemma unknown forall nat a, nat b, nat d. 
Q_Умн(a - 1, b, d) & P_Умн(a, b) & a != 0 
=> (exists nat c. c = b + d); 
lemma valid forall nat a, nat b, nat e, nat f, nat g, nat h. 
h = a - 1 & f = a - 1 & g = b & a >= 1 & e = b 
=> g = e & h = f;
Трансляция на PVS 
PVS 
–Интерактивный доказыватель теорем (theorem prover) 
•Преимущества 
–Обладает языком спецификаций высокого уровня 
–Модуль доказательства имеет развитую систему команд
Пример 
L1: LEMMA 
FORALL (number: nat, j: nat): 
((1 /= number) AND (0 = (rem(number)(j))) AND P_MaxPrime(number)) 
IMPLIES ((m_MaxPrime(number / j, j) < m_MaxPrime(number, j)) 
AND (0 /= j) AND P_MaxPrime(number / j)) 
L2: LEMMA 
FORALL (number: nat, j: nat): 
((0 /= (rem(number)(j))) AND (1 /= number) AND P_MaxPrime(number)) 
IMPLIES ((m_MaxPrime(number, 1 + j) < m_MaxPrime(number, j)) 
AND P_MaxPrime(number)) 
L3: LEMMA 
FORALL (number: nat, j: nat, result: nat): 
((1 /= number) AND (0 = (rem(number)(j))) AND P_MaxPrime(number) 
AND Q_MaxPrime(number / j, j, result)) 
IMPLIES Q_MaxPrime(number, j, result)
Анализ работы системы верификации 
•«Формальные методы в описании языков и систем программирования» 
•В тестировании участвовало 10 программ 
•Было сгенерировано 363 формулы 
– 103 формулы совместимости типов 
– 260 формул корректности 
• 14% формул оказались тривиальны
Анализ работы системы верификации 
•Анализ работы решателя CVC3 
• 72% условий совместимости типов прошли проверку в CVC3 
• 45% формул корректности прошли проверку в CVC3 
• 53% формул прошли проверку в CVC3

Weitere ähnliche Inhalte

Was ist angesagt?

Игорь Кудрин, «Используем неизменяемые данные и создаем качественный код»
Игорь Кудрин, «Используем неизменяемые данные и создаем качественный код»Игорь Кудрин, «Используем неизменяемые данные и создаем качественный код»
Игорь Кудрин, «Используем неизменяемые данные и создаем качественный код»Platonov Sergey
 
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...Alexey Paznikov
 
Обобщенное программирование в C++ или как сделать свою жизнь проще через стра...
Обобщенное программирование в C++ или как сделать свою жизнь проще через стра...Обобщенное программирование в C++ или как сделать свою жизнь проще через стра...
Обобщенное программирование в C++ или как сделать свою жизнь проще через стра...corehard_by
 
Конкурентные ассоциативные контейнеры
Конкурентные ассоциативные контейнерыКонкурентные ассоциативные контейнеры
Конкурентные ассоциативные контейнерыcorehard_by
 
Tech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU: Как приручить дракона: введение в LLVMTech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU: Как приручить дракона: введение в LLVMTech Talks @NSU
 
Павел Сушин «Асинхронное программирование на С++: callbacks, futures, fibers»
Павел Сушин «Асинхронное программирование на С++: callbacks, futures, fibers»Павел Сушин «Асинхронное программирование на С++: callbacks, futures, fibers»
Павел Сушин «Асинхронное программирование на С++: callbacks, futures, fibers»Platonov Sergey
 
ПВТ - весна 2015 - Лекция 4. Шаблоны многопоточного программирования
ПВТ - весна 2015 - Лекция 4. Шаблоны многопоточного программированияПВТ - весна 2015 - Лекция 4. Шаблоны многопоточного программирования
ПВТ - весна 2015 - Лекция 4. Шаблоны многопоточного программированияAlexey Paznikov
 
2014.12.06 04 Евгений Тюменцев — Откуда появились s.o.l.i.d. принципы
2014.12.06 04 Евгений Тюменцев — Откуда появились s.o.l.i.d. принципы2014.12.06 04 Евгений Тюменцев — Откуда появились s.o.l.i.d. принципы
2014.12.06 04 Евгений Тюменцев — Откуда появились s.o.l.i.d. принципыHappyDev
 
математическое обоснование Solid принципов. Конференция dotnetconf (Челябинск...
математическое обоснование Solid принципов. Конференция dotnetconf (Челябинск...математическое обоснование Solid принципов. Конференция dotnetconf (Челябинск...
математическое обоснование Solid принципов. Конференция dotnetconf (Челябинск...etyumentcev
 
Математическое обоснование SOLID принципов - Евгений Тюменцев Dev2Dev v2.0 30...
Математическое обоснование SOLID принципов - Евгений Тюменцев Dev2Dev v2.0 30...Математическое обоснование SOLID принципов - Евгений Тюменцев Dev2Dev v2.0 30...
Математическое обоснование SOLID принципов - Евгений Тюменцев Dev2Dev v2.0 30...Dev2Dev
 
Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...
Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...
Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...Nikolay Grebenshikov
 
Математическое обоснование S.O.L.I.D принципов
Математическое обоснование S.O.L.I.D принциповМатематическое обоснование S.O.L.I.D принципов
Математическое обоснование S.O.L.I.D принциповetyumentcev
 
Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“
Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“
Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“Platonov Sergey
 
Лекция 8. Intel Threading Building Blocks
Лекция 8. Intel Threading Building BlocksЛекция 8. Intel Threading Building Blocks
Лекция 8. Intel Threading Building BlocksMikhail Kurnosov
 
Лекция №1. Введение. Предмет "Теория вычислительных процессов"
Лекция №1. Введение. Предмет "Теория вычислительных процессов"Лекция №1. Введение. Предмет "Теория вычислительных процессов"
Лекция №1. Введение. Предмет "Теория вычислительных процессов"Nikolay Grebenshikov
 
Семинар 3. Многопоточное программирование на OpenMP (часть 3)
Семинар 3. Многопоточное программирование на OpenMP (часть 3)Семинар 3. Многопоточное программирование на OpenMP (часть 3)
Семинар 3. Многопоточное программирование на OpenMP (часть 3)Mikhail Kurnosov
 

Was ist angesagt? (20)

Игорь Кудрин, «Используем неизменяемые данные и создаем качественный код»
Игорь Кудрин, «Используем неизменяемые данные и создаем качественный код»Игорь Кудрин, «Используем неизменяемые данные и создаем качественный код»
Игорь Кудрин, «Используем неизменяемые данные и создаем качественный код»
 
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
 
Обобщенное программирование в C++ или как сделать свою жизнь проще через стра...
Обобщенное программирование в C++ или как сделать свою жизнь проще через стра...Обобщенное программирование в C++ или как сделать свою жизнь проще через стра...
Обобщенное программирование в C++ или как сделать свою жизнь проще через стра...
 
Конкурентные ассоциативные контейнеры
Конкурентные ассоциативные контейнерыКонкурентные ассоциативные контейнеры
Конкурентные ассоциативные контейнеры
 
Tech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU: Как приручить дракона: введение в LLVMTech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU: Как приручить дракона: введение в LLVM
 
Python
PythonPython
Python
 
Павел Сушин «Асинхронное программирование на С++: callbacks, futures, fibers»
Павел Сушин «Асинхронное программирование на С++: callbacks, futures, fibers»Павел Сушин «Асинхронное программирование на С++: callbacks, futures, fibers»
Павел Сушин «Асинхронное программирование на С++: callbacks, futures, fibers»
 
ПВТ - весна 2015 - Лекция 4. Шаблоны многопоточного программирования
ПВТ - весна 2015 - Лекция 4. Шаблоны многопоточного программированияПВТ - весна 2015 - Лекция 4. Шаблоны многопоточного программирования
ПВТ - весна 2015 - Лекция 4. Шаблоны многопоточного программирования
 
Синтез функциональных программ при помощи метода дедуктивных таблиц
Синтез функциональных программ при помощи метода дедуктивных таблицСинтез функциональных программ при помощи метода дедуктивных таблиц
Синтез функциональных программ при помощи метода дедуктивных таблиц
 
2014.12.06 04 Евгений Тюменцев — Откуда появились s.o.l.i.d. принципы
2014.12.06 04 Евгений Тюменцев — Откуда появились s.o.l.i.d. принципы2014.12.06 04 Евгений Тюменцев — Откуда появились s.o.l.i.d. принципы
2014.12.06 04 Евгений Тюменцев — Откуда появились s.o.l.i.d. принципы
 
математическое обоснование Solid принципов. Конференция dotnetconf (Челябинск...
математическое обоснование Solid принципов. Конференция dotnetconf (Челябинск...математическое обоснование Solid принципов. Конференция dotnetconf (Челябинск...
математическое обоснование Solid принципов. Конференция dotnetconf (Челябинск...
 
Математическое обоснование SOLID принципов - Евгений Тюменцев Dev2Dev v2.0 30...
Математическое обоснование SOLID принципов - Евгений Тюменцев Dev2Dev v2.0 30...Математическое обоснование SOLID принципов - Евгений Тюменцев Dev2Dev v2.0 30...
Математическое обоснование SOLID принципов - Евгений Тюменцев Dev2Dev v2.0 30...
 
Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...
Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...
Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...
 
Математическое обоснование S.O.L.I.D принципов
Математическое обоснование S.O.L.I.D принциповМатематическое обоснование S.O.L.I.D принципов
Математическое обоснование S.O.L.I.D принципов
 
Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“
Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“
Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“
 
Лекция 8. Intel Threading Building Blocks
Лекция 8. Intel Threading Building BlocksЛекция 8. Intel Threading Building Blocks
Лекция 8. Intel Threading Building Blocks
 
Java8. Innovations
Java8. InnovationsJava8. Innovations
Java8. Innovations
 
Лекция №1. Введение. Предмет "Теория вычислительных процессов"
Лекция №1. Введение. Предмет "Теория вычислительных процессов"Лекция №1. Введение. Предмет "Теория вычислительных процессов"
Лекция №1. Введение. Предмет "Теория вычислительных процессов"
 
Java 8. Lambdas
Java 8. LambdasJava 8. Lambdas
Java 8. Lambdas
 
Семинар 3. Многопоточное программирование на OpenMP (часть 3)
Семинар 3. Многопоточное программирование на OpenMP (часть 3)Семинар 3. Многопоточное программирование на OpenMP (часть 3)
Семинар 3. Многопоточное программирование на OpenMP (часть 3)
 

Andere mochten auch

ф.1.6 Категории и иные инструменты познания
ф.1.6 Категории и иные инструменты познанияф.1.6 Категории и иные инструменты познания
ф.1.6 Категории и иные инструменты познанияJacob Feldman
 
08 именование и необходимость
08 именование и необходимость08 именование и необходимость
08 именование и необходимостьJulia Gorbatova
 
06 булева алгебра(понятие)
06 булева алгебра(понятие)06 булева алгебра(понятие)
06 булева алгебра(понятие)Julia Gorbatova
 
03 классическая логика высказываний
03 классическая логика высказываний03 классическая логика высказываний
03 классическая логика высказыванийJulia Gorbatova
 
07 определение
07 определение07 определение
07 определениеJulia Gorbatova
 
04 классическая логика предикатов
04 классическая логика предикатов04 классическая логика предикатов
04 классическая логика предикатовJulia Gorbatova
 
преподаватель и Google
преподаватель и Googleпреподаватель и Google
преподаватель и GoogleJulia Gorbatova
 

Andere mochten auch (9)

ф.1.6 Категории и иные инструменты познания
ф.1.6 Категории и иные инструменты познанияф.1.6 Категории и иные инструменты познания
ф.1.6 Категории и иные инструменты познания
 
08 именование и необходимость
08 именование и необходимость08 именование и необходимость
08 именование и необходимость
 
05 кив и кип
05 кив и кип05 кив и кип
05 кив и кип
 
06 булева алгебра(понятие)
06 булева алгебра(понятие)06 булева алгебра(понятие)
06 булева алгебра(понятие)
 
03 классическая логика высказываний
03 классическая логика высказываний03 классическая логика высказываний
03 классическая логика высказываний
 
06 понятие
06 понятие06 понятие
06 понятие
 
07 определение
07 определение07 определение
07 определение
 
04 классическая логика предикатов
04 классическая логика предикатов04 классическая логика предикатов
04 классическая логика предикатов
 
преподаватель и Google
преподаватель и Googleпреподаватель и Google
преподаватель и Google
 

Ähnlich wie A System of Deductive Verification of Predicate Programs

разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3Eugeniy Tyumentcev
 
разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3etyumentcev
 
экспертные системы
экспертные системыэкспертные системы
экспертные системыsokol_klinik
 
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...Yandex
 
«QuickCheck в Python: проверка гипотез и поиск ошибок», Александр Шорин, Ramb...
«QuickCheck в Python: проверка гипотез и поиск ошибок», Александр Шорин, Ramb...«QuickCheck в Python: проверка гипотез и поиск ошибок», Александр Шорин, Ramb...
«QuickCheck в Python: проверка гипотез и поиск ошибок», Александр Шорин, Ramb...Mail.ru Group
 
Исследование операций и методы оптимизации
Исследование операций и методы оптимизацииИсследование операций и методы оптимизации
Исследование операций и методы оптимизацииJakobow
 
Haskell Type System with Dzmitry Ivashnev.
Haskell Type System with Dzmitry Ivashnev.Haskell Type System with Dzmitry Ivashnev.
Haskell Type System with Dzmitry Ivashnev.Sergey Tihon
 
Автоматическое доказательство теорем
Автоматическое доказательство теоремАвтоматическое доказательство теорем
Автоматическое доказательство теоремTech Talks @NSU
 
Pony ORM - маппер нового поколения (Алексей Малашкевич и Александр Козловский)
Pony ORM - маппер нового поколения (Алексей Малашкевич и Александр Козловский)Pony ORM - маппер нового поколения (Алексей Малашкевич и Александр Козловский)
Pony ORM - маппер нового поколения (Алексей Малашкевич и Александр Козловский)IT-Доминанта
 
чернякова г.в.
чернякова г.в.чернякова г.в.
чернякова г.в.sharikdp
 
Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"
Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"
Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"Nikolay Grebenshikov
 
Tech Talks @NSU: Теоретические основы программирования: проекции Футамуры-Тур...
Tech Talks @NSU: Теоретические основы программирования: проекции Футамуры-Тур...Tech Talks @NSU: Теоретические основы программирования: проекции Футамуры-Тур...
Tech Talks @NSU: Теоретические основы программирования: проекции Футамуры-Тур...Tech Talks @NSU
 
Догнать и перегнать boost::lexical_cast
Догнать и перегнать boost::lexical_castДогнать и перегнать boost::lexical_cast
Догнать и перегнать boost::lexical_castRoman Orlov
 

Ähnlich wie A System of Deductive Verification of Predicate Programs (20)

разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3
 
разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3
 
экспертные системы
экспертные системыэкспертные системы
экспертные системы
 
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
 
Logacheva
LogachevaLogacheva
Logacheva
 
Использование поисковых машин и ресурсов Интернет для отбора терминов предмет...
Использование поисковых машин и ресурсов Интернет для отбора терминов предмет...Использование поисковых машин и ресурсов Интернет для отбора терминов предмет...
Использование поисковых машин и ресурсов Интернет для отбора терминов предмет...
 
«QuickCheck в Python: проверка гипотез и поиск ошибок», Александр Шорин, Ramb...
«QuickCheck в Python: проверка гипотез и поиск ошибок», Александр Шорин, Ramb...«QuickCheck в Python: проверка гипотез и поиск ошибок», Александр Шорин, Ramb...
«QuickCheck в Python: проверка гипотез и поиск ошибок», Александр Шорин, Ramb...
 
20110227 csseminar alvor_breslav
20110227 csseminar alvor_breslav20110227 csseminar alvor_breslav
20110227 csseminar alvor_breslav
 
верификация
верификацияверификация
верификация
 
Исследование операций и методы оптимизации
Исследование операций и методы оптимизацииИсследование операций и методы оптимизации
Исследование операций и методы оптимизации
 
Java 8 puzzlers
Java 8 puzzlersJava 8 puzzlers
Java 8 puzzlers
 
Haskell Type System with Dzmitry Ivashnev.
Haskell Type System with Dzmitry Ivashnev.Haskell Type System with Dzmitry Ivashnev.
Haskell Type System with Dzmitry Ivashnev.
 
Автоматическое доказательство теорем
Автоматическое доказательство теоремАвтоматическое доказательство теорем
Автоматическое доказательство теорем
 
Pony ORM - маппер нового поколения (Алексей Малашкевич и Александр Козловский)
Pony ORM - маппер нового поколения (Алексей Малашкевич и Александр Козловский)Pony ORM - маппер нового поколения (Алексей Малашкевич и Александр Козловский)
Pony ORM - маппер нового поколения (Алексей Малашкевич и Александр Козловский)
 
чернякова г.в.
чернякова г.в.чернякова г.в.
чернякова г.в.
 
Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"
Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"
Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"
 
Tech Talks @NSU: Теоретические основы программирования: проекции Футамуры-Тур...
Tech Talks @NSU: Теоретические основы программирования: проекции Футамуры-Тур...Tech Talks @NSU: Теоретические основы программирования: проекции Футамуры-Тур...
Tech Talks @NSU: Теоретические основы программирования: проекции Футамуры-Тур...
 
Об одном методе автоматической транскрипции
Об одном методе автоматической транскрипцииОб одном методе автоматической транскрипции
Об одном методе автоматической транскрипции
 
Догнать и перегнать boost::lexical_cast
Догнать и перегнать boost::lexical_castДогнать и перегнать boost::lexical_cast
Догнать и перегнать boost::lexical_cast
 
Основы SciPy
Основы SciPyОсновы SciPy
Основы SciPy
 

Mehr von Iosif Itkin

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

Mehr von Iosif Itkin (20)

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

A System of Deductive Verification of Predicate Programs

  • 1. Система дедуктивной верификации предикатных программ Чушкин М.С ИСИ СО РАН им. А. П. Ершова г. Новосибирск
  • 2. Система предикатного программирования P исходный код внутреннее представление IR Front end C++ Back end PVS +CVC3 Back end Генератор формул корректности программы
  • 3. Определение предиката A(X x: Y y) pre P(x) { S(x: y) } post Q(x, y) measure m(x); •A – имя предиката •S – оператор –x, y – аргументы и результаты •[P(x), Q(x, y)] – спецификация –P(x) – предусловие –Q(x, y) – постусловие •m(x) – функция меры
  • 4. Пример НОД(nat a, b : nat c) pre a >= 1 & b >= 1 { if (a = b) c = a else if (a < b) НОД(a, b - a : c) else НОД(a - b, b : c) } post gcd(c, a, b) measure a + b;
  • 5. Корректность программы •L(S(x: y)) –логика оператора S(x: y) –сильнейший предикат, истинный при завершении исполнения оператора S(x: y) •Corr(S, P, Q)(x) –Корректность оператора S(x: y) –P(x)  [ L(S(x: y))  Q(x, y) ] & y. L(S(x: y)) •Corr*(A, P, Q)(x) –Корректность рекурсивного предиката A(x: y) –Induct(A, P, Q)(t)  Corr(A, P, Q)(t) –Induct(A, P, Q)(t)  u (m(u) < m(t)  Corr(A, P, Q)(u))
  • 6. Примеры правил вывода Corr(B, P & E, Q)(x); Corr(C, P & E, Q)(x) Corr(if (E) B(x: y) else C(x: y), P, Q)(x) P(x) ⇒ z. L(B(x: z)); Corr(C, P & L(B(x: z)), Q)(x) Corr(B(x: z); C(z: y), P, Q)(x) Условный оператор: Оператор суперпозиции:
  • 7. Генерация формул корректности •Схема работы генератора –Преобразование оператора –Построение формул корректности Программа A(x: y); Преобразование оператора Построение формул корректности S' Теория Формулы корректности
  • 8. Преобразование оператора { b = foo(a) c = b } { } c = b b = foo(a) “Развертка” { } foo(a: v) b = v { } c = b Преобразование { } c = b foo(a: v) b = v Упрощение { foo(a: v) { b = v; c = b } } “Свертка”
  • 9. Построения формул корректности Иерархия классов внутри генератора P, Q – конъюнкции Corr(P, S, Q)(x) Корректность A, B – конъюнкции A ⊢ B Секвенция Условие корректности Ai – конъюнкты A1 ⋀ ... ⋀ An Конъюнкция Конъюнкт L(S) Логика C – конъюнкт ∃ x C Квантор F Формула S - оператор F – выражение
  • 10. Построения формул корректности Схема построения формул корректности Создание множества целей Множество целей Применение правила Есть цель? Corr(P, S', Q)(x) Условие корректности S' Новые цели Нет Да
  • 11. Построения формул корректности Схема применения правил вывода
  • 12. Пример // Formulas formula P(nat a, b) = a >= 1 & b >= 1; formula Q(nat a, b, c) = gcd(c, a, b); formula m(nat a, b : nat) = a + b; // Lemmas lemma forall nat a, b. P(a, b) & a = b => exists nat c. c = a; lemma forall nat a, b, c. P(a, b) & a = b & c = a => Q(a, b, c); lemma forall nat a, b. P(a, b) & a != b & a < b => m(a, b - a) < m(a, b) & P(a, b - a); lemma forall nat a, b. P(a, b) & a != b & a >= b => m(a - b, b) < m(a, b) & P(a - b, b);
  • 13. Трансляция на CVC3 CVC3 –система автоматического доказательства для задачи SMT •Достоинства –Кванторные выражения –Подтипы –API •Недостатки –Рекурсия –Параметрические типы –…
  • 14. Пример lemma valid forall nat c, nat a, nat b. P_Умн(a, b) & a = 0 & c = 0 => Q_Умн(a, b, c); lemma unknown forall nat a, nat b. P_Умн(a, b) & a = 0 => (exists nat c. c = 0); lemma valid forall nat c, nat a, nat b, nat d. Q_Умн(a - 1, b, d) & P_Умн(a, b) & a != 0 & c = b + d => Q_Умн(a, b, c); lemma unknown forall nat a, nat b, nat d. Q_Умн(a - 1, b, d) & P_Умн(a, b) & a != 0 => (exists nat c. c = b + d); lemma valid forall nat a, nat b, nat e, nat f, nat g, nat h. h = a - 1 & f = a - 1 & g = b & a >= 1 & e = b => g = e & h = f;
  • 15. Трансляция на PVS PVS –Интерактивный доказыватель теорем (theorem prover) •Преимущества –Обладает языком спецификаций высокого уровня –Модуль доказательства имеет развитую систему команд
  • 16. Пример L1: LEMMA FORALL (number: nat, j: nat): ((1 /= number) AND (0 = (rem(number)(j))) AND P_MaxPrime(number)) IMPLIES ((m_MaxPrime(number / j, j) < m_MaxPrime(number, j)) AND (0 /= j) AND P_MaxPrime(number / j)) L2: LEMMA FORALL (number: nat, j: nat): ((0 /= (rem(number)(j))) AND (1 /= number) AND P_MaxPrime(number)) IMPLIES ((m_MaxPrime(number, 1 + j) < m_MaxPrime(number, j)) AND P_MaxPrime(number)) L3: LEMMA FORALL (number: nat, j: nat, result: nat): ((1 /= number) AND (0 = (rem(number)(j))) AND P_MaxPrime(number) AND Q_MaxPrime(number / j, j, result)) IMPLIES Q_MaxPrime(number, j, result)
  • 17. Анализ работы системы верификации •«Формальные методы в описании языков и систем программирования» •В тестировании участвовало 10 программ •Было сгенерировано 363 формулы – 103 формулы совместимости типов – 260 формул корректности • 14% формул оказались тривиальны
  • 18. Анализ работы системы верификации •Анализ работы решателя CVC3 • 72% условий совместимости типов прошли проверку в CVC3 • 45% формул корректности прошли проверку в CVC3 • 53% формул прошли проверку в CVC3