Obliczenia i wnioskowanie w systemie Coq

Podobne dokumenty
Logika Stosowana. Wykład 2 - Logika modalna Część 2. Marcin Szczuka. Instytut Informatyki UW. Wykład monograficzny, semestr letni 2016/2017

Logika Stosowana. Wykład 1 - Logika zdaniowa. Marcin Szczuka. Instytut Informatyki UW. Wykład monograficzny, semestr letni 2016/2017

Struktury formalne, czyli elementy Teorii Modeli

Logika matematyczna w informatyce

Tautologia (wyrażenie uniwersalnie prawdziwe - prawo logiczne)

Lekcja 3: Elementy logiki - Rachunek zdań

Metalogika i Coq. sprawozdanie z projektu. Paweł Wieczorek

Paradygmaty dowodzenia

Adam Meissner.

Wykład 2: Rachunek lambda

Logika Stosowana. Wykład 7 - Zbiory i logiki rozmyte Część 3 Prawdziwościowa logika rozmyta. Marcin Szczuka. Instytut Informatyki UW

Podstawy Sztucznej Inteligencji (PSZT)

Programowanie funkcyjne Wykład 14. Rachunek λ z typami prostymi

Elementy logiki. Wojciech Buszkowski Wydział Matematyki i Informatyki UAM Zakład Teorii Obliczeń

Podstawowe Pojęcia. Semantyczne KRZ

Logika intuicjonistyczna

Myślenie w celu zdobycia wiedzy = poznawanie. Myślenie z udziałem rozumu = myślenie racjonalne. Myślenie racjonalne logiczne statystyczne

Dowody założeniowe w KRZ

Wstęp do Programowania potok funkcyjny

LOGIKA Dedukcja Naturalna

Metoda tabel semantycznych. Dedukcja drogi Watsonie, dedukcja... Definicja logicznej konsekwencji. Logika obliczeniowa.

Elementy rachunku lambda. dr hab. inż. Joanna Józefowska, prof. PP 1

vf(c) =, vf(ft 1... t n )=vf(t 1 )... vf(t n ).

Składnia rachunku predykatów pierwszego rzędu

Metoda Tablic Semantycznych

Systemy ekspertowe i ich zastosowania. Katarzyna Karp Marek Grabowski

Twierdzenia Gödla dowody. Czy arytmetyka jest w stanie dowieść własną niesprzeczność?

Rachunek logiczny. 1. Język rachunku logicznego.

Wykład 11b. System aksjomatyczny Klasycznego Rachunku Predykatów. Aksjomaty i reguły inferencyjne

Np. Olsztyn leży nad Łyną - zdanie prawdziwe, wartość logiczna 1 4 jest większe od 5 - zdanie fałszywe, wartość logiczna 0

Wstęp do Programowania potok funkcyjny

Rachunek zdań. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak

ROZDZIAŁ 1. Rachunek funkcyjny

CsPL, system do weryfikacji bezpieczeństwa programów p.1/20

Programowanie w Logice Przykłady programów. Przemysław Kobylański

Wykład 11a. Składnia języka Klasycznego Rachunku Predykatów. Języki pierwszego rzędu.

Algebrę L = (L, Neg, Alt, Kon, Imp) nazywamy algebrą języka logiki zdań. Jest to algebra o typie

1. Wstęp do logiki. Matematyka jest nauką dedukcyjną. Nowe pojęcia definiujemy za pomocą pojęć pierwotnych lub pojęć uprzednio wprowadzonych.

Logika Matematyczna (2,3)

PRZEWODNIK PO PRZEDMIOCIE

Logika. Michał Lipnicki. 15 stycznia Zakład Logiki Stosowanej UAM. Michał Lipnicki () Logika 15 stycznia / 37

Teoretyczne Podstawy Języków Programowania Wykład 1. Rachunek zdań

Wprowadzenie Komputerowo wspomagane dowodzenie. Coq i protokóª NSSK. Piotr Iwaniuk. 21 marca 2012

Modele Herbranda. Logika obliczeniowa. Joanna Józefowska. Szukamy modelu. Przykład Problemy. Model Herbranda

Andrzej Wiśniewski Logika I Materiały do wykładu dla studentów kognitywistyki. Wykłady 12 i 13. Dowód i dowodzenie w KRP. Tezy KRP

Matematyka ETId Elementy logiki

RACHUNEK ZDAŃ 7. Dla każdej tautologii w formie implikacji, której poprzednik również jest tautologią, następnik także jest tautologią.

Semantyka rachunku predykatów pierwszego rzędu. Dziedzina interpretacji. Stałe, zmienne, funkcje. Logika obliczeniowa.

Egzamin z logiki i teorii mnogości, rozwiązania zadań

Logika Temporalna i Automaty Czasowe

Rachunek zdań i predykatów

Drzewa Semantyczne w KRZ

STANDARDOWE FUNKCJE PRZYNALEŻNOŚCI. METODY HEURYSTYCZNE wykład 6. (alternatywa dla s) (zdef. poprzez klasę s) GAUSSOWSKA F.

PRZEWODNIK PO PRZEDMIOCIE

Wstęp do Programowania potok funkcyjny

Metody dowodzenia twierdzeń i automatyzacja rozumowań Tabele syntetyczne: definicje i twierdzenia

Programowanie deklaratywne

Przykładowe dowody formuł rachunku kwantyfikatorów w systemie tabel semantycznych

Kultura logicznego myślenia

JEZYKOZNAWSTWO. I NAUKI O INFORMACJI, ROK I Logika Matematyczna: egzamin pisemny 11 czerwca Imię i Nazwisko:... FIGLARNE POZNANIANKI

JAO - Wprowadzenie do Gramatyk bezkontekstowych

-termami -wyrażeń pre-termami abstrakcją aplikacją zmiennych wolnych zmienną związaną domknięte

LOGIKA Klasyczny Rachunek Zdań

Wstęp do Programowania potok funkcyjny

Wykład 6. Reguły inferencyjne systemu aksjomatycznego Klasycznego Rachunku Zdań

Programowanie w logice Wykład z baz danych dla

Definicja: zmiennych zdaniowych spójnikach zdaniowych:

Andrzej Wiśniewski Logika I Materiały do wykładu dla studentów kognitywistyki. Wykład 9. Koniunkcyjne postacie normalne i rezolucja w KRZ

3. Wykład 3: Dowody indukcyjne, strategie dowodowe Dowody indukcyjne. Dotychczas zobaczyliśmy w jaki sposób można specyfikować definicje

Typy, klasy typów, składnie w funkcji

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Wykład ze Wstępu do Logiki i Teorii Mnogości

Programowanie funkcyjne. Wykªad 13

Wprowadzenie do logiki Zdania, cz. III Język Klasycznego Rachunku Predykatów

Logika. Logika. Z czego się składa: model dziedzina, o której własnościach wnioskujemy,

Kultura logiczna Klasyczny rachunek zdań 2/2

Klasyczny rachunek predykatów

Klasy Obiekty Dziedziczenie i zaawansowane cechy Objective-C

1 Logika Zbiory Pewnik wyboru Funkcje Moce zbiorów Relacje... 14

Imię i nazwisko:... OBROŃCY PRAWDY

Logika Temporalna i Automaty Czasowe

Programowanie funkcyjne Wykład 13. Siła wyrazu rachunku lambda

Logika Stosowana. Wykład 2 - Logika modalna Część 3. Marcin Szczuka. Instytut Informatyki UW. Wykład monograficzny, semestr letni 2017/2018

Ziemia obraca się wokół Księżyca, bo posiadając odpowiednią wiedzę można stwierdzić, czy są prawdziwe, czy fałszywe. Zdaniami nie są wypowiedzi:

Wstęp do Programowania potok funkcyjny

Programowanie Funkcyjne. Marcin Kubica Świder,

Programowanie. Lista zadań nr 15. Na ćwiczenia 11, 19 i 23 czerwca 2008

Programowanie deklaratywne i logika obliczeniowa

System BCD z κ. Adam Slaski na podstawie wykładów, notatek i uwag Pawła Urzyczyna. Semestr letni 2009/10

1. Elementy logiki matematycznej, rachunek zdań, funkcje zdaniowe, metody dowodzenia, rachunek predykatów

Logika. Michał Lipnicki. 18 listopada Zakład Logiki Stosowanej UAM. Michał Lipnicki Logika 18 listopada / 1

Logika pragmatyczna. Logika pragmatyczna. Kontakt: Zaliczenie:

Języki programowania deklaratywnego

Wstęp do logiki. Klasyczny Rachunek Zdań III

III rok kognitywistyki UAM,

Metalogika (1) Jerzy Pogonowski. Uniwersytet Opolski. Zakład Logiki Stosowanej UAM

Podstawy Programowania 2

Elementy logiki matematycznej

Sztuczna inteligencja i logika. Podsumowanie przedsięwzięcia naukowego Kisielewicz Andrzej WNT 20011

Uwagi wprowadzajace do reguł wnioskowania w systemie tabel analitycznych logiki pierwszego rzędu

Transkrypt:

Obliczenia i wnioskowanie w systemie Coq Małgorzata Biernacka Instytut Informatyki UWr Wykład 2 05.03.2013 1

Pewne pojęcia podstawowe dowód formalny logika konstruktywna izomorfizm Curry ego-howarda, czyli odpowiedniość między systemem wnioskowania a systemem typów (typy-formuły, termy-dowody, obliczenie-normalizacja) dowodzenie znajdowanie (jakiegokolwiek) termu-dowodu danego typu (zwykle za pomocą taktyk, ale niekoniecznie) programowanie konstruowanie (konkretnego) termu-programu (zwykle wprost, ale niekoniecznie) 2

System Coq implementuje (i rozszerza) rachunek konstrukcji z definicjami indukcyjnymi: Calculus of Constructions, Th. Coquand 1984, Calculus of Inductive Constructions, Ch. Paulin 1991 (w skrócie CIC lub pcic) implementacja w języku OCaml narzędzia: coqc - kompilator (.v.vo) coqtop - interpreter coqide - interfejs graficzny coqchk - narzędzie do weryfikacji dowodów coqdoc, coqdep, coq makefile etc. Coq jest intensywnie rozbudowywany i rozszerzany 3

Bezpieczeństwo i poprawność systemu poprawność implementacji jądro Coqa typechecker dla pcic zaimplementowany niezależnie od reszty systemu, w stylu czysto funkcyjnym Coq spełnia kryterium de Bruijna: każdy dowód jest weryfikowalny w minimalnym podsystemie jądrze Coqa poprawność względna w pewnym momencie zakładamy poprawność: implementacji jądra Coqa, kompilatora OCamla i poprawność działania komputera niesprzeczność systemu logicznego pcic jest niesprzeczny aksjomaty użytkownika mogą powodować, że system staje się sprzeczny bezpieczne aksjomaty (EM, PI, AC, FE) 4

Język Gallina język specyfikacji Coqa obejmuje termy rachunku konstrukcji pcic wszystkie termy są typowane termy i typy należą do tej samej kategorii syntaktycznej termów w języku Gallina zapisujemy programy, specyfikacje, dowody, formuły system typów system wnioskowania (izomorfizm C-H) 5

Sorty: Set, Prop i Type sorty są termami Galliny każdy term ma typ każdy typ należy do pewnego sortu Set jest sortem obliczeniowym, uniwersum typów danych/specyfikacji programów (obiekty sortu Set są typami programów) Prop jest sortem logicznym, uniwersum formuł logicznych (obiekty sortu Prop są typami dowodów) specyfikacje i formuły logiczne są termami Type jest sortem Set i Prop (naprawdę hierarchia Type i ) 6

Podstawowe konstrukcje języka Gallina identyfikatory zmiennych i stałych x sorty Set, Prop, Type produkt zależny forall x : t, u λ abstrakcja fun x : t u aplikacja t u konstrukcja let let x := t in u definicje rekurencyjne fix..., cofix... dopasowanie wzorca match... with... end 7

Podstawowe konstrukcje języka Gallina, c.d. konstrukcje forall x : t, u, fun x : t u wiążą zmienną x w termie u pojęcie zmiennej związanej, zmiennej wolnej, α-równoważności i podstawienia jak w rachunku lambda forall x : t, u reprezentuje kwantyfikator ogólny albo produkt zależny jeśli zmienna x nie występuje w termie u, produkt forall x : t, u zapisujemy jako t u t u oznacza albo typ funkcyjny albo logiczną implikację 8

Reguły typowania dla sortów WF (E ; Γ) WF (E ; Γ) E ; Γ Set : Type i E ; Γ Prop : Type i WF (E ; Γ) i < j E ; Γ Type i : Type j 9

Reguły typowania dla identyfikatorów WF (E ; Γ) WF (E ; Γ) x : T Γ lub x := t : T Γ E ; Γ x : T c : T E lub c := t : T E E ; Γ c : T 10

Reguły typowania dla produktu zależnego WF (E ; Γ) T : s s {Set, Prop, Type} E ; Γ, x : T U : Prop E ; Γ forall x : T, U : Prop WF (E ; Γ) T : s s {Set, Prop} E ; Γ, x : T U : Set E ; Γ forall x : T, U : Set WF (E ; Γ) T : Type i i k E ; Γ, x : T U : Type j j k E ; Γ forall x : T, U : Type k Prop jest niepredykatywny Set jest predykatywny 11

Reguły typowania dla abstrakcji, aplikacji i definicji lokalnej E ; Γ forall x : T, U : s s S E ; Γ, x : T t : U E ; Γ fun x : T t : forall x : T, U E ; Γ t : forall x : U, T E ; Γ u : U E ; Γ t u : T [x u] E ; Γ t : T E ; Γ, x := t : T u : U E ; Γ let x := t in u : U[x T ] 12

Język komend Vernacular deklaracje lokalne i globalne definicje lokalne i globalne definicje indukcyjne twierdzenia, lematy dowody polecenia pomocnicze 13

Deklaracje i definicje globalne (Set) globalna deklaracja Parameter x : bool. > x is assumed globalna definicja Definition square := fun x => x*x. > square is defined Definition cube (x:nat) : nat := x*x*x. > cube is defined 14

Deklaracje i definicje lokalne (Set) używane wewnątrz sekcji (mechanizm bloków) lokalna deklaracja Section Trojmian. Variables a b c d: nat. Definition wartosc x := a*x*x + b*x + c. End Trojmian. Print wartosc. > wartosc = fun a b c x : nat => a * x * x + b * x + c : nat -> nat -> nat -> nat -> nat lokalna definicja Let s := a+b. Definition kw_sumy := s*s. 15

Deklaracje i definicje lokalne (Prop) lokalna deklaracja Hypothesis h : False. (* odpowiednik Variable *) 16

Deklaracje i definicje globalne (Prop) globalna deklaracja Axiom h:false. (* odpowiednik Parameter *) globalna definicja (Theorem, Lemma, Corollary, Fact, Remark) Theorem nat_gt_0: forall n:nat, n>=0. Proof.... Qed. 17

Dowodzenie możemy definiować formuły logiczne i predykaty indukcyjne możemy dowodzić formuł formułą jest każdy term typu Prop dowód formuły A to term, którego typem jest A (C-H izo.) możemy dowód napisać wprost, lub skonstruować go interaktywnie za pomocą taktyk problem szukania dowodu to problem szukania termu o danym typie 18

Dowodzenie cel para złożona z (lokalnego) kontekstu typowania Γ oraz pewnego dobrze uformowanego typu T w tym kontekście (w pewnym środowisku E) dowód celu (Γ, T ) term t taki, że E ; Γ t : T taktyki realizują backward reasoning taktyka komenda, która zastosowana do bieżącego celu g produkuje ciąg nowych celów g 1,..., g n na podstawie reguł typowania (bottom-up) taktyka zawiera przepis na skonstruowanie termu-dowodu dla bieżącego celu g mając termy-dowody dla celów g 1,..., g n każdą komendę kończymy pojedynczą kropką początek dowodu dobrze jest zacząć komendą Proof koniec dowodu zapisujemy komendą Qed lub Save (powoduje sprawdzenie typu i rozszerzenie środowiska) nazwa twierdzenia to identyfikator termu-dowodu 19

Rodzaje taktyk taktyki atomowe (bazowe) kombinacje taktyk bazowych taktyki implementujące heurystyki i procedury decyzyjne (procedury języka taktyk) 20

Taktyki bazowe odpowiadają poszczególnym regułom typowania w pcic taktyki odpowiadające regułom Var, Lam/Let, App: assumption, exact id aksjomat (identyfikator o danym typie jest już w lokalnym kontekście lub w środowisku i chcemy go wykorzystać) intro, intros, intro id, intros id 1,...,id n wprowadzenie hipotezy lub hipotez (implikacja, produkt zależny, let) apply id aplikacja hipotezy lub twierdzenia zdefiniowanego w bieżącym środowisku assert id:form, cut form odwrócenie modus ponens intro, assumption, apply są zupełne dla minimalnej logiki intuicjonistycznej taktyki strukturalne : clear id usunięcie hipotezy id move id after id permutacja hipotez 21

Taktyki dla reguły typowania identyfikatorów x : T E Γ lub x := t : T E Γ E ; Γ x : T taktyki: exact t, assumption 22

Apply dla reguły typowania aplikacji Działanie: E ; Γ t : forall x : U, T E ; Γ u : U E ; Γ t u : T [x u] apply t próbuje zunifikować cel z konkluzją termu t i jeśli unifikacja się powiedzie, generuje nowe podcele odpowiadające przesłankom typu t 23

Intro dla reguły typowania abstrakcji E ; Γ forall x : T, U : s s S E ; Γ, x : T t : U E ; Γ fun x : T t : forall x : T, U taktyki: intro, intros, intro id, intros id 1... id n 24

Intro dla reguły typowania definicji lokalnej E ; Γ t : T E ; Γ, x := t : T u : U E ; Γ let x := t in u : U[x T ] 25

Inne taktyki exact term podanie termu term jako dowodu bieżącego celu contradiction eliminacja fałszu (jeśli False jest w przesłankach, możemy wywnioskować wszystko) reflexivity dowodzi celów postaci t = u, jeśli t i u są konwertowalne auto heurystyka; automatycznie znajduje dowód za pomocą kombinacji taktyk intros+assumption+apply, działa rekurencyjnie trivial prostsza, nierekurencyjna wersja auto tauto procedura decyzyjna dla tautologii intuicjonistycznego rachunku zdań (oparta na rachunku sekwentów Dyckhoffa) intuition, intuition tac korzysta z tauto i stosuje tac do dowodzenia otrzymanych celów split wprowadzenie koniunkcji, równoważności left, right wprowadzenie alternatywy destruct id eliminacja koniunkcji/alternatywy 26

Taktyki złożone (tacticals) Taktyki złożone można uważać za funkcje na taktykach; stanowią termy języka taktyk Ltac złożenie tac 1 ;tac 2 zastosuj tac 1 do bieżącego celu, a następnie zastosuj tac 2 do wszystkich podcelów wygenerowanych przez tac 1 alternatywa tac 1 tac 2 zastosuj tac 1 ; tylko jeśli się nie uda, to zastosuj tac 2 idtac, fail używane w kombinacjach taktyk: idtac nie zmienia celu, fail zawsze zawodzi try tac spróbuj zastosować taktykę tac; jeśli się nie uda, to zostaw cel bez zmian 27

Komendy przydatne przy interaktywnym dowodzeniu Undo, Undo n cofnij ostatni krok (taktykę) dowodu/ostanie n kroków dowodu Show n pokaż n-ty cel z bieżących Focus n wybierz n-ty cel z bieżących Restart zacznij dowód od nowa Admitted porzuć dowodzenie twierdzenia i zadeklaruj je jako aksjomat 28