SlideShare a Scribd company logo
Computer Science клуб - Екатеринбург
                        Март 2012



        Fun with Formal Program Semantics
      (О формальной семантике программ –
                     просто)
             Шилов Николай Вячеславович




03/10/12           Шилов Николай Вячеславович Всего слайдов 32   1
Тема 4: Верификация программ
              с точки зрения семантики
             языков программирования

            (на примере диалекта ToyPL)




03/10/12          Шилов Николай Вячеславович Всего слайдов 32   2
Великие научные проблемы

• В 1980 г. премии Тьюринга был удостоен Антони
  Хоар за «основополагающий вклад в
  определение и разработку языков
  программирования».
• По-видимому, такое признание заслуг А. Хоара
  может служить весомым аргументом для того,
  чтобы прислушаться к тому, что Антони Хоар
  называет Великими проблемами
  программирования как науки.

03/10/12        Шилов Николай Вячеславович Всего слайдов 32   3
Великие научные проблемы

• По мнению А. Хоара, для того, чтобы какая-либо
  научная проблема могла называться Великой, она
  должна удовлетворять следующему ряду
  требований:
   – проблема должна носить фундаментальный
     характер, её решение будет иметь прежде
     всего научное значение;
   – решение может иметь и прикладное значение,
     но в масштабах всего человечества;



03/10/12        Шилов Николай Вячеславович Всего слайдов 32   4
Великие научные проблемы

     – решение проблемы может потребовать
       десятилетий скоординированных усилий
       учёных и коллективов мирового класса;
     – есть чёткие критерии успеха или провала в
       решении проблемы.




03/10/12          Шилов Николай Вячеславович Всего слайдов 32   5
Великие научные проблемы

• А. Хоар приводит примеры решённых Великих
  научных проблем:
   – полёт человека на Луну,
   – расшифровка генома человека,
   – доказательство Великой теоремы Ферма.
• А в качестве примера «проваленной» Великой
  научной проблемы А. Хоар приводит проблему
  лечения рака: как оказалось, различных причин
  развития рака слишком много, а механизмы его
  развития слишком сложны для того, что бы
  надеяться на панацею.

03/10/12        Шилов Николай Вячеславович Всего слайдов 32   6
Великие проблемы программирования




03/10/12       Шилов Николай Вячеславович Всего слайдов 32   7
Проблема верифицирующего транслятора

• Решение проблемы Верифицирующего
  Транслятора может иметь огромное значение в
  эпоху информационных технологий, т.к.
   – проверка синтаксической правильности
     программы и её трансляция в исполняемый
     машинный код осуществляется полностью
     автоматически,
   – но этап отладки программ до сих пор плохо
     автоматизирован.

03/10/12        Шилов Николай Вячеславович Всего слайдов 32   8
Великие верифицирующего транслятора

• Воспользуемся следующим образным
  сравнением Владимира Анатольевича Захарова:
   – Средства отладки программы, которые
     входят в состав всякой развитой системы
     программирования, могут помочь
     разработчику в той же мере, в какой лопата
     оказывает помощь кладоискателю. Главные
     вопросы - где копать и стоит ли копать
     вообще?


03/10/12       Шилов Николай Вячеславович Всего слайдов 32   9
Великие верифицирующего транслятора

     – Здесь скорее пригодилось бы устройство
       наподобие металлоискателя. Но хороший
       металлоискатель - это тонкий инструмент,
       требующий знания его устройства и умелого
       обращения. Так что кроме лопаты неплохо
       бы использовать и автоматические системы
       поиска ошибок и проверки правильности
       функционирования программ…




03/10/12         Шилов Николай Вячеславович Всего слайдов 32   10
Неформальное введение
           в формальную верификацию
• Формальная верификация – это доказательство
  специфицированных программ, т.е. программ,
  свойства которых специфицированы некоторым
  специальным образом.
• Вычислительная программа – это программа,
  которая за конечное время преобразует
  начальные (входные) в заключительные
  (выходные) значения.




03/10/12        Шилов Николай Вячеславович Всего слайдов 32   11
Неформальное введение
           в формальную верификацию
• Для вычислительных программ используют два
  вида логических спецификаций, которые
  называются:
   – условиями частичной корректности,
   – условиями тотальной корректности.
• Эти условия имеют вид {ϕ}π{ψ} и [ϕ]π[ψ]
  соответственно, где π – программа, предусловие
  ϕ – это условие на входные данные, которое
  требуется перед исполнением программы π, а
  постусловие ψ – это условие на выходные
  данные, гарантируемое после исполнения
  программы π.
03/10/12        Шилов Николай Вячеславович Всего слайдов 32   12
Неформальное введение
           в формальную верификацию
• Говорят, что условие частичной корректности
  {ϕ}π{ψ} истинно (верно), или что программа π
  частично корректна по отношению к предусловию
  ϕ и постусловию ψ (обозначение |={ϕ}π{ψ}), если
  на любых входных данных, которые
  удовлетворяют свойству ϕ, программа π или не
  останавливается (зацикливается, зависает и т.п.),
  или останавливается с выходными данными,
  которые удовлетворяют свойству ψ.




03/10/12        Шилов Николай Вячеславович Всего слайдов 32   13
Неформальное введение
           в формальную верификацию
• Говорят, что условие частичной корректности
  [ϕ]π[ψ] истинно (верно), или что программа π
  частично корректна по отношению к предусловию
  ϕ и постусловию ψ (обозначение |=[ϕ]π[ψ]), если
  на любых входных данных, которые
  удовлетворяют свойству ϕ, любое вычисление
  программы π останавливается с выходными
  данными, которые удовлетворяют свойству ψ.




03/10/12        Шилов Николай Вячеславович Всего слайдов 32   14
Неформальное введение
           в формальную верификацию
• Таким образом, для детерминированных
  программ разница между частичной и тотальной
  корректностью состоит в завершаемости
  программы: частичная корректность допускает
  неостановку программы, а тотальная – запрещает.




03/10/12        Шилов Николай Вячеславович Всего слайдов 32   15
Неформальное введение
           в формальную верификацию
• Для доказательства специфицированных
  вычислительных программ существуют два
  метода, разработанных Р. Флойдом в 1960-х гг.




03/10/12        Шилов Николай Вячеславович Всего слайдов 32   16
Метод Р. Флойда
     доказательства частичной корректности
// Предусловие метода.
{ {ϕ}π{ψ} – условие частичной корректности
   детерминированной программы }
• Представить программу π графически в виде
   блок-схемы и выбрать множество контрольных
   точек (на дугах), включающее начало и конец
   программы, такое, чтобы любой цикл по графу
   блок-схемы содержал контрольную точку.



03/10/12        Шилов Николай Вячеславович Всего слайдов 32   17
Метод Р. Флойда
      доказательства частичной корректности
// Аннотация «инвариантами».
• Сопоставить началу программы предусловие ϕ,
   концу программы – постусловие ψ, а каждой из
   оставшихся контрольных точек – некоторое (своё)
   условие «инвариант» этой точки.
• Построить множество «участков» L, состоящее из
   всех невырожденных ациклических маршрутов по
   графу блок-схемы программы между всеми
   парами контрольных точек.

03/10/12         Шилов Николай Вячеславович Всего слайдов 32   18
Метод Р. Флойда
      доказательства частичной корректности
// Доказательство инвариантов.
• Для каждого участка из L доказать: если условие,
   сопоставленное началу участка, верно перед
   началом исполнения участка,
          то условие, сопоставленное концу участка,
               верно после исполнения этого участка.
// Постусловие метода.
• {|={ϕ}π{ψ}, т. е. программа π частично корректна
   по отношению к предусловию ϕ и постусловию ψ}
03/10/12         Шилов Николай Вячеславович Всего слайдов 32   19
Метод Р. Флойда
      доказательства частичной корректности
• Заметим, что метод Р. Флойда для условий
  частичной корректности не является алгоритмом,
  так как он описан (по-просту говоря)
  неформально, включает необходимось
  придумать и доказать инварианты.
• В силу своей неформальности его корректность
  неможет быть доказана (как и корректность
  метода математической индукции), а только
  «показана».

03/10/12         Шилов Николай Вячеславович Всего слайдов 32   20
Метод Р. Флойда
      доказательства частичной корректности
• Упражнение #1: Покажите, что если условие
  частичной корректности верно, то всегда можно
  выбрать контрольные точки и приписать им
  инварианты таким образом, который гарантирует
  успешное применение метода Р. Флойда.




03/10/12         Шилов Николай Вячеславович Всего слайдов 32   21
Понятие о методе потенциалов

• Метод Р. Флойда для доказательства условий
  тотальной корректности называется методом
  потенциалов, он применим только к
  детерминированным программам.
• Частный случай применения этого метода для
  доказательства завершаемости
  детерминированных программ кратко можно
  описать следующим образом:



03/10/12          Шилов Николай Вячеславович Всего слайдов 32   22
Понятие о методе потенциалов

     – выбирается конечное множество числовых
       значений, которые называются потенциалами;
     – каждому возможному набору значений
       используемых переменных сопоставляется
       некоторый потенциал;
     – тогда, если каждое исполнение тела любого
       цикла в алгоритме уменьшает значение
       потенциала, то алгоритм завершает работу.


03/10/12          Шилов Николай Вячеславович Всего слайдов 32   23
Понятие о методе потенциалов

• Метод Р. Флойда тоже не является алгоритмом,
  так как необходимо придумать фундированное
  множество, отображение в это множество и
  доказать, что потенциалы убывают в результате
  выполнения циклов.
• Корректность метода потенциалов также
  невозможно формально доказать, а только
  неформально обосновать.



03/10/12          Шилов Николай Вячеславович Всего слайдов 32   24
Пример Э. Дейкстры
           применения метода потенциалов
• Задача начальника порта
   – На рейде порта с N причалами находится ровно
     N кораблей. Начальник порта получает
     сообщение о штормовом предупреждении и
     должен назначить каждому из кораблей его
     определенный (индивидуальный) причал.
   – Положения всех кораблей в момент получения
     штормового предупреждения известны.
     Положения причалов фиксированы и тоже
     известны.


03/10/12          Шилов Николай Вячеславович Всего слайдов 32   25
Пример Э. Дейкстры
           применения метода потенциалов
   – Непосредственно в этот момент никакое
     препятствие (особенности береговой линии,
     расположение других причалов или положение
     других кораблей на рейде) не мешает любому
     из кораблей двигаться прямо к любому из
     причалов.
   – Во избежание столкновений маршруты
     кораблей не должны пересекаться.
• Помогите начальнику порта распределить
  корабли по причалам.


03/10/12          Шилов Николай Вячеславович Всего слайдов 32   26
Пример Э. Дейкстры
           применения метода потенциалов
• Геометрическая модель проблемы – это N чёрных
  и N белых точек на плоскости, соответствующих
  положениям кораблей на рейде и расположению
  причалов, а возможные (гипотетические)
  маршруты – отрезки прямых между белыми и
  чёрными точками.
• По условию задачи никакие три из этих точек не
  являются коллинеарными (т. е. не лежат на одной
  прямой).



03/10/12          Шилов Николай Вячеславович Всего слайдов 32   27
Пример Э. Дейкстры
           применения метода потенциалов
• Необходимо построить (если это вообще
  возможно) N попарно непересекающихся
  отрезков, у каждого из которых один конец – это
  некоторая белая точка, а другой – некоторая
  чёрная точка.




03/10/12          Шилов Николай Вячеславович Всего слайдов 32   28
Пример Э. Дейкстры
           применения метода потенциалов
VAR X: СОЕД;
X:= ПЕРВ ;
WHILE ¬ХОР(X)        DO X := ЩЁЛК(X) OD.




03/10/12          Шилов Николай Вячеславович Всего слайдов 32   29
Пример Э. Дейкстры
           применения метода потенциалов
• Для любого значения X типа СОЕД примем в
  качестве его потенциала P(X) сумму длин
  отрезков, которые входят в X: P(X)= Σ[B,W]∈X |B,W|.
• В силу неравенства треугольника |B’W”| + |B,W’|
  < |B’W’| + |B,W’|.




03/10/12          Шилов Николай Вячеславович Всего слайдов 32   30
Пример Э. Дейкстры
           применения метода потенциалов
• Поэтому
P(X) = (Σ[B,W]∈X|B,W|) =
  = (|B',W'| + |B",W"|) + (Σ[B,W]∈X{[B',W'],[B",W"]} |B,W|) >
  >(|B',W"| + |B",W'|) + (Σ[B,W]∈X{[B',W'],[B",W"]} |B,W|) =
                     = (Σ[B,W]∈ЩЁЛК(X) |B,W|) = P(ЩЁЛК(X)).
• Следовательно, согласно методу потенциалов,
  программа (вернее, алгоритм) завершает свою
  работу.


03/10/12            Шилов Николай Вячеславович Всего слайдов 32   31
Метод потенциалов
           доказательства завершаемости
• Упражнение #2: Покажите, что если
  детерминированный алгоритм (программа)
  завершается, то всегда можно выбрать
  потенциальную функцию, которая гарантирует
  успешное применение метода потенциалов.




03/10/12          Шилов Николай Вячеславович Всего слайдов 32   32

More Related Content

PDF
Багдатов Методы автоматического выявления плагиата в текстах компьютерных про...
PDF
Основы ооп на языке C#. Часть 2. базовый синтаксис.
PDF
основы ооп на языке C#. часть 1. введение в программирование
PDF
Программирование на языке C Sharp (СИ решетка) ПРАКТИКУМ
PPTX
Программирование на языке C Sharp (СИ решетка)
PPTX
Статический анализ кода: современный взгляд
PDF
Candidates for-php-developers-tests
PPT
Tpo 06
Багдатов Методы автоматического выявления плагиата в текстах компьютерных про...
Основы ооп на языке C#. Часть 2. базовый синтаксис.
основы ооп на языке C#. часть 1. введение в программирование
Программирование на языке C Sharp (СИ решетка) ПРАКТИКУМ
Программирование на языке C Sharp (СИ решетка)
Статический анализ кода: современный взгляд
Candidates for-php-developers-tests
Tpo 06

What's hot (20)

PDF
Доклад АКТО-2012 Душкин, Смирнова
PDF
TMPA-2015: Multi-Module Application Tracing in z/OS Environment
PPTX
Insane Byte' 2017
PDF
Регрессионное тестирование
PDF
C++ осень 2013 лекция 7
PDF
Случайное тестирование
PDF
Тестирование программного обеспечения: что, зачем и почему?
PDF
Тестирование лекция 2 весна 2014
PPTX
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...
PDF
TMPA-2015: Formal Methods in Robotics
PDF
C++ осень 2013 лекция 5
PDF
Тестирование весна 2013 лекция 2
PPT
Уменьшение влияния человеческого фактора при разработке бизнес приложений
PPTX
TMPA-2015: The Application of Static Analysis to Optimize the Dynamic Detecti...
PDF
C++ осень 2012 лекция 1
PDF
C++ Базовый. Занятие 04.
PDF
Проблема тестовых входных данных
PDF
Полнота тестирования ПО
PDF
Тестовый оракул: что, где, когда
PDF
C++ осень 2013 лекция 3
Доклад АКТО-2012 Душкин, Смирнова
TMPA-2015: Multi-Module Application Tracing in z/OS Environment
Insane Byte' 2017
Регрессионное тестирование
C++ осень 2013 лекция 7
Случайное тестирование
Тестирование программного обеспечения: что, зачем и почему?
Тестирование лекция 2 весна 2014
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...
TMPA-2015: Formal Methods in Robotics
C++ осень 2013 лекция 5
Тестирование весна 2013 лекция 2
Уменьшение влияния человеческого фактора при разработке бизнес приложений
TMPA-2015: The Application of Static Analysis to Optimize the Dynamic Detecti...
C++ осень 2012 лекция 1
C++ Базовый. Занятие 04.
Проблема тестовых входных данных
Полнота тестирования ПО
Тестовый оракул: что, где, когда
C++ осень 2013 лекция 3
Ad

Viewers also liked (20)

PPT
PDF
Юрий Владимирович Матиясевич. Десятая проблема Гильберта. Решение и применени...
PDF
Marketing
PDF
User Experience 2008: Платежные терминалы глазами пользователей
DOC
Bi quyet tu duy trieu phu
PDF
Zavádějte službu jako projekt!
DOCX
B A S E D E D A T O S E S T A M P A D O
DOCX
CompensationStructure
PPTX
Juomasekoituksia mobiilisti
DOCX
Doc1josh
PDF
Basic SWAT
PDF
20131006 h10 lecture3_matiyasevich
PPT
XM603 Group4 - 16012010 Q2
PDF
Descripción del Curso
PDF
Prezentace projektu Masarykův onkologický ústav
PDF
Aprendre junts
PDF
PDF
DPP07DF060A140402
Юрий Владимирович Матиясевич. Десятая проблема Гильберта. Решение и применени...
Marketing
User Experience 2008: Платежные терминалы глазами пользователей
Bi quyet tu duy trieu phu
Zavádějte službu jako projekt!
B A S E D E D A T O S E S T A M P A D O
CompensationStructure
Juomasekoituksia mobiilisti
Doc1josh
Basic SWAT
20131006 h10 lecture3_matiyasevich
XM603 Group4 - 16012010 Q2
Descripción del Curso
Prezentace projektu Masarykův onkologický ústav
Aprendre junts
DPP07DF060A140402
Ad

Similar to 20120309 formal semantics shilov_lecture04 (20)

PPT
20120309 formal semantics shilov_lecture05
PDF
20120218 model cheсking_karpov_lecture01
PPTX
Путь к чистому и компактному коду исполняемых спецификаций
PPT
Использование ЦОР на уроке
PDF
СОВМЕСТНОЕ ПРИМЕНЕНИЕ КОНТРАКТОВ И ВЕРИФИКАЦИИ ДЛЯ ПОВЫШЕНИЯ КАЧЕСТВА АВТОМАТ...
DOCX
пр 15.docx
DOCX
прак 15.docx
PDF
Technology readiness level presentation
PPT
Sef Tech Customer Bezugliy Presentation
PPT
Технический заказчик в проектах создания ИС
PDF
Основы программирования на C++
PDF
До проекта за 70 вопросов
PDF
Управление проектами
PPT
Введение в алгоритмы и структуры данных
PDF
331 информатика. 8кл. миняйлова, вербовиков и др-минск, 2010 -189с
PDF
Отладка и оптимизация многопоточных OpenMP-программ
PDF
Управление компанией с использованием метода критического цепи (МКЦ)
PDF
Lection 3 4_pm
PDF
2021 10 14.2 смк-news
20120309 formal semantics shilov_lecture05
20120218 model cheсking_karpov_lecture01
Путь к чистому и компактному коду исполняемых спецификаций
Использование ЦОР на уроке
СОВМЕСТНОЕ ПРИМЕНЕНИЕ КОНТРАКТОВ И ВЕРИФИКАЦИИ ДЛЯ ПОВЫШЕНИЯ КАЧЕСТВА АВТОМАТ...
пр 15.docx
прак 15.docx
Technology readiness level presentation
Sef Tech Customer Bezugliy Presentation
Технический заказчик в проектах создания ИС
Основы программирования на C++
До проекта за 70 вопросов
Управление проектами
Введение в алгоритмы и структуры данных
331 информатика. 8кл. миняйлова, вербовиков и др-минск, 2010 -189с
Отладка и оптимизация многопоточных OpenMP-программ
Управление компанией с использованием метода критического цепи (МКЦ)
Lection 3 4_pm
2021 10 14.2 смк-news

More from Computer Science Club (20)

PDF
20141223 kuznetsov distributed
PDF
Computer Vision
PDF
20140531 serebryany lecture01_fantastic_cpp_bugs
PDF
20140531 serebryany lecture02_find_scary_cpp_bugs
PDF
20140531 serebryany lecture01_fantastic_cpp_bugs
PDF
20140511 parallel programming_kalishenko_lecture12
PDF
20140427 parallel programming_zlobin_lecture11
PDF
20140420 parallel programming_kalishenko_lecture10
PDF
20140413 parallel programming_kalishenko_lecture09
PDF
20140329 graph drawing_dainiak_lecture02
PDF
20140329 graph drawing_dainiak_lecture01
PDF
20140310 parallel programming_kalishenko_lecture03-04
PDF
20140223-SuffixTrees-lecture01-03
PDF
20140216 parallel programming_kalishenko_lecture01
PDF
20131106 h10 lecture6_matiyasevich
PDF
20131027 h10 lecture5_matiyasevich
PDF
20131027 h10 lecture5_matiyasevich
PDF
20131013 h10 lecture4_matiyasevich
PDF
20131006 h10 lecture3_matiyasevich
PDF
20131006 h10 lecture2_matiyasevich
20141223 kuznetsov distributed
Computer Vision
20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs
20140511 parallel programming_kalishenko_lecture12
20140427 parallel programming_zlobin_lecture11
20140420 parallel programming_kalishenko_lecture10
20140413 parallel programming_kalishenko_lecture09
20140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture01
20140310 parallel programming_kalishenko_lecture03-04
20140223-SuffixTrees-lecture01-03
20140216 parallel programming_kalishenko_lecture01
20131106 h10 lecture6_matiyasevich
20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich
20131013 h10 lecture4_matiyasevich
20131006 h10 lecture3_matiyasevich
20131006 h10 lecture2_matiyasevich

20120309 formal semantics shilov_lecture04

  • 1. Computer Science клуб - Екатеринбург Март 2012 Fun with Formal Program Semantics (О формальной семантике программ – просто) Шилов Николай Вячеславович 03/10/12 Шилов Николай Вячеславович Всего слайдов 32 1
  • 2. Тема 4: Верификация программ с точки зрения семантики языков программирования (на примере диалекта ToyPL) 03/10/12 Шилов Николай Вячеславович Всего слайдов 32 2
  • 3. Великие научные проблемы • В 1980 г. премии Тьюринга был удостоен Антони Хоар за «основополагающий вклад в определение и разработку языков программирования». • По-видимому, такое признание заслуг А. Хоара может служить весомым аргументом для того, чтобы прислушаться к тому, что Антони Хоар называет Великими проблемами программирования как науки. 03/10/12 Шилов Николай Вячеславович Всего слайдов 32 3
  • 4. Великие научные проблемы • По мнению А. Хоара, для того, чтобы какая-либо научная проблема могла называться Великой, она должна удовлетворять следующему ряду требований: – проблема должна носить фундаментальный характер, её решение будет иметь прежде всего научное значение; – решение может иметь и прикладное значение, но в масштабах всего человечества; 03/10/12 Шилов Николай Вячеславович Всего слайдов 32 4
  • 5. Великие научные проблемы – решение проблемы может потребовать десятилетий скоординированных усилий учёных и коллективов мирового класса; – есть чёткие критерии успеха или провала в решении проблемы. 03/10/12 Шилов Николай Вячеславович Всего слайдов 32 5
  • 6. Великие научные проблемы • А. Хоар приводит примеры решённых Великих научных проблем: – полёт человека на Луну, – расшифровка генома человека, – доказательство Великой теоремы Ферма. • А в качестве примера «проваленной» Великой научной проблемы А. Хоар приводит проблему лечения рака: как оказалось, различных причин развития рака слишком много, а механизмы его развития слишком сложны для того, что бы надеяться на панацею. 03/10/12 Шилов Николай Вячеславович Всего слайдов 32 6
  • 7. Великие проблемы программирования 03/10/12 Шилов Николай Вячеславович Всего слайдов 32 7
  • 8. Проблема верифицирующего транслятора • Решение проблемы Верифицирующего Транслятора может иметь огромное значение в эпоху информационных технологий, т.к. – проверка синтаксической правильности программы и её трансляция в исполняемый машинный код осуществляется полностью автоматически, – но этап отладки программ до сих пор плохо автоматизирован. 03/10/12 Шилов Николай Вячеславович Всего слайдов 32 8
  • 9. Великие верифицирующего транслятора • Воспользуемся следующим образным сравнением Владимира Анатольевича Захарова: – Средства отладки программы, которые входят в состав всякой развитой системы программирования, могут помочь разработчику в той же мере, в какой лопата оказывает помощь кладоискателю. Главные вопросы - где копать и стоит ли копать вообще? 03/10/12 Шилов Николай Вячеславович Всего слайдов 32 9
  • 10. Великие верифицирующего транслятора – Здесь скорее пригодилось бы устройство наподобие металлоискателя. Но хороший металлоискатель - это тонкий инструмент, требующий знания его устройства и умелого обращения. Так что кроме лопаты неплохо бы использовать и автоматические системы поиска ошибок и проверки правильности функционирования программ… 03/10/12 Шилов Николай Вячеславович Всего слайдов 32 10
  • 11. Неформальное введение в формальную верификацию • Формальная верификация – это доказательство специфицированных программ, т.е. программ, свойства которых специфицированы некоторым специальным образом. • Вычислительная программа – это программа, которая за конечное время преобразует начальные (входные) в заключительные (выходные) значения. 03/10/12 Шилов Николай Вячеславович Всего слайдов 32 11
  • 12. Неформальное введение в формальную верификацию • Для вычислительных программ используют два вида логических спецификаций, которые называются: – условиями частичной корректности, – условиями тотальной корректности. • Эти условия имеют вид {ϕ}π{ψ} и [ϕ]π[ψ] соответственно, где π – программа, предусловие ϕ – это условие на входные данные, которое требуется перед исполнением программы π, а постусловие ψ – это условие на выходные данные, гарантируемое после исполнения программы π. 03/10/12 Шилов Николай Вячеславович Всего слайдов 32 12
  • 13. Неформальное введение в формальную верификацию • Говорят, что условие частичной корректности {ϕ}π{ψ} истинно (верно), или что программа π частично корректна по отношению к предусловию ϕ и постусловию ψ (обозначение |={ϕ}π{ψ}), если на любых входных данных, которые удовлетворяют свойству ϕ, программа π или не останавливается (зацикливается, зависает и т.п.), или останавливается с выходными данными, которые удовлетворяют свойству ψ. 03/10/12 Шилов Николай Вячеславович Всего слайдов 32 13
  • 14. Неформальное введение в формальную верификацию • Говорят, что условие частичной корректности [ϕ]π[ψ] истинно (верно), или что программа π частично корректна по отношению к предусловию ϕ и постусловию ψ (обозначение |=[ϕ]π[ψ]), если на любых входных данных, которые удовлетворяют свойству ϕ, любое вычисление программы π останавливается с выходными данными, которые удовлетворяют свойству ψ. 03/10/12 Шилов Николай Вячеславович Всего слайдов 32 14
  • 15. Неформальное введение в формальную верификацию • Таким образом, для детерминированных программ разница между частичной и тотальной корректностью состоит в завершаемости программы: частичная корректность допускает неостановку программы, а тотальная – запрещает. 03/10/12 Шилов Николай Вячеславович Всего слайдов 32 15
  • 16. Неформальное введение в формальную верификацию • Для доказательства специфицированных вычислительных программ существуют два метода, разработанных Р. Флойдом в 1960-х гг. 03/10/12 Шилов Николай Вячеславович Всего слайдов 32 16
  • 17. Метод Р. Флойда доказательства частичной корректности // Предусловие метода. { {ϕ}π{ψ} – условие частичной корректности детерминированной программы } • Представить программу π графически в виде блок-схемы и выбрать множество контрольных точек (на дугах), включающее начало и конец программы, такое, чтобы любой цикл по графу блок-схемы содержал контрольную точку. 03/10/12 Шилов Николай Вячеславович Всего слайдов 32 17
  • 18. Метод Р. Флойда доказательства частичной корректности // Аннотация «инвариантами». • Сопоставить началу программы предусловие ϕ, концу программы – постусловие ψ, а каждой из оставшихся контрольных точек – некоторое (своё) условие «инвариант» этой точки. • Построить множество «участков» L, состоящее из всех невырожденных ациклических маршрутов по графу блок-схемы программы между всеми парами контрольных точек. 03/10/12 Шилов Николай Вячеславович Всего слайдов 32 18
  • 19. Метод Р. Флойда доказательства частичной корректности // Доказательство инвариантов. • Для каждого участка из L доказать: если условие, сопоставленное началу участка, верно перед началом исполнения участка, то условие, сопоставленное концу участка, верно после исполнения этого участка. // Постусловие метода. • {|={ϕ}π{ψ}, т. е. программа π частично корректна по отношению к предусловию ϕ и постусловию ψ} 03/10/12 Шилов Николай Вячеславович Всего слайдов 32 19
  • 20. Метод Р. Флойда доказательства частичной корректности • Заметим, что метод Р. Флойда для условий частичной корректности не является алгоритмом, так как он описан (по-просту говоря) неформально, включает необходимось придумать и доказать инварианты. • В силу своей неформальности его корректность неможет быть доказана (как и корректность метода математической индукции), а только «показана». 03/10/12 Шилов Николай Вячеславович Всего слайдов 32 20
  • 21. Метод Р. Флойда доказательства частичной корректности • Упражнение #1: Покажите, что если условие частичной корректности верно, то всегда можно выбрать контрольные точки и приписать им инварианты таким образом, который гарантирует успешное применение метода Р. Флойда. 03/10/12 Шилов Николай Вячеславович Всего слайдов 32 21
  • 22. Понятие о методе потенциалов • Метод Р. Флойда для доказательства условий тотальной корректности называется методом потенциалов, он применим только к детерминированным программам. • Частный случай применения этого метода для доказательства завершаемости детерминированных программ кратко можно описать следующим образом: 03/10/12 Шилов Николай Вячеславович Всего слайдов 32 22
  • 23. Понятие о методе потенциалов – выбирается конечное множество числовых значений, которые называются потенциалами; – каждому возможному набору значений используемых переменных сопоставляется некоторый потенциал; – тогда, если каждое исполнение тела любого цикла в алгоритме уменьшает значение потенциала, то алгоритм завершает работу. 03/10/12 Шилов Николай Вячеславович Всего слайдов 32 23
  • 24. Понятие о методе потенциалов • Метод Р. Флойда тоже не является алгоритмом, так как необходимо придумать фундированное множество, отображение в это множество и доказать, что потенциалы убывают в результате выполнения циклов. • Корректность метода потенциалов также невозможно формально доказать, а только неформально обосновать. 03/10/12 Шилов Николай Вячеславович Всего слайдов 32 24
  • 25. Пример Э. Дейкстры применения метода потенциалов • Задача начальника порта – На рейде порта с N причалами находится ровно N кораблей. Начальник порта получает сообщение о штормовом предупреждении и должен назначить каждому из кораблей его определенный (индивидуальный) причал. – Положения всех кораблей в момент получения штормового предупреждения известны. Положения причалов фиксированы и тоже известны. 03/10/12 Шилов Николай Вячеславович Всего слайдов 32 25
  • 26. Пример Э. Дейкстры применения метода потенциалов – Непосредственно в этот момент никакое препятствие (особенности береговой линии, расположение других причалов или положение других кораблей на рейде) не мешает любому из кораблей двигаться прямо к любому из причалов. – Во избежание столкновений маршруты кораблей не должны пересекаться. • Помогите начальнику порта распределить корабли по причалам. 03/10/12 Шилов Николай Вячеславович Всего слайдов 32 26
  • 27. Пример Э. Дейкстры применения метода потенциалов • Геометрическая модель проблемы – это N чёрных и N белых точек на плоскости, соответствующих положениям кораблей на рейде и расположению причалов, а возможные (гипотетические) маршруты – отрезки прямых между белыми и чёрными точками. • По условию задачи никакие три из этих точек не являются коллинеарными (т. е. не лежат на одной прямой). 03/10/12 Шилов Николай Вячеславович Всего слайдов 32 27
  • 28. Пример Э. Дейкстры применения метода потенциалов • Необходимо построить (если это вообще возможно) N попарно непересекающихся отрезков, у каждого из которых один конец – это некоторая белая точка, а другой – некоторая чёрная точка. 03/10/12 Шилов Николай Вячеславович Всего слайдов 32 28
  • 29. Пример Э. Дейкстры применения метода потенциалов VAR X: СОЕД; X:= ПЕРВ ; WHILE ¬ХОР(X) DO X := ЩЁЛК(X) OD. 03/10/12 Шилов Николай Вячеславович Всего слайдов 32 29
  • 30. Пример Э. Дейкстры применения метода потенциалов • Для любого значения X типа СОЕД примем в качестве его потенциала P(X) сумму длин отрезков, которые входят в X: P(X)= Σ[B,W]∈X |B,W|. • В силу неравенства треугольника |B’W”| + |B,W’| < |B’W’| + |B,W’|. 03/10/12 Шилов Николай Вячеславович Всего слайдов 32 30
  • 31. Пример Э. Дейкстры применения метода потенциалов • Поэтому P(X) = (Σ[B,W]∈X|B,W|) = = (|B',W'| + |B",W"|) + (Σ[B,W]∈X{[B',W'],[B",W"]} |B,W|) > >(|B',W"| + |B",W'|) + (Σ[B,W]∈X{[B',W'],[B",W"]} |B,W|) = = (Σ[B,W]∈ЩЁЛК(X) |B,W|) = P(ЩЁЛК(X)). • Следовательно, согласно методу потенциалов, программа (вернее, алгоритм) завершает свою работу. 03/10/12 Шилов Николай Вячеславович Всего слайдов 32 31
  • 32. Метод потенциалов доказательства завершаемости • Упражнение #2: Покажите, что если детерминированный алгоритм (программа) завершается, то всегда можно выбрать потенциальную функцию, которая гарантирует успешное применение метода потенциалов. 03/10/12 Шилов Николай Вячеславович Всего слайдов 32 32