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

Алгебраические типы на примере списков

list [T: TYPE]: DATATYPE BEGIN null: null?

cons(car: T, cdr: list): cons? END list

null и cons – конструкторы, null? и cons? – распознаватели, car и cdr – поля

выражение CASES: length(s): RECURSIVE nat =

CASES s OF null: 0,

cons(x, y): length(y) + 1

ENDCASES

MEASURE reduce_nat(0, (LAMBDA (x: T), (n: nat): n + 1)) Генерируются 3 теории: list_adt, list_adt_map и list_adt_reduce.

Перечисления

Библиотеки теорий PVS

Стандартная библиотека prelude.pvs

booleans, numbers (real, rational, integer), strings, sets, including definitions and basic properties of finite and infinite sets, functions and relations, equivalences, ordinals, basic definitions and properties of bitvectors, mu calculus, LTL

booleans: THEORY BEGIN

boolean: NONEMPTY_TYPE

bool: NONEMPTY_TYPE = boolean FALSE, TRUE: bool

NOT: [bool -> bool]

AND, &, OR, IMPLIES, =>, WHEN, IFF, <=>:

[bool, bool -> bool]

END booleans

NASA Libraries

algebra: groups, monoids, rings, etc

analysis: real analysis, limits, continuity, derivatives, integrals calculus: axiomatic version of calculus

complex: complex numbers

co structures: sequences of countable length defined as coalgebra datatypes

directed graphs: circuits, maximal subtrees, paths, dags float: floating point numbers and arithmetic

graph theory: connectedness, walks, trees, Menger's Theorem ints: integer division, gcd, mod, prime factorization, min, max interval: interval bounds and numerical approximations

lnexp: logarithm, exponential and hyperbolic functions

lnexp_fnd: foundational definitions of logarithm, exponential and hyperbolic functions

NASA Libraries (cont)

orders: abstract orders, lattices, fixedpoints

reals: summations, sup, inf, sqrt over the reals, abs lemmas scott: Theories for reasoning about compiler correctness

series: power series, comparison test, ratio test, Taylor's theorem sets_aux: powersets, orders, cardinality over finite sets sigma_set: summations over countably finite sets

structures: bounded arrays, finite sequences and bags

topology: continuity, homeomorphisms, connected and compact spaces, Borel sets/functions

trig: trigonometry definitions, identities, approximations

trig_fnd: foundational development of trigonometry: proofs of trig axioms

vectors: basic properties of vectors

while: Semantics for the Programming Language "while"

Prover

--сочетание в PVS языка логики высокого уровня и мощного автоматического prover’a

--комплекс средств поддержки построения доказательств в форме, удобной для восприятия, в целях разработки, отладки, анализа и визуализации доказательств

--реализует значительно бо’льшую степень автоматизации и бо’льшую степень контроля, по сравнению с другими prover’ами

Команды доказательства могут быть скомбинированы в стратегии доказательства.

Доказательства можно редактировать запускать вновь.

Семантический анализ (Type checking) реализуется посредством автоматического доказательства Prover’ом истинности условий, называемых type correctness conditions (TCCs)

Дерево доказательства, вершина цель доказательства, дугашаг доказательства

Каждая цель секвент (sequent) состоит из посылок (antecedents) и следствий (consequents)

{-1} A1

{-2} A2

[-3] A3

………..

----------------

(A1 & A2 & A3 & …) (B1 B2 B3 …)

{1} B1

 

[2] B2

 

{3} B3

 

………..

A1, A2, A3, …B1, B2, B3 ,…

[-3], [2] формулы из родительского секвента, {-1}, {-2}, {1}, {3} новые формулы

Корневая вершина цель вида ├ A, где A теорема, которую нужно доказать.

Если доказано, что секвент истинный, то ветвь дерева на нем заканчивается.

Есть разные правила. Наиболее простое: если одна из посылок ложная, то секвент истинный. Задача prover’a построить полное дерево доказательства

Пусть имеется секвент A├ B & C

Команда split порождает два секвента-потомка: A├ B и A├ C

Команда правило (шаг) доказательства Применяемые команды доказательства сохраняются.

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

Некоторые команды достаточно гибкие и мощные

Логика PVS

-- исчисление секвентов Г, - последовательности формул,

A, B – отдельные формулы

Структурные правила Пропозиционные правила Правила для равенства Правила для кванторов Правила для IF

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