20120309 formal semantics shilov_lecture05

25
06/23/22 Шилов Николай Вячеславови ч Всего слайдов 25 1 Fun with Formal Program Semantics (О формальной семантике программ – просто) Шилов Николай Вячеславович Computer Science клуб - Екатеринбург Март 2012

Upload: computer-science-club

Post on 11-Apr-2017

545 views

Category:

Education


1 download

TRANSCRIPT

Page 1: 20120309 formal semantics shilov_lecture05

05/03/23 Шилов Николай Вячеславович Всего слайдов 25

1

Fun with Formal Program Semantics (О формальной семантике программ –

просто)

Шилов Николай Вячеславович

Computer Science клуб - ЕкатеринбургМарт 2012

Page 2: 20120309 formal semantics shilov_lecture05

05/03/23 Шилов Николай Вячеславович Всего слайдов 25

2

Тема 4: Верификация программ с точки зрения семантики

языков программирования

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

Продолжение лекции от 10.03.12

Page 3: 20120309 formal semantics shilov_lecture05

05/03/23 Шилов Николай Вячеславович Всего слайдов 25

3

Основы верификации программ ToyPL

Уже знакомая нам аксиоматическая семантика ToyPL

Page 4: 20120309 formal semantics shilov_lecture05

05/03/23 Шилов Николай Вячеславович Всего слайдов 25

4

Основы верификации программ ToyPL

• Специфицированная ToyPL программа – это тройка Хоара, в которой пред- и пост-условия – формулы первого порядка над Z/2N, а программа – это программа ToyPL.

• Аксиоматическая семантика специфицированной ToyPL-программы – это любое её доказательство в аксиоматической семантике.

Page 5: 20120309 formal semantics shilov_lecture05

05/03/23 Шилов Николай Вячеславович Всего слайдов 25

5

Основы верификации программ ToyPL

• В силу надёжности аксиоматической семантики ToyPL, если специфицированная ToyPL-программа {ϕ}α{ψ} имеет аксиоматическую семантику, то {ϕ}α{ψ} – истинная тройка Хоара.

• В силу полноты аксиоматической семантики ToyPL, если специфицированная ToyPL-программа {ϕ}α{ψ} – истинная тройка Хоара, то {ϕ}α{ψ} имеет аксиоматическую семантику.

Page 6: 20120309 formal semantics shilov_lecture05

05/03/23 Шилов Николай Вячеславович Всего слайдов 25

6

Основы верификации программ ToyPL

• Как следует из доказательства утверждения о надёжности и полноте аксиоматической семантики для языка ToyPL, – поиск доказательства специфицированная

ToyPL-программы – алгоритмическая, – но неэффективная процедура, использующая

явное построение слабейших предусловий.

Page 7: 20120309 formal semantics shilov_lecture05

05/03/23 Шилов Николай Вячеславович Всего слайдов 25

7

Основы верификации программ ToyPL

• Как следует из доказательства утверждения о надёжности и полноте аксиоматической семантики для языка ToyPL,поиск доказательства специфицированная ToyPL-программы – алгоритмическая, – но неэффективная

процедура в силу генерации слабейших предусловий.

Page 8: 20120309 formal semantics shilov_lecture05

05/03/23 Шилов Николай Вячеславович Всего слайдов 25

8

Основы верификации программ ToyPL

• При переходе от ToyPL к его диалекту, в котором единственный тип данных – математические целые числа Z (а не кольцо вычетов Z/2N) поиск доказательства специфицированной программы вообще перестаёт быть алгоритмической процедурой в силу – неэффективности алгоритма генерации

слабейших предусловий– и неразрешимости теории первого порядка

кольца целых чисел Z.

Page 9: 20120309 formal semantics shilov_lecture05

05/03/23 Шилов Николай Вячеславович Всего слайдов 25

9

Основы верификации программ ToyPL

• Квазидоказательство специфицированной ToyPL-программы – это любое «доказательство» в аксиоматической семантике, в котором при использовании правила Stretching (усиления предусловия и ослабления заключения) не проверяются условия его применения.

Page 10: 20120309 formal semantics shilov_lecture05

05/03/23 Шилов Николай Вячеславович Всего слайдов 25

10

Основы верификации программ ToyPL

• Все формулы первого порядка, встречающиеся в квазидоказательстве в качестве условий применения правила Stretching, называются условиями корректности этого квазидоказательства.

• Очевидно, что специфицированная ToyPL-программа корректна, если для неё есть квазидоказательство, в котором все условия корректности – истинные формулы (над Z/2N).

Page 11: 20120309 formal semantics shilov_lecture05

05/03/23 Шилов Николай Вячеславович Всего слайдов 25

11

Основы верификации программ ToyPL

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

Page 12: 20120309 formal semantics shilov_lecture05

05/03/23 Шилов Николай Вячеславович Всего слайдов 25

12

Основы верификации программ ToyPL

• Аннотированная ToyPL-программа – это специфицированная программа, в которой каждый цикл «while-do» аннотирован некоторой формулой, которая называется инвариантом этого цикла.

• В дальнейшем лексему «WHILE» цикла, аннотированного инвариантом , будем записывать в виде «WHILE».

Page 13: 20120309 formal semantics shilov_lecture05

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

05/03/23 Шилов Николай Вячеславович Всего слайдов 25

14

Правильные (квази)доказательства аннотированных программ

• (Квази)доказательство в аксиоматической семантике аннотированной программы называется правильным, если в этом (квази)доказательстве все правила для цикла используют инварианты этих циклов:

Page 15: 20120309 formal semantics shilov_lecture05

05/03/23 Шилов Николай Вячеславович Всего слайдов 25

15

Пример правильного квазидоказательства для аннотированной ToyPL-программы

Page 16: 20120309 formal semantics shilov_lecture05

05/03/23 Шилов Николай Вячеславович Всего слайдов 25

16

Пример правильного квазидоказательства для аннотированной ToyPL-программы

Page 17: 20120309 formal semantics shilov_lecture05

05/03/23 Шилов Николай Вячеславович Всего слайдов 25

17

Пример правильного квазидоказательства для аннотированной ToyPL-программы

Page 18: 20120309 formal semantics shilov_lecture05

05/03/23 Шилов Николай Вячеславович Всего слайдов 25

18

Пример правильного квазидоказательства для аннотированной ToyPL-программы

• Как видно из квазидоказательства, его условия корректности – это следующие три формулы:

Page 19: 20120309 formal semantics shilov_lecture05

05/03/23 Шилов Николай Вячеславович Всего слайдов 25

19

Пример правильного квазидоказательства для аннотированной ToyPL-программы

• Упражнение #1: Является ли приведённое квазидоказательство доказательством для языка ToyPL? А для диалекта ToyPL, в котором переменные интерпретируются математическими целыми числами Z? Ответ объяснить.

Page 20: 20120309 formal semantics shilov_lecture05

05/03/23 Шилов Николай Вячеславович Всего слайдов 25

20

О генерации условий корректности для ToyPL

• Для автоматизации построения условий корректности для аннотированных программ определим два рекурсивных алгоритма AC (от «Annotation Condition») и VC (от «Verification Condition»).

• Оба алгоритма имеют два аргумента: аннотированная программа и формула первого порядка. Алгоритм AC возвращает формулу, а алгоритм VC – конечное множество формул.

Page 21: 20120309 formal semantics shilov_lecture05

05/03/23 Шилов Николай Вячеславович Всего слайдов 25

21

О генерации условий корректности для ToyPL

Page 22: 20120309 formal semantics shilov_lecture05

05/03/23 Шилов Николай Вячеславович Всего слайдов 25

22

О генерации условий корректности для ToyPL

• Утверждение 1: Для любой аннотированной ToyPL-программы и формулы первого порядка над кольцом вычетов тройка Z/2N аннотированная программа {AC(, )}{} имеет правильное квазидоказательство, условия корректности которого – это формулы из VC(, ) и некоторые пропозициональные тавтологии.

• Упражнение #2: Попробуйте доказать утверждение 1 индукцией по структуре аннотированной программы.

Page 23: 20120309 formal semantics shilov_lecture05

05/03/23 Шилов Николай Вячеславович Всего слайдов 25

23

О генерации условий корректности для ToyPL

• Из доказанного утверждения следует, что любая аннотированная ToyPL-программа {}{} имеет правильное квазидоказательство, в котором все условия корректности – это пропозициональные тавтологии, формулы множества VC(, ) и формула ( AC(, )).

Page 24: 20120309 formal semantics shilov_lecture05

05/03/23 Шилов Николай Вячеславович Всего слайдов 25

24

О генерации условий корректности для ToyPL

• Утверждение 2: Для любой аннотированной ToyPL-программы {}{} всякое её правильное доказательство может быть перестроено в правильное доказательство, в котором все условия корректности – это пропозициональные тавтологии, формулы множества VC(, ) и формула ( AC(, )).

• Упражнение #3: Попробуйте доказать утверждение 2 индукцией по высоте исходного правильного доказательства.

Page 25: 20120309 formal semantics shilov_lecture05

05/03/23 Шилов Николай Вячеславович Всего слайдов 25

25

О генерации условий корректности для ToyPL

• Вывод: Для верификации аннотированной ToyPL-программы {}{} не надо искать доказательство, но можно и надо – cгенерировать множество условий

корректности VC(, ) {( AC(, ))}– и проверить истинность всех этих формул в

кольце вычетов Z/2N.