{{TIN065 Prednášky}}

Na minulej prednáške sme si spomenuli základný vzťah medzi limitami a skokom medzi stupňami (zatiaľ iba od \emptyset k \emptyset'). Najprv špecifický prípad, kde sme mali \emptyset'-rekurzívne A a platilo AT    CA(x)=limsf(x,s)A \leq_T \emptyset'\iff C_A(x)=\lim_{s \to \infty} f(x, s) pre nejakú ORF f. Mali sme neefektívne orákulum, ale nám stačilo ho aproximovať na konečnej časti. A pýtali sme sa, či už je výsledok stabilný.

Všeobecnejšia veta zasa mala dve časti. Jedným smerom: ak máme ORF f, tak limsf(x,s)\lim_{s \to \infty} f(x, s) je \emptyset'-ČRF. Pomocou while cyklu sme hľadali najmenšie s také, že sa nám to stabilizuje. Opačným smerom zasa \emptyset'-ČRF φ\varphi je podmienene rovná limsf(x,s)\lim_{s \to \infty} f(x,s) pre nejakú ORF f. Mali sme teda Φz()(x)\Phi_z(\emptyset')(x) (to je naša φ\varphi), ktoré nemusí vždy konvergovať a my aproximujeme celý výpočet. Vytvárame si výpočet pre konečné množstvo krokov a vraciame <σ,x,y><\sigma, x, y> ak platí: Φz,s(σ)(x)=y\Phi_{z,s}(\sigma)(x)=y & σs\sigma \leq \emptyset'_s. Keď sa nám výpočet stabilizuje, tak vrátime z neho tretiu zložku a to bude výsledok našej f (ak sa výpočet nestabilizuje, tak limita f nebude existovať).

Dnes sme začali dodatkom: ((\exists ORF h)h)(Φz()(x)limsh(z,x,s))(\Phi_z(\emptyset')(x) \simeq \lim_{s \to \infty} h(z,x,s)).

Základná myšlienka je - ak aplikujeme limitu, prejdeme o skok vyššie. To si zhrnieme nasledujúcou ešte všeobecnejšou vetou:

Ešte všeobecnejšia veta

<b>Veta:</b> (relativizácia)

  1. Ak f je A-ORF, tak limsf(x,s)\lim_{s \to \infty} f(x, s) je A' ČRF.

  2. Pre ľubovoľnú A'-ČRF φ\varphi existuje A-ORF g taká, že (x)(φ(x)=limsg(x,s))(\forall x)(\varphi(x) = \lim_{s \to \infty} g(x, s)).

#Dokonca (a)(A)(Φz(A)(x)limsΦa(A)(z,x,s))(\exists a)(\forall A)(\Phi_z(A')(x) \simeq \lim_{s \to \infty} \Phi_a(A)(z, x, s)), kde g=Φa(A)g = \Phi_a(A) a je všade definovaná. Pekné je, že a nezávisí na A.

Dokazuje sa to relativizáciou dôkazu z minulej prenášky. Len namiesto \emptyset všade napíšeme A. Takže keď sme mali rekurzívne spočítateľnú \emptyset' a =Wz0,s\emptyset' = W_{z_0, s}^\emptyset, kde s boli kroky, tak teraz budeme mať pre každé A množinu Wz0A=AW_{z_0}^A = A'. A' je A-rekurzívne spočítateľná a vieme, že A=Wz0AA' = W_{z_0}^A a to sa aproximuje cez Wz0,sAW_{z_0, s}^{A^\prime}. Dôkaz bude rozvnaký ako minule.

Dôsledok:

ParseError: KaTeX parse error: Undefined control sequence: \mbox at position 131: … \infty}}_{n+1 \̲m̲b̲o̲x̲{ limit}} f(z, …

, kde vnútorné limity (t1,,tnt_1 \to \infty, \ldots, t_n \to \infty) existujú a vonkajšia pre t0t_0 \to \infty existovať nemusí. Dokazuje sa to iteráciou predchádzajúceho dôkazu ("je to vidět") pravdepodobne s troškou indukcie. Vnútri sú ORF, preto vnútorné limity musia existovať.

Takže z tejto časti si odnesieme to, že prechod o skok niektorým smerom znamená pridať alebo odbrať limitu.

Vsuvka: O niektorých množinách a kvantifikátoroch

Označme si nasledujúce množiny takto:

  • A={x:Wx=}A = \{x: W_x = \emptyset\}

  • B={x:Wx}B = \{x: W_x \neq \emptyset\}

  • ParseError: KaTeX parse error: Undefined control sequence: \mbox at position 16: Fin = \{x: W_x \̲m̲b̲o̲x̲{ je konečná}\}

  • ParseError: KaTeX parse error: Undefined control sequence: \mbox at position 16: Inf = \{x: W_x \̲m̲b̲o̲x̲{ je nekonečná}…

  • Tot={x:Wx=N}Tot = \{x: W_x = \mathbb{N}\}

  • ParseError: KaTeX parse error: Undefined control sequence: \mbox at position 16: Rek = \{x: W_x \̲m̲b̲o̲x̲{ je rekurzívna…

Tvrdenie: B je rekurzívne spočítateľná a B1KB \equiv_1 K.

Prvá časť je vidieť. B={x:s:Wx,s}={x:y,s:yWx,s}B = \{x: \exists s : W_{x, s} \neq \emptyset\} = \{x:\exists y, s : y \in W_{x, s}\}, kde na konci máme existenčný kvantifikátor na rekurzívnej podmienke, takže je to rekurzívne spočítateľné.

Prevoditeľnosť K na B vyplýva z prevoditeľnosti K na Tot, keďže Tot je podmnožina B. Chceme teda nájsť takú ORF f, pre ktorú bude platiť φx(x)    Wf(x)=N\varphi_{x}(x)\downarrow \iff W_{f(x)} = \mathbb{N}. Opäť pomôže s-m-n veta a fiktívna premenná. Definujme ČRF α\alpha takto: α(x,w)    φx(x)\alpha(x,w)\downarrow \iff \varphi_{x}(x)\downarrow. Funkcia α\alpha má index e, použijeme s-m-n vetu: α(x,w)φe(x,w)φs1(e,x)(w)\alpha(x,w) \simeq \varphi_{e}(x,w) \simeq \varphi_{s_1(e,x)}(w). Našu f definujme f(x)=s1(e,x)f(x) = s_1(e,x). Potom pre každé w: xK    φx(x)    α(x,w)    φf(x)(w)    Wf(x)=N    f(x)Totx \in K \iff \varphi_{x}(x)\downarrow \iff \alpha(x,w)\downarrow \iff \varphi_{f(x)}(w)\downarrow \iff W_{f(x)} = \mathbb{N} \iff f(x) \in Tot. Takže K je prevediteľná na Tot a teda ja na B.

Ešte ukážeme, že B1KB \leq_1 K. Rovnakým postupom ako pri dôkaze opačného smeru si vytvoríme funkciu β(x,y,w)\beta(x, y, w) s fiktívnou premennou ww a z jej indexu pomocou s-m-n vety vytvoríme ORF funkciu g(x)g(x). Pre túto funkciu g(x)g(x) bude platiť, že pre každý vstup xx vráti číslo programu, ktorý ignoruje svoj vstup a skonverguje práve vtedy, ak nájde nejaký prvok, ktorý padne do WxW_x.

{{TODO|Nasledujúci postup je síce zrejme správny, ale nevedie k cieľu. Trebalo by ho ešte vylepšiť, opraviť a dotiahnuť to do konca.}}

Formálne: Funkciu β(x,y,w)\beta(x, y, w) definujeme takto: β(x,y,w)\beta(x, y, w)\downarrow    \iffφx(y)\varphi_x(y)\downarrow Nech β(x,y,w)\beta(x, y, w) má index ee. Potom platí: β(x,y,w)\beta(x, y, w)\downarrow    \iffφe(x,y,w)\varphi_e(x, y, w)\downarrow    \iffφs2(e,x,y)(w)\varphi_{s_2(e, x, y)}(w)\downarrow. Zadefinujeme si: g(x)=s2(e,x,y)g(x) = s_2(e, x, y) pre pevné xx a yy. Potom platí: xBx \in B    \iff(y)(φx(y))(\exists y)(\varphi_x(y)\downarrow)    \iff(y)(β(x,y,w))(\exists y)(\beta(x, y, w)\downarrow)    \iff(y)(φe(x,y,w))(\exists y)(\varphi_e(x, y, w)\downarrow)    \iff(y)(φs2(e,x,y)(w))(\exists y)(\varphi_{s_2(e, x, y)}(w)\downarrow)    \iff(y)(φg(x)(w))(\exists y)(\varphi_{g(x)}(w)\downarrow). Funkcia g(x)g(x) nezávisí na ww. Položme teda w=g(x)w = g(x) a dostávame: (y)(φg(x)(w))(\exists y)(\varphi_{g(x)}(w)\downarrow)\Longrightarrow(y)(φg(x)(g(x)))(\exists y)(\varphi_{g(x)}(g(x))\downarrow)    \iff(y)(g(x)K)(\exists y)(g(x) \in K).

Problémy sú dva: prvým je, že sled ekvivalencií je porušený jednou implikáciou a druhým je existenčný kvantifikátor cez premennú y, ktorý sa stále objavuje pred požadovanou formulou g(x)Kg(x) \in K.

Pre takúto funkciu gg má platiť: xBx \in B    \iffWxW_x\neq \emptyset    \iffg(x)Wg(x)g(x) \in W_{g(x)}    \iffg(x)Kg(x) \in K. A teda B1KB \leq_1 K.

<b>Iná možnosť dôkazu</b> B1KB \leq_1 K je, že si spomenieme na to, že K je 1-úplná.

Keďže A=BA = \overline{B}, tak A1BA \equiv_1 B a preto A nie je rekurzívne spočítateľná.

Ešte je vhodné si všimnúť, že A aj B majú v definícii jeden kvantifikátor (y\exists y ... alebo y\forall y ...).

Množiny s dvoma kvantifikátormi

  • Fin: {x:(s0)(s>s0)(sWx)}\{x: (\exists s_0)(\forall s > s_0)(s \notin W_x)\} alebo tiež (s0)(s>s0)(t)(sWx,t)(\exists s_0)(\forall s > s_0)(\forall t)(s \notin W_{x, t}).

  • Inf: podmienka: (s)(j)(j>s(\forall s)(\exists j)(j>s & jWx)j\in W_{x}) alebo tiež (s)(j)(t)(j>s(\forall s)(\exists j)(\exists t)(j>s & jWx,t)j\in W_{x, t})

  • Tot: (s)(t)(sWx,t)(\forall s)(\exists t)(s \in W_{x, t})

Tvrdenie: Inf1\equiv_1Tot.

Opäť si vytvoríme funkciu α\alpha: φα(x)(j)    {0,1,,j}Wx\varphi_{\alpha(x)}(j)\downarrow \iff \{0, 1, \ldots, j\} \subset W_x. Pre stále väčšie j je vpravo stále väčšia množina a α\alpha s rastúcim j kontorluje, či j stále náleží do WxW_x. Ak nejaké y0y_0 nie je prvkom WxW_x, tak (yy0)(φα(x)(y))(\forall y \geq y_0)(\varphi_{\alpha(x)}(y)\uparrow) (už sa tam nedostane).

Opačne: φβ(x)(j)\varphi_{\beta(x)}(j)\downarrow práve vtedy, ak existuje aspoň j prvkov vo WxW_x.

ParseError: KaTeX parse error: Undefined control sequence: \mbox at position 7: x \in \̲m̲b̲o̲x̲{Inf} \iff \bet…

. Vezmeme si WxW_x a efektívne ho generujeme. Keď sme vypísali aspoň j čísel, tak φβ(x)(j)\varphi_{\beta(x)}(j)\downarrow.

ParseError: KaTeX parse error: Undefined control sequence: \mbox at position 1: \̲m̲b̲o̲x̲{Fin} = \overli…

.

Platí tiež:

ParseError: KaTeX parse error: Undefined control sequence: \mbox at position 35: …^{(2)}} \equiv \̲m̲b̲o̲x̲{Tot}

, teda

ParseError: KaTeX parse error: Undefined control sequence: \mbox at position 34: …quiv \overline{\̲m̲b̲o̲x̲{Tot}} \equiv \…

.

Aritmetická hierarchia

Aritmetická hierarchia je klasifikácia množín podľa aritmetickej zložitosti. S hierarchiami sa stretávame vo viacerých oblastiach. Napríklad v analýze sa dá stretnúť s borelovskou hierarchiou, na zložitosti máme polynomiálnu hierarchiu. Obidve tieto hierarchie sa trochu podobajú našej. V borelovskej by namiesto kvantifikátorov mali byť zjednotenia a prieniky, v polynomiálnej budeme kvantifikátory nejako polynomiálne obmedzovať.

Pozrieme sa na hierarchiu "trochu s nadhľadom" a budeme vynechávať premenné, aby sa nám ľahšie písali a chápali definície.

<b>Definícia:</b> Σn\Sigma_n prefix (respektíve Πn\Pi_n prefix) je konečná skupina kvantifikátorov, ktorá má n podskupín, z ktorých každá je homogénna (to znamená, že v nej sú len kvantifikátory rovnakého typu: len \exists alebo len \forall), skupiny sa striedajú a Σn\Sigma_n začína existenčným a Πn\Pi_n začína všeobecným kvantifikátorom.

Keby sme tú definíciu chceli napísať aj s premennými, tak si musíme dávať pozor na veci ako pomenovanie premenných a rozsahy ich platnosti.

<b>Definícia:</b> Prefix sa nazýva <em>redukovaný</em>, ak každá jeho podskupina je jednočlenná, takže sa v prefixe striedajú iba jednotlivé kvantifikátory.

Prečo sa to volá aritmetická hierarchia? Pretože kvantifikátory sú cez objekty najnižšieho možného rádu - základné objekty - čísla. Niekedy sa prefixy označujú aj horným indexom Σn0\Sigma_n^0, kde nula označuje úroveň kvantifikácie. V analýze sa používa aj vyššia úroveň kvantifikácie. Napríklad prvá úroveň tam predstavuje kvantifikáciu cez funkcie (pre každú funkciu), prípadná druhá úroveň predstavuje operátory (zobrazenia z funkcií do funkcií). Niekedy sa naviac ako Σnp\Sigma_n^p označujú triedy polynomiálnej hierarchie, napríklad a často v zložitosti. V značení je teda trošku zmätok.

<b>Definícia:</b> Predikát je prvkom triedy Σn\Sigma_n, resp. Πn\Pi_n (presnejšie Σn0\Sigma_n^0 a Πn0\Pi_n^0), ak je vyjadriteľný v tvare Σn\Sigma_n prefix na nejaký všeobecne rekurzívny predikát (ORP), respektíve Πn\Pi_n prefix na ORP, pre nejaké <em>konečné</em> n.

Pre množinu je tá definícia veľmi podobná.

Trieda Σ0=Π0\Sigma_0 = \Pi_0 predstavuje práve všetky rekurzívne, teda algoritmicky rozhodnuteľné, množiny (definované iba samotným ORP, bez akéhokoľvek prefixu).

Trieda Σ1\Sigma_1 obsahuje práve všetky rekurzívne spočítateľné množiny (RSM), trieda Π1\Pi_1 obsahuje práve všetky ich negácie.

Triedy môžeme tiež relativizovať. Potom trieda Σn0,A\Sigma_n^{0,A} predstavuje práve všetky množiny, ktorých popis je možné vyjadriť v tvare Σn\Sigma_n prefix na A-ORP. Obdobne sa definuje Πn0,A\Pi_n^{0, A}. Potom Σ00,A=Π00,A\Sigma_0^{0, A} = \Pi_0^{0, A} sú práve všetky A-rekurzívne množiny (A-RM).

<b>Definícia:</b> Predikát je <em>aritmetický</em>, ak je vyjadriteľný pomocou logiky prvého rádu aplikovanej na nejaký ORP. To znamená, že sa nesmie kvantifikovať cez funkcie ani cez nič iné, okrem samotných čísel.

<b>Veta:</b> Predikát je aritmetický práve vtedy, ak je prvkom nejakej triedy Σn\Sigma_n alebo Πn\Pi_n. <b>Dôkaz:</b> Jedným smerom to ide priamo, druhým smerom je to cvičenie na prenexné operácie.

<b>Pozorovanie:</b> Z akéhokoľvek predikátu obsahujúceho ľubovoľný prefix aplikovaný na ORP sa vždy sa dá vyrobiť ekvivalentný predikát, obsahujúci redukovaný prefix. Ak máme napríklad (x)(y)(P(x,y))(\exists x)(\exists y)(P(x, y)), tak to prevedieme na (w)(P(w(2,1),w(2,2)))(\exists w)(P(w_{(2, 1)}, w_{(2, 2)})), kde w je kód dvojice a v predikáte používame namiesto x a y w(2,1)w_{(2,1)} a w(2,2)w_{(2,2)}, teda prvú, respektíve druhú zložku z kódu dvojice. Tak isto postupujeme pre všeobecné kvantifikátory a pre podskupiny obsahujúce ľubovoľný <em>konečný</em> počet kvantifikátorov rovnakého typu.

<b>Platí:</b> Obmedzené kvantifikátory nám tiež nevadia. Majme predikát (xt)(y)(R(x,y))(\forall x \leq t)(\exists y)(R(x,y)), kde R je nejaký ORP. To znamená, že pre každú z konečného počtu "kvantifikovaných" hodnôt premennej x existuje y také, že platí predikát R(x,y)R(x, y). Vytvorme si teda najprv t+1t+1-ticu (y0yt)(y_0 \dots y_t) takú, že na ii-tom mieste bude to yiy_i, ktoré "existuje" pre ii-té xx (pre i=0ti = 0 \dots t). Túto t+1t+1-ticu môžeme kódovať jediným číslom y(t+1)y_{(t+1)}, takže dostaneme nový výraz ekvivalentný s pôvodným: (y(t+1))(xt)(R(x,y(t+1,x+1)))(\exists y_{(t+1)})(\forall x \leq t)(R(x, y_{(t+1, x+1)})). Vyberáme xx-tú zložku z y(t+1)y_{(t+1)} (ale píšeme y(t+1,x+1)y_{(t+1, x+1)}, pretože vydeľovanie zložky sa indexuje od jednotky a nie od nuly). V tomto príklade okrem inkriminovanej dvojice žiadne ďalšie kvantifikátory vo výraze nie sú, ale presne takto to funguje aj vtedy, keď tam ešte nejaké, pred alebo za, sú. Pri obmedzenom existenčnom kvantifikátore výraz najprv znegujeme, použijeme "posunutie obmedzeného všeobecného kvantifikátora dovnútra" a znegujeme naspäť. Pomocou popísaného postupu môžeme obmedzené kvantifikátory dostať až k všeobecne rekurzívnemu predikátu (ORP), kde ich zameníme za konečnú konjunkciu alebo disjunkciu a tak sa ich zbavíme úplne.

A ešte poznámka na záver: Ak povieme, že niečo je prvkom Σn\Sigma_n, tak to znamená, že sa to dá vyjadriť ako ORP so Σn\Sigma_n prefixom a nás bude zaujímať, ako to vyjadriť čo najlepšie (najkrajšie). A tiež sa pokúsime zistiť, či by nešlo vyjadriť množinu/predikát ekvivalentne pomocou kratšieho prefixu (napríklad K je v Σ1\Sigma_1, ale už nie je v Σ0\Sigma_0). Súvisí to so skokmi \emptyset, ktoré kopírujú triedy Σn\Sigma_n.