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

Описания формул

Виды формул: аксиомы (axioms), допущения (assumptions), теоремы (theorems) и утверждения- облигации (obligations)

Команда lemma работает со всеми видами формул

AXIOM, POSTULATE – аксиомы

CHALLENGE, CLAIM, CONJECTURE, COROLLARY, FACT, FORMULA, LAW, LEMMA, PROPOSITION, SUBLEMMA, THEOREM - теоремы

ASSUMPTION – допущения

Свободные переменные – под квантором FORALL

Типы языка спецификаций PVS

сильная типизация структурная эквивалентность

Базисные типы: bool, number (real, rat, int, nat)

-в стандартной библиотеке

Subtypes: A: TYPE = {x: B | p(x)}

Function types: [number -> number]

Record types: [# flag: boolean, value: number #]

• Tuple types: [boolean, number]

• Enumeration types: {red, green, blue}

Подтипы

A: TYPE = {x: B | p(x)} A: TYPE = (p)

nat: TYPE = { n: int | n >=0 }

subrange(n, m: int): TYPE = { i: int | n <= i & i <= m }

параметрические типы

FORALL (i:int):

(i >= 0 IMPLIES (EXISTS (j:int): j >= 0 AND j > i)) можно записать короче

FORALL (i:nat): (EXISTS (j:nat): j > i))

где определен в prelude.pvs следующим образом: naturalnumber:

NONEMPTY TYPE = {i:integer | i >= 0} CONTAINING 0 nat: NONEMPTY TYPE = naturalnumber

existence TCC при наличии константы f: [ int -> {x:int | p(x)} ]

с: f

порождает existence TCC

f_TCC1: OBLIGATION (EXISTS (x: int): p(x))

Чтобы гарантировать непустоту типа, применяется

t: TYPE = {x: int | 0 < x AND x < 10} CONTAINING 1 Для леммы

div_form: FORMULA (FORALL (x,y: int):

x /= y IMPLIES (x - y)/(y - x) = -1)

генерируется subtype TCC:

div_form_TCC1: OBLIGATION

(FORALL (x,y: int): x /= y IMPLIES (y - x) /= 0)

Типы функций

Три эквивалентных формы: [t1, ..., tn -> t] FUNCTION[t1, ..., tn -> t] ARRAY[t1, ..., tn -> t]

Тип предиката pred[t] и тип множества setof[t] есть тип [t -> bool].

Тип функции [t1,...,tn -> t] есть подтип типа [s1,...,sm -> s] t – подтип s, n = m и si = ti для i =1,..., n.

Генерируются TCC, называемые domain mismatch TCCs p,q: pred[int]

f:[{x: int | p(x)} -> int]

g:[{x: int | q(x)} -> int]

h:[int -> int]

eq1: FORMULA f = g eq2: FORMULA f = h

p,q: pred[int]

f:[{x: int | p(x)} -> int]

g:[{x: int | q(x)} -> int]

h:[int -> int]

eq1: FORMULA f = g eq2: FORMULA f = h

Генерируются TCC:

eq1_TCC1: OBLIGATION

(FORALL (x1: {x : int | q(x)}, y1 : {x : int | p(x)}) :

q(y1) AND p(x1))

eq2_TCC1: OBLIGATION

(FORALL (x1: int, y1 : {x : int | p(x)}) : TRUE AND p(x1))

Типы произведения (tuples), n-ки

[t1, ..., tn] , где ti – изображение типа (типовое выражение). Нульмерные тупли запрещены.

(1, TRUE, (LAMBDA (x:int): x + 1)) – выражение типа [int, bool, [int -> int]].

Функции проекции:

`1, `2, . . . , (или proj 1, proj 2, . . . )

i-ая проекция имеет тип [[t1, ..., tn] -> ti].

Тип тупля пустой, если тип одной из компонент пустой

[t1, ..., tn -> t] и [[t1, ..., tn] -> t] эквивалентны;

Тип записи

[# a1: t1, ..., an: tn #] ai – поле

ti – тип поля (изображение типа). x ’ ai – операция взятия поля

Тип записи пуст, если тип одной из компонент пуст

Порядок указания полей несущественен

Зависимые (dependent) типы

Функции, тупли и записи могут быть зависимыми – одна из компонент может зависеть от предыдущих

rem: [nat, d: {n: nat | n /= 0} -> {r: nat | r < d}] pfn: [d:pred[dom], [(d) -> ran]]

stack: [# size: nat, elements: [{n:nat | n < size} -> t] #]

subp(i: int, (j: int | i >= j)): RECURSIVE int = (IF (i=j) THEN 0 ELSE (subp(i, j+1)+1) ENDIF) MEASURE i - j

Виды выражений

Logic: TRUE, FALSE, AND, OR, NOT, IMPLIES, FORALL, EXISTS, =

Arithmetic: +, -, *, /, <, <=, >, >=, 0; 1; 2; : : :

Function application, abstraction ( -expression), and update

Coercions - приведение

Record construction, selection, and update Tuple construction, projection, and update:

id WITH [(0):=42,(1):=12]

IF-THEN-ELSE, COND:

IF c THEN e1 ELSE e2 ENDIF

CASES:

COND c1->e1, c2->e2, c3->e3 ENDCOND

Tables, Inductive definitions

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