- •03.10.11 Лекция 3
- •Структура множества программ.
- •2. Класс объектно-ориентированных программ.
- •3. Класс простых процессов.
- •4.Математические основы
- •Отношения порядка
- •a S ― наименьший (наибольший) элемент S Ds S. a s ( s
- •Наименьшая неподвижная точка
- •m 0am lub {am}m 0 ― наименьшая верхняя грань цепи
- •3. Теория невзаимодействующих программ.
- •Исчисление вычислимых предикатов ― множество вычислимых формул языка исчисления предикатов
- •Система типов данных
- •Множество подмножеств конечного типа X:
- •Произвольный тип либо примитивный, либо вводится следующим определением:
- •Рекурсивные типы данных
- •Запрещается рекурсия
- •Логическая и операционная семантика
- •Структура программы на языке CCP
- •Логическая семантика вызова и определения предиката :
- •Вызов предиката
- •Пусть истинно A(z: u). Тогда в соответствии с определением A(x: y) K(x: y)
- •Оператор суперпозиции
- •Допустим, исполнение H(x: y) завершается вычислением y. Докажем истинность H(x: y). Исполнение пары
- •Параллельный оператор
- •Условный оператор
- •Допустим, исполнение H(b, x: y) завершается вычислением y, т.е. исполнение оператора (3.22) завершается
- •Конструктор предиката
- •Лемма 3.7. Пусть имеется вызов ConsPred(x, B: A), причем Cons(B) истинно. Тогда истинно
- •Конструктор массива
- •Доказательство. Пусть истинно Cons(B). Зафиксируем x. В соответствии с (3.30) после исполнение оператора
03.10.11 Лекция 3
Предикатное программирование
Математические основы
Отношения порядка
Наименьшая неподвижная точка
Язык исчисления вычислимых предикатов (прод.)
Типы. Рекурсивные определения типов Логическая и операционная семантика Вызов предиката Оператор суперпозиции Параллельный оператор Условный оператор Конструктор предиката Конструктор массива
Структура множества программ.
Иерархия классов программ
Всякий класс программ представлен тройкой: (программа, спецификация, условия корректности) Программа – язык (базисные языковые конструкции и типы), формальная семантика языка.
Спецификация – язык, формы спецификации. Базисные условия корректности программы относительно спецификации.
1.Класс невзаимодействующих программ. Язык исчисления вычислимых предикатов, формальная операционная семантика, логика программы. Спецификация в виде предусловия и
постусловия: [ P (x), Q(x, y) ]. Формула тотальной
корректности: P(x) [ L(S(x: y)) Q(x, y) ] & y. L(S(x: y))
2. Класс объектно-ориентированных программ.
База – язык невзаимодействующих программ.
Дополнительно - классы, инкапсуляция (внутреннее состояние), наследование.
Спецификация в виде предусловия и постусловия для методов, инвариант класса. Для наследуемых
методов предусловия могут быть ослаблены, а постусловие и инвариант класса – усилены.
Формула тотальной корректности для методов. Выполнимость инварианта после вызова любого метода класса.
3. Класс простых процессов.
База – язык объектно-ориентированных программ.
Дополнительно - loop {A(s, x: s’, y)}.
s – переменные, модифицируемые в цикле Пример. Системы автоматического управления
4. Класс реактивных систем. База – язык простых процессов.
Дополнительно - send m(e), receive m(x){ B }else C, with (y) { B }, F || G.
Спецификация. Машина конечных мета-состояний. Язык темпоральной логики. Условия живости,
безопасности, справедливости, ….
………………………………
4.Математические основы
4.1.Отношения порядка 4.2.Наименьшая неподвижная точка
Отношения порядка
(D, R) ― отношение порядка R D D; a R b (a, b) Ra D. a R a ― рефлексивность
a D. a R a ― иррефлексивностьa,b D. a R b b R a ― симметричность
a,b D. a R b & b R a a = b ― антисимметричностьa,b,c D. a R b & b R c a R c ― транзитивность
(D, ) ― частично упорядоченное множество (чум)
- рефлексивно, антисимметрично, транзитивно;
- частичный порядок
Частичный порядок линейный (или тотальный)
a,b D. (a b b a).
- строгий частичный порядок- иррефлексивно, антисимметрично, транзитивно.
(D, ) ― предпорядок - рефлексивно и транзитивно
(D, R) ― отношение эквивалентности R рефлексивно, симметрично и транзитивно
a S ― наименьший (наибольший) элемент S Ds S. a s ( s S. s a )
(bottom) и (top)
a D ― верхняя грань S D s S. s a a D ― наименьшая верхняя грань S D
b D. (b ― верхняя грань a b) a = lub(S)
least upper bound
a S ― минимальный элемент S D
b S. (b a b=a)
нижняя грань, наибольшая нижняя грань, максимальный элемент
нижняя полурешетка ч у м с нижней гранью полная решетка ч у м с нижней и верхней гранью
Лемма 4.1. Нижняя (верхняя) полурешетка является полной решеткой.
вполне упорядоченное множество ― всякое подмножество имеет нижнюю грань
ч у м со свойством обрыва бесконечно убывающих цепей (well-founded partial order) ― всякое подмножество имеет минимальный элемент
Наименьшая неподвижная точка
(D, , ) ― частично упорядоченное множество с нижней гранью: a D. a - нижняя полурешетка
Последовательность {am}m 0 является возрастающей цепью, если a0 a1 … am … .
F: D→D ― монотонная функция a,b D. ab F(a) F(b)
Лемма 4.2. {Fn( )}n≥0 ― для монотонной функции F
определяют возрастающую цепь:
F( ) F2( ) … Fn( )…
Лемма 4.3. Если F ― монотонна и a0 a1 a2 … ― возрастающая цепь, то F(a0) F(a1) F(a2) … ―
также возрастающая цепь
m 0am lub {am}m 0 ― наименьшая верхняя грань цепи
F: D→D ― непрерывная функция
возрастающей цепи {am}m 0. F( m 0am) = m 0 F( am)
Лемма 4.4. Непрерывная функция является монотонной.
x = F(x) ― решением этого уравнения является неподвижная точка функции F
Теорема 4.1 Клини. F ― непрерывна.
Тогда n 0{Fn( )} ― наименьшая неподвижная точка F
3. Теория невзаимодействующих программ.
Язык исчисления вычислимых предикатов (прод1)