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

Массивы

type ar1_5 = array (int, 1..5);

ar1_5 squ;

squ = for (var i) i*i; ar1_5 r = for (i) 100 - i;

type Ar(nat k) = array (real, 1..k);

F (nat n, Ar(n) x: Ar(n+1) x')

{ x' = for (var j) { case 1..n : x[j] + 1 case n + 1 : 0 } }

type MATR(nat k) = array(real, 1..k, 1..k); perm_lines(nat n, MATR(n) a, nat k, m : MATR(n) a' ) pre 1 <= k < m <= n

{ a' = a with for (i, j) { case (k, 1..n): a[m, j] case (m, 1..n): a[k, j]

}

}

[<тип массива>] ( [<список выражений>] )

<выражение-массив> + <выражение-массив>

<вырезка массива> ::= <выражение-массив>[<суженный тип индексов>]

<суженный тип индексов> ::= <изображение типа>

Формулы

ФОРМУЛА ::= ЛОГИЧЕСКОЕ-ВЫРАЖЕНИЕ | ( ФОРМУЛА ) | [КВАНТОРНАЯ-ЧАСТЬ] ФОРМУЛА | ! ФОРМУЛА | ФОРМУЛА & ФОРМУЛА | ФОРМУЛА or ФОРМУЛА | ФОРМУЛА -> ФОРМУЛА | ФОРМУЛА <-> ФОРМУЛА

ЛОГИЧЕСКОЕ-ВЫРАЖЕНИЕ ::= ВЫРАЖЕНИЕ КВАНТОРНАЯ-ЧАСТЬ ::=

( КВАНТОР СПИСОК-ПОДКВАНТОРНЫХ-ПЕРЕМЕННЫХ ) [КВАНТОРНАЯ-ЧАСТЬ]

КВАНТОР ::= ! | ? | forall | exists

“!” - квантор всеобщности, а “?” - квантор существования. СПИСОК-ПОДКВАНТОРНЫХ-ПЕРЕМЕННЫХ ::=

[ИЗОБРАЖЕНИЕ-ТИПА [:blank:]] ПОДКВАНТОРНАЯ-ПЕРЕМЕННАЯ (, ПОДКВАНТОРНАЯ-ПЕРЕМЕННАЯ)*

ПОДКВАНТОРНАЯ-ПЕРЕМЕННАЯ ::= ИДЕНТИФИКАТОР

Императивное расширение

операторы перехода и помеченные операторы Для предиката-функции допускается отсутствие результатов

ОПЕРАТОР-ИМПЕРАТИВНОГО-РАСШИРЕНИЯ ::=

ГРУППОВОЙ-ОПЕРАТОР-ПРИСВАИВАНИЯ | break | ОПЕРАТОР-FOR | ОПЕРАТОР-ЕСЛИ

ГРУППОВОЙ-ОПЕРАТОР-ПРИСВАИВАНИЯ ::= | СПИСОК-ПЕРЕМЕННЫХ | = | СПИСОК-ВЫРАЖЕНИЙ |

ОПЕРАТОР-FOR ::= for ( ЗАГОЛОВОК-ЦИКЛА )

{ ОПЕРАТОР [; ОПЕРАТОР] }

ЗАГОЛОВОК-ЦИКЛА ::= [[ИЗОБРАЖЕНИЕ-ТИПА]

ПАРАМЕТР-ЦИКЛА = ВЫРАЖЕНИЕ] ; [УСЛОВИЕ-ЗАВЕРШЕНИЯ] ; [ПЕРЕСЧЕТ-ПАРАМЕТРА]

ПАРАМЕТР-ЦИКЛА

::= ИДЕНТИФИКАТОР

УСЛОВИЕ-ЗАВЕРШЕНИЯ

::= ВЫРАЖЕНИЕ

ПЕРЕСЧЕТ-ПАРАМЕТРА

::= ОПЕРАТОР

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