Download - 20120309 formal semantics shilov_lecture05
![Page 1: 20120309 formal semantics shilov_lecture05](https://reader036.vdocuments.site/reader036/viewer/2022081516/58eca64c1a28ab331d8b4751/html5/thumbnails/1.jpg)
05/03/23 Шилов Николай Вячеславович Всего слайдов 25
1
Fun with Formal Program Semantics (О формальной семантике программ –
просто)
Шилов Николай Вячеславович
Computer Science клуб - ЕкатеринбургМарт 2012
![Page 2: 20120309 formal semantics shilov_lecture05](https://reader036.vdocuments.site/reader036/viewer/2022081516/58eca64c1a28ab331d8b4751/html5/thumbnails/2.jpg)
05/03/23 Шилов Николай Вячеславович Всего слайдов 25
2
Тема 4: Верификация программ с точки зрения семантики
языков программирования
(на примере диалекта ToyPL)
Продолжение лекции от 10.03.12
![Page 3: 20120309 formal semantics shilov_lecture05](https://reader036.vdocuments.site/reader036/viewer/2022081516/58eca64c1a28ab331d8b4751/html5/thumbnails/3.jpg)
05/03/23 Шилов Николай Вячеславович Всего слайдов 25
3
Основы верификации программ ToyPL
Уже знакомая нам аксиоматическая семантика ToyPL
![Page 4: 20120309 formal semantics shilov_lecture05](https://reader036.vdocuments.site/reader036/viewer/2022081516/58eca64c1a28ab331d8b4751/html5/thumbnails/4.jpg)
05/03/23 Шилов Николай Вячеславович Всего слайдов 25
4
Основы верификации программ ToyPL
• Специфицированная ToyPL программа – это тройка Хоара, в которой пред- и пост-условия – формулы первого порядка над Z/2N, а программа – это программа ToyPL.
• Аксиоматическая семантика специфицированной ToyPL-программы – это любое её доказательство в аксиоматической семантике.
![Page 5: 20120309 formal semantics shilov_lecture05](https://reader036.vdocuments.site/reader036/viewer/2022081516/58eca64c1a28ab331d8b4751/html5/thumbnails/5.jpg)
05/03/23 Шилов Николай Вячеславович Всего слайдов 25
5
Основы верификации программ ToyPL
• В силу надёжности аксиоматической семантики ToyPL, если специфицированная ToyPL-программа {ϕ}α{ψ} имеет аксиоматическую семантику, то {ϕ}α{ψ} – истинная тройка Хоара.
• В силу полноты аксиоматической семантики ToyPL, если специфицированная ToyPL-программа {ϕ}α{ψ} – истинная тройка Хоара, то {ϕ}α{ψ} имеет аксиоматическую семантику.
![Page 6: 20120309 formal semantics shilov_lecture05](https://reader036.vdocuments.site/reader036/viewer/2022081516/58eca64c1a28ab331d8b4751/html5/thumbnails/6.jpg)
05/03/23 Шилов Николай Вячеславович Всего слайдов 25
6
Основы верификации программ ToyPL
• Как следует из доказательства утверждения о надёжности и полноте аксиоматической семантики для языка ToyPL, – поиск доказательства специфицированная
ToyPL-программы – алгоритмическая, – но неэффективная процедура, использующая
явное построение слабейших предусловий.
![Page 7: 20120309 formal semantics shilov_lecture05](https://reader036.vdocuments.site/reader036/viewer/2022081516/58eca64c1a28ab331d8b4751/html5/thumbnails/7.jpg)
05/03/23 Шилов Николай Вячеславович Всего слайдов 25
7
Основы верификации программ ToyPL
• Как следует из доказательства утверждения о надёжности и полноте аксиоматической семантики для языка ToyPL,поиск доказательства специфицированная ToyPL-программы – алгоритмическая, – но неэффективная
процедура в силу генерации слабейших предусловий.
![Page 8: 20120309 formal semantics shilov_lecture05](https://reader036.vdocuments.site/reader036/viewer/2022081516/58eca64c1a28ab331d8b4751/html5/thumbnails/8.jpg)
05/03/23 Шилов Николай Вячеславович Всего слайдов 25
8
Основы верификации программ ToyPL
• При переходе от ToyPL к его диалекту, в котором единственный тип данных – математические целые числа Z (а не кольцо вычетов Z/2N) поиск доказательства специфицированной программы вообще перестаёт быть алгоритмической процедурой в силу – неэффективности алгоритма генерации
слабейших предусловий– и неразрешимости теории первого порядка
кольца целых чисел Z.
![Page 9: 20120309 formal semantics shilov_lecture05](https://reader036.vdocuments.site/reader036/viewer/2022081516/58eca64c1a28ab331d8b4751/html5/thumbnails/9.jpg)
05/03/23 Шилов Николай Вячеславович Всего слайдов 25
9
Основы верификации программ ToyPL
• Квазидоказательство специфицированной ToyPL-программы – это любое «доказательство» в аксиоматической семантике, в котором при использовании правила Stretching (усиления предусловия и ослабления заключения) не проверяются условия его применения.
![Page 10: 20120309 formal semantics shilov_lecture05](https://reader036.vdocuments.site/reader036/viewer/2022081516/58eca64c1a28ab331d8b4751/html5/thumbnails/10.jpg)
05/03/23 Шилов Николай Вячеславович Всего слайдов 25
10
Основы верификации программ ToyPL
• Все формулы первого порядка, встречающиеся в квазидоказательстве в качестве условий применения правила Stretching, называются условиями корректности этого квазидоказательства.
• Очевидно, что специфицированная ToyPL-программа корректна, если для неё есть квазидоказательство, в котором все условия корректности – истинные формулы (над Z/2N).
![Page 11: 20120309 formal semantics shilov_lecture05](https://reader036.vdocuments.site/reader036/viewer/2022081516/58eca64c1a28ab331d8b4751/html5/thumbnails/11.jpg)
05/03/23 Шилов Николай Вячеславович Всего слайдов 25
11
Основы верификации программ ToyPL
• Для того, чтобы автоматизировать процесс доказательства специфицированных программ, разработчику программы и ее спецификации (ее предусловия и постусловия) предлагается аннотировать все циклы программы утверждениями, которые разработчик считает инвариантами этих точек (т.е. которые остаются верными при каждой легальной итерации тела соответствующего цикла).
![Page 12: 20120309 formal semantics shilov_lecture05](https://reader036.vdocuments.site/reader036/viewer/2022081516/58eca64c1a28ab331d8b4751/html5/thumbnails/12.jpg)
05/03/23 Шилов Николай Вячеславович Всего слайдов 25
12
Основы верификации программ ToyPL
• Аннотированная ToyPL-программа – это специфицированная программа, в которой каждый цикл «while-do» аннотирован некоторой формулой, которая называется инвариантом этого цикла.
• В дальнейшем лексему «WHILE» цикла, аннотированного инвариантом , будем записывать в виде «WHILE».
![Page 13: 20120309 formal semantics shilov_lecture05](https://reader036.vdocuments.site/reader036/viewer/2022081516/58eca64c1a28ab331d8b4751/html5/thumbnails/13.jpg)
05/03/23 Шилов Николай Вячеславович Всего слайдов 25
13
Пример аннотированной ToyPL-программы
{}(((x:=1 ; y:=1) ; ( WHILE yz DO (y:=y+2x+1 ; x:=x+1))) ; x:=x–1){}где (z1), (x2 z (x+1)2> z), (y=x2 (x-1)2 z).
![Page 14: 20120309 formal semantics shilov_lecture05](https://reader036.vdocuments.site/reader036/viewer/2022081516/58eca64c1a28ab331d8b4751/html5/thumbnails/14.jpg)
05/03/23 Шилов Николай Вячеславович Всего слайдов 25
14
Правильные (квази)доказательства аннотированных программ
• (Квази)доказательство в аксиоматической семантике аннотированной программы называется правильным, если в этом (квази)доказательстве все правила для цикла используют инварианты этих циклов:
![Page 15: 20120309 formal semantics shilov_lecture05](https://reader036.vdocuments.site/reader036/viewer/2022081516/58eca64c1a28ab331d8b4751/html5/thumbnails/15.jpg)
05/03/23 Шилов Николай Вячеславович Всего слайдов 25
15
Пример правильного квазидоказательства для аннотированной ToyPL-программы
![Page 16: 20120309 formal semantics shilov_lecture05](https://reader036.vdocuments.site/reader036/viewer/2022081516/58eca64c1a28ab331d8b4751/html5/thumbnails/16.jpg)
05/03/23 Шилов Николай Вячеславович Всего слайдов 25
16
Пример правильного квазидоказательства для аннотированной ToyPL-программы
![Page 17: 20120309 formal semantics shilov_lecture05](https://reader036.vdocuments.site/reader036/viewer/2022081516/58eca64c1a28ab331d8b4751/html5/thumbnails/17.jpg)
05/03/23 Шилов Николай Вячеславович Всего слайдов 25
17
Пример правильного квазидоказательства для аннотированной ToyPL-программы
![Page 18: 20120309 formal semantics shilov_lecture05](https://reader036.vdocuments.site/reader036/viewer/2022081516/58eca64c1a28ab331d8b4751/html5/thumbnails/18.jpg)
05/03/23 Шилов Николай Вячеславович Всего слайдов 25
18
Пример правильного квазидоказательства для аннотированной ToyPL-программы
• Как видно из квазидоказательства, его условия корректности – это следующие три формулы:
![Page 19: 20120309 formal semantics shilov_lecture05](https://reader036.vdocuments.site/reader036/viewer/2022081516/58eca64c1a28ab331d8b4751/html5/thumbnails/19.jpg)
05/03/23 Шилов Николай Вячеславович Всего слайдов 25
19
Пример правильного квазидоказательства для аннотированной ToyPL-программы
• Упражнение #1: Является ли приведённое квазидоказательство доказательством для языка ToyPL? А для диалекта ToyPL, в котором переменные интерпретируются математическими целыми числами Z? Ответ объяснить.
![Page 20: 20120309 formal semantics shilov_lecture05](https://reader036.vdocuments.site/reader036/viewer/2022081516/58eca64c1a28ab331d8b4751/html5/thumbnails/20.jpg)
05/03/23 Шилов Николай Вячеславович Всего слайдов 25
20
О генерации условий корректности для ToyPL
• Для автоматизации построения условий корректности для аннотированных программ определим два рекурсивных алгоритма AC (от «Annotation Condition») и VC (от «Verification Condition»).
• Оба алгоритма имеют два аргумента: аннотированная программа и формула первого порядка. Алгоритм AC возвращает формулу, а алгоритм VC – конечное множество формул.
![Page 21: 20120309 formal semantics shilov_lecture05](https://reader036.vdocuments.site/reader036/viewer/2022081516/58eca64c1a28ab331d8b4751/html5/thumbnails/21.jpg)
05/03/23 Шилов Николай Вячеславович Всего слайдов 25
21
О генерации условий корректности для ToyPL
![Page 22: 20120309 formal semantics shilov_lecture05](https://reader036.vdocuments.site/reader036/viewer/2022081516/58eca64c1a28ab331d8b4751/html5/thumbnails/22.jpg)
05/03/23 Шилов Николай Вячеславович Всего слайдов 25
22
О генерации условий корректности для ToyPL
• Утверждение 1: Для любой аннотированной ToyPL-программы и формулы первого порядка над кольцом вычетов тройка Z/2N аннотированная программа {AC(, )}{} имеет правильное квазидоказательство, условия корректности которого – это формулы из VC(, ) и некоторые пропозициональные тавтологии.
• Упражнение #2: Попробуйте доказать утверждение 1 индукцией по структуре аннотированной программы.
![Page 23: 20120309 formal semantics shilov_lecture05](https://reader036.vdocuments.site/reader036/viewer/2022081516/58eca64c1a28ab331d8b4751/html5/thumbnails/23.jpg)
05/03/23 Шилов Николай Вячеславович Всего слайдов 25
23
О генерации условий корректности для ToyPL
• Из доказанного утверждения следует, что любая аннотированная ToyPL-программа {}{} имеет правильное квазидоказательство, в котором все условия корректности – это пропозициональные тавтологии, формулы множества VC(, ) и формула ( AC(, )).
![Page 24: 20120309 formal semantics shilov_lecture05](https://reader036.vdocuments.site/reader036/viewer/2022081516/58eca64c1a28ab331d8b4751/html5/thumbnails/24.jpg)
05/03/23 Шилов Николай Вячеславович Всего слайдов 25
24
О генерации условий корректности для ToyPL
• Утверждение 2: Для любой аннотированной ToyPL-программы {}{} всякое её правильное доказательство может быть перестроено в правильное доказательство, в котором все условия корректности – это пропозициональные тавтологии, формулы множества VC(, ) и формула ( AC(, )).
• Упражнение #3: Попробуйте доказать утверждение 2 индукцией по высоте исходного правильного доказательства.
![Page 25: 20120309 formal semantics shilov_lecture05](https://reader036.vdocuments.site/reader036/viewer/2022081516/58eca64c1a28ab331d8b4751/html5/thumbnails/25.jpg)
05/03/23 Шилов Николай Вячеславович Всего слайдов 25
25
О генерации условий корректности для ToyPL
• Вывод: Для верификации аннотированной ToyPL-программы {}{} не надо искать доказательство, но можно и надо – cгенерировать множество условий
корректности VC(, ) {( AC(, ))}– и проверить истинность всех этих формул в
кольце вычетов Z/2N.