• Nie Znaleziono Wyników

Ekstrakcja programów w Coq

N/A
N/A
Protected

Academic year: 2021

Share "Ekstrakcja programów w Coq"

Copied!
1
0
0

Pełen tekst

(1)

Ekstrakcja programów w Coq

1. Wstęp

Coq jest interaktywnym systemem wspomagającym dowodzenie twierdzeń. Pozwala precyzyjnie for- mułować twierdzenia matematyczne i mechanicznie sprawdzać dowody ich poprawności, pomaga znaleźć dowody i ekstrahuje programy z formalnych dowodów ich specyfikacji. Coq działa w teorii rachunku konstrukcji induktywnych, który jest wariantem rachunku konstruktorów. Coq nie jest programem do automatycznego dowodzenia twierdzeń, ale zawiera pewne taktyki z zakresu automatycznego dowodzenia twierdzeń i procesy decyzyjne. Coq implementuje też zależny typowy język programowania.

Więcej do poczytania o Coq tutaj:

http://coq.inria.fr

Tam też do znalezienia oprogramowanie i tutoriale. Pomocne mogą okazać się też moje wykłady z logiki:

http://www.math.us.edu.pl/˜pgladki/teaching

Celem niniejszego projektu jest zapoznanie się z systemem Coq i zobaczenie, jak można wykorzystać go do weryfikacji programów.

2. Zadanie Definiujemy typ

Inductive bintree : Set :=

leaf : nat -> bintree

— node : bintree -> bintree -> bintree.

”Obraz zwierciadlany” takiego drzewa otrzymujemy wymieniając lewe i prawe poddrzewa na każdym poziomie zagnieżdżenia (czyli rekursyjnie).

(1) Sformułuj to pojęcie indukcyjnym predykatem Inductive is mirror: bintree -> bintree -> Prop

(2) Skonstruuj metodą ekstrakcji program zwracający obraz zwierciadłowy argumentu (czyli sformu- łuj odpowiednie twierdzenie w Coq’u, przeprowadź dowód tego twierdzenia i zastosuj komendę Recursive Extraction (uwaga na konstrukcyjnść używanych typów!)).

(3) Zapisz rezultat (komendy Cd i Extraction odpowiednio sparametryzowane).

(4) Napisz program w Coq’u (Fixpoint) realizujący obraz zwierciadlany argumentu.

(5) Przeprowadź dowód jego poprawności.

(6) Wykonaj ekstracje tego programu i porównaj z rezultatem poprzedniej ekstrakcji. Co stwierdzasz?

Czy potrafisz to sobie wytłumaczyć?

Cytaty

Powiązane dokumenty

Celem tego artykułu jest przedstawienie pełnego dowodu Twierdzenia 0.1 według idei Richmana.. Założyliśmy w Twierdzeniu 0.1, że k jest ciałem

Informuje, że 25 maja odbędzie się test z działu „Twierdzenie Pitagorasa”.. środa 13

ocena końcowa stanowiła będzie średnią arytmetyczną z ocen za poszczególne ćwiczenia wystawionych na podstawie sprawozdań z ćwiczeń;.. nieobecność na ćwiczeniach

UVB (290 – 320 nm) - penetruje naskórek oraz skórę właściwą; w wyniku działania tego promieniowania powstaje opalenizna oraz poparzenia słoneczne (opóźnione

Jest to zatem przy- kªad funkcji, która jest rekursywna, ale nie prymitywnie rekurencyjna, co dowodzi, »e klasa funkcji rekursywnych jest istotnie wi¦ksza ni» klasa funkcji

In this paper we give an alternative simple proof of a Theorem due to Douady and Earle concerning homeomorphic extension of automorphisms of the unit orcie T.. Krzyż we

Z twierdzenia o stałej wynika, że jeżeli teoria T jest niesprzeczna, to nie uda nam się utworzyć dowodu sprzeczności korzystając z nowych stałych.. Gdyby istniał dowód

Jego podstawowym załoŜeniem jest nadzorowanie, uaktualnianie i wymiana procedur automatycznej interpretacji sygnału prowadzona zdalnie w oparciu o dynamikę stanu