Odwrócenie kwantyfikatorów jest ważną właściwością, która często stoi za dobrze znanymi twierdzeniami.
Na przykład w analizie różnica między i jest różnicą między ciągłością punktową a jednolitą . Dobrze znane twierdzenie mówi, że każda punktowa mapa ciągła jest jednolicie ciągła, pod warunkiem, że domena jest ładna, tj . Zwarta .∀ϵ>0.∀x.∃δ>0∀ϵ>0.∃δ>0.∀x
W rzeczywistości zwartość jest podstawą odwrócenia kwantyfikatora. Rozważmy dwa typy danych i , z których jest jawny i jest zwarty (patrz poniżej wyjaśnienia tych warunkach) i niech być semidecidable stosunek pomiędzy i . Instrukcja można odczytać w następujący sposób: każdy punkt w jest objęty pewnym . Ponieważ zestawy są „obliczalne otwarte” (półdecydowalne) iXYXYϕ(x,y)XY∀y:Y.∃x:X.ϕ(x,y)yYUx={z:Y∣ϕ(x,z)}UxYjest zwarty, istnieje skończona subcover. Udowodniliśmy, że
oznacza, że
Często możemy zredukować istnienie skończonej listy do pojedynczego . Na przykład, jeśli jest uporządkowane liniowo, a jest monotoniczny w względem kolejności, to możemy przyjąć, że jest największym z .
∀y:Y.∃x:X.ϕ(x,y)
∃x1,…,xn:X.∀y:Y.ϕ(x1,y)∨⋯∨ϕ(xn,y).
x1,…,xnxXϕxxx1,…,xn
Aby zobaczyć, jak ta zasada jest stosowana w znanym przypadku, spójrzmy na stwierdzenie, że jest funkcją ciągłą. Zachowujemy jako wolną zmienną, aby nie pomylić zewnętrznego zewnętrznego uniwersalnego kwantyfikatora:
Ponieważ jest zwarta, a porównanie liczb rzeczywistych jest w połowie nierozstrzygalne, instrukcja jest w połowie niezdecydowany. Pozytywne liczby rzeczywiste są jawne, a jest zwarta, więc możemy zastosować zasadę:
f:[0,1]→Rϵ>0
∀x∈[0,1].∃δ>0.∀y∈[x−δ,x+δ].|f(y)−f(x)|<ϵ.
[x−δ,x+δ]ϕ(x,δ)≡∀y∈[x−δ,x+δ].|f(y)−f(x)|<ϵ[0,1]∃δ1,δ2,…,δn>0.∀x∈[0,1].ϕ(δ1,x)∨⋯ϕ(δn,x).
Ponieważ jest antymonotonem w najmniejszym z już to robi, więc potrzebujemy tylko :
Mamy
jednolitą ciągłość .
ϕ(δ,x)δδ1,…,δnδ∃δ>0.∀x∈[0,1].∀y∈[x−δ,x+δ].|f(y)−f(x)|<ϵ.
f
Mówiąc niejasnie, typ danych jest zwarty, jeśli ma obliczalny uniwersalny kwantyfikator, i jawnie, jeśli ma obliczalny kwantyfikator egzystencjalny. (Nieujemne) liczby całkowite są jawne, ponieważ w celu ustalenia, czy , przy czym połowie nierozstrzygalny, przeszukujemy równolegle przez połączenie typu jaskółczy ogon . Przestrzeń Cantora jest zwarta i jawna, jak wyjaśniono w Abstract Stone Duality Paula Taylora oraz w „ Syntetycznej topologii typów danych i przestrzeni klasycznych ” Martina Escardo (zobacz także powiązane pojęcie przestrzeni do przeszukiwania ).N∃n∈N.ϕ(n)ϕ(n)2N
Pozwól nam zastosować zasadę do wspomnianego przykładu. Widzimy język jako mapę od (skończonych) słów nad ustalonym alfabetem do wartości boolowskich. Ponieważ słowa skończone są w obliczalnej biotywnej korespondencji z liczbami całkowitymi, możemy postrzegać język jako mapę od liczb całkowitych do wartości boolowskich. Oznacza to, że typem danych wszystkich języków jest, aż do obliczalnego izomorfizmu, dokładnie przestrzeń Cantora nat -> bool
lub zapis matematyczny , który jest zwarty. Maszyna Turinga w czasie wielomianowym jest opisana przez swój program, który jest ciągiem skończonym, w związku z czym można przyjąć, że przestrzeń wszystkich (reprezentacji) maszyn Turinga jest jawna lub .2Nnat
N
Biorąc pod uwagę maszynę Turinga i język , wyrażenie które mówi „język jest odrzucany przez ”, jest w połowie nierozstrzygalne, ponieważ w rzeczywistości jest rozstrzygalne: po prostu uruchom z wejściem i zobacz, co to robi. Warunki dla naszej zasady są spełnione! Stwierdzenie „każda maszyna wyroczni ma język taki, że nie jest akceptowane przez ”, jest zapisywane symbolicznie jako
Po odwróceniu kwantyfikatorów otrzymujemy
Mcrejects(M,c)cMMcMbbMb
∀M:N.∃b:2N.rejects(Mb,b).
∃b1,…,bn:2N.∀M:N.rejects(Mb1,b1)∨⋯∨rejects(Mbn,bn).
Ok, więc skończymy z wieloma językami. Czy możemy połączyć je w jeden? Zostawię to jako ćwiczenie (dla mnie i dla ciebie!).
Być może zainteresuje Cię nieco bardziej ogólne pytanie, jak przekształcić do równoważnego wyrażenia formularza lub odwrotnie. Można to zrobić na kilka sposobów, na przykład:∀x.∃y.ϕ(x,y)∃u.∀v.ψ(u,v)