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



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




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


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


03/14/12           Шилов Николай Вячеславович Всего слайдов 25   2
Основы верификации программ ToyPL




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

03/14/12            Шилов Николай Вячеславович Всего слайдов 25   3
Основы верификации программ ToyPL

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




03/14/12        Шилов Николай Вячеславович Всего слайдов 25   4
Основы верификации программ ToyPL

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


03/14/12        Шилов Николай Вячеславович Всего слайдов 25   5
Основы верификации программ ToyPL

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



03/14/12        Шилов Николай Вячеславович Всего слайдов 25   6
Основы верификации программ ToyPL

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


03/14/12        Шилов Николай Вячеславович Всего слайдов 25   7
Основы верификации программ ToyPL

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

03/14/12        Шилов Николай Вячеславович Всего слайдов 25   8
Основы верификации программ ToyPL

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




03/14/12        Шилов Николай Вячеславович Всего слайдов 25   9
Основы верификации программ ToyPL

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

03/14/12        Шилов Николай Вячеславович Всего слайдов 25   10
Основы верификации программ ToyPL

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

03/14/12        Шилов Николай Вячеславович Всего слайдов 25   11
Основы верификации программ ToyPL

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


03/14/12        Шилов Николай Вячеславович Всего слайдов 25   12
Пример аннотированной ToyPL-программы

{ϕ}(((x:=1 ; y:=1) ;
      ( WHILEι y≤z
         DO (y:=y+2×x+1 ; x:=x+1)))                        ;
     x:=x–1){ψ}
где
ϕ ≡ (z≥1),
ψ ≡ (x2≤ z ∧ (x+1)2> z),
ι ≡ (y=x2 ∧ (x-1)2≤ z).

03/14/12     Шилов Николай Вячеславович Всего слайдов 25       13
Правильные (квази)доказательства
              аннотированных программ
• (Квази)доказательство в аксиоматической
  семантике аннотированной программы
  называется правильным, если в этом
  (квази)доказательстве все правила для цикла
  используют инварианты этих циклов:




03/14/12            Шилов Николай Вячеславович Всего слайдов 25   14
Пример правильного квазидоказательства
    для аннотированной ToyPL-программы




03/14/12       Шилов Николай Вячеславович Всего слайдов 25   15
Пример правильного квазидоказательства
    для аннотированной ToyPL-программы




03/14/12       Шилов Николай Вячеславович Всего слайдов 25   16
Пример правильного квазидоказательства
    для аннотированной ToyPL-программы




03/14/12       Шилов Николай Вячеславович Всего слайдов 25   17
Пример правильного квазидоказательства
    для аннотированной ToyPL-программы
• Как видно из квазидоказательства, его условия
  корректности – это следующие три формулы:




03/14/12        Шилов Николай Вячеславович Всего слайдов 25   18
Пример правильного квазидоказательства
    для аннотированной ToyPL-программы
• Упражнение #1: Является ли приведённое
  квазидоказательство доказательством для языка
  ToyPL? А для диалекта ToyPL, в котором
  переменные интерпретируются математическими
  целыми числами Z? Ответ объяснить.




03/14/12       Шилов Николай Вячеславович Всего слайдов 25   19
О генерации условий корректности для ToyPL

• Для автоматизации построения условий
  корректности для аннотированных программ
  определим два рекурсивных алгоритма AC (от
  «Annotation Condition») и VC (от «Verification
  Condition»).
• Оба алгоритма имеют два аргумента:
  аннотированная программа и формула первого
  порядка. Алгоритм AC возвращает формулу, а
  алгоритм VC – конечное множество формул.


03/14/12        Шилов Николай Вячеславович Всего слайдов 25   20
О генерации условий корректности для ToyPL




03/14/12     Шилов Николай Вячеславович Всего слайдов 25   21
О генерации условий корректности для ToyPL

• Утверждение 1: Для любой аннотированной
  ToyPL-программы δ и формулы первого порядка ξ
  над кольцом вычетов тройка Z/2N
  аннотированная программа {AC(δ, ξ)}δ{ξ} имеет
  правильное квазидоказательство, условия
  корректности которого – это формулы из VC(δ,
  ξ) и некоторые пропозициональные
  тавтологии.
• Упражнение #2: Попробуйте доказать
  утверждение 1 индукцией по структуре
  аннотированной программы.
03/14/12       Шилов Николай Вячеславович Всего слайдов 25   22
О генерации условий корректности для ToyPL

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




03/14/12        Шилов Николай Вячеславович Всего слайдов 25   23
О генерации условий корректности для ToyPL

• Утверждение 2: Для любой аннотированной
  ToyPL-программы {ϕ}α{ψ} всякое её правильное
  доказательство может быть перестроено в
  правильное доказательство, в котором все
  условия корректности – это
  пропозициональные тавтологии, формулы
  множества VC(α, ψ) и формула (ϕ → AC(α, ψ)).
• Упражнение #3: Попробуйте доказать
  утверждение 2 индукцией по высоте исходного
  правильного доказательства.
03/14/12        Шилов Николай Вячеславович Всего слайдов 25   24
О генерации условий корректности для ToyPL

• Вывод: Для верификации аннотированной ToyPL-
  программы {ϕ}α{ψ} не надо искать
  доказательство, но можно и надо
   – cгенерировать множество условий
     корректности VC(α, ψ) ∪ {(ϕ → AC(α, ψ))}
   – и проверить истинность всех этих формул в
     кольце вычетов Z/2N.



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

More Related Content

PPT
20120309 formal semantics shilov_lecture04
PPTX
Наследование и полиморфизм
DOCX
Atuqmantawan wallatamantawan
PDF
Jornal UTFPR Notícias 2012
PPTX
PDF
Rupac offerta promozionale 2012 -
PDF
Metode berpikir-filsafat-islam
20120309 formal semantics shilov_lecture04
Наследование и полиморфизм
Atuqmantawan wallatamantawan
Jornal UTFPR Notícias 2012
Rupac offerta promozionale 2012 -
Metode berpikir-filsafat-islam

Viewers also liked (16)

DOCX
Weibo gedi
PDF
Musica desembre 2012
PDF
14 decembre munich_fg_fe
PDF
GDG Timisoara
PPTX
Koala powerpoint
PDF
Inclusao virtual
PPTX
Legal, ethical and contracutal assignment
PDF
Struktur data chapter_07
DOCX
Tarjeta informativa para el 15 mayo
PPTX
Menú de nadal o cap d’any per a nens
PDF
Projeto execucao lf
PPTX
Roma Antiga
PPTX
El meu cantant preferit
PDF
20080323 machine learning_nikolenko_lecture04
Weibo gedi
Musica desembre 2012
14 decembre munich_fg_fe
GDG Timisoara
Koala powerpoint
Inclusao virtual
Legal, ethical and contracutal assignment
Struktur data chapter_07
Tarjeta informativa para el 15 mayo
Menú de nadal o cap d’any per a nens
Projeto execucao lf
Roma Antiga
El meu cantant preferit
20080323 machine learning_nikolenko_lecture04
Ad

Similar to 20120309 formal semantics shilov_lecture05 (6)

PPT
20120309 formal semantics shilov_lecture03
PPT
20120309 formal semantics shilov_lecture06
PDF
20120218 model cheсking_karpov_lecture01
PPT
практика 4
PDF
TMPA-2013 Vert Krikun: Finding Defects in C and C++ Pointers Using Static Ana...
PDF
Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...
20120309 formal semantics shilov_lecture03
20120309 formal semantics shilov_lecture06
20120218 model cheсking_karpov_lecture01
практика 4
TMPA-2013 Vert Krikun: Finding Defects in C and C++ Pointers Using Static Ana...
Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...
Ad

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 lecture3_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 lecture3_matiyasevich

20120309 formal semantics shilov_lecture05

  • 1. Computer Science клуб - Екатеринбург Март 2012 Fun with Formal Program Semantics (О формальной семантике программ – просто) Шилов Николай Вячеславович 03/14/12 Шилов Николай Вячеславович Всего слайдов 25 1
  • 2. Тема 4: Верификация программ с точки зрения семантики языков программирования (на примере диалекта ToyPL) Продолжение лекции от 10.03.12 03/14/12 Шилов Николай Вячеславович Всего слайдов 25 2
  • 3. Основы верификации программ ToyPL Уже знакомая нам аксиоматическая семантика ToyPL 03/14/12 Шилов Николай Вячеславович Всего слайдов 25 3
  • 4. Основы верификации программ ToyPL • Специфицированная ToyPL программа – это тройка Хоара, в которой пред- и пост-условия – формулы первого порядка над Z/2N, а программа – это программа ToyPL. • Аксиоматическая семантика специфицированной ToyPL-программы – это любое её доказательство в аксиоматической семантике. 03/14/12 Шилов Николай Вячеславович Всего слайдов 25 4
  • 5. Основы верификации программ ToyPL • В силу надёжности аксиоматической семантики ToyPL, если специфицированная ToyPL-программа {ϕ}α{ψ} имеет аксиоматическую семантику, то {ϕ}α{ψ} – истинная тройка Хоара. • В силу полноты аксиоматической семантики ToyPL, если специфицированная ToyPL-программа {ϕ}α{ψ} – истинная тройка Хоара, то {ϕ}α{ψ} имеет аксиоматическую семантику. 03/14/12 Шилов Николай Вячеславович Всего слайдов 25 5
  • 6. Основы верификации программ ToyPL • Как следует из доказательства утверждения о надёжности и полноте аксиоматической семантики для языка ToyPL, – поиск доказательства специфицированная ToyPL-программы – алгоритмическая, – но неэффективная процедура, использующая явное построение слабейших предусловий. 03/14/12 Шилов Николай Вячеславович Всего слайдов 25 6
  • 7. Основы верификации программ ToyPL • Как следует из доказательства утверждения о надёжности и полноте аксиоматической семантики для языка ToyPL,поиск доказательства специфицированная ToyPL-программы – алгоритмическая, – но неэффективная процедура в силу генерации слабейших предусловий. 03/14/12 Шилов Николай Вячеславович Всего слайдов 25 7
  • 8. Основы верификации программ ToyPL • При переходе от ToyPL к его диалекту, в котором единственный тип данных – математические целые числа Z (а не кольцо вычетов Z/2N) поиск доказательства специфицированной программы вообще перестаёт быть алгоритмической процедурой в силу – неэффективности алгоритма генерации слабейших предусловий – и неразрешимости теории первого порядка кольца целых чисел Z. 03/14/12 Шилов Николай Вячеславович Всего слайдов 25 8
  • 9. Основы верификации программ ToyPL • Квазидоказательство специфицированной ToyPL- программы – это любое «доказательство» в аксиоматической семантике, в котором при использовании правила Stretching (усиления предусловия и ослабления заключения) не проверяются условия его применения. 03/14/12 Шилов Николай Вячеславович Всего слайдов 25 9
  • 10. Основы верификации программ ToyPL • Все формулы первого порядка, встречающиеся в квазидоказательстве в качестве условий применения правила Stretching, называются условиями корректности этого квазидоказательства. • Очевидно, что специфицированная ToyPL- программа корректна, если для неё есть квазидоказательство, в котором все условия корректности – истинные формулы (над Z/2N). 03/14/12 Шилов Николай Вячеславович Всего слайдов 25 10
  • 11. Основы верификации программ ToyPL • Для того, чтобы автоматизировать процесс доказательства специфицированных программ, разработчику программы и ее спецификации (ее предусловия и постусловия) предлагается аннотировать все циклы программы утверждениями, которые разработчик считает инвариантами этих точек (т.е. которые остаются верными при каждой легальной итерации тела соответствующего цикла). 03/14/12 Шилов Николай Вячеславович Всего слайдов 25 11
  • 12. Основы верификации программ ToyPL • Аннотированная ToyPL-программа – это специфицированная программа, в которой каждый цикл «while-do» аннотирован некоторой формулой, которая называется инвариантом этого цикла. • В дальнейшем лексему «WHILE» цикла, аннотированного инвариантом ι, будем записывать в виде «WHILEι». 03/14/12 Шилов Николай Вячеславович Всего слайдов 25 12
  • 13. Пример аннотированной ToyPL-программы {ϕ}(((x:=1 ; y:=1) ; ( WHILEι y≤z DO (y:=y+2×x+1 ; x:=x+1))) ; x:=x–1){ψ} где ϕ ≡ (z≥1), ψ ≡ (x2≤ z ∧ (x+1)2> z), ι ≡ (y=x2 ∧ (x-1)2≤ z). 03/14/12 Шилов Николай Вячеславович Всего слайдов 25 13
  • 14. Правильные (квази)доказательства аннотированных программ • (Квази)доказательство в аксиоматической семантике аннотированной программы называется правильным, если в этом (квази)доказательстве все правила для цикла используют инварианты этих циклов: 03/14/12 Шилов Николай Вячеславович Всего слайдов 25 14
  • 15. Пример правильного квазидоказательства для аннотированной ToyPL-программы 03/14/12 Шилов Николай Вячеславович Всего слайдов 25 15
  • 16. Пример правильного квазидоказательства для аннотированной ToyPL-программы 03/14/12 Шилов Николай Вячеславович Всего слайдов 25 16
  • 17. Пример правильного квазидоказательства для аннотированной ToyPL-программы 03/14/12 Шилов Николай Вячеславович Всего слайдов 25 17
  • 18. Пример правильного квазидоказательства для аннотированной ToyPL-программы • Как видно из квазидоказательства, его условия корректности – это следующие три формулы: 03/14/12 Шилов Николай Вячеславович Всего слайдов 25 18
  • 19. Пример правильного квазидоказательства для аннотированной ToyPL-программы • Упражнение #1: Является ли приведённое квазидоказательство доказательством для языка ToyPL? А для диалекта ToyPL, в котором переменные интерпретируются математическими целыми числами Z? Ответ объяснить. 03/14/12 Шилов Николай Вячеславович Всего слайдов 25 19
  • 20. О генерации условий корректности для ToyPL • Для автоматизации построения условий корректности для аннотированных программ определим два рекурсивных алгоритма AC (от «Annotation Condition») и VC (от «Verification Condition»). • Оба алгоритма имеют два аргумента: аннотированная программа и формула первого порядка. Алгоритм AC возвращает формулу, а алгоритм VC – конечное множество формул. 03/14/12 Шилов Николай Вячеславович Всего слайдов 25 20
  • 21. О генерации условий корректности для ToyPL 03/14/12 Шилов Николай Вячеславович Всего слайдов 25 21
  • 22. О генерации условий корректности для ToyPL • Утверждение 1: Для любой аннотированной ToyPL-программы δ и формулы первого порядка ξ над кольцом вычетов тройка Z/2N аннотированная программа {AC(δ, ξ)}δ{ξ} имеет правильное квазидоказательство, условия корректности которого – это формулы из VC(δ, ξ) и некоторые пропозициональные тавтологии. • Упражнение #2: Попробуйте доказать утверждение 1 индукцией по структуре аннотированной программы. 03/14/12 Шилов Николай Вячеславович Всего слайдов 25 22
  • 23. О генерации условий корректности для ToyPL • Из доказанного утверждения следует, что любая аннотированная ToyPL-программа {ϕ}α{ψ} имеет правильное квазидоказательство, в котором все условия корректности – это пропозициональные тавтологии, формулы множества VC(α, ψ) и формула (ψ → AC(α, ψ)). 03/14/12 Шилов Николай Вячеславович Всего слайдов 25 23
  • 24. О генерации условий корректности для ToyPL • Утверждение 2: Для любой аннотированной ToyPL-программы {ϕ}α{ψ} всякое её правильное доказательство может быть перестроено в правильное доказательство, в котором все условия корректности – это пропозициональные тавтологии, формулы множества VC(α, ψ) и формула (ϕ → AC(α, ψ)). • Упражнение #3: Попробуйте доказать утверждение 2 индукцией по высоте исходного правильного доказательства. 03/14/12 Шилов Николай Вячеславович Всего слайдов 25 24
  • 25. О генерации условий корректности для ToyPL • Вывод: Для верификации аннотированной ToyPL- программы {ϕ}α{ψ} не надо искать доказательство, но можно и надо – cгенерировать множество условий корректности VC(α, ψ) ∪ {(ϕ → AC(α, ψ))} – и проверить истинность всех этих формул в кольце вычетов Z/2N. 03/14/12 Шилов Николай Вячеславович Всего слайдов 25 25