- •26.09.12 Лекция 2
- •Основные свойства программы:
- •Логика программы
- •Логика базисных операторов
- •Логика оператора цикла
- •Корректность логики программы
- •Логика по всей программе
- •Аппроксимация логики программы
- •x, y ― наборы переменных Оператор S(x: y)
- •2. Задача дедуктивной
- •Программа – оператор S(x, y)
- •Предикат A(x, y) является однозначным в области X, если:
- •Теорема 2.1 тождества спецификации и программы
- •Докажем истинность формулы L(S(x, y)) Q(x, y). Поскольку истинны P(x) и формула (2.6),
- •Лемма 2.9. Допустим, программа (2.1) является корректной, а ее спецификация однозначной. Тогда истинна
- •Структура множества программ.
- •2. Класс объектно-ориентированных программ.
- •3. Класс простых процессов.
- •3. Язык исчисления вычислимых предикатов
- •Исчисление вычислимых предикатов ― множество вычислимых формул языка исчисления предикатов
- •Структура программы на языке CCP
- •Система типов данных
- •Структурный тип ― композиция компонентных типов
- •Произведение типов
- •Множество подмножеств конечного типа X:
- •Произвольный тип либо примитивный, либо вводится следующим определением:
- •Тип “подмножество типа” может быть параметризован набором переменных d
- •Примеры рекурсивных типов
Тип “подмножество типа” может быть параметризован набором переменных d
Структурный тип параметризован, если параметризован один из его компонентных типов. В качестве параметра может выступать также имя типа.
Если <имя типа>, встречающееся в правой части определения типа, не есть имя примитивного типа и этот тип не объявлен как параметр, то должно существовать определение для этого типа
Замкнутая совокупность определений типов ― любой встречающийся тип либо является примитивным, либо имеет определение, либо считается параметром для некоторых типов из совокупности определений
Рекурсивный тип ― определение типа прямо или косвенно, через совокупность определений, использует этот тип
Примеры рекурсивных типов
Специальный тип NIL = { nil }; nil обозначает пустую последовательность
Тип последовательности, составленной из элементов типа T:
Seq(T) = NIL + (T Seq)
Тип списка LIST для языка Лисп: LIST = Seq(ATOM)
ATOM = NIL + NUM + SYMBOL + LIST NUM = INT + REAL
SYMBOL = STRING STRING = Seq(CHAR)