Теормин 2014 (avasite), страница 6
Описание файла
Документ из архива "Теормин 2014 (avasite)", который расположен в категории "". Всё это находится в предмете "математическая логика и логическое программирование" из 7 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Онлайн просмотр документа "Теормин 2014 (avasite)"
Текст 6 страницы из документа "Теормин 2014 (avasite)"
Темпоральные логики
Темпоральные (временные) логики применяются для описания и исследования причинно-следственных зависимостей, развивающихся во времени. Модальный оператор □ означает «всегда», а оператор ◊ — «когда-нибудь».
2 разновидности темпоральных логик:
-
Логика линейного времени LTL
-
Логика деревьев вычислений CTL (частный случай «Логики ветвящегося времени»), использует темпоральные операторы 2-х типов: универсальные и экзистенциальные ∀□, ∀◊, ∃□, ∃◊.
Логика деревьев вычислений CTL
Пусть I = <S, R, ξ> — древесная модель Крипке для логики CTL, s0 ∈ S — одно из состояний модели. Тогда
-
I, s0|= ∀□ϕ ⇐⇒ в каждом состоянии s, достижимом из состояния s0, верно I, s |= ϕ;
-
I, s0|= ∃□ϕ ⇐⇒ существует ветвь, исходящая из состояния s0, в каждом состоянии s которой верно I, s |= ϕ;
-
I, s0|= ∀◊ϕ ⇐⇒ в каждой ветви, исходящей из состояния s0, есть состояние s, в котором верно I, s |= ϕ;
-
I, s0|= ∃◊ϕ ⇐⇒ существует ветвь, исходящая из состояния s0, в одном из состоянии s которой верно I, s |= ϕ.
Лекция 20. Правильные программы. Императивные программы. Задача верификации программ. Логика Хоара. Автоматическая проверка правильности программ.
Описание требований правильности функционирования программы называется спецификацией программы.
Проверка соблюдения вычислениями программы требований правильности функционирования называется верификацией программы.
Определение
присваивание ::= «переменная» ⇐ «терм»
условие ::= «атом» | (¬условие ) | (условие & условие ) | (условие ∨ условие )
программа ::= присваивание | программа ; программа | if «условие» then программа else программа fi | while условие do программа od
Определение (состояния вычисления)
Пусть Var — это множество переменных, а GTerm — это множество основных термов сигнатуры σ.
Оценкой переменных (состоянием данных) будем называть всякое отображение (подстановку) θ: Var → GTerm.
Состоянием управления будем называть всякую программу, а также специальный символ ∅.
Состоянием вычисления будем называть всякую пару <π, θ>, где π — состояние управления, а θ — оценка переменных.
Запись Stateσ будет обозначать множество всевозможных состояний вычислений сигнатуры σ.
Определение (отношения переходов)
Пусть I — это интерпретация сигнатуры σ. Тогда отношение переходов для императивных программ — это бинарное отношение →I на множестве состояний вычисления Stateσ, удовлетворяющее следующим требованиям:
-
ASS: <x ⇒ t, θ> →I <∅, {x/t}θ>;
-
COMP_∅: <π1; π2, θ> →I <π2, η> тогда и только тогда, когда <π1, θ> →I <∅, η>;
-
COMP: <π1; π2, θ> →I <π'1; π2, η> тогда и только тогда, когда <π1, θ> →I <π’1, η> и π’1 ≠ ∅;
Определение (отношения переходов)
-
IF_1: <if C then π1 else π2 fi, θ> →I <π1, θ> тогда и только тогда, когда I |= Cθ;
-
IF_0: <if C then π1 else π2 fi, θ> →I <π2, θ> тогда и только тогда, когда I |≠ Cθ;
-
WHILE_1: <while C do π od, θ> →I <π; while C do π od, θ> тогда и только тогда, когда I |= Cθ;
-
WHILE_0: <while C do π od, θ> →I <∅, θ> тогда и только тогда, когда I |≠ Cθ.
Частичным вычислением программы π0 на оценке переменных θ0 в интерпретации I называется последовательность (конечная или бесконечная) состояний вычисления <π0, θ0>, <π1, θ1>, …, <πn−1, θn−1>, <πn, θn>, …, в которой для любого n, n ≥ 1, выполняется отношение <πn−1, θn−1> →I <πn, θn>.
Вычислением программы π0 на оценке переменных θ0 в интерпретации I называется всякое частичное вычисление, которое нельзя продолжить.
Как следует из определения, любое вычисление либо является бесконечной последовательностью, либо завершается состоянием <∅, η>. В последнем случае оценка η называется результатом вычисления.
Будем использовать запись →∗I для обозначения рефлексивного и транзитивного замыкания отношения переходов →I.
Неформальная постановка задачи верификации программ.
Программа π считается (частично) корректной, если для любых начальных данных, удовлетворяющих определенному условию ϕ, результат вычисления (если вычисление завершается) удовлетворяет определенному условию ψ.
Ограничение ϕ, которое налагается на начальные данные, называется предусловием, а требование ψ, которому должны удовлетворять результаты вычисления, называется постусловием программы.
Задача верификации программы π заключается в проверке частичной корректности программы π относительно заданного предусловия ϕ и заданного постусловия ψ.
Определение. Триплетом Хоара (тройкой Хоара) называется всякое выражение вида ϕ{π}ψ, где ϕ, ψ — формулы логики предикатов, а π — императивная программа.
Обозначим HTσ множество триплетов Хоара сигнатуры σ.
Выполнимость триплетов Хоара в интерпретациях определяется так:
I |= ϕ{π}ψ ⇐⇒ для любых оценок переменных θ, η, если I | = ϕθ и <π, θ> →∗I <∅, η>, то I |= ψη.
Определение (частичной корректности программы)
Пусть ϕ, ψ — формулы логики предикатов, а π — императивная программа.
Программа π называется частично корректной в интерпретации I относительно предусловия ϕ и постусловия ψ, если триплет ϕ{π}ψ выполним в интерпретации I, т. е. I |= ϕ{π}ψ.
Правила вывода Хоара
-
ASS: ϕ{x/t} {x ⇐ t} ϕ true,
-
CONS: ϕ{π}ψ ϕ → ϕ0, ϕ0{π}ψ0, ψ0→ ψ,
-
COMP: ϕ{π1; π2}ψ ϕ{π1}χ, χ{π2}ψ,
-
IF: ϕ{if C then π1 else π2 fi}ψ (ϕ&C){π1}ψ, (ϕ&¬C){π2}ψ,
-
WHILE: ϕ{while C do π od} (ϕ&¬C) (ϕ&C){π}ϕ.
Определение вывода в логике Хоара
Вывод в логике Хоара триплета Φ0 = ϕ0{π0}ψ0 — это корневое дерево, вершинами которого служат триплеты и формулы логики предикатов и при этом
-
корнем дерева является триплет Φ0;
-
из вершины Φi исходят дуги в вершину Φj ⇐⇒ Φi Φj — правило табличного вывода;
-
из вершины Φ1 исходят дуги в вершины ϕ1 , Φ3, ϕ2 ⇐⇒ Φ1ϕ1, Φ3, ϕ2 — правило табличного вывода;
-
листьями дерева являются формулы логики предикатов.
Вывод триплета Φ0 = ϕ0{π0}ψ0 в логике Хоара называется успешным в интерпретации I, если дерево вывода является конечным, и все его листовые вершины — это истинные в интерпретации I формулы логики предикатов.
Теорема корректности
Для любой интерпретации I и для любого правила вывода логики Хоара ΦΨ, Φϕ, ΦΨ1,Ψ2, Φϕ,Ψ,ψ, если I |= Ψ, I |= ϕ, , то I |=Ф
(Докажем поочереди все павила ass, cons, comp, if, while. Для ass - возьмём некоторую произвольную оценку переменных. Согласно операционной семантике императивных программ существует единственное вычисление, …)
Следствие.
Если триплет ϕ{π}ψ имеет успешный в интерпретации I вывод, то программа π частично корректна в интерпретации I относительно предусловия ϕ и постусловия ψ.
Полнота правил вывода Хоара
-
Верно ли, что для каждой интерпретации I существует система правил вывода, позволяющая для каждого триплета Φ = ϕ{π}ψ построить успешный вывод Φ в интерпретации I и доказать его успешность в случае I |= Φ?
(Нет, следует из теоремы Гёделя о неполноте)
-
Верно ли, что для каждой интерпретации I существует система правил вывода, позволяющая для каждого триплета Φ = ϕ{π}ψ построить успешный вывод Φ в интерпретации I (но не гарантирующая доказательства его успешности) в случае I |= Φ?
(Может не найтись нужных формул для применения правила Хоара cons, если базовые предикаты сигнатуры будут недостаточно выразительными)
-
Верно ли, что для некоторых интерпретаций I существует система правил вывода Хоара, которая позволяет для каждого триплета Φ = ϕ{π}ψ построить успешный вывод Φ в интерпретации I в случае I |= Φ?
(Да, достаточно чтобы для цикла существовал терм, который для любой оценки переменных был равен n+1 лишь тогда, когда цикл в вычислении совершает n итераций)
Определение
Пусть заданы интерпретация I , императивная программа π и постусловие ψ. Тогда формула ϕ0 называется слабейшим предусловием (weakest postcondition) для программы π и постусловия ψ, если
-
I |= ϕ0{π}ψ,
-
для любой формулы ϕ, если I |= ϕ{π}ψ, то I |= ϕ → ϕ0.
Слабейшее предусловие для программы π и постусловия ψ условимся обозначать wpr (π, ψ).
Теорема
I |= ϕ{π}ψ ⇐⇒
Таким образом, задача построения успешного вывода сводится к задаче вычисления wpr (π, ψ).
Теорема
wpr (x ⇐ t , ψ) = ψ{x/t},
wpr (π1; π2, ψ) = wpr (π1, wpr (π2, ψ)),
wpr (if C then π1 else π2 fi, ψ) =C & wpr (π1, ψ) ∨ ¬C & wpr (π2, ψ)
Лекция 21. Верификация распределенных программ. Логика линейного времени PLTL. Размеченные системы переходов. Задача верификации моделей программ.
Такой подход к проверке правильности программ называется верификацией моделей программ (англ. model-checking).
Верификацию распределенных систем нужно автоматизировать. Это можно сделать, например, так.
-
Выбрать логический язык L, на котором можно описывать требования, предъявляемые к программе. Представить эти требования в виде формул ϕ1, …, ϕn.
-
Выбрать математическую модель M, адекватно представляющую все вычисления программы. Модель должна быть устроен так, чтобы каждое вычисление I в модели M являлось интерпретацией языка L.
-
Проверить выполнимость формул ϕ1, …, ϕn на всех вычислениях модели M. Для проверки выполнимости формул языка L на модели программы M должен быть разработан эффективный алгоритм.
Синтаксис PLTL
В PLTL наряду с булевыми логическими связками для описания причинно-следственной зависимости событий во времени применяются темпоральные операторы
-
X (neXttime) «в следующий момент времени»;
-
F (sometime in Future) «когда-то в будущем»;
-
G (Globally) «всегда в будущем»;
-
U (Until) «до тех пор пока»;
-
R (Release) «высвободить, открепить».
Пусть задано множество булевых переменных AP = {p1, p2, …, pn, …} (будем называть их атомарными высказываниями). Формула PLTL — это
-
pi, если pi ∈ AP
-
(ϕ&ψ), (ϕ∨ψ), (ϕ→ψ), (¬ϕ) если ϕ и ψ — формулы
-
(Xϕ), «в следующий момент будет верно ϕ»
-
(Fϕ), «когда-то в будущем будет верно ϕ»
-
(Gϕ), «всегда верно ϕ»
-
(ϕUψ), «ϕ остается верной, пока не станет верной ψ»
-
(ϕRψ), «ψ может перестать быть верной только после того, как станет верной ϕ».
Семантика PLTL
Интерпретация PLTL — это темпоральная модель Крипке I = <N, ≤, ξ>, где
-
N = {0, 1, 2, …} — множество моментов времени
-
≤ — отношение нестрогого линейного порядка на N
-
ξ: N × AP → {true, false} — оценка атомарных высказываний на шкале времени.
Пусть I = <N, ≤, ξ> — темпоральная интерпретация (вычислительная трасса), n ∈ N — момент времени (состояние вычисления), ϕ — формула PLTL.
Тогда отношение выполнимости I, n |= ϕ формулы ϕ в момент времени n в интерпретации I определяется так.
-
Если ϕ = p, p ∈ AP (т. е. ϕ — атомарное высказывание), то I, n |= ϕ ⇐⇒ ξn(p) = true.
-
Если ϕ = ϕ1&ϕ2, то I, n |= ϕ ⇐⇒ I, n |= ϕ1 и I, n |= ϕ2.
-
Аналогично ϕ1 ∨ ϕ2, ϕ1 → ϕ2, ¬ϕ1
-
Если ϕ = Xψ, то I, n |= ϕ ⇐⇒ I, n+1 |= ψ.
-
Если ϕ = Fψ, то I, n |= ϕ ⇐⇒ существует такое k, k≥0, что I, n+k |= ψ.
-
Если ϕ = Gψ, то I, n |= ϕ ⇐⇒ для любого k, k ≥ 0, верно I, n+k |= ψ.
-
Если ϕ = χUψ, то I, n |= ϕ ⇐⇒ существует такое k, k ≥ 0, что I, n+k |= ψ, и для любого i, 0 ≤ i < k , верно I, n+i |= χ.
-
Если ϕ = χRψ, то I, n |= ϕ ⇐⇒ либо для любого k, k ≥ 0, верно I, n+k |= ψ, либо существует такое k, k ≥ 0, что I, n+k |= χ, и для любого i, 0 ≤ i ≤ k, верно I, n+i |= ψ.
Будем называть формулу PLTL ϕ
-
выполнимой в интерпретации I, если верно I, 0|= ϕ (обозначается I |= ϕ);
-
PLTL-общезначимой, если для любой интерпретации I верно I |= ϕ (обозначается |= ϕ).
Законы двойственности.
-
|= ¬Xϕ ≡ X¬ϕ;
-
|= ¬Fϕ ≡ G¬ϕ;
-
|= ¬Gϕ ≡ F¬ϕ;
-
|= ¬(ϕUψ) ≡ ¬ϕR¬ψ;
-
|= ¬(ϕRψ) ≡ ¬ϕU¬ψ.
Законы взаимной зависимости.
-
|= Fϕ ≡ ¬G¬ϕ;
-
|= Gϕ ≡ ¬F¬ϕ;
-
|= ϕUψ ≡ ¬(¬ϕR¬ψ);
-
|= ϕRψ ≡ ¬(¬ϕU¬ψ);
-
|= Fϕ ≡ true Uϕ;
-
|= Gϕ ≡ false Rϕ.
Законы неподвижной точки.
-
|= Fϕ ≡ ϕ ∨ XFϕ;
-
|= Gϕ ≡ ϕ & XGϕ;
-
|= ϕUψ ≡ ψ ∨ (ϕ & X(ϕUψ);
-
|= ϕRψ ≡ ψ & (ϕ ∨ X(ϕRψ).
Определение LTS