- •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) после исполнение оператора
Исчисление вычислимых предикатов ― множество вычислимых формул языка исчисления предикатов
― язык CCP (Calculus of Computable Predicates)
―ядро для построения языка программирования для невзаимодействующих программ
Необходимо построить формальную операционную и логическую семантику языка CCP и определить условия однозначности программ.
На базе CCP методом последовательного расширения строится язык предикатного программирования P
Система типов данных
Тип ― множество значений, имя типа
Система типов: примитивные типы, подмножество типа и структурные типы
Примитивные типы: логический BOOL, целый INT, вещественный REAL и литерный CHAR.
Базисные предикаты: +(x, y: z) z = x + y, |
- |
(x, y: z) z = x - y, -(x: y) y = -x, |
|
<(x, y: b) b = x < y и др. |
|
Предикаты равенства =(x: y) y = x и |
|
=(x, y: b) b = (x = y) для всех примитивных типов |
|
Предикаты ConsIntZero( : x) x = 0 ConsIntOne( : x) x = 1
x переменная типа T, d возможно пустой набор переменных – параметров типа
Подмножество типа T на базе предиката P(x, d)
S = Subset(T, x, P, d) = {x T | P(x, d)} |
(3.3) |
Subset стандартное имя, P вычислимый, d параметры типа
NAT = Subset(INT, x, GE0) = {x INT | x 0}.
DIAP(n) = Subset(INT, x, IN1_n, n) = {x INT | x 1 x n}
Множество подмножеств конечного типа X: |
|
Z = Set(X) = {z | z X} |
(3.6) |
Конструктор ConsSetEmpty( : z) z = |
|
Конструктор ConsSetElem(x : z) z = {x} |
|
Предикат CompSet(z, x: b) b = x z |
|
Предикатный тип |
|
Z = Pred(D: E) = { (d: e) | d D, e E, - вычислимый} |
(3.7) |
― множество вычислимых предикатов вида (d: e) для непересекающихся списков переменных d и e
Z = { (d: e) | d D, e E, CCP}
Конструктор предиката ConsPred будет определен позже
Z ― тип массива D не пуст & типы D конечны &Z d D e (d: e)
(d: e) ― массив с индексом d и элементом массива e
Конструктор предиката ConsArray будет определен позже Деструктор CompArray(a, i: x) x = a(i) a(i: x)
Произвольный тип либо примитивный, либо вводится следующим определением:
<имя типа> = <типовый терм>
Z = Subset(T, x, P, d) |
(3.3) |
Z = X Y |
|
(3.4) |
|
Z = X + Y |
(3.5) |
Z = Set(X) |
(3.6) |
Z = Pred(D: E) |
(3.7) |
Z, T, X, Y, D, E ― имена типов, примитивных или определяемых.
Рекурсивные типы данных
Z = Subset(T, x, P, d) |
(1) |
Z = X Y |
(2) |
Z = X + Y |
(3) |
Z = Set(X) |
(4) |
Z = Pred(D: E) |
(5) |
Xk = φk(X1, X2,…, Xn, T1, T2,…, Ts
типовый терм φ(X, Y)
); k = 1,…,n; n > 0, s≥0 |
(3.8) |
― система типовых уравнений
X = (X1, X2,…, Xn), φ = (φ1, φ2,…, φn)
X = φ(X) ― векторная форма |
(3.9) |
(Γ, , ) ― множество типов; Z Γ. Z ― нижняя грань Вектора типов X Y k=1..n (Xk Yk)
= ( , ,…, ) ― нижняя грань
(Φ, , ) ― множество векторов типов
Лемма. (Φ, , ) является нижней полурешеткой
X0 = , Xm+1 = φ(Xm), m 0. (3.10) Лемма. {Ym}m 0 возрастающая цепь типов.
a m 0Ym ( k. n>k. a Yn)
Лемма. Произведение Y Z и объединение Y + Z непрерывны относительно вхождений компонентных типов Y и Z.
{Ym}m 0 и {Zm}m 0 возрастающие цепи типов.m 0(Ym Zm) = ( m 0Ym) ( m 0Zm).
Лемма 3.1. Функция φ системы (3.9) определений рекурсивных типов X = φ(X) является непрерывной относительно произведения и объединения.
По теореме Клини решением системы X = φ(X) является наименьшая неподвижная точка, определяемая как m 0 Xm, при условии, что рекурсия реализуется через произведение и объединение
Запрещается рекурсия
Y = Q(Subset(H(Y))) Z = Q(Set(H(Z)))
A = Q(PRED(H(A), …: …)
B = Q(PRED(…: H(B), …),
где Q и H ― некоторые функционалы, представленные типовыми термами
Логическая и операционная семантика
Программа ― оператор S(x: y) на языке CCP
x и y наборы переменных, аргументы и результаты. Логика программы ― предикат L(S(x: y))
Корректность логики программы (согласованность логической и операционной семантики):
x, y. L(S(x: y)) исполнение оператора S. исполнение завершается &
значения при завершении есть x и y.
Необходимо построить формальную операционную и логическую семантику языка CCP и определить условия однозначности программ.
Структура программы на языке CCP
Программа ─ набор определений предикатов Определение A K предикат A , оператор K
параллельный оператор, оператор суперпозиции, условный оператор
Вызов предиката
(d1, d2, …, dn : e1, e2, …, em) (3.1)
φ ─ имя предиката или переменной предикатного типа, n 0, m > 0, d1, d2, …, dn ─ имена переменных ─ аргументы вызова, e1, e2, …, em ─ результаты вызова
Вычисление предиката
Вызов φ(d: e), где d = d1, d2, …, dn, e = e1, e2, …, em – наборы переменных
n = 0 – вызов предикта соответствует константе
Значение φ(d) φ(d: b) , где b ─ переменная логического типа
Определение предиката A(x: y) K(x: y) (3.2)
A имя предиката; набор x аргументы предиката, набор y результаты предиката, K(x: y) – оператор.
Предикат – определяемый, базисный, значение переменной.
Тип данных определяет набор базисных предикатов со значениями типа Система типов определяет совокупность всех базисных предикатов