Problem sprawdzania typu dla logiki pierwszego rzędu

Podobne dokumenty
Paradygmaty dowodzenia

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

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

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

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 Stosowana. Wykład 2 - Logika modalna Część 2. Marcin Szczuka. Instytut Informatyki UW. Wykład monograficzny, semestr letni 2016/2017

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

Wykład z równań różnicowych

Monoidy wolne. alfabetem. słowem długością słowa monoidem wolnym z alfabetem Twierdzenie 1.

TEORETYCZNE PODSTAWY INFORMATYKI

Matematyka dyskretna. Andrzej Łachwa, UJ, /10

Algebrą nazywamy strukturę A = (A, {F i : i I }), gdzie A jest zbiorem zwanym uniwersum algebry, zaś F i : A F i

Logika intuicjonistyczna

LOGIKA I TEORIA ZBIORÓW

Metody dowodzenia twierdzeń i automatyzacja rozumowań Systemy aksjomatyczne I

Logika Matematyczna (10)

Wykład 4. Określimy teraz pewną ważną klasę pierścieni.

Matematyka dyskretna. Andrzej Łachwa, UJ, /15

Indukcja. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak

Zadanie 1. Czy prawdziwa jest następująca implikacja? Jeśli L A jest językiem regularnym, to regularnym językiem jest też. A = (A, Q, q I, F, δ)

Ciała i wielomiany 1. przez 1, i nazywamy jedynką, zaś element odwrotny do a 0 względem działania oznaczamy przez a 1, i nazywamy odwrotnością a);

Andrzej Wiśniewski Logika II. Materiały do wykładu dla studentów kognitywistyki

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

Indukcja matematyczna. Zasada minimum. Zastosowania.

Adam Meissner.

Indukcja matematyczna

Konstrukcja liczb rzeczywistych przy pomocy ciągów Cauchy ego liczb wymiernych

Metoda Tablic Semantycznych

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

5. Algebra działania, grupy, grupy permutacji, pierścienie, ciała, pierścień wielomianów.

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

Przykłady zdań w matematyce. Jeśli a 2 + b 2 = c 2, to trójkąt o bokach długości a, b, c jest prostokątny (a, b, c oznaczają dane liczby dodatnie),

Trzy razy o indukcji

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

Topologia zbioru Cantora a obwody logiczne

Imię, nazwisko, nr indeksu

O pewnych związkach teorii modeli z teorią reprezentacji

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

Przykładowe zadania z teorii liczb

Rozdział 6. Ciągłość. 6.1 Granica funkcji

JAO - Wprowadzenie do Gramatyk bezkontekstowych

VI. Równania różniczkowe liniowe wyższych rzędów

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

Struktury danych i złożoność obliczeniowa Wykład 7. Prof. dr hab. inż. Jan Magott

Definicja: alfabetem. słowem długością słowa

Algebry skończonego typu i formy kwadratowe

Przykładami ciągów, które Czytelnik dobrze zna (a jeśli nie, to niniejszym poznaje), jest ciąg arytmetyczny:

Podstawowe Pojęcia. Semantyczne KRZ

Układy równań i nierówności liniowych

1 Nierówność Minkowskiego i Hoeldera

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

III rok kognitywistyki UAM,

Andrzej Wiśniewski Logika II. Wykład 6. Wprowadzenie do semantyki teoriomodelowej cz.6. Modele i pełność

Logika Matematyczna (1)

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

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

Rozwiązania, seria 5.

Rozkład figury symetrycznej na dwie przystające

3 Abstrakcyjne kompleksy symplicjalne.

Rachunek logiczny. 1. Język rachunku logicznego.

Uzgadnianie formuł rachunku predykatów

1 Działania na zbiorach

Dystrybucje, wiadomości wstępne (I)

Kongruencje pierwsze kroki

3.Funkcje elementarne - przypomnienie

Definicja: zmiennych zdaniowych spójnikach zdaniowych:

Matematyka dyskretna dla informatyków

Problemy Decyzyjne dla Systemów Nieskończonych

Teoretyczne podstawy informatyki

1. Wykład NWD, NWW i algorytm Euklidesa.

MODELE MATEMATYCZNE W UBEZPIECZENIACH

Matematyka dyskretna. Andrzej Łachwa, UJ, /14

Znaleźć wzór ogólny i zbadać istnienie granicy ciągu określonego rekurencyjnie:

1 Automaty niedeterministyczne

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

Logika Matematyczna (1)

Matematyka dyskretna

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

CO TO SĄ BAZY GRÖBNERA?

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

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

Elementy logiki matematycznej

Matematyka Dyskretna 2/2008 rozwiązania. x 2 = 5x 6 (1) s 1 = Aα 1 + Bβ 1. A + B = c 2 A + 3 B = d

Graf. Definicja marca / 1

METODY DOWODZENIA TWIERDZEŃ I AUTOMATYZACJA ROZUMOWAŃ

LX Olimpiada Matematyczna

Problem. Uzgadnianie wyrażeń rachunku predykatów. Instancja wyrażenia. Podstawienie termu za zmienną. Joanna Józefowska

0.1. Logika podstawowe pojęcia: zdania i funktory, reguły wnioskowania, zmienne zdaniowe, rachunek zdań.

n=0 Dla zbioru Cantora prawdziwe są wersje lematu 3.6 oraz lematu 3.8 przy założeniu α = :

Definicja: zmiennych zdaniowych spójnikach zdaniowych:

Dlaczego nie wystarczają liczby wymierne

Wykład 1. Na początku zajmować się będziemy zbiorem liczb całkowitych

2 Rodziny zbiorów. 2.1 Algebry i σ - algebry zbiorów. M. Beśka, Wstęp do teorii miary, rozdz. 2 11

Jarosław Wróblewski Analiza Matematyczna 1A, zima 2012/13

Matematyka dyskretna. Andrzej Łachwa, UJ, /15

FUNKCJA LINIOWA - WYKRES

Matematyka dyskretna. Andrzej Łachwa, UJ, /14

Początki informatyki teoretycznej. Paweł Cieśla

Dwa równania kwadratowe z częścią całkowitą

Transkrypt:

Uniwersytet Warszawski Wydział Matematyki, Informatyki i Mechaniki Agnieszka Kozubek Nr albumu: 197879 Problem sprawdzania typu dla logiki pierwszego rzędu Praca magisterska na kierunku INFORMATYKA Praca wykonana pod kierunkiem prof. dra hab. Pawła Urzyczyna Instytut Informatyki Maj 2006

Oświadczenie kierującego pracą Potwierdzam, że niniejsza praca została przygotowana pod moim kierunkiem i kwalifikuje się do przedstawienia jej w postępowaniu o nadanie tytułu zawodowego. Data Podpis kierującego pracą Oświadczenie autora (autorów) pracy Świadom odpowiedzialności prawnej oświadczam, że niniejsza praca dyplomowa została napisana przeze mnie samodzielnie i nie zawiera treści uzyskanych w sposób niezgodny z obowiązującymi przepisami. Oświadczam również, że przedstawiona praca nie była wcześniej przedmiotem procedur związanych z uzyskaniem tytułu zawodowego w wyższej uczelni. Oświadczam ponadto, że niniejsza wersja pracy jest identyczna z załączoną wersją elektroniczną. Data Podpis autora (autorów) pracy

Streszczenie W literaturze rozważa się różne systemy typów dla rachunku lambda, będące zazwyczaj rozszerzeniami systemu typów prostych. W tej pracy rozważamy rozszerzenie prowadzące do logiki pierwszego rzędu. Badamy problem sprawdzania typu dla systemu zawierającego tylko implikację i kwantyfikator ogólny. Dowodzimy rozstrzygalności tego problemu dla sygnatury bez symboli funkcyjnych o arności większej od zera oraz szacujemy złożoność podanego algorytmu. Słowa kluczowe sprawdzanie typu, logika pierwszego rzędu, polimorfizm, rachunek lambda 11.3 Informatyka Dziedzina pracy (kody wg programu Socrates-Erasmus) Klasyfikacja tematyczna F. Theory of Computation F.4 Mathematical Logic and Formal Languages F.4.1 Mathematical Logic Lambda calculus and related systems Type checking for first order logic Tytuł pracy w języku angielskim

Mojej Mamie, której nie było dane zobaczyć tej pracy i mojemu Tacie, który zawsze jest dla mnie oparciem

Spis treści Wprowadzenie....................................... 7 1. Podstawowe definicje i notacja........................... 9 1.1. Notacja....................................... 9 1.2. Grafy........................................ 9 1.3. Lambda termy................................... 9 1.4. Typy......................................... 10 1.4.1. Typy proste................................. 10 1.4.2. Typy pierwszego rzędu........................... 10 1.5. Podstawienia.................................... 11 1.5.1. Podstawienia algebraiczne......................... 12 1.5.2. Podstawienia typowe............................ 12 1.6. Środowisko..................................... 12 1.7. Wyprowadzenia................................... 12 2. Problem sprawdzania typu............................. 15 2.1. System typów prostych a system typów pierwszego rzędu........... 15 2.2. Wyprowadzenia typu INST-before-GEN..................... 20 2.3. Kwantyfikatory niewiążące............................. 22 2.4. Dowód rozstrzygalności.............................. 28 2.5. Złożoność algorytmu................................ 29 2.6. Niezależność od sygnatury............................. 32 Bibliografia......................................... 37 5

Wprowadzenie W literaturze rozważa się różne systemy typów dla rachunku lambda. Podstawowym systemem jest tu rachunek lambda z typami prostymi. Inne systemy typów zazwyczaj są rozszerzeniami systemu typów prostych. Rachunek typów prostych pozostaje w bliskim związku z intuicjonistycznym rachunkiem zdań. Naturalne jest zatem badanie takich systemów typów, które prowadzą do różnych rozszerzeń rachunku zdań. Na przykład bardzo ważny system typów, system F, to rachunek zdań drugiego rzędu. W tej pracy zajmiemy się innym rozszerzeniem rachunku zdań, logiką pierwszego rzędu. Będziemy badać implikacyjny fragment logiki pierwszego rzędu. System podobny do badanego w tej pracy jest rozważany przez Sørensena i Urzyczyna w [5]. Wprowadzony tam system λp 1 jest sformułowany w stylu Churcha. Lambda termy nie są termami czystego rachunku lambda, lecz przechowują pewną informację o typie termu. Ponadto Sørensen i Urzyczyn rozważają system dla pełnostrukturalnej logiki pierwszego rzędu, ze wszystkimi spójnikami logicznymi i stałą. W tej pracy zajmiemy się systemem ograniczonym do fragmentu zawierającego tylko implikację i kwantyfikator ogólny. Badany system jest systemem w stylu Curry ego. Lambda termy są termami czystego rachunku lambda, informacja o typie termu nie jest przechowywana w termie, lecz jest od niego oddzielona. Warto zauważyć, że system w stylu Curry ego dla logiki pierwszego można zdefiniować inaczej, tak jak robi to Schubert w [4]. W tym systemie zachowujemy w lambda termie informację o operacjach pierwszego rzędu: wprowadzeniu lub usunięciu kwantyfikatora oraz użytym podstawieniu, usuwamy tylko informację o typie zmiennej związanej. Jest to rozwiązanie pośrednie między systemem rozważanym w tej pracy i systemem w stylu Churcha. W każdym systemie typów dla rachunku lambda można postawić następujące pytania: Dany term rachunku lambda M, czy istnieją środowisko Γ i typ τ takie, że Γ M : τ jest wyprowadzalne? Dany term rachunku lambda M, typ τ i środowisko Γ, czy Γ M : τ jest wyprowadzalne? Pierwszy problem nazywa się problemem typowalności, a drugi problemem sprawdzania typu. Dla różnych systemów typów problemy te mają różną trudność. W systemie typów prostych ([3], [5]) oba problemy są rozstrzygalne. Wells w [7] pokazał, że w systemie F typowalność i sprawdzanie typu są nierozstrzygalne. Dla logiki pierwszego rzędu problem typowalności jest rozstrzygalny. Schubert w [4] udowodnił, że dla rozważanej przez niego wersji pokrewny problem wyprowadzania typu jest rozstrzygalny. W tej pracy badamy problem sprawdzania typu dla logiki pierwszego rzędu. Głównym rezultatem pracy jest stwierdzenie, że problem sprawdzania typu dla systemu bez wieloargumentowych symboli funkcyjnych jest rozstrzygalny. Dowodzimy, że jeżeli istnieje jakieś rozwiązanie, to można również znaleźć rozwiązanie w pewnej skończonej klasie wyprowadzeń. Zatem aby stwierdzić, czy dana asercja jest wyprowadzalna, wystarczy sprawdzić 7

skończoną liczbę możliwości. Ponadto podajemy ograniczenie górne na liczbę przypadków, które trzeba sprawdzić i szacujemy złożoność podanego algorytmu. Pozostaje do zbadania problem sprawdzania typu dla systemu z sygnaturą dopuszczającą wieloargumentowe symbole funkcyjne. W rozdziale pierwszym przedstawiam definicje podstawowych pojęć, wprowadzam oznaczenia oraz formułuję w sposób formalny problem, którym będziemy się zajmować. Rozdział drugi zawiera dowód, że problem sprawdzania typu dla systemu z sygnaturą bez wieloargumentowych symboli funkcyjnych jest rozstrzygalny oraz oszacowanie złożoności podanego algorytmu. 8

Rozdział 1 Podstawowe definicje i notacja 1.1. Notacja Przez N będę oznaczać zbiór liczb naturalnych. Niech Σ będzie dowolnym zbiorem. Przez Σ będę oznaczać zbiór słów skończonych nad alfabetem Σ. Jeżeli a i b są dwoma słowami nad tym samym alfabetem, to a b oznacza konkatenację słów a i b. Zamiast a b będę często pisać ab. Niech L, P będą zbiorami słów nad tym samym alfabetem Σ. Wtedy L P = {v w v L w P }. Jeżeli L = {v}, to zamiast {v} P będę pisać v P. Przez f : A B będę oznaczać funkcję częściową f ze zbioru A do zbioru B. 1.2. Grafy Będę rozważać skończone grafy nieskierowane o etykietowanych krawędziach. Jak zwykle, graf to para (V, E), gdzie V jest zbiorem wierzchołków, E jest zbiorem krawędzi. Zbiór wierzchołków grafu G będę oznaczać V (G), zbiór krawędzi będę oznaczać E(G). Przez (x l y) będę oznaczać krawędź o etykiecie l łączącą wierzchołki x i y. Sumą rozłączną indeksowanej rodziny grafów (G i ) i I będę nazywać graf G = (V, E) taki, że: V = i I jeśli (a ({i} V i ), l l b) E i, to ((i, a) (i, b)) E. 1.3. Lambda termy Lambda termy definiujemy jak zazwyczaj, przyjmując zwykłe konwencje dotyczące ich zapisu za Barendregtem [1]. Zbiór zmiennych termowych będę oznaczać przez V, zbiór lambda termów będę oznaczać przez Λ. Lambda termy będę oznaczać dużymi literami M, N, L, zmienne termowe będę oznaczać literami x, y, z, u, v, itp. Symbol F V (M) oznacza zbiór zmiennych wolnych termu M, BV (M) oznacza zbiór zmiennych związanych termu M. Zakładam, że każda zmienna związana termu M jest w nim związana co najwyżej jeden raz (tak dobieram reprezentanta, aby nie było problemu z alfa-konwersją). Zbiór wszystkich zmiennych termu M będę oznaczać przez V (M). 9

Zbiór wszystkich podtermów lambda termu M będę oznaczać przez SubT (M): M SubT (M), jeśli N 1 N 2 SubT (M), to N 1 SubT (M) i N 2 SubT (M), jeśli λx.n SubT (M), to x SubT (M) i N SubT (M). Zauważmy, że nie utożsamiamy alfa-równoważnych podtermów. Na przykład mamy SubT ((λx.x)(λy.y)) = {x, y, λx.x, λy.y, (λx.x)(λy.y)}, ale jednocześnie SubT ((xy)(xy)) = {x, y, xy, (xy)(xy)}. Podkreślmy, że w drugim przykładzie x, y i xy występują w zbiorze SubT tylko jeden raz. 1.4. Typy Typy będę oznaczać literami τ, σ, w razie potrzeby dodając indeksy. 1.4.1. Typy proste Mamy dany zbiór zmiennych typowych T V. Zbiór typów prostych to najmniejszy zbiór ST ypes taki, że: jeśli p T V, to p ST ypes, jeśli τ, σ ST ypes, to (τ σ) ST ypes. Zapisując typy proste opuszczamy zewnętrzne nawiasy. Przyjmujemy konwencję, że spójnik wiąże w prawo, to znaczy τ 1 τ 2 τ 3 = (τ 1 (τ 2 τ 3 )). Dla danego typu prostego τ definiuję zbiór ścieżek P aths(τ) w następujący sposób: P aths(p) = {ɛ}, jeśli p jest zmienną typową, P aths(σ 1 σ 2 ) = {ɛ} 1 P aths(σ 1 ) 2 P aths(σ 2 ). Elementy zbioru P aths(τ) będę nazywać pozycjami. Pozycje będę oznaczać literą ρ, być może uzupełnioną o indeks. Będę mówić, że na pozycji ρ w typie τ występuje zmienna typowa p, jeżeli: ρ = ɛ i τ = p, ρ = 1ρ 1, τ = τ 1 τ 2 i p występuje na pozycji ρ 1 w typie τ 1, ρ = 2ρ 1, τ = τ 1 τ 2 i p występuje na pozycji ρ 1 w typie τ 2. 1.4.2. Typy pierwszego rzędu Niech Σ oznacza sygnaturę, czyli zbiór symboli relacyjnych i funkcyjnych o określonej arności. Symbole relacyjne będę oznaczać literami P, Q, R; symbole funkcyjne będę oznaczać literami f, g, h. Niech V ar oznacza pewien ustalony zbiór zmiennych algebraicznych. Zmienne algebraiczne będę oznaczać literami α, β, γ. Zbiór termów algebraicznych o zmiennych V ar nad sygnaturą Σ będę oznaczać T (V ar, Σ): jeśli α V ar, to α T (V ar, Σ), 10

jeśli f Σ jest n-argumentowym symbolem funkcyjnym, t 1,..., t n T (V ar, Σ), to f(t 1,..., t n ) T (V ar, Σ). Termy algebraiczne będę oznaczać literami t, s. Zbiór typów pierwszego rzędu nad ustaloną sygnaturą Σ i ustalonym zbiorem zmiennych V ar będę oznaczać przez T ypes V ar,σ : jeśli P Σ jest n-argumentowym symbolem relacyjnym, t 1,..., t n T (V ar, Σ), to P (t 1,..., t n ) T ypes V ar,σ, jeśli τ, σ T ypes V ar,σ, to (τ σ) T ypes V ar,σ, jeśli τ T ypes V ar,σ, α V ar, to α.τ T ypes V ar,σ. Podobnie jak dla typów prostych, opuszczamy zewnętrzne nawiasy i przyjmujemy konwencję, że spójnik wiąże w prawo. Symbol F V ar(τ) oznacza algebraiczne zmienne wolne typu τ, BV ar(τ) oznacza zbiór algebraicznych zmiennych związanych typu τ. Będziemy używać takich typów, w których każda zmienna jest związana co najwyżej jeden raz. Przez V ar(τ) będę oznaczać zbiór zmiennych algebraicznych typu τ. Analogicznie F V ar(t) oznacza zbiór zmiennych algebraicznych występujących w termie t. Podobnie jak dla typów prostych, dla typów pierwszego rzędu definiujemy zbiór ścieżek P aths(τ): P aths(p (t 1,..., t n )) = {ɛ}, jeśli P jest n-argumentowym symbolem relacyjnym, a t 1,..., t n są termami, P aths(σ 1 σ 2 ) = {ɛ} 1 P aths(σ 1 ) 2 P aths(σ 2 ), P aths( α.τ) = P aths(τ). Arnością formuły (typu pierwszego rzędu) τ będę nazywać liczbę N τ taką, że jeśli τ = P (t 1,..., t n ), to N τ = n, jeśli τ = τ 1 τ 2, to N τ = N τ1 + N τ2, jeśli τ = α.τ 1, to N τ = N τ1. Jeżeli α F V ar(τ), to kwantyfikator α występujący w formule α.τ nazwiemy kwantyfikatorem niewiążącym. 1.5. Podstawienia Będziemy mieć do czynienia z dwoma rodzajami podstawień: 1. podstawienia algebraiczne, tj. funkcje ze zbioru V ar w zbiór T (V ar, Σ), 2. podstawienia typowe, tj. funkcje ze zbioru T V w zbiór ST ypes. W zależności od kontekstu będzie jasne, o jakim podstawieniu mowa. Podstawienia będę oznaczać literami S, R, ewentualnie z indeksami. 11

1.5.1. Podstawienia algebraiczne Podstawienia algebraiczne rozszerzają się w oczywisty sposób na zbiór wszystkich typów pierwszego rzędu. Dziedziną podstawienia nazywamy zbiór tych zmiennych, dla których podstawienie nie jest identycznością. Dziedzinę podstawienia S oznaczamy przez Dom(S). Przez Ran(S) będziemy oznaczać zbiór α Dom(α) F V ar(s(α)). Niech α będzie zmienną algebraiczną i niech t będzie termem. Przez S t α będziemy oznaczać podstawienie takie, że S t α(α) = t oraz S t α(β) = S(β) dla β α. Przez [α := t] będę oznaczać podstawienie, które zmiennej α przypisuje term t, a na pozostałych zmiennych jest identycznością. 1.5.2. Podstawienia typowe Podstawienia typowe w oczywisty sposób rozszerzają się na zbiór wszystkich typów prostych. Dziedziną podstawienia nazywamy zbiór tych zmiennych, dla których podstawienie nie jest identycznością. Dziedzinę podstawienia S oznaczamy przez Dom(S). 1.6. Środowisko Środowisko to funkcja częściowa o skończonej dziedzinie ze zmiennych termowych V w zbiór typów. W zależności od kontekstu będzie jasne, czy jest to funkcja w typy proste czy typy pierwszego rzędu. Środowiska będziemy oznaczać literami Γ,. Dziedzinę środowiska będziemy oznaczać przez Dom(Γ). Przez F V ar(γ) będziemy oznaczać zbiór x Dom(Γ) F V ar(γ(x)). Analogicznie definiujemy zbiór BV ar(γ). Zakładamy, że wszystkie zmienne związane występujące w formułach w danym środowisku Γ są różne. Ponadto V ar(γ) = F V ar(γ) BV ar(γ). Jeśli S jest podstawieniem algebraicznym, to przez S(Γ) będziemy oznaczać środowisko takie, że: Dom(S(Γ)) = Dom(Γ), (S(Γ))(x) = S(Γ(x)) dla każdego x Dom(Γ). 1.7. Wyprowadzenia Wyrażenie Γ M : τ, gdzie Γ jest środowiskiem, M jest lambda termem, a τ jest typem będę nazywać sekwentem. Sekwenty będę oznaczać literą S. Typ τ występujący w sekwencie S = Γ M : τ będę nazywać głównym typem tego sekwentu i będę oznaczać T ype(s). Wyprowadzenie składa się z sekwentu S, zera lub większej liczby podwyprowadzeń D 1,..., D n oraz reguły r takiej, że S jest zastosowaniem reguły r do konkluzji wyprowadzeń D 1,..., D n. Piszemy wówczas 1,..., D n D r. Wyprowadzenia będę oznaczać literą D. S Sekwent S w wyprowadzeniu D = D 1,..., D n r będę oznaczać FS D i będę nazywać konkluzją wyprowadzenia D. S Rozważamy system, w którym termom przypisujemy typy pierwszego rzędu, a reguły przypisywania typów są jak na rysunku 1.1. System ten będziemy nazywać systemem typów pierwszego rzędu lub systemem pierwszego rzędu. Wyprowadzenia w tym systemie będziemy często nazywać wyprowadzeniami pierwszego rzędu. System typów prostych to system, w którym występują tylko typy proste oraz jedynymi regułami są (Ax), (App) i (Abs). 12

(Ax) Γ, x : τ x : τ Γ, x : τ M : σ (Abs) (App) Γ M : τ σ Γ N : τ Γ λx.m : τ σ Γ MN : σ (Gen) Γ M : σ Γ M : α.σ α F V ar(γ) Γ M : α.σ (Inst) Γ M : σ[α := t] Rysunek 1.1: Reguły przypisywania typów w systemie typów pierwszego rzędu Niech D będzie wyprowadzeniem pierwszego rzędu, D = D 1,..., D n Γ M : τ zmiennych związanych wyprowadzenia D jako BV ar(d) = BV ar(τ) x Dom(Γ) BV ar(γ(x)) BV ar(d i ). i n r. Definiujemy zbiór Analogicznie definiujemy zbiór zmiennych wolnych F V ar(d) oraz zbiór wszystkich zmiennych V ar(d). Niech D będzie poprawnym wyprowadzeniem o konkluzji Γ M : τ. Niech x będzie zmienną termu M. Przez IDT D (x) będę oznaczać typ przypisany w wyprowadzeniu D zmiennej x za pomocą reguły (Ax). To jest dobrze zdefiniowane pojęcie, bo dla zmiennej wolnej IDT D (x) = Γ(x). Ponadto każda zmienna związana x jest związana w M dokładnie jeden raz, więc IDT D (x) = (x), gdzie jest środowiskiem pojawiającym się w D takim, że x Dom( ). Definicja 1.7.1. Problem sprawdzania typu, to następujący problem: mając dany term M, typ τ i środowisko Γ rozstrzygnąć, czy istnieje poprawne wyprowadzenie, w którym konkluzją jest Γ M : τ. Warunkiem brzegowym dla problemu sprawdzania typu, będę nazywać sekwent Γ M : τ. 13

Rozdział 2 Problem sprawdzania typu Celem tej pracy jest zbadanie, czy problem sprawdzania typu dla systemu typów pierwszego rzędu jest rozstrzygalny. Chcemy stwierdzić, czy istnieje procedura, która mając dany term M, typ pierwszego rzędu τ i środowisko Γ odpowiada, czy Γ M : τ jest wyprowadzalne. Zakładamy ponadto, że w wyprowadzeniu można używać tylko tych symboli funkcyjnych i relacyjnych, które występują w warunku brzegowym. Zobaczmy następujący przykład. Przykład 2.0.2. Niech Γ oznacza y : α β.p (α, β), x : γp (γ, f(γ)) Q. Mamy następujące wyprowadzenie. Γ y : α β.p (α, β) Γ y : β.p (δ, β) Γ y : P (δ, f(δ)) Γ x : γp (γ, f(γ)) Q Γ y : δ.p (δ, f(δ)) Γ xy : Q y : α β.p (α, β) λx.xy : ( γp (γ, f(γ)) Q) Q Jak widać reguły (Gen) i (Inst) były potrzebne, by wyprowadzić konkluzję. Jest jasne, że nie można skonstruować wyprowadzenia o konkluzji y : α β.p (α, β) λx.xy : ( γp (γ, f(γ)) Q) Q, w którym nie występują reguły (Gen) oraz (Inst). Dowiedziemy, że problem sprawdzania typu dla systemu typów pierwszego rzędu w pewnej ograniczonej wersji jest rozstrzygalny. 2.1. System typów prostych a system typów pierwszego rzędu System typów pierwszego rzędu jest rozszerzeniem systemu typów prostych. Naturalne jest zatem badanie związków pomiędzy tymi systemami. Zajmiemy się teraz tym zagadnieniem. Jak się okaże, na wyprowadzenie pierwszego rzędu można patrzeć jak na wyprowadzenie w typach prostych wzbogacone o pewne nowe elementy. Na początek zdefiniujemy translację z systemu typów pierwszego rzędu do systemu typów prostych. W tym celu będzie potrzebnych kilka dodatkowych konstrukcji. Definiujemy operator ST : T ypes ST ypes w następujący sposób: 15

ST (P (t 1,..., t n )) = P, ST (σ τ) = ST (σ) ST (τ), ST ( α.τ) = ST (τ). Możemy rozszerzyć działanie operatora ST na środowiska. Dla danego Γ, ST (Γ) to środowisko takie, że: Dom(ST (Γ)) = Dom(Γ), (ST (Γ))(x) = ST (Γ(x)) dla x Dom(Γ). Następnie rozszerzamy operację ST na wszystkie sekwenty wyprowadzenia w następujący sposób: ST (Γ M : τ) = ST (Γ) M : ST (τ). Definicja 2.1.1. ST (D) będzie oznaczać wyprowadzenie, które powstaje przez zaaplikowanie operacji ST do każdego sekwentu wyprowadzenia D oraz usunięcie fragmentów postaci S S. Lemat 2.1.2. Jeżeli D jest poprawnym wyprowadzeniem w logice pierwszego rzędu, to ST (D) jest poprawnym wyprowadzeniem w typach prostych. Dowód. Łatwa indukcja ze względu na rozmiary wyprowadzenia D. Otrzymujemy następujący wniosek. Wniosek 2.1.3. Jeżeli Γ M : τ w typach pierwszego rzędu, to ST (Γ) M : ST (τ) w typach prostych. Zatem warunkiem koniecznym na to, żeby zachodziło Γ M : τ w typach pierwszego rzędu jest ST (Γ) M : ST (τ) w typach prostych. Ujmując to nieco inaczej, na wyprowadzenie pierwszego rzędu można patrzeć jak na pewne udekorowanie wyprowadzenia w typach prostych. Aby otrzymać poprawne wyprowadzenie pierwszego rzędu o konkluzji Γ M : τ, należy wzbogacić wyprowadzenie o konkluzji ST (Γ M : τ) poprzez dodanie w niektórych miejscach reguł (Inst) lub (Gen) oraz odpowiednie dopisanie kwantyfikatorów i termów algebraicznych w typach w tym wyprowadzeniu. Zauważmy, że nie zawsze jest to możliwe. Przykład 2.1.4. Sekwent S 1 = x : (p q) r, y : p q xy : r jest wyprowadzalny w typach prostych. Mamy bowiem następujące wyprowadzenie. x : (p q) r, y : p q x : (p q) r x : (p q) r, y : p q y : p q x : (p q) r, y : p q xy : r Weźmy sekwent S 2 = x : (P (β) α.q(α, β)) R, y : P (β) γ.q(β, γ) xy : R. Zauważmy, że ST (S 2 ) = S 1, ale S 2 nie jest wyprowadzalny w logice pierwszego rzędu. Gdyby dało się go wyprowadzić, to ostatnią regułą musiałaby być reguła (App). To oznacza, że trzeba by uzgodnić formuły P (β) α.q(α, β) i P (β) γ.q(β, γ), to zaś jest niemożliwe. W dalszej części pracy zajmiemy się dokładniejszym zbadaniem, w jaki sposób można wzbogacać strukturę wyprowadzenia w typach prostych i otrzymać poprawne wyprowadzenie pierwszego rzędu. Wiadomo (np. [3], [5]), że dla każdego termu M typowalnego w typach prostych istnieje typ główny τ M i wyprowadzenie główne D M. Wyprowadzenie główne i typ główny są wyznaczone jednoznacznie z dokładnością do wyboru nazw zmiennych typowych. 16

Definicja 2.1.5. Zmienne typowe, które występują w konkluzji wyprowadzenia D M będę nazywać starymi zmiennymi wyprowadzenia D. Pozostałe zmienne typowe pojawiające się w wyprowadzeniu D będę nazywać nowymi zmiennymi wyprowadzenia D. Wiadomo, że każde wyprowadzenie w typach prostych jest instancją wyprowadzenia głównego. W szczególności, jeżeli D jest wyprowadzeniem pierwszego rzędu o konkluzji Γ M : τ, to ST (D) jest instancją wyprowadzenia D M. Istnieje podstawienie typowe R takie, że wyprowadzenie ST (D) jest rezultatem aplikacji R do wyprowadzenia głównego D M. Mając dany warunek brzegowy Γ M : τ i wyprowadzenie główne D M, możemy częściowo odtworzyć podstawienie R. Porównując Γ M : τ i FS DM, zobaczymy jak jest zdefiniowane R na starych zmiennych typowych D M. Nie wiadomo jednak nic o tym, jakie wartości przyjmuje R na nowych zmiennych typowych. Okazuje się jednak, że możemy przyjąć pewne założenia co do ich postaci. Definicja 2.1.6. Wyprowadzenie E o konkluzji Γ M : τ w typach prostych nazwiemy prostym, jeżeli jest ono wynikiem aplikacji do D M podstawienia typowego R takiego, że dla każdej nowej zmiennej typowej q formuła R(q) jest zmienną typową. Pokażemy, że można założyć, iż wyprowadzenie ST (D) jest wyprowadzeniem prostym. Jak już zostało powiedziane, ST (D) jest pewną instancją wyprowadzenia głównego. Jest jasne, że każdemu sekwentowi wyprowadzenia ST (D) odpowiada pewien sekwent wyprowadzenia głównego D M. Jednakże również każdemu sekwentowi S wyprowadzenia D odpowiada pewien sekwent w wyprowadzeniu głównym D M. Ten odpowiadający S sekwent w wyprowadzeniu głównym nazwiemy wzorcem dla S. Następująca definicja formalizuje pojęcie wzorca: Definicja 2.1.7. Dla każdego sekwentu S wyprowadzenia D definiujemy wzorzec P D (S): P D (FS D ) = FS DM. Jeśli S jest konkluzją reguły (Abs) postaci Ŝ 1 Ŝ. Wtedy P D(S 1 ) := Ŝ1. S 1 S i P D(S) = Ŝ, to Ŝ jest konkluzją reguły (Abs) Jeśli S jest konkluzją reguły (App) reguły (Abs) postaci Ŝ 1 Ŝ Ŝ2 S 1 S 2 S i P D (S) =. Wtedy P D (S 1 ) := Ŝ1 i P D (S 2 ) := Ŝ2. Ŝ, to Ŝ jest konkluzją Jeśli S jest konkluzją reguły (Gen) S 1 S i P D (S) = Ŝ, to P D(S 1 ) := Ŝ. Jeśli S jest konkluzją reguły (Inst) i P D (S) = S Ŝ, to P D(S 1 ) := Ŝ. Łatwo można zrobić następującą obserwację. Uwaga 2.1.8. Dla każdej instancji reguły (Gen) lub (Inst): S 1 S 1 S 2 zachodzi P D (S 1 ) = P D (S 2 ). Pokazujemy, że można założyć, że wyprowadzenie ST (D) jest proste. Niech Q będzie dowolnym ustalonym zeroargumentowym symbolem relacyjnym. Niech M będzie lambda termem. Intensjonalne znaczenie poniższej operacji jest takie: dana jest formuła σ oraz odpowiadający jej wzorzec (formuła rachunku zdań) τ, Clear M (σ, τ) to taka formuła, w której starym zmiennym typowym odpowiadają te same formuły, co w σ, a nowym zmiennym typowym ustalona formuła Q. Definiujemy operację Clear M : T ypes ST ypes T ypes: 17

Clear M (σ, p) = σ, jeśli p jest starą zmienną typową wyprowadzenia D M, Clear M (σ, q) = Q, jeśli q jest nową zmienną typową wyprowadzenia D M, Clear M ( α.σ, τ) = α.clear M (σ, τ), jeśli τ nie jest zmienną typową, Clear M (σ 1 σ 2, τ 1 τ 2 ) = Clear M (σ 1, τ 1 ) Clear M (σ 2, τ 2 ). Lemat 2.1.9. Dla dowolnego typu σ T ypes i σ ST ypes takiego, że Clear M (σ, σ) jest określone, zachodzi Clear M (σ[α := t], σ) = Clear M (σ, σ)[α := t]. Dowód. Indukcja ze względu na definicję operacji Clear M. Clear M (σ[α := t], p) = σ[α := t] = Clear M (σ, p)[α := t], jeśli p jest starą zmienną typową wyprowadzenia D M. Clear M (σ[α := t], q) = Q = Q[α := t] = Clear M (σ, q)[α := t], jeśli q jest nową zmienną typową wyprowadzenia D M. Jeśli β α, to Clear M (( β.σ)[α := t], τ) = Clear M ( β.(σ[α := t]), τ) = = β.clear M (σ[α := t], τ) = β.clear M (σ, τ)[α := t] = ( β.clear M (σ, τ))[α := t]. Jeśli β = α, to Clear M (( β.σ)[α := t], τ) = Clear M ( β.σ, τ) = β.clear M (σ, τ) = = ( β.clear M (σ, τ))[α := t]. Clear M ((σ 1 σ 2 )[α := t], τ 1 τ 2 ) = Clear M (σ 1 [α := t] σ 2 [α := t], τ 1 τ 2 ) = Clear M (σ 1 [α := t], τ 1 ) Clear M (σ 2 [α := t], τ 2 ) = Clear M (σ 1, τ 1 )[α := t] Clear M (σ 2, τ 2 )[α := t] = (Clear M (σ 1, τ 1 ) Clear M (σ 2, τ 2 ))[α := t]. Niech D będzie wyprowadzeniem pierwszego rzędu o konkluzji Γ M : τ. Używając operacji Clear M skonstruujemy nowe wyprowadzenie pierwszego rzędu o konkluzji Γ M : τ. Najpierw definiujemy środowisko [Γ]: Dom([Γ]) = Dom(Γ), [Γ](x) = Clear M (Γ(x), IDT DM (x)). Następnie definiujemy działanie operacji [. ] na sekwentach wyprowadzenia D. Dla każdego sekwentu S postaci Γ N : σ określamy [S] = [Γ] N : Clear M (σ, T ype(p D (S))). Definicja 2.1.10. Wyprowadzenie [D] jest wyprowadzeniem, które powstaje z wyprowadzenia D poprzez zastosowanie operacji [. ] do każdego jego sekwentu oraz usunięcie podwyprowadzeń postaci S S. Lemat 2.1.11. Niech D będzie wyprowadzeniem w typach pierwszego rzędu o konkluzji Γ M : τ. Wtedy [D] jest poprawnym wyprowadzeniem pierwszego rzędu o konkluzji Γ M : τ. Dowód. Z konstrukcji jest jasne, że FS [D] = FS D. Pokażemy, że zastosowanie operacji [. ] do kolejnych sekwentów wyprowadzenia D prowadzi albo do poprawnego użycia jednej z reguł, albo do podwyprowadzenia S S. Sprawdzamy kolejne przypadki: 18

Sekwent S w D jest zastosowaniem reguły (Ax) postaci Γ, x : τ x : τ. Niech P D (S) =, x : τ x : τ. Wtedy IDT DM = τ. Czyli (x) [S] = [Γ], x : Clear M (τ, τ) x : Clear M (τ, τ), a więc [S] jest poprawnym zastosowaniem reguły (Ax). Zastosowano regułę (App) postaci S 1 S 2 S, gdzie S 1 = Γ N : σ 1 σ 2, S 2 = Γ L : σ 1, S = Γ NL : σ 2. Niech P D (S 2 ) = L : σ 1, P D (S) = NL : σ 2. Wtedy P D (S 1 ) musi być postaci N : σ 1 σ 2, bo D M jest poprawnym wyprowadzeniem. Wówczas jednak [S 1 ] = [Γ] N : Clear M (σ 1 σ 2, σ 1 σ 2 ), [S 2 ] = [Γ] L : Clear M (σ 1, σ 1 ), [S] = [Γ] NL : Clear M (σ 2, σ 2 ). Ale Clear M (σ 1 σ 2, σ 1 σ 2 ) = Clear M (σ 1, σ 1 ) Clear M (σ 2, σ 2 ) i jest dobrze. Zastosowano regułę (Abs) postaci S 1 S 2, gdzie S 1 = Γ, x : σ 1 N : σ 2, S 2 = Γ λx.n : σ 1 σ 2. Wówczas P D (S 1 ) =, x : σ 1 N : σ 2, P D (S 2 ) = λx.n : σ 1 σ 2. Wtedy [S 1 ] = [Γ], x : Clear M (σ 1, σ 1 ) N : Clear M (σ 2, σ 2 ), [S 2 ] = [Γ] λx.m : Clear M (σ 1 σ 2, σ 1 σ 2 ). Jednak Clear M (σ 1 σ 2, σ 1 σ 2 ) = Clear M (σ 1, σ 1 ) Clear M (σ 2, σ 2 ), czyli jest dobrze. S Zastosowano regułę (Gen) postaci 1 S, gdzie S 1 = Γ N : σ, S = Γ N : α.σ. Wtedy zachodzi: P D (S 1 ) = P D (S) = N : σ. Wówczas [S 1 ] = [Γ] N : Clear M (σ, σ), [S] = [Γ] N : Clear M ( α.σ, σ). Jeśli σ jest nową zmienną typową, to Clear M (σ, σ) = Clear M ( α.σ, σ) = Q, czyli [S] = [S 1 ]. Otrzymujemy dwa takie same sekwenty. Jeżeli σ nie jest nową zmienną typową, to Clear M ( α.σ, σ) = α.clear M (σ, σ). Oczywiście skoro α F V ar(γ), to α F V ar([γ]), czyli mamy poprawne użycie reguły (Gen). 19

Zastosowano regułę (Inst) postaci S 1 S, gdzie S 1 = Γ N : α.σ, S = Γ N : σ[α := t]. Wtedy P D (S 1 ) = P D (S) = N : σ. Wówczas [S 1 ] = [Γ] N : Clear M ( α.σ, σ), [S] = [Γ] N : Clear M (σ[α := t], σ). Jeżeli σ jest nową zmienną typową, to Clear M ( α.σ, σ) = Clear M (σ[α := t], σ) = Q i jest dobrze. W przeciwnym przypadku Clear M ( α.σ, σ) = α.clear M (σ, σ) oraz z lematu 2.1.9 zachodzi Clear M (σ[α := t], σ) = Clear M (σ, σ)[α := t], czyli mamy poprawne użycie reguły (Inst). Uwaga 2.1.12. Powyższa konstrukcja nie zależy od tego, czy w sygnaturze jest zeroargumentowy symbol relacyjny Q. Jeżeli takiego symbolu nie ma, możemy Q zastąpić formułą α.p (α,..., α) dla pewnego symbolu relacyjnego P z sygnatury. Łatwo sprawdzić, że powyższe rozumowania są poprawne także w tym przypadku. Otrzymujemy zatem następujący wniosek. Wniosek 2.1.13. Jeżeli istnieje wyprowadzenie D w typach pierwszego rzędu o konkluzji Γ M : τ, to istnieje również wyprowadzenie D o takiej samej konkluzji i prostym ST (D ). 2.2. Wyprowadzenia typu INST-before-GEN Jak stwierdziliśmy poprzednio, wyprowadzenie pierwszego rzędu w pewnym sensie jest wyprowadzeniem w typach prostych, wzbogaconym o odpowiednie rozmieszczenie reguł (Inst) lub (Gen) oraz kwantyfikatorów i termów algebraicznych. Zbadamy, jakie ograniczenia można narzucić na rozmieszczenie reguł (Inst) lub (Gen). Wprowadźmy następującą definicję, zaczerpniętą z [7]. Definicja 2.2.1. Wyprowadzenie D ma własność INST-before-GEN wtedy i tylko wtedy, gdy nie ma w nim ciągu sekwentów: Γ M : σ (Gen) Γ M : α.σ (Inst) Γ M : σ[α := t] Pokażemy, że można rozważać tylko wyprowadzenia mające własność INST-before-GEN. Potrzebny nam będzie następujący lemat. Lemat 2.2.2. Niech D będzie wyprowadzeniem, w którym konkluzją jest sekwent Γ M : τ. Niech S będzie podstawieniem algebraicznym, w którym Ran(S) BV ar(d) =. Wówczas istnieje wyprowadzenie D mające taką samą strukturę reguł jak wyprowadzenie D, w którym konkluzją jest S(Γ) M : S(τ). Dowód. Indukcja ze względu na ostatnio zastosowaną regułę w wyprowadzeniu D. Jeśli ostatnią zastosowaną regułą był aksjomat Γ, x : τ x : τ, to oczywiście zachodzi S(Γ), x : S(τ) x : S(τ). 20

Jeżeli ostatnią użytą regułą była reguła (Abs): to zachodzi Γ, x : τ M : σ, Γ λx.m : τ σ S(Γ), x : S(τ) M : S(σ) S(Γ) λx.m : S(τ) S(σ). Ale S(τ) S(σ) = S(τ σ) z definicji podstawienia, więc otrzymujemy tezę. Ostatnią regułą była reguła (App): Γ N : σ τ Γ L : σ. Γ NL : τ Wtedy z założenia indukcyjnego S(Γ) N : S(σ τ) oraz S(Γ) L : S(σ). Ale S(σ τ) = S(σ) S(τ). Zatem S(Γ) N : S(σ) S(τ) S(Γ) L : S(σ). S(Γ) NL : S(τ) Ostatnią regułą była generalizacja: Γ M : σ. Γ M : α.σ Wtedy α F V ar(γ). Korzystając z założenia indukcyjnego dla podstawienia S α α i wyprowadzenia Γ M : σ otrzymamy: S α α(γ) M : S α α(σ). Z założenia zachodzi Ran(S) BV ar(d) =, więc α F V ar(s(γ)). Możemy zastosować regułę (Gen): Sα(Γ) α M : Sα(σ) α Sα(Γ) α M : α.sα(σ) α. Ale wtedy α.s α α(σ) = S( α.σ) i S α α(γ) = S(Γ), czyli otrzymujemy tezę lematu. Ostatnią regułą jest (Inst): Γ M : α.τ. Γ M : τ[α := t] Wtedy z założenia indukcyjnego S(Γ) M : S( α.τ). Ale S( α.τ) = α.s α α(τ). Czyli S(Γ) M : α.s α α(τ). Ponadto S α α(γ) = S(Γ), bo rozważamy tylko takie wyprowadzenia, w których F V ar(γ) BV ar(d) =. Zatem 21

Sα(Γ) α M : α.sα(τ) α Sα(Γ) α M : Sα(τ)[α α := S(t)]. Jednak S α α(τ)[α := S(t)] = S(τ[α := τ]). Zatem istotnie sekwent S(Γ) M : S(τ[α:=t]) jest wyprowadzalny. Lemat 2.2.3. Niech D będzie wyprowadzeniem, w którym konkluzją jest sekwent Γ M : τ. Wtedy istnieje wyprowadzenie D mające własność INST-before-GEN, w którym konkluzją jest sekwent Γ M : τ. Dowód. Jeśli D nie ma własności INST-before-GEN, to istnieje w nim podwyprowadzenie: Γ M : τ Γ M : α.τ. Γ M : τ[α := t] Możemy założyć, ze w F V ar(t) BV ar(τ) =, w razie konieczności wymieniając zmienne związane na inne. Ponadto z założenia α nie jest zmienną wolną w żadnym typie pojawiającym się w Γ. Stosuję lemat 2.2.2 do wyprowadzenia Γ M : τ i podstawienia [α := t]. Dostaję wyprowadzenie o konkluzji Γ M : τ[α := t], o tej samej strukturze reguł jak wyprowadzenie Γ M : τ w D. Jest ono oczywiście mniejsze niż oryginalne wyprowadzenie. Tę konstrukcję możemy zastosować po kolei do każdego ciągu reguł postaci Γ M : τ Γ M : α.τ. Γ M : τ[α := t] W rezultacie otrzymamy wyprowadzenie D o konkluzji Γ M : τ, mające własność INSTbefore-GEN. 2.3. Kwantyfikatory niewiążące Zajmiemy się teraz kwantyfikatorami niewiążącymi, które występują w wyprowadzeniu pierwszego rzędu. Intuicyjnie jest jasne, że nie niosą one żadnej istotnej informacji, gdyż zastosowanie reguły (Inst) do takiego kwantyfikatora właściwie nie zmienia typu. Nie możemy jednak zupełnie odrzucić kwantyfikatorów niewiążących, bo mogą one wystąpić w warunku brzegowym. W niektórych miejscach wystąpienie takiego kwantyfikatora jest wówczas nieuniknione. Pokażemy jednak, że można nie rozważać kwantyfikatorów niewiążących w miejscach, gdzie warunek brzegowy nie wymusza ich wystąpienia. Definicja 2.3.1. Grafem typu prostego τ będę nazywać nieskierowany graf G(τ) = (V, E) o krawędziach etykietowanych 1, 2 taki, że V = P aths(τ), jeśli ρ P aths(τ) i ρ1 P aths(τ), to (ρ1 jeśli ρ P aths(τ) i ρ2 P aths(τ), to (ρ2 Rysunek 2.1 przedstawia graf typu (p q) p. 1 ρ) E, 2 ρ) E. 22

ɛ 1 2 1 2 1 2 11 12 Rysunek 2.1: Graf typu Definicja 2.3.2. Grafem typu pierwszego rzędu τ będę nazywać graf odpowiadającego mu typu prostego ST (τ). Ten sam rysunek 2.1 przedstawia graf typu α( β(p (β, α) Q(γ)) P (α, f(α))). W danym wyprowadzeniu w typach prostych E o konkluzji Γ M : τ, każdemu podtermowi N SubT (M) jeden raz lub więcej razy zostaje przypisany typ. Łatwo jednak zauważyć, że jeżeli typ dla termu N jest przypisany więcej niż jeden raz, to za każdym razem jest to ten sam typ. (Przypominam, że nie utożsamiamy alfa-równoważnych podtermów.) Analogicznie łatwo sprawdzić, że w wyprowadzeniu pierwszego rzędu D term N dostaje typy o takim samym grafie. Ten graf będę oznaczać przez G D (N). Definicja 2.3.3. Prostym grafem typów dla wyprowadzenia (w typach prostych lub typach pierwszego rzędu) D będę nazywać sumę rozłączną grafów (G D (N)) N SubT (M). Graf ten będę oznaczać przez G 0 (D). Przykład 2.3.4. Rozważmy następujące wyprowadzenie. Tutaj Γ oznacza środowisko x : (p q) r, u : p. Γ, y : p q x : (p q) r Γ, y : p q y : p q Γ, y : p q xy : r Γ λy.xy : (p q) r Γ (λy.xy)(λz.u) : r Γ, z : p u : q Γ λz.u : p q Rysunek 2.2 pokazuje prosty graf typów dla tego wyprowadzenia. Definicja 2.3.5. Pełnym grafem typów dla wyprowadzenia D nazwę graf G D = (V, E) taki, że V = V (G 0 (D)), jeśli (a l b) E(G 0 l (D))), to (a b) E, jeśli (P, 1ρ) V, (Q, ρ) V i P Q SubT (M), to ((P, 1ρ) jeśli (P, 2ρ) V, (P Q, ρ) V, to ((P, 2ρ) jeśli (λx.p, 1ρ) V, to ((λx.p, 1ρ) e (x, ρ)). e (P Q, ρ)), e (Q, ρ)), Przykład 2.3.6. Rysunek 2.3 pokazuje pełny graf typów wyprowadzenia z przykładu 2.3.4. 23 1

(x, ɛ) 1 2 (x, 1) (x, 2) 1 2 1 2 (y, ɛ) (y, 1) (y, 2) (x, 11) (x, 12) (xy, ɛ) (z, ɛ) (u, ɛ) (λy.xy, ɛ) 1 2 (λy.xy, 1) (λy.xy, 2) 1 2 (λy.xy, 11) (λy.xy, 12) (λz.u, ɛ) 1 2 (λz.u, 1) (λz.u, 2) ((λy.xy)(λz.u), ɛ) Rysunek 2.2: Prosty graf typów przykład Niech F : V (G D ) N będzie dowolną funkcją. Określamy funkcje F i dla i N: 1. F 0 = F, e 2. jeśli a, b V (G D ), (a b) E(G D ) i F i (a) F i (b), to F i+1 (a) = F i+1 (b) = max(f i (a), F i (b)) oraz F i+1 (x) = F i (x) dla x V (G D ) takich, że x a i x b. Funkcję F określamy w następujący sposób: F = F n, gdzie n jest najmniejszą liczbą taką, że F n = F n+1. Ponieważ D jest skończone, to F jest dobrze określone. Niech D będzie wyprowadzeniem pierwszego rzędu o konkluzji Γ M : τ. Określam funkcję Θ 0 : V (G D ) N następująco: jeśli y jest zmienną wolną i (y, ρ) V (G D ), to Θ 0 ((y, ρ)) = m, gdzie m jest liczbą niewiążących kwantyfikatorów stojących na pozycji ρ w Γ(y), jeśli ρ P aths(τ), to Θ 0 ((M, ρ)) = m, gdzie m jest liczbą niewiążących kwantyfikatorów stojących na pozycji ρ w τ, Θ 0 (z) = 0 dla pozostałych z V (G D ). Definicja 2.3.7. Funkcją ograniczenia będę nazywać funkcję Θ = Θ 0. 24

(x, ɛ) e 1 2 (x, 1) (x, 2) e 1 2 1 2 (y, ɛ) (y, 1) (y, 2) (x, 11) (x, 12) e (xy, ɛ) e e e e (z, ɛ) (u, ɛ) e (λy.xy, ɛ) 1 2 (λy.xy, 1) (λy.xy, 2) 1 2 e (λy.xy, 11) (λy.xy, 12) e e e e (λz.u, ɛ) 1 2 (λz.u, 1) (λz.u, 2) e ((λy.xy)(λz.u), ɛ) Rysunek 2.3: Pełny graf typów przykład Lemat 2.3.8. Funkcja ograniczenia Θ ma następujące własności: 1. Dla każdego zastosowania reguły (App) postaci Γ M : τ σ Γ N : τ Γ MN : σ każdego ρ P aths(τ) zachodzi Θ((M, 1ρ)) = Θ((N, ρ)). 2. Dla każdego zastosowania reguły (App) postaci Γ M : τ σ Γ N : τ Γ MN : σ każdego ρ P aths(σ) zachodzi Θ((M, 2ρ)) = Θ((MN, ρ)). Γ, x : τ M : σ 3. Dla każdego zastosowania reguły (Abs) postaci Γ λx.m : τ σ ρ P aths(σ) zachodzi Θ((M, ρ)) = Θ((λx.M, 2ρ)). 4. Dla każdego zastosowania reguły (Abs) postaci ρ P aths(τ) zachodzi Θ((x, ρ)) = Θ((λx.M, 1ρ)). Γ, x : τ M : σ Γ λx.m : τ σ i dla i dla i dla każdego i dla każdego Zdefiniuję pomocniczą operację Drop M : SubT (M) {1, 2} T ypes T ypes. Intuicyjne objaśnienie jest takie: N jest podtermem M, σ jest typem przypisanym N w wyprowadzeniu D, ρ jest ścieżką w σ, τ jest formułą, która występuje w σ na pozycji ρ. Wtedy Drop M (N, ρ, τ) to formuła τ, która powstaje z τ przez wytarcie jak najmniejszej liczby zewnętrznych kwantyfikatorów niewiążących w taki sposób, że na pozycji ɛ w τ stoi nie więcej niż Θ(N, ρ)) kwantyfikatorów niewiążących. 25

Drop M (N, ρ, P (t 1,..., t n )) = P (t 1,..., t n ), Drop M (N, ρ, τ σ) = Drop M (N, ρ1, τ) Drop M (N, ρ2, σ), Drop M (N, ρ, α.τ) = Drop M (N, ρ, τ), jeśli α F V ar(τ) i w τ na pozycji ɛ jest Θ((N, ρ)) lub więcej kwantyfikatorów niewiążących, Drop M (N, ρ, α.τ) = α.drop M (N, ρ, τ), jeśli α F V ar(τ) lub w τ na pozycji ɛ jest mniej niż Θ((N, ρ)) kwantyfikatorów niewiążących. Lemat 2.3.9. Dla dowolnego N SubT (M) oraz ρ i τ takich, że Drop M (N, ρ, τ) jest określone, zachodzi Drop M (N, ρ, τ[α := t]) = Drop M (N, ρ, τ)[α := t]. Dowód. Indukcja ze względu na definicję operacji Drop M i budowę typu τ. Drop M (N, ρ, P (t 1,..., t n )[α:=t])=p (t 1,...t n )[α:=t]=drop M (N, ρ, P (t 1,..., t n ))[α:=t]. Drop M (N, ρ, (τ σ)[α := t]) = Drop M (N, ρ, (τ[α := t]) (σ[α := t])) = = Drop M (N, ρ1, τ[α := t]) Drop M (N, ρ2, σ[α := t]) = Drop M (N, ρ1, τ)[α := t] Drop M (N, ρ2, σ)[α := t] = Drop M (N, ρ, τ σ)[α := t]. Jeśli β F V ar(τ) i w τ na pozycji ɛ jest Θ((N, ρ)) lub więcej kwantyfikatorów niewiążących, to Drop M (N, ρ, ( β.τ)[α := t]) = Drop M (N, ρ, β.(τ[α := t])) = β.drop M (N, ρ, τ[α:=t]) = β.drop M (N, ρ, τ)[α:=t] = ( β.drop M (N, ρ, τ))[α:=t]. Jeśli β F V ar(τ) lub w τ na pozycji ɛ jest mniej niż Θ((N, ρ)) kwantyfikatorów niewiążących, to Drop M (N, ρ, ( β.τ)[α := t]) = Drop M (N, ρ, β.τ[α := t]) = = β.drop M (N, ρ, τ)[α := t] = ( β.drop M (N, ρ, τ))[α := t]. Niech D będzie wyprowadzeniem pierwszego rzędu o konkluzji Γ M : τ. Używając operacji Drop M zdefiniuję nowe wyprowadzenie D. Środowisko Γ jest takie, że: Dom( Γ ) = Dom(Γ), Γ (x) = Drop M (x, ɛ, Γ(x)) dla x Dom(Γ). Dla danego sekwentu S wyprowadzenia D postaci Γ N : σ określam S jako Γ N : Drop M (N, ɛ, σ). Definicja 2.3.10. Wyprowadzenie D to wyprowadzenie, które powstaje z wyprowadzenia D poprzez zastosowanie operacji. do każdego sekwentu wyprowadzenia D oraz usunięcie powtarzających się sekwentów. Lemat 2.3.11. Wyprowadzenie D jest poprawnym wyprowadzeniem w typach pierwszego rzędu o takiej samej konkluzji, jak wyprowadzenie D. Dowód. Jest jasne, że FS D = FS D. Pokażę, że zastosowanie operacji. do kolejnych sekwentów daje albo poprawne użycie którejś z reguł przypisywania typów, albo identyczne sekwenty. Rozważam wszystkie możliwe przypadki. 26

Jeśli zastosowano regułę (Ax) Γ, x : τ x : τ, to czyli jest dobrze. Γ, x : τ x : τ = Γ, x : Drop M (x, ɛ, τ) Drop M (x, ɛ, τ), Zastosowano regułę (Abs) postaci Γ λx.n : σ 1 σ 2. Wtedy S 1 S 2, gdzie S 1 = Γ, x : σ 1 N : σ 2 i S 2 = S 1 = Γ, x : Drop M (x, ɛ, σ 1 ) N : Drop M (N, ɛ, σ 2 ), S 2 = Γ λx.n : Drop M (λx.n, ɛ, σ 1 σ 2 ). Ale Drop M (λx.n, ɛ, σ 1 σ 2 ) = Drop M (λx.n, 1, σ 1 ) Drop M (λx.n, 2, σ 2 ) = Drop M (x, ɛ, σ 1 ) Drop M (N, ɛ, σ 2 ). Ostatnia równość zachodzi na mocy lematu 2.3.8, punkty 3 i 4 oraz definicji operacji Drop. Zatem jest dobrze. S Zastosowano regułę (App) postaci 1 S 2 S S 2 = Γ L : σ 1, S = Γ NL : σ 2. Wtedy, gdzie S 1 = Γ N : σ 1 σ 2, S 1 = Γ N : Drop M (N, ɛ, σ 1 σ 2 ), S 2 = Γ L : Drop M (L, ɛ, σ 1 ), S = Γ MN : Drop M (NL, ɛ, σ 2 ). Ale Drop M (N, ɛ, σ 1 σ 2 ) = Drop M (N, 1, σ 1 ) Drop M (N, 2, σ 2 ). Ponadto na mocy lematu 2.3.8, punkt 1 i definicji operacji Drop M zachodzi Drop M (N, 1, σ 1 ) = Drop M (L, ɛ, σ 1 ) oraz na mocy lematu 2.3.8, punkt 2 i definicji operacji Drop M zachodzi Drop M (N, 2, σ 2 ) = Drop M (NL, ɛ, σ 2 ). Zatem jest dobrze. Zastosowano regułę (Gen) postaci Wtedy S 1 S 2, gdzie S 1 = Γ N : σ, S 2 = Γ N : α.σ. S 1 = Γ N : Drop N (N, ɛ, σ), S 2 = Γ N : Drop M (N, ɛ, α.σ). Jeśli α F V ar(σ), to Drop M (N, ɛ, α.σ) = α.drop M (N, ɛ, σ), zatem jest dobrze. Jeśli α F V ar(σ) i w σ na pozycji ɛ jest mniej niż Θ((N, ɛ)) niewiążących kwantyfikatorów, to Drop M (N, ɛ, α.σ) = α.drop M (N, ɛ, σ), czyli mamy zastosowanie reguły (Gen). Jeśli α F V ar(σ) i w σ na pozycji ɛ jest nie mniej niż Θ((N, ɛ)) niewiążących kwantyfikatorów, to Drop M (N, ɛ, α.σ) = Drop M (N, ɛ, σ), czyli otrzymujemy identyczne sekwenty. Jeśli zastosowano regułę (Inst) Wtedy S 1 S 2, gdzie S 1 = Γ N : α.σ, S 2 = Γ N : σ[α := t]. S 1 = Γ N : Drop M (N, ɛ, α.σ), S 2 = Γ N : Drop M (N, ɛ, σ[α := t]). Jeżeli α F V ar(σ), to Drop M (N, ɛ, α.σ) = α.drop M (N, ɛ, σ). Wtedy Drop M (N, ɛ, σ[α := t]) = Drop M (N, ɛ, σ)[α := t], na mocy lematu 2.3.9, czyli dobrze. 27

Jeżeli α F V ar(σ), to σ[α := t] = σ. Wtedy Drop M (N, ɛ, σ[α := t]) = Drop M (N, ɛ, σ). Jeśli Drop M (N, ɛ, α.σ) = Drop(N, ɛ, σ), to S 1 = S 2, czyli dostajemy identyczne sekwenty. Jeśli Drop M (N, ɛ, α.σ) = α.drop(n, ɛ, σ), to otrzymujemy zastosowanie reguły (Inst). Tak czy inaczej, jest dobrze. Z lematu wynikają następujące wnioski. Wniosek 2.3.12. Jeżeli Γ M : τ jest wyprowadzalne w logice pierwszego rzędu, to istnieje takie wyprowadzenie D o konkluzji Γ M : τ, w którym dla każdego sekwentu Γ N : σ i dla każdego ρ P aths(σ) liczba kwantyfikatorów niewiążących występujących na pozycji ρ w σ jest nie większa niż Θ((N, ρ)). Wniosek 2.3.13. Jeżeli Γ M : τ jest wyprowadzalne w logice pierwszego rzędu, to istnieje takie wyprowadzenie D o konkluzji Γ M : τ, w którym dla każdego sekwentu Γ N : σ i dla każdego ρ P aths(σ) liczba kwantyfikatorów występujących na pozycji ρ w σ jest ograniczona przez arność podformuły występującej na pozycji ρ w σ powiększoną o liczbę Θ((N, ρ)). 2.4. Dowód rozstrzygalności Lemat 2.4.1. Niech D będzie wyprowadzeniem pierwszego rzędu mającym własność INSTbefore-GEN o konkluzji Γ M : τ i takim, że wyprowadzenie ST (D) jest proste. Załóżmy, że w sygnaturze nie ma symboli funkcyjnych o arności większej od zera. Wówczas liczba wolnych zmiennych algebraicznych występujących w wyprowadzeniu D jest ograniczona i ograniczenie to zależy jedynie od konkluzji Γ M : τ. Dowód. Dla każdej zmiennej x V (M) możemy oszacować, ile różnych algebraicznych zmiennych wolnych występuje w IDT D (x). Jeżeli x jest zmienną wolną w M, to IDT D (x) = Γ(x). Zatem znamy liczbę algebraicznych zmiennych wolnych występujących w Γ(x). Dla zmiennej x związanej w M znamy ST (IDT D (x)). Liczba różnych algebraicznych zmiennych wolnych występujących w IDT D (x) jest nie większa niż arność formuły IDT D (x). Dalej zauważmy, że liczba zmiennych wolnych występujących w danym środowisku zależy jedynie od (x) = IDT D (x) dla x Dom( ). Możemy zsumować liczbę zmiennych wolnych występujących w Γ oraz arności formuł IDT D (x) dla x BV (M) i otrzymamy w ten sposób ograniczenie na liczbę zmiennych wolnych, które pojawiają się w środowiskach w wyprowadzeniu D. Zauważmy, że jedyną regułą, która może wprowadzić nową algebraiczną zmienną wolną jest reguła (Inst). Ponieważ sygnatura nie zawiera symboli funkcyjnych o arności większej niż zero, to każda reguła (Inst) wprowadza co najwyżej jedną nową zmienną algebraiczną. Rozważane wyprowadzenie ma własność INST-before-GEN. Zatem w danym ciągu reguł (Inst) lub (Gen) liczba różnych zmiennych algebraicznych w głównym typie sekwentu najpierw rośnie (ale nie przekracza arności formuły), a następnie maleje. Liczba różnych algebraicznych zmiennych wolnych w wyprowadzeniu D nie przekracza sumy liczby zmiennych wolnych występujących w Γ, arności formuł IDT D (x) dla x BV (M) oraz arności formuł IDT D (N) dla N SubT (M). Wszystkie te liczby są znane, bo znamy warunek brzegowy, wyprowadzenie główne D M oraz wiemy, że ST (D) jest proste. 28

Wniosek 2.4.2. Niech D będzie wyprowadzeniem jak w lemacie 2.4.1. Niech {α 1, α 2,...} będzie ustalonym zbiorem zmiennych algebraicznych rozłącznym z F V ar(γ). Wówczas istnieje wyprowadzenie D o konkluzji Γ M : τ i liczba n taka, że F V ar(d ) F V ar(γ) {α 1,..., α n }. Dowód. Z lematu 2.4.1 wynika, że zbiór F V ar(d ) jest skończony. Niech n oznacza moc zbioru F V ar(d ) \ F V ar(γ). Niech S będzie różnowartościowym podstawieniem algebraicznym takim, że Dom(S) = F V ar(d ) \ F V ar(γ) i Ran(S) = {α 1,..., α n }. Wówczas S(D) jest szukanym wyprowadzeniem D. Twierdzenie 2.4.3. Problem sprawdzania typu dla sygnatury bez symboli funkcyjnych o arności większej od zera jest rozstrzygalny. Dowód. Niech Γ M : τ będzie rozważanym problemem. Przypuśćmy, że istnieje wyprowadzenie D o konkluzji Γ M : τ. Porównując ST (Γ M : τ) i FS DM widzimy, jakie podstawienie zastosowano do starych zmiennych typowych D M, aby otrzymać ST (D). Z lematu 2.1.11 wynika, że możemy założyć, że ST (D) jest wyprowadzeniem prostym. Możemy zatem odtworzyć ST (D). Aby otrzymać poprawne wyprowadzenie w typach pierwszego rzędu, musimy w odpowiedni sposób rozmieścić reguły (Gen), (Inst) oraz kwantyfikatory i termy algebraiczne. Z lematu 2.2.3 wiemy, że możemy ograniczyć się do wyprowadzeń mających własność INST-before-GEN. Zatem w każdym ciągu reguł (Inst) i (Gen) najpierw występują reguły (Inst), a następnie reguły (Gen). Jest jasne, że w poprawnym wyprowadzeniu ciąg reguł (Inst) nie może być dłuższy niż liczba kwantyfikatorów stojących na pozycji ɛ w pierwszym sekwencie tego ciągu. Z kolei ciąg reguł (Gen) nie może być dłuższy niż liczba kwantyfikatorów stojących na pozycji ɛ w ostatnim sekwencie tego ciągu. Oczywiście w ciągu reguł (Gen) i (Inst) występuje ten sam term N. Z wniosku 2.3.13 wiemy, że liczba kwantyfikatorów stojących na pozycji ρ w typie danego termu N jest ograniczona z góry przez pewną znaną liczbę, nazwijmy ją a N,ρ. W szczególności dotyczy to pozycji ɛ. Zatem każdy ciąg reguł (Gen) i (Inst) w D jest nie dłuższy niż 2a N,ɛ. Rozważmy, ile różnych typów może zostać przypisane danemu termowi N SubT (M). Wiemy, że liczba kwantyfikatorów stojących na pozycji ρ w typie termu N nie przekracza a N,ρ. Ponadto na mocy wniosku 2.4.2 możemy założyć, że w typie tym pojawiają się tylko zmienne algebraiczne z pewnego ustalonego skończonego zbioru. Istnieje zatem tylko skończenie wiele nierównoważnych typów, które mogą zostać przypisane danemu termowi N. Aby sprawdzić, czy istnieje poprawne wyprowadzenie, wystarczy zatem sprawdzić skończenie wiele wyprowadzeń. 2.5. Złożoność algorytmu W tej części oszacuję złożoność podanego algorytmu. Algorytm polega na sprawdzeniu poprawności pewnej skończonej liczby przypadków. Najpierw zastanówmy się, ile trwa sprawdzenie jednego przypadku. Uwaga 2.5.1. Niech D będzie poprawnym składniowo wyprowadzeniem pierwszego rzędu rozmiaru m. Można sprawdzić, czy D jest poprawnym wyprowadzeniem pierwszego rzędu w czasie kwadratowym względem m. 29

Dowód. Możemy założyć, że D jest poprawnym składniowo wyprowadzeniem, bo składniową poprawność łatwo sprawdzić w czasie liniowym względem rozmiaru D. W naszej definicji wyprowadzenia przyjęliśmy, że każdy sekwent ma etykietę mówiącą, w wyniku której reguły powstał. Wystarczy zatem sprawdzić, czy jest to poprawne użycie podanej reguły. Łatwo zauważyć, że dla każdej reguły sprawdzenie, czy jest ona poprawnie użyta zajmuje czas kwadratowy względem rozmiaru sekwentów występujących w tej regule. Samo sprawdzenie poprawności typów dla termu zajmuje czas liniowy. Za każdym razem trzeba jeszcze sprawdzić, czy środowiska są równe, a to może zająć czas kwadratowy względem rozmiaru sekwentów. Zajmiemy się teraz oszacowaniem liczby przypadków, które musi zbadać algorytm. Uwaga 2.5.2. Niech Γ M : τ będzie rozważanym warunkiem brzegowym rozmiaru n. Wówczas term M, typ τ i środowisko Γ mają rozmiar nie większy niż n. W dalszych rozważaniach będziemy zakładać, że rozmiar termu M, typu τ i środowiska Γ jest liniowy względem n. W szczególności będziemy zakładać, że każdy typ w Γ ma rozmiar liniowy względem n. Uwaga 2.5.3. Niech M będzie lambda termem rozmiaru n. Wówczas liczba sekwentów w wyprowadzeniu D M jest liniowa względem n. Dowód. Wyprowadzenie D M jest drzewem. Każdy węzeł wewnętrzny tego drzewa to pewien sekwent. Aplikacji w termie M odpowiada pewien węzeł wewnętrzny stopnia dwa, lambda abstrakcji węzeł wewnętrzny stopnia jeden, a zmiennej pewien liść. Mamy zatem drzewo, w którym każdy węzeł jest stopnia co najwyżej dwa oraz jest co najwyżej n liści i węzłów wewnętrznych stopnia jeden. Łatwo sprawdzić indukcyjnie, że liczba wszystkich węzłów takiego drzewa jest nie większa niż 2n, czyli jest liniowa względem n. Uwaga 2.5.4. Niech Γ M : τ będzie sekwentem wielkości n. Niech D będzie wyprowadzeniem pierwszego rzędu o konkluzji Γ M : τ o prostym ST (D). Wtedy rozmiar ST (D) może być wykładniczy względem n. Dowód. Oczywiście rozmiar ST (Γ M : τ) jest nie większy niż n. Wiadomo ([5]), że aby odtworzyć ST (D) trzeba wykonać unifikację pewnego zbioru równań A. Rozmiar tego zbioru równań jest wielomianowy względem n. Podstawienie unifikujące R może być wykładnicze względem rozmiaru zbioru równań. W każdym sekwencie N : σ pojawiają się typy dla zmiennych wolnych termu N oraz typ termu N. Typy te należą do zbioru powstałego przez aplikację podstawienia unifikującego R do zbioru A, zatem mogą być wykładniczo duże względem n. W dziedzinie każdego środowiska w ST (D) występuje liniowo wiele zmiennych, zatem pojedynczy sekwent może mieć zatem wykładniczo duży rozmiar. Wszystkich sekwentów w ST (D) jest liniowo wiele, zatem całe wyprowadzenie również może być wykładniczego rozmiaru. Lemat 2.5.5. Niech Γ M : τ będzie sekwentem rozmiaru n. Liczba różnych rozmieszczeń reguł (Gen) lub (Inst), które rozważa algorytm, może być rzędu 2 P (n) dla pewnego wielomianu P. Dowód. Wszystkich reguł (Gen) oraz (Inst) w wyprowadzeniu pierwszego rzędu D jest nie więcej niż sumaryczna liczba kwantyfikatorów występujących w D. Niech N będzie podtermem M. Niech σ będzie takim typem, który algorytm rozważa jako typ dla N. W typie σ liczba kwantyfikatorów wiążących jest co najwyżej równa arności formuły σ. Na mocy lematu 2.5.4 arność formuły σ może być wykładnicza względem n. Zatem 30

liczba kwantyfikatorów wiążących dla danego typu σ jest może być wykładnicza względem n. Liczbę kwantyfikatorów niewiążących stojących na pozycji ρ w σ można oszacować z góry przez n. Wszystkich pozycji w σ jest wykładniczo wiele, więc niewiążących kwantyfikatorów w σ może być wykładniczo wiele. W typie dla ustalonego termu N może być zatem eksponencjalnie wiele wszystkich kwantyfikatorów. Stąd wynika, że w wyprowadzeniu badanym przez algorytm może pojawić się wykładniczo wiele reguł (Gen) lub (Inst) z termem N. Mamy liniową liczbę wszystkich termów, z każdym z nich jest związana co najwyżej wykładnicza liczba reguł (Gen) lub (Inst). Razem mamy zatem rzędu 2 P (n) rozważanych rozmieszczeń (Inst) i (Gen) dla pewnego wielomianu P. Teraz chcę oszacować, ile nierównoważnych typów może mieć dany term N. Najpierw oszacuję liczbę wszystkich algebraicznych zmiennych wolnych występujących w wyprowadzeniu D. Lemat 2.5.6. Niech D będzie wyprowadzeniem pierwszego rzędu mającym własność INSTbefore-GEN o konkluzji Γ M : τ i takim, że wyprowadzenie ST (D) jest proste. Niech n będzie rozmiarem Γ M : τ. Wówczas liczba wolnych zmiennych algebraicznych występujących w wyprowadzeniu D jest wykładnicza względem n. Dowód. Jeżeli x jest zmienną wolną w M, to IDT D (x) = Γ(x). Liczba algebraicznych zmiennych wolnych występujących w IDT D (x) dla wszystkich zmiennych wolnych termu M jest zatem mniejsza niż n. Jeżeli x jest zmienną związaną w M, to liczba algebraicznych zmiennych wolnych występujących w IDT D (x) jest nie większa niż arność IDT D (x). Wiemy, że arność IDT D (x) jest co najwyżej wykładnicza oraz zmiennych związanych w M jest nie więcej niż n, więc algebraicznych zmiennych wolnych występujących w typach dla zmiennych jest co najwyżej wykładniczo wiele. Ponadto reguł (Inst) w wyprowadzeniu D jest co najwyżej wykładniczo wiele, więc wprowadzają one co najwyżej wykładniczo wiele nowych algebraicznych zmiennych wolnych. Zatem liczba wszystkich algebraicznych zmiennych wolnych jest wykładnicza względem n. To teraz chcę oszacować, ile nierównoważnych typów można przypisać danemu podtermowi N. Lemat 2.5.7. Niech Γ M : τ będzie sekwentem rozmiaru n. Niech N będzie podtermem termu M. Liczba różnych typów, które algorytm może przypisać termowi N, jest rzędu 2 2Q(n) dla pewnego wielomianu Q. Dowód. Niech σ będzie typem, który algorytm rozważa jako przypisany N. Niech m będzie rozmiarem σ. Wtedy arność σ jest rzędu m. Typ σ ma zatem m miejsc, na których może wystąpić term algebraiczny. Tym termem może być albo zmienna wolna, albo stała, może tam również wystąpić zmienna związana. Mamy do dyspozycji wykładniczą liczbę zmiennych algebraicznych oraz liniową liczbę stałych. Zmienna związana może być związana na jednym z m miejsc. Zatem różnych rozmieszczeń zmiennych i stałych jest rzędu 2 n + n + m m. Wiemy, że m może być wykładniczo duże, zatem 2 n + n + m m jest rzędu 2 2R 1 (n) dla pewnego wielomianu R 1. Ponadto trzeba uwzględnić, że niektóre kwantyfikatory mogą wiązać więcej niż jedno miejsce oraz uwzględnić typy różniące się kolejnością kwantyfikatorów. Miejsc do wiązania jest co najwyżej m. Te m miejsc trzeba podzielić między kwantyfikatory. Podziałów zbioru m-elementowego jest nie więcej niż m m, permutacji m kwantyfikatorów jest m!, czyli mniej niż 2 n2. 31