Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lectures / lecture2.ppt
Скачиваний:
9
Добавлен:
06.06.2015
Размер:
264.7 Кб
Скачать

3. Класс простых процессов.

База – язык объектно-ориентированных программ.

Дополнительно - loop {A(s, x: s’, y)}.

s – переменные, модифицируемые в цикле Пример. Системы автоматического управления

4. Класс реактивных систем. База – язык простых процессов.

Дополнительно - send m(e), receive m(x){ B }else C, with (y) { B }, F || G.

Спецификация. Машина конечных мета-состояний. Язык темпоральной логики. Условия живости,

безопасности, справедливости, ….

……………………………

3. Язык исчисления вычислимых предикатов

Исчисление вычислимых предикатов ― множество вычислимых формул языка исчисления предикатов

― язык CCP (Calculus of Computable Predicates)

ядро для построения языка предикатного программирования

Структура программы на языке 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) – оператор.

Предикат – определяемый, базисный, значение переменной.

Тип данных определяет набор базисных предикатов со значениями типа

Система типов определяет совокупность всех базисных предикатов

Система типов данных

Тип множество значений, имя типа

Система типов: примитивные типы, подмножество типа и структурные типы

Примитивные типы: логический 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}

Структурный тип ― композиция компонентных типов

Структурные типы: произведение типов (кортеж), объединение типов, множество подмножеств типа, предикатный тип (в т.ч. массив).

Базисные предикаты конструкторы, деструкторы и другие операции

Конструктор по значениям компонентных типов строит значение структурного типа.

Деструктор для значения структурного типа определяет соответствующие значения компонент.

Нет типов указателей !

Произведение типов

Z = X Y

= {(x, y) | x X, y Y}

(3.4)

x X, y Y, z Z

 

Конструктор ConsStruct(x, y: z) z = (x, y) Деструктор CompStruct(z: x, y) z = (x, y)

Объединение типов

 

Z = X + Y = {(1, x) | x X} {(2, y) | y Y}

(3.5)

Первая компонента (1 или 2) ― тег значения Конструктор ConsUnion1(x: z) z = (1, x). Конструктор ConsUnion2(y: z) z = (2, y)

Деструктор CompUnion(z: i, x, y) либо z = (1, x) и i = 1, либо z = (2, y) и i = 2. Если i = 1, то y не определено. Если i = 2, то x не определено

Множество подмножеств конечного типа 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 ― имена типов, примитивных или определяемых.

Соседние файлы в папке lectures