Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
pred_prog_tutor.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
2.03 Mб
Скачать

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ

НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

Факультет информационных технологий

В. И. ШЕЛЕХОВ

Предикатное программирование

Учебное пособие

Новосибирск

2009

УДК 004.432.42

ББК 22.183.492

Ш 427

Шелехов В. И. Предикатное программирование: Учеб. пособие / Новосиб. гос. ун-т. Новосибирск, 2009. 109 с.

ISBN 978-5-94356-878-7

Предназначено для студентов факультета информационных технологий и механико-математического факультета, а также всех желающих изучить формальные методы корректности программ и построения эффективных программ в парадигме предикатного программирования. Пособие включает содержание первого семестра курса «Предикатного программирование».

Издание подготовлено в рамках реализации Программы развития государственного образовательного учреждения высшего профессионального образования «Новосибирский государственный университет» на 2009–2018 годы.

© Новосибирский государственный университет, 2009

ISBN 978-5-94356-878-7 © В. И. Шелехов, 2009

Оглавление

Введение в курс предикатного программирования .............................................................. 5

1. Общее понятие программы ........................................................................................... 6

1.1. Автоматическая вычислимость ....................................................................................... 6

1.2. Спецификация программы .............................................................................................. 7

1.3. Формы спецификации программы .................................................................................. 9

Список литературы ................................................................................................................. 10

2. Корректность программ с предикатной спецификацией ................................... 12

2.1. Предикатная спецификация программы ...................................................................... 12

2.2. Логическая семантика языка программирования ....................................................... 13

2.3. Модель корректности программы ................................................................................ 15

2.4. Система правил доказательства корректности операторов ........................................ 16

2.4.1. Правила для корректного оператора .................................................................. 17

2.4.2. Правила корректности для параллельного оператора ...................................... 17

2.4.3. Правила корректности для оператора суперпозиции ....................................... 17

2.4.4. Правила корректности для условного оператора .............................................. 18

2.5. Система правил вывода программы из спецификации ............................................... 19

2.5.1. Однозначность предикатов ................................................................................. 19

2.5.2. Теорема тождества спецификации и программы .............................................. 19

2.5.3. Правила корректности для параллельного оператора ...................................... 20

2.5.4. Правила корректности для оператора суперпозиции ....................................... 21

2.5.5. Правила корректности для условного оператора .............................................. 22

2.6. Заключение .............................................................................................................. 22

Список литературы ................................................................................................................. 23

3. Математические основы ........................................................................................... 24

3.1. Отношения порядка ....................................................................................................... 24

3.2. Наименьшая неподвижная точка .................................................................................. 25

3.3. Математическая индукция ............................................................................................ 25

Список литературы ................................................................................................................. 26

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

его логическая и операционная семантика .......................................................... 27

4.1. Структура программы на языке CCP ............................................................................ 27

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

4.3. Логическая и операционная семантика языка CCP .................................................... 31

4.4. Семантика вызова предиката ........................................................................................ 32

4.5. Оператор суперпозиции ................................................................................................. 33

4.6. Параллельный оператор ................................................................................................. 34

4.7. Условный оператор ........................................................................................................ 34

4.8. Конструктор предиката .................................................................................................. 35

4.9. Конструктор массива ..................................................................................................... 36

4.10. Программа ..................................................................................................................... 37

4.11. Рекурсивные определения предикатов ....................................................................... 39

4.12. Однозначность предикатов .......................................................................................... 45

Список литературы ................................................................................................................. 46

5. Семантика языка предикатного программирования.

Методы доказательства корректности предикатных программ ...................... 47

5.1. Язык P1: подстановка определения предиката на место вызова ............................... 47

5.2. Язык P2: оператор суперпозиции и параллельный оператор общего вида .............. 48

5.3. Язык P2: другое обобщение оператора суперпозиции ............................................... 50

5.4. Язык P3: выражения ....................................................................................................... 51

5.5. Методы доказательства корректности рекурсивных программ ................................ 53

6. Язык предикатного программирования ................................................................ 58

6.1. Введение .......................................................................................................................... 58

6.2. Лексемы .......................................................................................................................... 59

6.3. Предикаты ....................................................................................................................... 60

6.3.1. Определение предиката ....................................................................................... 60

6.3.2. Спецификация предиката .................................................................................... 62

6.3.3. Вызов предиката ................................................................................................... 62

6.4. Программа ....................................................................................................................... 64

6.5. Операторы ....................................................................................................................... 65

6.6. Выражения ...................................................................................................................... 67

6.7. Типы ................................................................................................................................. 70

6.8. Массивы .......................................................................................................................... 75

6.8.1. Описание типа массива ....................................................................................... 75

6.8.2. Вырезка массива ................................................................................................... 76

6.8.3. Определениеи массива ......................................................................................... 76

6.8.4. Объединение массивов ........................................................................................ 77

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]