├── README.md ├── complexity-theory.pdf ├── math-log-questions-colloq.pdf ├── photos ├── tm-22-10-2019-2.jpg ├── tm-22-10-2019.jpg ├── tm-29-10-2019-2.jpg ├── tm-29-10-2019-3.jpg └── tm-29-10-2019.jpg ├── src ├── complexity-theory.md ├── math-log-questions-colloq.md ├── math-log-questions.html ├── math-log-questions.md ├── probability-theory-and-mathematic-statistics.md ├── translation-methods.md └── type-theory.md ├── translation-methods.pdf └── type-theory.pdf /README.md: -------------------------------------------------------------------------------- 1 | # notes 2 | 3 | * [Type Theory](type-theory.pdf) 4 | * [Translation Methods](translation-methods.pdf) 5 | * [Complexity Theory](complexity-theory.pdf) 6 | * [Mathematical Logic (colloquium)](math-log-questions-colloq.pdf) 7 | * [Mathematical Logic (exam)](src/math-log-questions.html) 8 | -------------------------------------------------------------------------------- /complexity-theory.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DubKoldun/notes/7bee12793cad579092e2b917fda6b88576236f82/complexity-theory.pdf -------------------------------------------------------------------------------- /math-log-questions-colloq.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DubKoldun/notes/7bee12793cad579092e2b917fda6b88576236f82/math-log-questions-colloq.pdf -------------------------------------------------------------------------------- /photos/tm-22-10-2019-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DubKoldun/notes/7bee12793cad579092e2b917fda6b88576236f82/photos/tm-22-10-2019-2.jpg -------------------------------------------------------------------------------- /photos/tm-22-10-2019.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DubKoldun/notes/7bee12793cad579092e2b917fda6b88576236f82/photos/tm-22-10-2019.jpg -------------------------------------------------------------------------------- /photos/tm-29-10-2019-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DubKoldun/notes/7bee12793cad579092e2b917fda6b88576236f82/photos/tm-29-10-2019-2.jpg -------------------------------------------------------------------------------- /photos/tm-29-10-2019-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DubKoldun/notes/7bee12793cad579092e2b917fda6b88576236f82/photos/tm-29-10-2019-3.jpg -------------------------------------------------------------------------------- /photos/tm-29-10-2019.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DubKoldun/notes/7bee12793cad579092e2b917fda6b88576236f82/photos/tm-29-10-2019.jpg -------------------------------------------------------------------------------- /src/complexity-theory.md: -------------------------------------------------------------------------------- 1 | # теория сложности 2 | 3 | > **literature:** 4 | > 5 | > * Arora Barak "Complexity Modern Approach" (1st part) 6 | > * Garry Johnson "Трудно разрешенные задачи" 7 | > * site: compendium of NP-complete problems 8 | > 9 | > **outline:** 10 | > 11 | > [TOC] 12 | 13 | ## NP-полнота 14 | 15 | Характеристики сложности вычисления. 16 | Есть распознователи ($\Sigma^* \rightarrow B$) и преобразователи ($\Sigma^* \rightarrow \Sigma^*$) 17 | 18 | + время: $T(n) = O(f(n))$ 19 | + память: $S(n)$ 20 | + random: $R(n)$ 21 | 22 | $DTIME(f) = \{L\ |\ \exists\ program\ p : \\ 1. \ x \in L \implies p(X) = 1, x \notin L \implies p(x) = 0 \\ 2.\ n = |x| \implies T(p, x) = O(f(n))\}$ 23 | 24 | $h = (01)^* \in DTIME(n)$ 25 | 26 | $\widetilde{DTIME(f)} = \{h\ |\ ...\}$ 27 | 28 | палинромы: $Pal \in DTIME_{RAM}(n)\\ Pal \notin DTIME_{TM}(n)$ 29 | 30 | $P = \cup_{f - polynom} DTIME(f) = \cup^\infty_{i = 0} DTIME(n^i)$ 31 | 32 | $p(n) q(n): p + q, p * q, p(q(n))$ 33 | $L_1 L_2 \in P: L_1 \cup L_2 \in P, L_1 \cap L_2 \in P, \overline{L_1} \in P, L_1 L_2 \in P, L_1^* \in P$ 34 | 35 | ### концепция недетрминированных вычислений 36 | 37 | Допускается $\iff \ \exist$ последовательность переходов, которая приводит к допуску 38 | недетерминировання программа p(x) допускает $\iff \ \exist$ последовательность недетерминированных выборов, приводящая к допуску 39 | p(x) не допускает $\iff \ \forall$ последовательности выборов не допуск 40 | 41 | **def** ==*NTIME(f)*== = $\{L \ | \ \exist$ недетерминированная программа p $1) \ p(x) - acc \iff x \in L; \ 2) \ T(p, x) = O(f(n))\}$ 42 | 43 | > **ex** задача о гамильтоновом цикле 44 | > ``` 45 | > p(G) 46 | > vis[1..n]: arr of bool 47 | > s = 1 48 | > for i = 1..n 49 | > u = ?{1..n} 50 | > if (vis[u]) return false 51 | > if (su not in EG) return false 52 | > vis[u] = true 53 | > s = u 54 | > if (s != 1) return false 55 | > return true 56 | > ``` 57 | 58 | 59 | > **ex** `isComposite(z)`, $n = \lceil \log_B z \rceil$, где B - это основание системы счисления 60 | > 61 | > ``` 62 | > a = ?{2..z-1} // T = logn 63 | > if z % a = 0 // poly(logn) 64 | > return true 65 | > return false 66 | > ``` 67 | 68 | Нельзя свопнуть бранчи и сделать проверку на простоту, потому что это `true` и `false` не симметричны в недетерминированных вычислениях (нельзя даже `isPrime(n): return !isComposite(n)`) 69 | 70 | --- 71 | 72 | **def** ==*NP*== = $\cup_{f - polynome}\ NTIME(f)$, *nondeterministic polynomial* 73 | **stat** $P \sub NP$ 74 | 75 | **?** $P = NP$ 76 | 77 | *неформально*: класс P - класс задач, которые можно решить за полином, класс NP - класс задач, решение которых можно проверить за полином 78 | 79 | $\Sigma_1$ - класс языков, в которых можно формализовать класс решения, которое можно проверить за полином 80 | $\Sigma_1 = \{L \ | \ \exist$ полином p, работающая за полином программа R(x, y) - детерминированная 81 | $x \in L \iff \exist \ y $ (называют *сертификат*)$: \ |y| \leq p(|x|) \ and\ R(x, y) = 1$ 82 | $x \notin L \implies \forall \ y\ (|y| \leq p(|x|)) \ R(x, y) = 0 \}$ 83 | 84 | > **ex** гамильтонов цикл $Ham \in \Sigma_1$ 85 | > ``` 86 | > R(G, y): 87 | > y as arr[1..n] of int 88 | > // we can add: y = ?arr[i..n] of {1..n} // O(n) 89 | > vis = arr[1..n] of bool 90 | > for i = 1..n 91 | > if (y[i] y[i mod n+1] not in EG) return false 92 | > if vis[y[i]] return false 93 | > vis[y[i]] = true 94 | > return true 95 | > ``` 96 | 97 | --- 98 | 99 | **Th** $NP = \Sigma_1$ 100 | $L \in NP$, $L \in \Sigma_1$ 101 | *неформально*: NP – определение на языке недетерминированных формат, $\Sigma_1$ – определение на языке сертификатов 102 | 103 | --- 104 | 105 | ## сведения 106 | 107 | **def** ==сводим B к A *по Тьюрингу*==: А, B – языки, C – сложностный класс, $B \in C^A$ (C с *оракулом* A). не считая вызова функции `isInA(x): Bool`, остальные ограничения класса C учитываются. 108 | 109 | **def** ==сведение по *Куку-Левину*== *(Тьюрингу за полином)* $B \in P^A$ 110 | 111 | **def** ==*сведене по Карпу*== *(m-сведение)*: язык B сводится к A ($B \leq A$), если $\exist$ вычислимая за полином функция f такая, что $x \in B \iff f(x) \in A$ 112 | 113 | > **ex** $IND = \{\langle G, k \rangle |$ $ в $ $\ G \ d$ независимое множество размера k $\}$ 114 | > $CLIQUE = \{\langle G, k \rangle |$ в $ G \exist$ клика размера k$\}$ 115 | > $IND \leq CLIQUE$ 116 | > $f(\langle G, k \rangle ) = \langle \overline{G}, k \rangle $ // за полином 117 | > в G и множестве размера k $\iff$ в $\overline{G} \ \exist$ клика размера k 118 | > $VCOVER = \{\langle G, k \rangle |$ в $G \ \exist$ вершинное покрытие размера $k\ \}$ 119 | > $IND \leq VCOVER$ 120 | > $f(\langle G, k \rangle ) = \langle G, n - k \rangle $, где n - число вершин G 121 | 122 | > **ex** $SUBSETSUM = \{\langle [x_1, x_2, ..., x_n], s \rangle \ | \ \exist I \subset \{1,2, ..., n\}, \sum_{i \in I} = s, x_i \in \N\}$ 123 | > `dp[i][w]` - можно ли первые i $\Sigma = w$ // w - $2^{|s|}$ 124 | > $VCOVER \leq SUBSETSUM$ 125 | > пронумеруем вершины с единицы, рёбра – с нуля, битовыми масками каждой вершине сопоставляем рёбра 126 | > 127 | > ```mermaid 128 | > graph LR; 129 | > 1 --1--- 2 130 | > 2 --2--- 3 131 | > 3 --3--- 5 132 | > 3 --4--- 4 133 | > 4 --5--- 5 134 | > 5 --0--- 1 135 | > ``` 136 | > 137 | > | | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 138 | > | ----- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | 139 | > | $x_1$ | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 140 | > | $x_2$ | 1 | 0 | 0 | 0 | 1 | 1 | 0 | 141 | > | $x_3$ | 1 | 0 | 1 | 1 | 1 | 0 | 0 | 142 | > | $x_4$ | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 143 | > | $x_5$ | 1 | 1 | 0 | 1 | 0 | 0 | 1 | 144 | > | s | 3 | 2 | 2 | 2 | 2 | 2 | 2 | 145 | > 146 | > $x_6 = 1\\ x_7 = 10 \\ x_8 = 100 \\ x_9 = 1000 \\ x_{10} = 10000 \\ x_{11} = 100000$ 147 | > $f(\langle G, k \rangle)$, n - число вершин, m - число рёбер, $s = k22...2$, m двоек 148 | > 149 | > f сводит VCOVER к SUBSETSUM 150 | > $\Rightarrow$: в G $\exist$ вершинное погрытие размера k 151 | > $\Leftarrow$: $[x_1 ..., x_{n + n}], s \ \exist$ решение $\Rightarrow$ в $G \ \exist$ вершинное покрытие размера k 152 | 153 | **def** язык называется ==*NP-hard*== (*NP-трудный*), если выполнены следующие условия: 154 | $\forall B \in NP: B \leq A$ 155 | **def** A называется ==*NP-complete*== (*NP-полный*), если: 156 | 1) $A \in NPH$ 157 | 2) $A \in NP$ 158 | // $NPC = NPH \cap NP$ 159 | 160 | > **ex** $BH_{1N}$ (bounded halting unary nondeterministic) 161 | > $BH_{1N} = \{\angle m, x, 1^t \rangle \ | $ m – недетрминировання машина тьюринга, x – вход, t – ограничение времени: $\exist$ последоватеьность недетерминировання выборов машины Тьюринга m, что она допускается за t шагов: `m(x) = 1`$\}$ 162 | > 163 | > **Th** $BH_{1N} \leq NPC$ 164 | > 165 | > 1. $BH_{1N} \in NPH$ 166 | > $A \in NP$ 167 | > // [def по Карпу](#Karp) 168 | > $m_A$ - недетерминировання машина Тьюринга, решающая A за полином $p(n) = c n^k$ 169 | > $f(x) = \langle m_A, x, q^{p(|x|)} \rangle$ 170 | > $x \in A \iff \exist$ последовательность выборов $m_A(x) = 1$ (за $p(|x|)$) 171 | > 2. $BH_{1N} \in NP$ 172 | 173 | **L** $A \leqslant^k B, B \leqslant^k C \implies A \leqslant^k C$ 174 | $x \stackrel{t}\rightarrow f(x) \stackrel{t}\rightarrow g(f(x))$ 175 | **con** $A \in NPH, A \leqslant B \implies B \in NPH$ 176 | 177 | **stat** если $B \leqslant A$, $A \in NPH$ 178 | $NP \stackrel{t}\rightarrow BH_{1N} \stackrel{t}\rightarrow SAT$ 179 | 180 | **def** ==$SAT$== $= \{\phi(x_q...x_n) \ | \ \exist x_1...x_n \ \phi(x_1...x_n) = 1, \phi - бф\}$ 181 | 182 | 183 | 184 | ### **Th** *(Кук, Левин)* SAT in NPC 185 | 186 | $SAT \in NPC$ 187 | 188 | $BH_{1N} \leqslant SAT$ 189 | $\langle m, x, 1^t \rangle \ \stackrel{f}\mapsto \phi$ 190 | 191 | $\phi$ удовлетворяет $\iff \ \exist$ последовательность недетерминированных выборов $m(x) = 1$, за время t 192 | 193 | больше t шагов не будет, есть мгновенные описания машины $\alpha\#_q\beta$ 194 | дополним описания до длины t + 1 195 | $q_0\vdash q_1\vdash...\vdash q_t$ 196 | 197 | *табло вычислений*: первая строка - стартовое состояние, $i \rightarrow i + 1, q_i \vdash q_{i + 1}$, допуск: последовательность до $\#_{acc}$ 198 | 199 | $\langle m, x, 1^t \rangle \ \in BH_{1N} \iff \exist$ допускающее табло вычислений 200 | 201 | 202 | 203 | количество состояний $|Q| = z$, множество ленточного алфавита $|PT| = y$, $z + y = k$ 204 | заведём $(t + 1)^2 k$ переменных, $x_{ijc}$ – верно ли, что в табло в i-й j-й ячейке записан символ 'c' 205 | 206 | $\phi(x_{ijc}) = C \and S \and T \and N$ 207 | 208 | $C = \and{i, j = 0..t} \or_C ((\and \neg X_{ij\alpha}) \and X_{ijc})$ 209 | 210 | $S = X_{00\#_s} \and X_{01x_1} \and X_{02x_2} \and ... \and X_{0nx_n} \and X_{0(n+1)B} \and ...$ 211 | 212 | $T = X_{t0\#x} \or X_{t1\#_y} \or ... \or X_{tt\#_y}$ 213 | 214 | $N = (\and_{i, j} \and_{c_1 c_2 c_3 c_3 \notin Q} X_{i - 1, j -1, c_1} \and X_{i -1 , j, c_2} \and X_{i, j +1 , c_3} \and X_{i, j, c_4} \rightarrow c_1 = c_4) \and_{ijx} \and_{c_1...c_6...}$ допустимы 215 | 216 | $qed \ \square$ 217 | 218 | --- 219 | 220 | ## язык CNFSAT 221 | 222 | **def** ==$CNFSAT$== $= \{\phi \ | \phi$ в КНФ$, \phi \in SAT\}$ 223 | $(x_i\or \neg \ x_j ...) \and (\or\or\or) \and (\or)$ 224 | *clause* (клоз) 225 | **ex** 2-SAT (ровно две) HornSAT (не более одной без отрицания) 226 | 227 | ### Th CNFSAT in NPC 228 | 229 | 1. $CNFSAT \in NP$ 230 | 2. $CNFSAT \in NPH$ 231 | $SAT \leqslant CNFSAT$ 232 | $\phi \stackrel {f\ \ (polynomial\ time)} \longrightarrow \psi$ 233 | $\phi \in SAT \iff \psi = f(\psi) \in CNFSAT$ 234 | 235 | базис: $\and, \or, \neg$ 236 | 237 | строим дерево разбора нашей формулы $\phi$: 238 | 239 | * если у neg сын neg, то можем удалить 240 | * neg -> and/or => neg <- and/or -> neg neg 241 | 242 | каждому поддереву соответствует преобразованная подформула $\phi_i(x_{i_1} ... x_{i_k})$ , хотим построить следующее: $\psi_i(x_{i_1} ... x_{i_k}, y_1 ... y_{i_t})$ 243 | $\phi(\overline X) = 1 \implies \exist \overline y \psi(\overline x, \overline y) = 1$ 244 | $\phi(\overline X) = 0 \implies \forall \overline y \psi(\overline x, \overline y) = 0$ 245 | 246 | | вершина | brand new $\psi$ | 247 | | ------- | ------------------------------------------------------------ | 248 | | X | $\phi = X, \psi = X$ | 249 | | neg X | $\phi = \neg X, \psi = \neg X$ | 250 | | and | $\phi_1 \and \phi_2, \psi_1 \and \psi_2$ | 251 | | or | $\psi_1 \or \psi_2$ не можем написать, потому что это не будет в КНФ
новая переменная z:
$(\psi_1 \or z) \and (\psi_2 \or \neg z)$ | 252 | 253 | > получается, что число клозов равно числу листьев 254 | > внутри каждого клоза число вхождений равно число переменных + или 255 | 256 | #clauses = #leaves 257 | #entries = #vars + #or 258 | poly 259 | 260 | $\square\ qed$ 261 | 262 | ### Th CNFSAT to 3SAT 263 | 264 | > $3SAT =CNFSAT \and 3CNF$ 265 | 266 | 1. $3SAT \in NP$ 267 | 2. $3SAT \in NPH$ 268 | $CNFSAT \leqslant 3SAT$ 269 | 270 | | $\psi$ | $X$ | 271 | | ------------------------------------------------------------ | ------------------------------------ | 272 | | $(x \or y \or u) \and (x \or y \or \neg u)$ | $x \or y$ | 273 | | ok | $x \or y \or z$ | 274 | | вспомогательные переменные
k - 3 новые перменные:
$(x_1 \or x_2 \or t_1) \and (\neg t_1 \or x_3 \or t_2) \and (\neg t_2 \or x_2 \or t_3) \and ... \and (\neg t_{k - 3} \or x_{k - 1} \or x_k)$ | $x_1 \or x_2 \or ... \or x_k, k > 3$ | 275 | 276 | $\square \ qed$ 277 | 278 | 3SAT - superstar 279 | 280 | ## Th IND in NPC 281 | 282 | дана формула $\phi$ в 3КНФ, мы хотим вывести граф G и число k, такие что $\phi$ удовлетворима тогда и только тогда, когда в графе есть независимое множество размера k 283 | $\phi \in 3SAT \iff \langle G, k \rangle \in IND$ 284 | 285 | в $\phi$ k clauses, граф построим из k triangles 286 | в вершинах переменные, соответствующие claus'ам 287 | соединим переменные с их отрицанием 288 | 289 | --- 290 | 291 | $HAM = \{G \ | \ G -$ ориентированный граф, содержит Гамильтонов цикл$\}$ 292 | $HAM\in NP$ 293 | $HAM \in NPH$ 294 | 295 | $\phi (x_1 x_2 ... x_n)$ k clauses 296 | $x_i \rightarrow 2k + 2$ вершины 297 | 298 | ```mermaid 299 | graph LR; 300 | A[ai.] --> B[bi1.] 301 | A --> C[ci1.] 302 | B --> C 303 | C --> B 304 | C --> D 305 | B --> E 306 | D[bi2.] --> E[ci2.] 307 | E --> D 308 | E --> F[bik.] 309 | F --> G[cik.] 310 | G --> F 311 | D --> G 312 | F --> L 313 | G --> L[di.] 314 | ``` 315 | 316 | ```mermaid 317 | graph LR; 318 | A[X1.] --> B[X2.] 319 | B --> C[...] 320 | C --> D[Xn.] 321 | D --> A 322 | ``` 323 | 324 | где X - это компонента предыдущего вида 325 | 326 | --- 327 | 328 | ## диагональный метод 329 | 330 | ### теоремы об иерахии 331 | 332 | $DSPACE(f) = \{L \ | \ \exist$ программа p: $x \in L \implies p(x) = 1 \\ x \notin L \implies p(x) = 0$ $ S(p, x) = O(f(n))\}$ 333 | $PSACE = \cup_{p - polynom} DSPACE(p)$ 334 | 335 | **Th NP subset PS subset EXP** 336 | 337 | **thesis** если p запускает q, q использует $O(f)$ памяти, то p может тоже для этого использовать$ O(f)$ памяти 338 | 339 | #### Th о ёмкости иерархии 340 | 341 | ${f \over g} \to 0$ тогда $\exist L: L \in DSPACE(g)\backslash DSPACE(f)$ 342 | 343 | $h = \sqrt{fg}, \ \ {h \over g} \to 0, \ \ {f \over h} \to 0$ 344 | 345 | $n = |\langle p, x\rangle|$ 346 | 347 | $L = \{\langle p, x \rangle \ | \ $неверно, что $(p(\langle p, x \rangle ) = 1, $ использовав $h(n)$ памяти $)\}$ 348 | 349 | $L \in DSPACE(g)$ 350 | 351 | Пусть $L \notin DSPACE(f)$, q - разрешает L, используя $\leqslant c f(n)$, рассмотрим $n_0: h(n_0) > cf(n_0)$, $n_0 > |q|$ 352 | 353 | рассмотрим $x: |\langle q, x \rangle | = n_0$ 354 | 355 | $q(\langle q, x \rangle ) = \ ?$ 356 | 357 | $q(\langle q, x \rangle) = q \implies \langle q, x \rangle \in L \implies !(q(\langle q, x \rangle) = 1 \ and \ S(q, \langle q, x \rangle) \leqslant cf(n) \langle h(n_0)) \implies q(\langle q, x \rangle) = 0$ 358 | 359 | $q(\langle q,x \rangle) = 0 \implies \langle q, x \rangle \notin L \implies q(\langle q, x \rangle) = 1$ 360 | 361 | 362 | 363 | #### Th о временной иерархии 364 | 365 | DSPACE -> DTIME, память -> время 366 | 367 | ломается немного первая часть, так что новое условие: 368 | 369 | ${f \over g} \to 0, \exist h: {f \over h} \to 0, {sim(h) \over g} \to 0. \ \ (sim(h) = O(g))$ (где $sim(f)$ - за сколько можно просимулировать программу, работающую за f) тогда $\exist L: L \in DTIME(g)\backslash DTIME(f)$ 370 | 371 | $h = \sqrt{fg}, \ \ {h \over g} \to 0, \ \ {f \over h} \to 0$ 372 | 373 | $n = |\langle p, x \rangle|$ 374 | 375 | $L = \{l\angle p, x \rangle \ | \ $неверно, что $(p(\langle p, x \rangle) = 1, $ использовав $h(n)$ времени $)\}$ 376 | 377 | $L \in DTIME(g)$ 378 | 379 | Пусть $L \notin DTIME(f)$, q - разрешает L, используя $\leqslant c f(n)$, рассмотрим $n_0: h(n_0) > cf(n_0)$, $n_0 > |q|$ 380 | 381 | рассмотрим $x: |\langle q, x \rangle| = n_0$ 382 | 383 | 384 | 385 | > **Implies** $P \neq EXP$ 386 | > 387 | > $f = n^{\log_2 n} = 2^{(\log_2 n)^2}$ 388 | > $g = 2^n$ 389 | > ${f \over g} \to 0 \implies \exist L \in DTIME(g) \backslash DTIME(f)$ (первая часть $\implies L \in EXP$, вторая – $\implies L \notin P$) 390 | 391 | 392 | 393 | ### Th (Бейкер, Гилл, Соловэй) BGS 394 | 395 | $u = \{\langle p, x \rangle |\ \ p(x) = 1\}$ 396 | $uni(p, x) \to$ останавливается ли p на x 397 | 398 | Вычисления с оракулом $p^A$ – p с оракулом A 399 | 400 | $\exist$ оракул $A: p^A = NP^A$ 401 | $\exist$ оракул $B: p^B \neq NP^B$ 402 | 403 | // **релятивизуется**, если доказательство остаётся верным, если всему фиксированному в программе добавить оракул 404 | 405 | рассмотрим $A \in PSC$ 406 | 407 | $p^A \stackrel{1}\subset NP^A \stackrel{2}\subset PS^A \stackrel{3}\subset PS \stackrel{4}\subset P^A$: 408 | 409 | 1. любая недетерминировання программа частный случай детерминированной 410 | 2. релятивизуется 411 | 3. можем заменить вызов оракула на процедуру проверки 412 | 4. потому что взяли PSpace полный, любой сводится за полином и спросим у оракула 413 | 414 | B $U_B = \{x \ | \ \exist y \in B\ \ \ |x| = |y|\}$ 415 | 416 | **L** $\forall B \ \ U_b \in NP^B$ 417 | 418 | Придумаем $B: U_B \notin P^B$ 419 | 420 | --- 421 | 422 | Теперь рассмотрим часть $\exist$ оракул $B : p^B \neq NP^B$: 423 | 424 | Построим последовательность программ $q_1, q_2, q_3, ...$ 425 | $T(q_i)$ - полином 426 | $\forall L \in P : \exist i: q_i$ разрешает $L$ 427 | 428 | Рассмотрим все коды исходных программ, упорядочим их лексикографически и запустим 429 | 430 | // n – это длина входа 431 | 432 | | | $n$ | $2 n^2$ | $3n^3$ | … | $kn^k$ | … | 433 | | ----- | ---- | ------- | ------ | ---- | -------------------- | ---- | 434 | | $p_1$ | | | | | | | 435 | | $p_2$ | | | | | | | 436 | | … | | | | | | | 437 | | $p_m$ | | | | | $p_m \ | \ TL= kn^k$ | | 438 | | … | | | | | | | 439 | 440 | каждая из этих программ работает за полином 441 | 442 | нумеруем эту табличку по диагонали 443 | 444 | получим счётное множество пронумерованных программ 445 | 446 | если программа не успела завершиться за TL, то говорим, что $q_i$ возвращает 0 447 | 448 | --------- 449 | 450 | так же можем занумировать все программы с оракулами: $q_1^\bullet, q_2^\bullet, ..., q_n^\bullet, ...$ 451 | 452 | должны сделать $B : p^B \neq NP^B$ 453 | 454 | рассмотрим $B: U_B = \{x \ |\ \exist y : |x| = |y|, y \in B\}$ 455 | 456 | **L** $\forall B: U_B \in NP^B$ 457 | 458 | > ``` 459 | > ub(x) 460 | > y <- недетерминированно Sigma^|x| 461 | > return check(y) 462 | > ``` 463 | 464 | Построить $B: U_B \notin p^B$ (если построим такое B, то теорема БГС доказана) 465 | 466 | $B_1: q_1^{B_1}$ не распознавала $U_{B_1}$ 467 | 468 | запустим $q_1$ с оракулом и будем выступать в роли оракула 469 | 470 | $q_1^\bullet(x_1)$ : спрашивает оракула $?y_1 \rightarrow NO$ (пишем в map наши ответы) $?y_2 \rightarrow NO \ ... \ ?y_k \rightarrow NO$ 471 | 472 | // выберем $x_`: T(q_1, x_1) < 2^{|x_1|}$ 473 | 474 | если результат программы $YES: \ \forall z \ |z| = |x_1|: z \notin B_1$ 475 | $NO: \ \exist z_1: q_1^\bullet(x_1)$ не задала вопрос про $z_1, \ |z_1| = |x_1|; \ z_1 \in B_1$ 476 | 477 | $B_1 \rightarrow B_2 \ q_1^{B_2}$ не распознаёт $U_{B_2}, q_2^{B_2}$ не распознаёт $U_{B_2}$ 478 | $T(q_2^\bullet, x_2) < 2^{|x_2|}, |x_2| > $ максимальной длины, для которого известно принадлежность $B_1$ 479 | 480 | теперь запускаем $q_2(x_2)$: спрашивает у нас: если спрашивали уже про это слово, то я то же самое и отвечаю, если нет, отвечаю $NO$ и записываю 481 | 482 | $B_k \ \forall i \leqslant k : q_i^{B_k}$ не распознаёт $U_{B_k}$ 483 | 484 | опять находим $x_k$ и запускаем 485 | 486 | тот же самый подход, что и выше, при запуске 487 | 488 | этот процесс продолжается до бесконечности 489 | 490 | для ответа БГС возьмём ==$B = \cup^\infty_{k = 1} B_k$== 491 | 492 | 493 | 494 | // релятивизация – это *барьер* доказательства $P \neq NP$ 495 | 496 | 497 | 498 | ### Th *Ладнера* 499 | 500 | $P \neq NP \implies \exist L: L \notin P, L \notin NPC, L \in NP$ 501 | 502 | > иллюстрация, **не** доказательство 503 | > 504 | > *Blowing Holes in SAT* 505 | > 506 | > координатная ось с итерированным логарифмом 507 | > 508 | > $1 \rightarrow 10 \rightarrow 10^{10} \rightarrow 10^{10^{10}}$ 509 | > 510 | > выбираем нечётные промежутки 511 | > 512 | > $SAT0 = SAT \ \cap\ EVEN$ 513 | > 514 | > $EVEN = \{x \ | \ log^*_{10}|x|$ чётен $\}$ 515 | > 516 | > к нему сводится $SAT$: 517 | > 518 | > $\exist f : x \in SAT \iff f(x) \in SAT0$ 519 | > 520 | 521 | так же, как в теореме БГС, у нас есть последовательность $q_1, q_2, ..., q_n, ...$ , так же запускаем программу $p_i$ с таймером $jn^j$ и так же занумеровали программу по диагонали: $f_1 ... f_i ...$ 522 | 523 | все $f_i$ работают за полином 524 | 525 | $L = SAT \ \cap \ EVEN\ (SAT \ \cap \ \{\phi \ | \ |\phi|$ в "чёрном" куске $\})$ 526 | 527 | рассмотрели первый чёрный кусок, префикса которого достаточно, чтобы программа $q_1$ не разрешала $L$ за полином 528 | 529 | теперь рассмотрим некст белый кусок: добъёмся того, чтобы сведение $f_1$ неправильно сводило $SAT$ к нашему языку 530 | 531 | занумеруем формулы по возрастанию длины и дальше лексикографически: $\phi_1, \phi_2, ...$ 532 | 533 | $\phi_1 \stackrel{f_1} \rightarrow z_1 \\ \phi_2 \rightarrow z_2\\...$ 534 | 535 | найдётся формула $\phi_x \stackrel{f_1} \rightarrow z_x: \phi_x \in SAT \neq z_x = f_1(\phi_x) \in L$ 536 | 537 | найдётся такая $\phi_x$ потому, что если бы не нашлось, то получили бы противоречие в том, что $SAT$ сводится за полиномальное время под действием $f_1$ к конечному языку 538 | 539 | $z_x$ лежит либо в первом чёрном отрезке, либо во втором белом 540 | $n_2 = max(n_1 + 1, |z_x|)$ 541 | 542 | > **Lemma** $L \in NPC, F -$ конечный, $L \setminus F \in NPC$ 543 | > $L \leqslant L \setminus F$ 544 | > 545 | > ``` 546 | > f(x): 547 | > if x in F 548 | > if x in L return YesWord 549 | > else return NoWord 550 | > else retun x 551 | > ``` 552 | 553 | построим $BLACK$: 554 | 555 | 1. $x \in BLACK$ – зависит только ок $|X|$ 556 | 2. $BLACK \in P$ 557 | 3. $L \notin NPC, L \notin P$ 558 | 559 | разрешитель $BLACK$: (верно ли, что слова длины $n$ принадлежат нашему языку, пусть работает за n) 560 | 561 | ``` 562 | black(x: String) 563 | a = black(|x|) 564 | return x in BLACK // основываясь на данных из массива a 565 | 566 | black(n): List 567 | // [n1, n2, ..., nk] - список всех границ, которые не превышают n 568 | // ограничение по времени n^(большое число, пусть 100) 569 | if n = 0 return [] 570 | a = black(n - 1) 571 | // black(n - 1) отработала за T <= (n - 1)^100, T_left >= n^99 572 | set Timer on n^99, if triggered return a 573 | if len(a) чётна: 574 | i = len(a) / 2 + 1 575 | for (phi - формула, |phi| <= n): 576 | if (phi in SAT intersect BLACK != q_i(phi)) 577 | return a ++ [n] 578 | else // len(a) нечётна 579 | i = (len(a) - 1) / 2 + 1 580 | for (phi - формула, |f_i(phi)| <= n): 581 | if (phi in SAT != f_i(phi) in SAT intersect BLACK): 582 | return a ++ [n] 583 | return a 584 | ``` 585 | 586 | --------- 587 | 588 | ## coNP 589 | 590 | **def** ==$coNP$== $= L \ | \ \overline L \in NP$ 591 | 592 | >**ex** $SAT \in NP,\\ \overline{SAT} \in coNP$ 593 | > 594 | >есть все слова $\Sigma^*$, среди них есть булевы формулы и давайте рассматривать только булевы формулы, они делятся на $SAT$ и на $\overline {SAT}$ , а на небулевы формулы забьём 595 | > 596 | >$\overline{SAT} = \{\phi \ | \ \forall \stackrel \rightarrow x: \phi(\stackrel \rightarrow x ) = 0\} $ 597 | 598 | >**ex** $FACTORIZATION = \{\langle n, x \rangle \ |$ у $n \ \exist$ простой делитель $\leqslant x \} \in NP \cap coNP$ 599 | > 600 | >(P candidate) 601 | 602 | 603 | 604 | ## PSpace и PSpace полнота 605 | 606 | **def** ==$PS$== $= \cup_{p - polynom} DSPACE(p)$ 607 | 608 | $P \subset NP \subset PS \subset EXP$ 609 | 610 | **def** $L \in$ ==$PSH$== : $\forall A \in PS: \ A \leqslant L \ (f \ - $ за полином $x \in A \iff f(x) \in L)$ 611 | 612 | **def** $L \in$ ==$PSC$==: $1) \ L \in PSH \\ 2) L \in PS $ 613 | 614 | > **ex** булевы формулы с квантора (матлог референс) 615 | > $TQBF$ (True Quantified Boolean Formula) $= \{\phi \ | \ \phi \ - $ булева формула с кванторами, $Free(\phi) = \empty \ \ val(\phi) = 1\}$ 616 | 617 | ### TQBF in PSC 618 | 619 | 1. $TQBF \in PS$ 620 | построим дерево разбора и храним множество значений текущих свободных переменных 621 | 622 | 2. $TQBF \in PSH$ 623 | рассмотрим $L \in PS, \ L \leqslant TQBF$ 624 | m - машина Тьюринга, разрешающая L, детерминировання, $S(m, x) \leqslant p(n) \ $//$ \ n = |x|$ 625 | 626 | $m(x) \ \ q_o \vdash q_1 \vdash q_2 \vdash ... \vdash q_t$ 627 | 628 | $f : x \rightarrow \phi$ 629 | 630 | $\phi \ -$ истина $\iff m(x) = 1$ 631 | 632 | $X_{ijc} \ -$ ячейка $(i, j)$ содержит символ $c$ 633 | 634 | $Q_i = [X_{i0c_1}, X_{i1c_1}, ..., X_{ip(n)c_1}, X_{i0c_2}, ..., X_{ip(n)c_2}]$ 635 | 636 | $S(Q_0) \ \cap \ T(Q_t) \ \cap \ C \ \cap \ N$ 637 | 638 | введём синтаскический сахар: $\exist (\forall) Q_i := \exist (\forall) X_{i0c_1} , \exist (\forall) ...$ 639 | 640 | $Q_i \vdash Q_{i + 1}$ 641 | 642 | $\exist Q_0 \ \exist Q_1 \ .. \exist Q_t \ S(Q_0) \ \and \ T(Q_t) \ \and \ C \ \and \ Q_0 \vdash Q_1 \ \and\ Q_1 \vdash Q_2 \ \and\ ... \ \and\ Q_{t - 1} \vdash Q_t$ 643 | 644 | выведенная формула плоха её длиной: $Q(Q_0), \ T(Q_t), \ Q_0 \vdash Q_1$ имеют длину $p(n)$, но последних кусков $t$, таким образом вся формула имеет длину $p(n) 2^{q(n)}$, а это не полиномиальное сведение 645 | 646 | $Q \vdash R$ 647 | 648 | $\vdash \ -$ булева формула от $2 \ (p(n) + 1) \ z$ аргументов 649 | 650 | $Q \vdash R := Q \underbrace{\vdash U_1 \vdash U_2 ... \vdash U_{2^{m} - 1} \vdash R}_{2^m}$ 651 | 652 | $\vdash_m = \vdash^{2^m}$ 653 | 654 | $Q \vdash_m R = \exist \ T \ (Q \vdash_{m - 1} T \ \and \ T \vdash_{m - 1} R)$ 655 | 656 | $Q \vdash_m R = \exist \ T \ \forall A \ \forall B \ (\neg (A \vdash_{m - 1} B) \rightarrow (Q \neq A \or B \neq T) \and (T \neq A \or B \neq R))$ 657 | 658 | $len(m) = O(p(n)) + len(m - 1) \implies len(m) = O(p(n) \ m)$ 659 | 660 | $\square$ 661 | 662 | --------- 663 | 664 | // PS proof template: $PS \rightarrow TQBF \rightarrow L$ 665 | 666 | 667 | 668 | ### Th NSPACE(f(n)) subset DSPACE(f(n)^2^) 669 | 670 | $f(n) \geqslant log(n)$ 671 | $NSPACE(f(n)) \subset DSPACE(f(n)^2)$ 672 | 673 | *Доказательство*: 674 | 675 | Пусть $L \in NSPACE(f(n))$ $\exist$ недетерминирванная машина Тьюринга $x \in L \iff \exist$ последовательность недетерминированных выборов, m(x) = 1 676 | $S(m, x) \leqslant f(n), \ n = len(x)$ 677 | 678 | вход — лента машины Тьюринга со словом $x$ 679 | рабочая — лента машины Тьюринга с $f(n)$ 680 | конфигурация машины Тьбринга кодируется:$ (pos, work)$, где $work = \alpha \#_p \beta$, длина $pos = log(n)$ , а длина $work = f(n) + 1$, и тогда вся длина пары — $O(f(n))$ 681 | 682 | Существует ли последовательность переходов длиной $2^{c \ f(n)}$, которая $q_0$ переводит в допускающую конфигурацию $q_t$ 683 | 684 | заведём функцию (можно ли достичь): $Reach(q_s, q_t, k)$ (можно ли из $q_s$ перейти за $2^k$ шагов до $q_t$ ($q_s \vdash^{2^k} q_t$)) 685 | 686 | ``` 687 | Reach(qs, qt, k): 688 | if (k = 0): 689 | return qs |- qt 690 | for (qm - конфигурация машины Тьюринга m): 691 | if Reach(qs, qm, k - 1) and Reach (qm, qt, k - 1): 692 | return True 693 | return False 694 | ``` 695 | 696 | локальные переменные функции `Reach` занимают $f(n)$, суммарно памяти нам понадобится $O(k \ f(n))$ 697 | 698 | ``` 699 | inL(x): 700 | qs - стартовая конфигурация m 701 | for (qt - допускающая конфиграция m): 702 | if Reach(qs, qt, c * f(|x|)): 703 | return 1 704 | return 0 705 | ``` 706 | 707 | $q_s$ требует $f(n)$ памяти 708 | вызов `Reach` требует $f(n)^2$ памяти 709 | локальная переменная $q_t$ требует $f(n)$ памяти 710 | 711 | 712 | 713 | #### Следствие Th (*Сэвитча*) 714 | 715 | $PS = NPS$ 716 | 717 | 718 | 719 | ## Сублинейная память 720 | 721 | Полином памяти $PS$ 722 | Экспонента памяти $EXPSPACE,\ EXP \subset NEXP \subset EXPSPACE$ 723 | 724 | $DSPACE(f(n)), f(n) = \overline{\overline o}(n)$ 725 | 726 | 727 | Миниальный логичный класс возникающий – это $DSPACE(1)$ (в контексте машины Тьюринга можем хранить только состояние) $ = Reg = NSPACE(1)$ 728 | 729 | $DSPACE(log \ n) = L$ 730 | 731 | $NSPACE(log \ n) = NL$ 732 | 733 | можно: 734 | 735 | 1. целочисленные переменные $value \leqslant n^c$ (константное количество) 736 | 2. массив bool: $len \leqslant c * log \ n$ 737 | 738 | нельзя: 739 | 740 | 1. массивы $\Omega(n)$ 741 | 2. рекурсия $\Omega(n)$ 742 | 743 | > **ex** проверка на палиндром 744 | > 745 | > ``` 746 | > pal(s) 747 | > n = len(s) 748 | > for i = 0..n/2 749 | > if s[i] != s[n - 1 - i] 750 | > return False 751 | > return True 752 | > ``` 753 | 754 | > **ex** проверка пути в графе недетерминированно 755 | > 756 | > ``` 757 | > reach(G, s, t) 758 | > if (s = t) return True 759 | > n = num vert(G) 760 | > u = s 761 | > for i = 1..n 762 | > v = ? {1..n} 763 | > if uv not in E 764 | > return False 765 | > u = v 766 | > if u = t 767 | > return True 768 | > return False 769 | > ``` 770 | > 771 | > переменные `n, u, i, v` и на проверку `not in E` – константное количество размера n 772 | 773 | $L \subset NL \subset DSPACE(log^2 \ n) \subset PS$ 774 | 775 | 776 | 777 | ### stat NL subset P 778 | 779 | $A \in NL$ 780 | 781 | $\exist$ машина Тюринга, разрешающая $A$ 782 | 783 | граф G, вершины – конфигурация m (state (const), pos (n), mem (const^(c log n))), рёбра – переходы m 784 | 785 | полиномиальное количество состояний 786 | 787 | m допускает x $\iff$ в G $\exist$ путь из (s, 1, 0…00) в вершину (допускающее, *, *) 788 | 789 | --- 790 | 791 | $\forall A \in NL \ \ A \leqslant Reach$ 792 | 793 | ==$LOGSPACE$-сведение== 794 | 795 | **def** $A \leqslant_L B$, если $\exist f \ S(f, x) \leqslant c * log \ |x| \ \ : x \in A \iff f(x) \in B$ 796 | 797 | **def** $A$ ==$P$-complete==: 798 | 799 | 1. $A \in P$ 800 | 801 | 2. $\forall B \in P: B \leqslant _L A$ 802 | 803 | **def** $A$ ==$NL$-complete==: 804 | 805 | 1. $A \in NL$ 806 | 2. $\forall B \in NL: B \leqslant_L A$ 807 | 808 | можно переписать утверждение как $Reach \in NL-complete$ 809 | 810 | 811 | 812 | ### Th транзитивность LOGSPACE-сведения 813 | 814 | $x \stackrel f \longrightarrow y \stackrel g \longrightarrow z$ 815 | 816 | $x \in A \iff y \in B \iff z \in C$ 817 | 818 | $g$ работает и умеет спрашивать $i$-ый символ слова $y$, в таком случае вызываем $f(x)$, получаем символ, всё остальное выбрасываем 819 | 820 | итого памяти надо $mem(f) + mem(g) +$ служебные = логарифм памяти 821 | 822 | 823 | 824 | ### Th CIRCVAL in P-complete 825 | 826 | > $CIRCVAL = \{\langle C, \stackrel \rightarrow x \rangle \ | \ C$ - схема из функциональных элементов, $\stackrel \rightarrow x$ - входы, $C(\stackrel \rightarrow x) = 1\}$ 827 | > 828 | > Не путать с $CIRCSAT = \{c \ | \ \exist \stackrel \rightarrow x: C(\stackrel \rightarrow x) = 1\}$ 829 | 830 | $CIRCVAL \in P$ 831 | 832 | докажем теперь, что все из $P$ сводятся к ней (аналогично теореме Кука): 833 | 834 | $A \in P$, $m$ — детерминированная машина Тьюринга, $m$ разрешает $A$, $m$ работает за $p(n)$ 835 | 836 | $x \stackrel f \longrightarrow C, \stackrel \rightarrow x$ 837 | $x \in A \iff C(\stackrel \rightarrow x) = 1$ 838 | 839 | 840 | 841 | ### Th (Иммермана) NL = coNL 842 | 843 | > $coNL = \{A \ | \ \overline A \in NL\}$ 844 | 845 | $NReach = \{\langle G, s, t \rangle \ | \ $в $G$ не $\exist$ пути из $s \longrightarrow t \}$ 846 | 847 | ``` 848 | NoPath(G, s, t, c) // c - количество вершин, достижимых из s 849 | for u = 1..n 850 | if (?) // достижима ли 851 | c-- 852 | if not Reach(G, s, u) 853 | return False 854 | if (u == t) 855 | return False 856 | return c == 0 857 | ``` 858 | 859 | ``` 860 | Next(G, s, c) -> Int 861 | // c - достижимы из s путями len <= k 862 | // возвращает достижимые из s путями len <= k + 1 863 | r = 0 864 | for u = 1..n 865 | if u достижимо len <= k || u достижимо len = k + 1 866 | // 1: for v -> (?) достижимо или нет, если да, то угадываем путь 867 | // 2: for v -> (?) достижимо или нет, если да, то угадываем путь 868 | // и перебираем рёбра 869 | r++ 870 | return r 871 | ``` 872 | 873 | ``` 874 | NReach(G, s, t) 875 | c = 1 // достижимые путями len <= 0 876 | for i = 1..n - 1 877 | c = Next(G, s, c) // c: len <= n - 1 878 | return NoPath(G, s, t, c 879 | ``` 880 | 881 | $coNL \subset NL$ 882 | 883 | $coNL = NL$ 884 | 885 | 886 | 887 | ## Sparse 888 | 889 | **def** ==$Sparse$ (*редкие языки*)== = $\{L \ | \ \exist $ полином $p \ \forall n \ | \Sigma^n \cap L | \ \leqslant p(n)\}$ 890 | 891 | // для каждой длины не больше полинома слов этой длины 892 | 893 | **ex** *язык простых чисел, заданных в унарной системе счисления*: $Primes_1 = \{1^p \ | \ p$ — простое $\}$ 894 | 895 | **ex** $Fact_1 = \{\langle 1^n, 1^\alpha \rangle \ | \ d$ - минимальный делитель n $\}$ 896 | 897 | 898 | 899 | ### Th Бермана-Форчуна 900 | 901 | $coNPC \cap Sparse \neq \empty \implies P = NP$ 902 | 903 | ----- 904 | 905 | $S \in coNPC \cap Sparse \implies P = NP$ 906 | 907 | $\sphericalangle \ TAUT \in coNPC$: $f$ сводит $TAUT$ к $S$ за $q$ 908 | 909 | 910 | 911 | ``` 912 | taut(phi(x1, ..., xn)): 913 | if n == 0 914 | return eval(phi) 915 | 916 | phi1 = phi w/ x1 = 1 917 | phi0 = phi w/ x1 = 0 918 | 919 | if taut(phi1) and taut(phi0) 920 | return True 921 | return False 922 | ``` 923 | 924 | 925 | 926 | добавим меморизацию: 927 | 928 | ```diff 929 | // memorization 930 | + memo: set // формулы, которые точно являются тавтологиями 931 | 932 | taut(phi(x1, ..., xn)): 933 | if n == 0 934 | return eval(phi) 935 | 936 | + if phi in memo 937 | + return True 938 | 939 | phi1 = phi w/ x1 = 1 940 | phi0 = phi w/ x1 = 0 941 | 942 | if taut(phi1) and taut(phi0) 943 | + memo.add(phi) 944 | return True 945 | return False 946 | ``` 947 | 948 | 949 | 950 | $\phi \in TAUT \iff f(\phi) \in S$ 951 | 952 | $\phi \in memo \implies \phi \in TAUT$ 953 | 954 | 955 | 956 | давайте хранить теперь $f(\phi)$ вместо $\phi$: 957 | 958 | $z \in memo \implies z \in S \implies (z = f(\phi) \implies \phi \in TAUT)$ 959 | 960 | ```diff 961 | // memorization 962 | + memo: set 963 | 964 | taut(phi(x1, ..., xn)): 965 | if n == 0 966 | return eval(phi) 967 | 968 | + z = f(phi) 969 | + if z in memo 970 | return True 971 | 972 | phi1 = phi w/ x1 = 1 973 | phi0 = phi w/ x1 = 0 974 | 975 | if taut(phi1) and taut(phi0) 976 | + memo.add(z) 977 | return True 978 | return False 979 | ``` 980 | 981 | 982 | 983 | $|\phi| = L$ 984 | все формулы, от которых вызывается `taut` имеют длину $\leqslant L$ 985 | $|z| \leqslant q(L)$ 986 | $|S \cap \Sigma^n| \leqslant p(n)$ 987 | `memo.size()` $\leqslant \sum_{n = 0}^{q(L)} p(n) \leqslant p(q(L)) * q(L)=r(L)$ 988 | 989 | `memo.size()` $\leqslant r(|\phi|)$ 990 | 991 | $\square$ 992 | 993 | 994 | 995 | ### Th Мэхэни 996 | 997 | $NPC \cap Sparse \neq \empty \implies P = NP$ 998 | 999 | --- 1000 | 1001 | > $SAT \in NPC$ 1002 | > $LSAT = \{\langle \phi(x_1, ..., x_n), [y_1, ..., y_n] \rangle \ | \ \exist z_1 ... z_n: z_1...z_n \leqslant y_1...y_n, \phi(z_1, ..., z_n) = 1 \}$ 1003 | 1004 | **L** $LSAT \in NPC$ 1005 | 1006 | 1. $LSAT \in NP$ сертификат $\stackrel \rightarrow z$ 1007 | 2. $SAT \leqslant LSAT$ $\phi \in SAT \iff \langle \phi, [1...1] \rangle \in LSAT$ 1008 | 1009 | $f$ сводит $LSAT$ к $S$: $\langle \phi, \stackrel \rightarrow y \rangle \iff f(\phi, \stackrel \rightarrow y) \in S$ 1010 | 1011 | $LSAT \stackrel f \leqslant S$ 1012 | 1013 | 1014 | 1015 | подобие поиска в ширину: 1016 | 1017 | ```mermaid 1018 | graph TD; 1019 | phi. -- x1 = 0. --> phi0. 1020 | phi. -- x1 = 1. --> phi1. 1021 | phi0. -- x2 = 0. --> phi00. 1022 | phi0. -- x2 = 1. --> phi01. 1023 | phi1. -- x2 = 0. --> phi10. 1024 | phi1. -- x2 = 1. --> phi11. 1025 | 1026 | ``` 1027 | 1028 | $[\phi_1, \phi_2, \phi_t]$ 1029 | на каждом $k$-ом слое $n-k$ переменных 1030 | выберем одну переменную и положим их = 0 и = 1, положим в общую очередь 1031 | 1032 | при $k = n$ в формулах 0 переменных, вычисляем слева направо, пока не найдём равное единице 1033 | не нашли — формула не удовлетворима, нашли — нашли минимальное лексикографически удовлетворяющее назначение $\phi$ 1034 | 1035 | на очередном $k$-ом слое: $[\phi_1, \phi_2, \phi_t]$ 1036 | для каждой формулы запишем $\stackrel \rightarrow a$ — вектор, откуда взялась эта формула 1037 | применим к парам 1038 | $z_i = f(\phi, \underbrace {\stackrel \rightarrow {a_i}111...111}_n), \ ...$ 1039 | $\stackrel \rightarrow {a_i}$ лежит на пути к минимальному лексикографически удовлетворяющему 1040 | 1041 | $z_1 \notin S, z_2 \notin S, \ ..., z_i \in S, ... \in S$ 1042 | 1043 | $|\langle \phi, \underbrace {1..1}_n \rangle | = L$ 1044 | $\phi_i(x_{k+1}...x_n) \leqslant q(L)$ 1045 | 1046 | $| S \cap \Sigma^n | \leqslant p(n)$ 1047 | 1048 | различных $z_i \in S$ не больше $p(q(L)) * q(L)$ 1049 | 1050 | $z_k = z_j, k < j$ 1051 | $j \neq i$ 1052 | из пар равных оставим того, кто раньше 1053 | 1054 | $z_{v_1}, z_{v_2}, ..., z_{v_u}$ — различны 1055 | 1056 | если $u > p(q(L)) * q(L)$, то оставим последние $p(q(L)) * q(L)$ 1057 | 1058 | $t \leqslant 2 * p(q(L)) * q(L)$ 1059 | 1060 | всё время работы за полином, решили $SAT$ за полином, получается $P = NP$ 1061 | 1062 | $\square$ 1063 | 1064 | 1065 | 1066 | ## полиномиальная иерархия 1067 | 1068 | 1069 | $\sphericalangle \ NP$ 1070 | $\Sigma_1 = \{L \ | \ \exist$ полином $p, R$ (checker), выполняется за полином, $x \in L \iff \exist y, |y| \leqslant p(|x|), R(x, y) = 1 \}$ 1071 | 1072 | $\sphericalangle \ coNP$ 1073 | $\Pi_1 = \{L \ | \ \exist$ полином $p, R,$ выполняется за полином 1074 | $(x \notin L \iff \exist y, |y| \leqslant p(|x|), R(x, y) = 1) 1075 | $ 1076 | $x \in L \iff \forall y, |y| \leqslant p(|x|), \overline R(x, y) = 1 \}$ 1077 | 1078 | $\Sigma_k = \{L \ | \ \exist$ полином $p, R$ (checker), выполняется за полином, $x \in L \iff \exist y_1 \forall y_2 \exist y_3 ... Q y_k, |y_i| \leqslant p(|x|), R(x, y_1, ..., y_k) = 1 \}$ 1079 | 1080 | $\Pi_k = \{L \ | \ \exist$ полином $p, R,$ выполняется за полином $x \in L \iff \forall y_1 \exist y_2 \forall y_3 ... Q y_k, |y_i| \leqslant p(|x|), \overline R(x, y_1, ..., y_k) = 1 \}$ 1081 | 1082 | $k = 1 \rightarrow \Sigma_1 = NP, \ \Pi_1 = coNP$ 1083 | 1084 | $k = 0 \rightarrow \{L \ | \ \exist R$, вычислимое за полином, $x \in L \iff R(x)\}$, $\Sigma_0 = \Pi_0 = P$ 1085 | 1086 | 1087 | 1088 | $MinF = \{\phi \ | \ \phi$ — минимальная по длине булева формула для своей функции $\}$ 1089 | $\phi \in MinF \iff \forall \psi$ (функция $\psi =$ функция $\phi \implies |\psi| \geqslant |\phi|$) 1090 | ($|\psi| \geqslant |\phi|) \or ($функция $\psi \neq$ функция $\phi)$ 1091 | ($|\psi| \geqslant |\phi|) \or (\exist x_1 ... x_n \phi(x_1 ... x_n) \neq \psi(x_1 ... x_n))$ 1092 | 1093 | $\phi \in MinF \iff \forall \psi \ \exist \stackrel \rightarrow x ((|\psi| \geqslant |\phi|) \or \phi(x_1 ... x_n) \neq \psi(x_1 ... x_n))$ 1094 | 1095 | $MinF \in \Pi_2$ 1096 | 1097 | 1098 | 1099 | ## Схемная сложность 1100 | 1101 | ### Схема из функциональных элементов 1102 | 1103 | булева формула $f: B^n \rightarrow B$ 1104 | программа $p: \Sigma^* \rightarrow B$ 1105 | 1106 | **non-uniform computations** 1107 | $\forall n\ \ C_n \ \ B^n \rightarrow B$ 1108 | $L \subset \Sigma^* \ \{C_0, C_1, C_2, ..., C_n, ...\}$ 1109 | 1110 | **parallel computation** 1111 | $L \subset \Sigma^* \ \{C_0, C_1, ..., C_n, ...\}$ 1112 | $p(n) \rightarrow C_n$, есть ограничения на эту программу p 1113 | 1114 | ограничения, которые у нас есть, -- $size$, $depth$ 1115 | функция $f$ 1116 | ==$SIZE(f)$== $= \{L \ | \ \exist$ семейство схем из функциональных элементов $C_0 C_1 ... C_n ... \ \ C_i $ распознаёт $L \cap \Sigma^i, size(C_i) = O(f(i)) \}$ 1117 | так же вводится ==$DEPTH(f)$== 1118 | 1119 | ==$P/poly$== (P by poly) $= \cup_{k = 0}^\infty \ SIZE(n^k)$ 1120 | 1121 | 1122 | 1123 | > **ex** (**Th**) $P \subset P/poly$ 1124 | > 1125 | > $L \in P \implies \exist$ детерминированная машина Тьюринга $m$, распознающая $L$ 1126 | > 1127 | > работает за полином $q(n)$ 1128 | > 1129 | > $n \rightarrow$ табло вычислений $q(n)$ на $q(n)$ 1130 | 1131 | > **ex** $UNARY = \{L \ | \ L \subset \{0\}^* \}$ 1132 | > $UNARY \subset P/poly$ 1133 | > 1134 | > $\forall n \ 0^n \in L C_n$ допускает только $0^n \downarrow_n$ 1135 | > либо $0^n \notin L \ C_n \equiv 0$ 1136 | > 1137 | > 1138 | > 1139 | > $HALT_1 = \{0^k \ | k-$ая программа завершается на пустом входе $\}$ 1140 | > $HALT_1$ не разрешим, но принадлежит $UNARY$ и $P/poly$ 1141 | 1142 | 1143 | 1144 | ### Программы с подсказками (advise) 1145 | 1146 | $p(x, a_n)$, где $n = |x|$ и $a_n$ называется подсказкой 1147 | 1148 | $L \in C/f \iff \exist$ программа $p$, удовлетворяющая ограничением класса C и $\exist a_0, a_1, ..., a_n, ... \ \ a_i \in \Sigma^* \ \ |a_i| \leqslant f(i) \ \ \forall x \ \ p(x, a_n) = [x \in L]$ 1149 | 1150 | #### Th P/poly = SIZE(poly) 1151 | 1152 | $P/poly$ вычисление с подсказками $= SIZE(poly)$ 1153 | 1154 | $\supset$) $L \in SIZE(poly) \implies \sphericalangle \ \ a_0 a_1a_n ... \ \ a_i = C_i \ \ p(x, a_i)$ вычисляет схему $a_i$ на $x$ 1155 | 1156 | $\subset$) $L \in P/poly$ $\sphericalangle \ n\ m -$ машина Тьюринга, построим схему и назовём её $C_n$ 1157 | 1158 | 1159 | 1160 | > $P \ vs\ NP$ 1161 | > 1162 | > $NP \subset P/poly \implies P = NP$ -- неизвестно 1163 | > 1164 | > $NP\ !\subset P/poly \implies P \neq NP$ 1165 | 1166 | 1167 | 1168 | #### Th (Карпа-Липтона) 1169 | 1170 | $NP \subset P/poly \implies \Sigma_2 = \Pi_2$ 1171 | 1172 | > **L** $NP \subset P/poly$ 1173 | > $\exist C_0 C_1 C_2 ... C_n ...$ - схемы для $SAT$ $|C_i| \leqslant p(i)$ полином $p$ 1174 | > тогда $\exist$ схемы $A_0 A_1 ... A_n ...$ 1175 | > 1176 | > 1. $|A_i|$ -- полном от $i$ 1177 | > 2. $A_i$ имеет $i$ выходов и если $\phi \in STA \implies \phi(A_i(\phi)) = 1$ 1178 | > 1179 | > 1180 | > 1181 | > $\phi \rightarrow [SET \ \ x_1 = 1] \rightarrow \phi |_{x_1 = 1} \rightarrow [C_i] \rightarrow (\phi |_{x_1 = 1} \in SAT)$ 1182 | 1183 | $\sphericalangle \ L \in \Pi_2$, докажем $L \in \Sigma_2$ 1184 | 1185 | $R(x, y, z)$ -- полиномиальная детерминированная машина Тьюринга 1186 | 1187 | $x \in L \iff \forall y \ \exist z\ R(x, y, z)$ 1188 | 1189 | $T = \{\langle x, y \rangle \ | \ \exist z \ R(x,y, z\}$ 1190 | 1191 | $x \in L \iff \forall y \ \langle x, y \rangle \in T$ 1192 | 1193 | $T \in NP \implies T \leqslant^f SAT$ 1194 | 1195 | $x \in L \iff \forall y \ f(\langle x, y \rangle) \in SAT$ // $|y| \leqslant q(|x|)$ $|\langle x, y \rangle | \leqslant r(n)$ 1196 | 1197 | $x \in L \iff \exist [A_0 A_1 ... A_{r(n)}]$ 1) $A_i$ -- схемы из леммы, 2) $\forall y \ \ \phi := f(\langle x, y \rangle) \ |\phi| = m, \phi(A_m(\phi)) = 1$ 1198 | 1199 | 1) $\iff \forall |\phi| \leqslant r(n): \ \ (\forall z \ \phi(z) = 0 \or \phi(A_m(\phi)) = 1)$ 1200 | 1201 | 1202 | 1203 | $x \in L \iff \exist A_0 A_1 ... A_{r(n)} \ \forall \phi \forall z \forall y (\phi(z) = 0 \or \phi(A_{|\phi|} (\phi) = 1) \and \phi := f(x, y) \ \psi(A_{|\psi|} (\psi)) = 1$ 1204 | 1205 | 1206 | 1207 | ### Параллельные вычисления 1208 | 1209 | **def** ==$NC^i$== (_Nick's class_) $= \{L \ | \ \exist$ схемы из функциональных элементов $C_ k,\ size(C_k) \leqslant poly(k), \ \ depth(C_k) \leqslant c\ log^i(k), \ \ C_k$ может быть выведено по $k$, используя $O(log \ k)$ памяти $\}$ 1210 | ==$NC$== $= \cup_{i = 0}^\infty \ NC^i$ 1211 | 1212 | **def** ==$AC^i$== (_Aaron's class_) -- то же самое, но $\or$ и $\and $ могут иметь неограниченное число входов 1213 | ==$AC$== $= \cup_{i = 0}^\infty \ AC^i$ 1214 | 1215 | $AND(x_1...x_n) \in NC^1 \cap AC^0$ 1216 | $PARITY(x_1...x_n) \in NC^1 \setminus AC^0$ 1217 | $SUM(x_1...x_ny_1...y_n) \in \widetilde {NC^1}$ 1218 | 1219 | **Th** $NC^i \subset AC^i \subset AC^{i + 1}$ 1220 | **Cons** $AC = NC$ 1221 | **Th** $L \subset NC \subset P$ 1222 | 1223 | 1224 | 1225 | ## Вероятностные сложностные классы 1226 | 1227 | $\sphericalangle \ L$ и $p$ – вероятностная программа для $L$ 1228 | 1229 | 1. ==нульстороння ошибка==: $x \in L \iff p(x) = 1, \ T(p, x)$ – случайная величина 1230 | 2. ==односторонняя ошибка==: $x \in L \implies p(x) = 1$ (false positive), $x \notin L \implies p(x) = 0$ (false negative) 1231 | **ex** тест Миллера-Рабина на простоту 1232 | 3. ==двусторонняя ошибка== 1233 | 1234 | 1235 | 1236 | ### Введение вероятности 1237 | 1238 | #### Способ 1. Вероятностная лента 1239 | 1240 | **ex** linux `/dev/urand` 1241 | 1242 | есть доступ к вероятнстной ленте — односторонней бесконечной последовательности символов какого-то алфавита 1243 | 1244 | множество всех вероятностных лент — $\Omega$ 1245 | 1246 | #### Способ 2. Генератор случайных чисел 1247 | 1248 | **ex** `random(n) -> [0, n - 1]` 1249 | 1250 | 1251 | 1252 | способы **эквивалетны** 1253 | 1254 | 1255 | 1256 | ### События, связанные с программой 1257 | 1258 | **Thesis** $\forall$ множество $R \subset \Omega$, задающее множество вероятностных лент, приводящих рещультат работы программ, является событием 1259 | 1260 | > **Proof** $R = \{r \ | \ A(p,r,x)\}$, выполняется какой-то предикат $A$ 1261 | > 1262 | > $R = \cup_{i = 0}^\infty r_i$, $r_i = \{r \ | \ A(p,r,x) \ \and $ считан $i$ бит с вероятностной ленты $\}$ 1263 | > 1264 | > $R_i = \{r = z\{01\}^* \ | \ z \in Z_i\}$ 1265 | > 1266 | > $\mu(z_i) = {|z_i| \over 2^i}$ 1267 | > 1268 | > не более, чем счётное объединение измеримых, значит, объединение измеримо, значит $R$ является событием 1269 | 1270 | 1271 | 1272 | ### Нульсторонняя ошибка 1273 | 1274 | ==$ZPP$== (*Zero-error Probabilistic Polynomial*) $= \{L \ | \ \exist$ программа $p: {1)\ \forall x \ p(x) = 1 \iff x \in L \\ 2)\ E(T(p, x)) = poly(|x|)} \ \ \}$ 1275 | 1276 | **ex** $QSort \in \widetilde{ZPP}$ // (волна – это не про распознователь, а про преобразователь) 1277 | 1278 | альтернативное определение: $ZPP_1 = \{L \ | \ \exist p: \Sigma^* \to \{0, 1, ?\} : {1) \ p(x) = 1 \implies x \in L \\ \ \ \ \ \ p(x) = 0 \implies x \notin L \\ 2) \ T(p, x) \leqslant poly(|x|) \\ 3) \ P(p(x) = ?) \leqslant {1 \over 2}} \ \ \}$ 1279 | 1280 | **Th** $ZPP = ZPP_1$ 1281 | 1282 | > **Proof** 1283 | > 1284 | > 1. $ZPP \subset ZPP_1$ 1285 | > $p, \ \ E(T(p, x)) = q(n)$ 1286 | > $p(x) |_{TL = 2q(n)}$ (on TL `return ?`) 1287 | > 1288 | > 2. $ZPP_1 \subset ZPP$ 1289 | > 1290 | > ```c 1291 | > p: 1292 | > while ((res = p(x)) = ?); 1293 | > return res 1294 | > ``` 1295 | 1296 | 1297 | 1298 | ### Односторонняя ошибка 1299 | 1300 | ==$RP$== (*Randomized Polynomial*) $= \{L \ | \ \exist$ программа $p: {1) \ x \notin L \implies p(x) = 0 \\ \ \ \ \ x \in L \implies P(p(x) = 1) \geqslant {1 \over 2} \\ 2) \ T(p, x) \leqslant poly(|x|)} \ \ \}$ 1301 | 1302 | ==$coRP$== $= \{ -//- \ \ {x \in L \implies p(x) = 1 \\ x \notin L \implies P(p(x) = 0) \geqslant {1 \over 2} } \ \}$ 1303 | 1304 | > **ex** $Primes \in coRP$ 1305 | > 1306 | > тест Миллера-Рабина 1307 | > 1308 | > $n \in Primes$ 1309 | > 1310 | > *Малая теорема Ферма*: $p$ - простое $\implies \forall a$ простое с $p$ $a^{p - 1} \equiv 1 \mod p$ 1311 | > 1312 | > *тест Ферма*: $a$ взаимно простое с $p$, $a^{p - 1} \equiv 1 \mod p$ ~~$\implies$~~ $p$ - простое (числа Кармайкла ломают) 1313 | > 1314 | > $a^{n - 1} \mod n \neq 1$, $a$ - *свидетель Ферма* 1315 | > 1316 | > либо $n \notin Primes \implies P(a$ - свидетель Ферма $\geqslant {1 \over 2})$, либо $n$ - число Кармайкла 1317 | > 1318 | > … 1319 | 1320 | **вероятность берётся только по вероятностным лентам** 1321 | 1322 | 1323 | 1324 | **Th** ==$RP_{weak}$== $= \{-//- \ \ x \in L \implies P(p(x) = 1) \geqslant {1 \over a(n)}$, $q$ - любой полином, $q > 1 \ \}$, ==$RP = RP_{weak}$== 1325 | 1326 | > **Proof** Повторим $k$ раз $(1 - {1 \over q(n)})^k < {1 \over 2}$ 1327 | > $k \sim q(n)$ 1328 | > $(1 - {1 \over q(n)})^{q(n)} \sim {1 \over e} < {1 \over 2}$ 1329 | 1330 | 1331 | 1332 | **Th** ==$RP_{strong}$== $= \{-//- \ \ x \in L \implies P(p(x) = 1) \geqslant 1 - {1 \over 2^{q(n)}}, q$ - полином, $q > 1 \ \}$, ==$RP = RP_{strong}$== 1333 | 1334 | > **Proof** $P(p(x) = 0 \ | \ x \in L) < {1 \over 2}$ 1335 | > $P(p(x) = 0 \ \ k \ times \ | \ x \in L) < {1 \over 2^k}$ 1336 | > $k = q(n)$ 1337 | 1338 | 1339 | 1340 | такой способ называется **amplification** (*уменьшение вероятности ошибки (накачка)*) 1341 | 1342 | 1343 | 1344 | **L** $ZPP \subset RP$ 1345 | 1346 | > **Proof** $\sphericalangle \ L \in ZPP \ \ P(p(zx) = ?) \leqslant {1 \over 2}$ 1347 | > 1348 | > ``` 1349 | > q(x): 1350 | > res = p(x) 1351 | > if res != ? 1352 | > return res 1353 | > return 0 1354 | > ``` 1355 | > 1356 | > $x \notin L \implies q(x) = 0$ 1357 | > $x \in L \implies P(q(x) = 1) \geqslant {1 \over 2}$ 1358 | 1359 | **$\implies$** $ZPP \subset coRP$ 1360 | 1361 | **Th** ==$ZPP = RP \cap coRP$== 1362 | 1363 | > **Proof** 1364 | > 1365 | > $RP \cap coRP \subset ZPP$ 1366 | > 1367 | > $p_1 \ \ {x \notin L \implies P_1(x) = 0 \\ x\in L \implies P(p_1(x) = 1) \geqslant 1} \ \ \ \ p_2 \ \ {x \in L \implies p_2(x) = 2\\ x \notin L \implies P(p_2(x) = 0) \geqslant {1 \over 2} }$ 1368 | > 1369 | > сделаем программу $q$: 1370 | > 1371 | > | $p_1$ | $p_2$ | res | 1372 | > | ----- | ----- | ------------------------------------------- | 1373 | > | 0 | 0 | 0 | 1374 | > | 0 | 1 | ? // $P(q(x) = ?) \leqslant {1 \over 4}$ | 1375 | > | 1 | 0 | _impossible_ | 1376 | > | 1 | 1 | 1 | 1377 | 1378 | 1379 | 1380 | ### Двусторонняя ошибка 1381 | 1382 | ==$PP$== (*Probabilistic Polynomial*) $= \{L \ | \ {x \in L \implies P(p(x) = 1) > {1 \over 2} \\ x \notin L \implies P(p(x) = 0) > {1 \over 2}}, \ p$ работает за полином$\}$ 1383 | 1384 | На практике неприменим, рассматривают скорее: 1385 | ==$BPP$== (*Bounded Probabilistic Polynomial*) — пишем вместо ${1 \over 2}$ какое-то число, например $2 \over 3$ 1386 | 1387 | 1388 | 1389 | ### Th (*Лаутемана*) 1390 | 1391 | ==$BPP \subset \Sigma_2$== 1392 | 1393 | $\implies BPP \subset \Pi_2$ (по симметрии) 1394 | 1395 | > $L \in BPP: x \in L \iff \exist$ много $r: p(x, r) = 1$ 1396 | > $L \in \Sigma_2: x \in L \iff \exist y \forall z: \ R(x, y, z)$ 1397 | 1398 | **L** (*прокачка $BPP$*) $L \in BPP: \forall$ полинома $p(n) \ \ \exist$ полином $q(n)$ и программа $A$, работающая ща полином $P(A(x) = [x \in L]) \geqslant 1 - {q \over 2^{p(n)}}, A$ импользует $q(n)$ случайных бит 1399 | 1400 | > $A(x, r) \ \ x \in L \iff |\{r \ | \ A(x, r) = 1\}| \geqslant (1 - {1 \over 2^{p(n)}}) 2^{q(n)} = 2^{q(n)} 2^{q(n) - p(n)}$ 1401 | > $x \notin L \iff |\{r \ | \ A(x, r) = 1\} | < {2^{q(n)} \over 2^{p(n)}} = b$, тогда выше: $2^{q(n)} - b$ 1402 | > 1403 | > $B^{q(n)} = \Omega, \ \ |\Omega| = 2^{q(n)}$ 1404 | > 1405 | > введём групповую операцию (**ex** xor) 1406 | > 1407 | > выберем $k$ 1408 | > 1409 | > $X \subset \Omega$ - большое $\iff \exist y_1 y_2 ... y_k: \cup_{i = 1}^k y_i \oplus X = \Omega$ 1410 | > 1411 | > $X \subset \Omega$ - маленькое $\iff \forall y_1 y_2 ... y_k \cup_{i = 1}^k y_i \oplus X \neq \Omega$ 1412 | > 1413 | > 1. $|X| < {2^{1(n)} \over k} \implies X$ — $k$-маленькое 1414 | > $x \notin L \implies \underbrace {|\{r \ | \ A(x, r) = 1\}|}_R < {2^{q(n)} \over 2^{p(n)}} < {2^{q(n)} \over k} \implies R$ — $k$-маленькое 1415 | > 2. $|X| > (1 - {1 \over 2^{p(n)}}) 2^{q(n)} \stackrel {k?} \implies X$ — $k$-большое 1416 | > $\exist y_1 y_2 … y_k \cup_{i = 1}^k y_i \oplus X = \Omega$ 1417 | > $P_{y_1 y_2 ... y_k} (\cup_{k = 1} ^k y_i \oplus X = \Omega) = \\ = P(\forall z \or_{i = 1} ^k z \in y_i \oplus X) = \\ = P(\forall z \or_{i = 1}^k y_i \in z \oplus X) = \\ = 1 - P(\exist z \and_{i = 1}^k y_i \notin z \oplus X) = \\ = 1 - P(\or_{z} \and_{i = 1}^k y_i \notin z \oplus X) \geqslant \\ \geqslant 1 - \Sigma_k P(\and_{i = 1} ^k y_i \notin z \oplus X) = \\ = 1 - 2^{q(n)} (1 - {|X| \over |\Omega|})^k \geqslant \\ \geqslant 1 - 2^{q(n)} (1 - (1 - {1 \over 2^{q(n)}}) {2^{q(n)} \over 2^{q(n)}})^k = \\ = 1 - {2^{q(n)} \over 2^{k p(n)}}$ 1418 | > если добавим условие что $k > {q(n) \over p(n)}$, то получается, что $> 0$ 1419 | > 1420 | > $\sphericalangle \ L \in BPP$, выберем $p(n) = n$, по лемме $\exist q(n) \ \ R = \{r \ | \ A(x,r) = 1\}$ 1421 | > 1422 | > $x \in L \implies |R| > (1 - {q \over 2^n} 2^{q(n)}) \ \ x \notin L \implies |R| < {2^{q(n)} \over 2^n}$ 1423 | > 1424 | > выберем $k = q(n)$, для $n > n_0: {q(n) \over n} < k < 2^n$ 1425 | > 1426 | > $X \in L \implies R$ — $k$-большое 1427 | > 1428 | > $X \notin L \implies R$ — $k$-маленькое 1429 | > 1430 | > $x \in L \iff \exist y_1 ... y_k \forall z (A(x, y_1 \oplus z) \or A(x, y_w \oplus z) ... \or A(x, y_k \oplus z))$ 1431 | > 1432 | > $z \in y_i \oplus R \iff z \oplus y_i \in R \iff A(x, y_i \oplus z) = 1$ 1433 | > 1434 | > $\implies L \in \Sigma_2$ 1435 | 1436 | 1437 | 1438 | ==$PI$== (*Polynom Identity*) $= \{\langle p(x_1...x_n), q(x_1...x_n), m \rangle \ | \ \forall x_1...x_n \ \ p(\overline x) \equiv q(\overline x) \mod m \}$ 1439 | 1440 | 1. $PI \in coNP$ 1441 | 2. $PI \in NP$ открыто 1442 | 3. $PI \in coRP \subset BPP$ 1443 | 1444 | 1445 | 1446 | **L** (*Шварца-Зиппеля*) 1447 | 1448 | $p$ – полином над полем, $deg \ p = d$, $p \ne 0$, $S$, $|S| = s$ 1449 | если случайно выбрать $x_i$ из $S$, $P(p(x_1...x_n) = 0) \leqslant {d \over s}$ 1450 | 1451 | > **Proof** индукция по количеству переменных в полиноме 1452 | > 1453 | > база $n = 1$ полином над полем имеет $\leqslant d$ корней 1454 | > 1455 | > $P(p(x) = 0) \leqslant {d \over s}$ 1456 | > 1457 | > переход к $n$ 1458 | > 1459 | > $P(x_1 ... x_n) = x_1^k \stackrel {\ne 0} {q_k} (x_2 ... x_n) + x_1^{k - 1} q_{k -1}(x_2...x_n) + ... + x_1^0q_0(x_2...x_n)$ 1460 | > 1461 | > $P(p(x_1…x_n) = 0) = P(p(x_1...x_n) = 0 \ | \ \stackrel {\leqslant 1} {q_k} (x_2...x_n) = 0) P(\stackrel {\leqslant {d - k \over s}} {q_k} (x_2...x_n) = 0) + \stackrel {\leqslant {k \over s}} P(p(x_1...x_n) = 0 \ | \ q_k \ne 0) \stackrel {\leqslant 1} P(q_k \ne 0)$ 1462 | > 1463 | > $\sphericalangle \ p - 1 \ \ p \equiv q \iff p - q \equiv 0$ 1464 | 1465 | 1466 | 1467 | ## Интерактивные доказательства 1468 | 1469 | Verifier за истину, Prover за принадлежность в вопросе $x \in L$ 1470 | 1471 | $V$ работает детерминированно за полином 1472 | $P$ — произвольная программа 1473 | 1474 | $L \ \ x \ \ q_1 \ \ a_1 \ \ q_2 \ \ a_2 \ \ ... \ \ q_k \ \ a_k \ \ res$ 1475 | 1476 | $q_i = V(x, a_1, ..., a_{i - 1})$ 1477 | $a_i = P(x, q_1, q_2, ..., q_i)$ 1478 | 1479 | **Интерактивное взаимодействие**, пара $V, P$ называется **интерактивный протокол** 1480 | 1481 | $x \in L \iff res = 1$ 1482 | 1483 | ==$dIP$== = $\{L \ | \ \exist V: {x \in L \implies \exist P: res(V, P) = 1 \\ x \notin L \implies \forall P: res(V, P) = 0} \}$ 1484 | 1485 | если $k = f(n)$, где $n = |x|$, это $dIP[f]$ 1486 | 1487 | **Th** $dIP = NP$ 1488 | 1489 | > **Proof** 1490 | > 1491 | > + $NP \subset dIP[1]$ 1492 | > $q_1 = \epsilon \ \ a_1 = y$ (P может просто пербором найти нужный $y$) 1493 | > + $dIP \subset NP$ 1494 | > $R(x, y=(a_1, a_2, ..., a_k))$ 1495 | 1496 | рассмотрим теперь случай, когда $V$ — вероятностная программа 1497 | 1498 | $Prover$ по умолчаю не видит ленту $Verifier$ (концепция **private coins**) 1499 | 1500 | ==$IP$== $= \{\exist V : {x \in L \implies \exist P\ \ Prob(res(V, P) = 1) \geqslant {2 \over 3} \\ \\ x \notin L \implies \forall P \ \ Prob(res(V, P) = 1) \leqslant {2 \over 3}} \}$ 1501 | 1502 | $NP \subset IP$: $NP = dIP \subset IP$ 1503 | 1504 | $BPP \subset IP$ 1505 | 1506 | $IP \subset PSPACE$ 1507 | 1508 | $GNI$ (Graph Non Isomorphism) $= \{ \langle G_1, G_2 \rangle\ | \ G_1$ не изоморфен $G_2 \}$ 1509 | 1510 | 1. V: 1511 | $$ 1512 | i = random(1, 2) \\ 1513 | \pi = randomPermutation(n) \\ 1514 | H = \pi (G_i) \\ 1515 | \stackrel{q_1 = H}{\longrightarrow} {H \sim G_j, H \nsim G_{3 - j} \\ a_1 = j} \\ 1516 | \stackrel{j = a_1}{\longleftarrow} \\ 1517 | return \ \ i = j 1518 | $$ 1519 | 1520 | Сейчас вероятности 1 и 1/2 из определения. Чтобы добиться нужынх, запустим два раза (можно сразу) 1521 | 1522 | Можно сделать и последовательных два запуска, чтобы добиться $1 \over 4$ 1523 | 1524 | $GNI \in IP$ 1525 | 1526 | **Th1** (*Шамир*) $IP = PSPACE$ 1527 | 1528 | **Th2** $coNP \subset IP$ 1529 | 1530 | **L1** $\#SAT = \{ \langle \phi, k \rangle \ | \ \phi $ имеет ровно $k$ удовлетворяющих назначений $\} \in IP$ 1531 | 1532 | **L2** $TAUT \leqslant \#SAT$ 1533 | 1534 | > **L2 Proof** 1535 | > $\phi \in TAUT \iff \langle \phi, 2^n \rangle \in \#SAT$ 1536 | 1537 | > **Th2 w/ L1&L2 Proof** 1538 | > $L \in coNP \ \ \ L \leqslant TAUT \leqslant \#SAT$ 1539 | > $x \in L \iff f(x) = \langle \phi, k \rangle \in \#SAT$ 1540 | 1541 | > **L1 Proof** 1542 | > $\phi \rightarrow A(\phi)$ (арифметизация) 1543 | > 1544 | > | вместо | пишем | 1545 | > | ---------------- | -------------------------------- | 1546 | > | x | x | 1547 | > | $\neg x$ | $1 - x$ | 1548 | > | $\phi \and \psi$ | $A(\phi)A(\psi)$ | 1549 | > | $\phi \or \psi$ | $1 - (1 - A(\phi))(1 - A(\psi))$ | 1550 | > 1551 | > $phi(x_1, ..., x_n) = 1 \iff A(\phi) (x_1, ..., x_n) = 1$ 1552 | > 1553 | > $\langle \phi, k \rangle \in \#SAT \iff \sum_{x_1 = 0}^1 \sum_{x_2 = 0}^1 ... \sum_{x_n = 0}^1 A(\phi)(x_1 ... x_n) = k$ 1554 | > 1555 | > $A_1(x_1) = \sum_{x2 = 0}^1 \sum_{x_3 = 0}^1 ... \sum_{x_n = 0}^1 A_\phi (x_1 ... x_n)$ - полином от $x_1$ 1556 | > 1557 | > давайте выберем простое $p: 2^n < p \leqslant 2^{n + 1}$ (постулат Бертрана) 1558 | > 1559 | > $\deg A_1 \leqslant |\phi|$ 1560 | > 1561 | > просим $P$ прислать нам полином $A_1$ 1562 | > 1563 | > $\sum_{x_1 = 0}^1 \underbrace {\sum_{x_2 = 0}^1 ... \sum_{x_n = 0}^1 A_\phi (\overline x)}_{A_1} = k$ 1564 | > 1565 | > $assert(A_1(0) + A_1(1)) = k$ 1566 | > 1567 | > **все вычисления по модулю $p$** 1568 | > 1569 | > $A_2 (x_2) = \sum_{x_3 = 0}^1 \sum_{x_4 = 0}^1 ... \sum_{x_n = 0}^1 A_\phi(r_1, x_2, x_3 ... x_n)$, где $r_1 = random(0..p - 1)$ 1570 | > 1571 | > отправим $P$ число $r_1$, попросим прислать $A_2$ 1572 | > 1573 | > $assert(A_2(0) + A_2(1) = A_1(r_1))$ 1574 | > 1575 | > $r_2 = random(0..p - 1)$ 1576 | > 1577 | > отправляем $P$ число $r_2$ 1578 | > 1579 | > $A_k(x_k) = \sum_{x_k = 0}^1 ... \sum_{x_n = 0}^1 a_\phi(r_1, ..., r_{k - 1}, ..., x_k, ..., x_n)$ 1580 | > 1581 | > $assert(A_n(0) + A_n(1) = A_{n-1}(r_{n - 1}))$ 1582 | > 1583 | > $A_n(x_n) = A_\phi(r_1, ..., r_{n - 1}, x_n)$ 1584 | > 1585 | > $\deg A_n \leqslant |\phi|$ 1586 | > 1587 | > $assert A_n is OK$ 1588 | > 1589 | > $accept$ 1590 | > 1591 | 1592 | ### Th Шамира 1593 | 1594 | 1595 | 1596 | $TQBF_1 = \{\phi \ | \ \phi = Q_1 x_1 Q_2 x_2 ... Q_n x_n \ \ \psi (x_1 ... x_n),\ val(\phi) = 1\}$ 1597 | $\phi = \exist x ... \rightarrow \sum_{x = 0}^1 ...$ 1598 | $\phi = \forall x ... \rightarrow \prod_{x = 0}^1 ...$ 1599 | $\phi \in TQBF_1 \iff A_\phi \neq 0$ (*арифметизация*) 1600 | 1601 | ```sequence 1602 | Prover->Verifier: Af = k (mod p) 1603 | Note right of Verifier: assert k > 0 1604 | Note right of Verifier: p - простое 1605 | Note left of Verifier: A1(x1) = Op2_x2=0^1 Op3_x3=0^1 ... Opn_xn=0^1 A_psi(x1...xn) 1606 | Prover->Verifier: A1(x1) 1607 | Note right of Verifier: assert A1(0) (+ либо *) A(1) = k 1608 | Note right of Verifier: r1 = rand(0..p - 1) 1609 | Verifier->Prover: r1 1610 | Note left of Verifier: A2(x2) = Op3_x3=0^1 ... Opn_xn=0^1 A_psi(r1, x2, ..., xn) 1611 | ``` 1612 | 1613 | $(1 - {d \over p})^3 \sim 1 - {ds \over p}$ 1614 | 1615 | Между $Qx_i\underbrace {...}_{не\ более\ 1\ \forall}x_i \implies \deg x_i \leqslant d^4$ 1616 | $Qx_1 \underbrace{...}_\exist \forall x_i \exist x_1' \exist x_2 ' ... \exist x_{i - 1}' (x_1 = x_1' \and x_2 = x_2' \and ... \and x_{i - 1} = x_{i - 1}') \and \\ \and \exist \underbrace{...}_\exist \forall x_j \exist x_1'' \exist x_2 ' ... \exist x_{i - 1}' ... \exist x_{j - 1}'' (x_1' = x_1'' \and x_2' = x_2'' \and ... \and x_{j - 1}' = x_{j - 1}'')$ 1617 | 1618 | $|\tilde \phi| \leqslant |\phi|^2$ 1619 | $\tilde n \leqslant n^2$ 1620 | $d \leqslant n^2$ 1621 | $A_{\tilde \phi} = A_\phi$ 1622 | $\deg A_i \leqslant 2n^2$ 1623 | $d \leqslant 2n^2$ 1624 | $s = \tilde n \leqslant n^2$ 1625 | $p > 3ds \geqslant 6n^4$ 1626 | 1627 | 1628 | 1629 | $r_i$ - слово, которое было прочитано $V$ с вероятностной ленты между $i$ и $i + 1$ запросом 1630 | 1631 | **def** ==*public coins*==: $q_i = r_i$ 1632 | **def** ==*private coins*==: otherwise 1633 | 1634 | **def** ==$AM[k]$== (*Arthur Merlin*): существует доказательство с открытыми моментами с $k$-раундами 1635 | если нет ограничения: ==$AM[*]$== 1636 | 1637 | 1. $k = 1$ 1638 | $AM[1] = $ ==$AM$== 1639 | 2. $k = 1, r_1 = \epsilon$ 1640 | ==$MA$== 1641 | 1642 | 1643 | 1644 | переделаем $GNI$ в протокол с открытыми монетами 1645 | 1646 | $\{H \ | \ G_1 \sim H$ или $G_2 \sim H\}$ 1647 | $H$ не имеет автоморфизмов (1) 1648 | 1649 | $G_1 \sim G_2$ $|s| = n !$ 1650 | 1651 | $G_1 \nsim G_2$ $|s| = 2 n!$ 1652 | 1653 | перепишем (1) 1654 | $S = \{\langle H, \pi \rangle \ | \ G_1 \sim H ..., \pi$ - автоморфизм $H\}$ 1655 | 1656 | $\exist$ сертификат принадлежности $S$ 1657 | 1658 | > **ex** $S \subset \{0...999\}$ 1659 | > $|S| = 700$ 1660 | > $|S| = 350$ 1661 | > по число можно проверить $\in S?$ 1662 | > быстрая проверка: $S$ большое или маленькое? 1663 | > $7/10$ или $3.5/10$ примерно - *метод Монте-Карло* 1664 | 1665 | $|u| = 2^{n (n - 1) \over 2} n !$ 1666 | 1667 | *Хэширование* -------------------------------------------------------------------------------- /src/math-log-questions-colloq.md: -------------------------------------------------------------------------------- 1 | # Mathematical Logic Questions 2 | 3 |

1. Исчисление высказываний. Общезначимость, следование, доказуемость, выводимость. Корректность, полнота, непротиворечивость. Теорема о дедукции для исчисления высказываний.

4 |

2. Теорема о полноте исчисления высказываний.

5 |

3. Интуиционистское исчисление высказываний. BHK-интерпретация. Решётки. Булевы и псевдобулевы алгебры. Теорема Гливенко

6 |

4. Алгебра Линденбаума. Полнота интуиционистского исчисления высказываний в псевдобулевых алгебрах.

7 |

5. Модели Крипке. Сведение моделей Крипке к псевдобулевым алгебрам. Нетабличность интуиционистского исчисления высказываний.

8 |

6. Гёделева алгебра. Операция Г(А). Дизъюнктивность интуиционистского исчисления высказываний.

9 |

7. Исчисление предикатов. Общезначимость, следование, выводимость. Теорема о дедукции в исчислении предикатов.

10 |

8. Непротиворечивые множества формул. Доказательство существования моделей у непротиворечивых множеств формул в бескванторном исчислении предикатов.

11 |

9. Теорема Гёделя о полноте исчисления предикатов. Доказательство полноты исчисления предикатов.

12 |

10. Теории первого порядка, структуры и модели. Аксиоматика Пеано. Арифметические операции. Формальная арифметика.

13 |

11. Примитивно-рекурсивные и рекурсивные функции. Функция Аккермана. Примитивная рекурсивность арифметических функций, функций вычисления простых чисел, частичного логарифма.

14 |

12. Выразимость отношений и представимость функций в формальной арифметике. Представимость примитивов N,Z,S,U в формальной арифметике.

15 |

13. Бета-функция Гёделя. Представимость примитивов R и M и рекурсивных функций в формальной арифметике.

16 |

14. Гёделева нумерация. Рекурсивность представимых в формальной арифметике функций.

17 |

15. Непротиворечивость и w-непротиворечивость. Первая теорема Гёделя о неполноте арифметики, её неформальный смысл.

18 |

16. Формулировка первой теоремы Гёделя о неполноте арифметики в форме Россера, её неформальный смысл. Формулировка второй теоремы Гёделя о неполноте арифметики, Consis. Неформальное пояснение метода доказательства.

19 | 20 | ## 1. Исчисление высказываний. Общезначимость, следование, доказуемость, выводимость. Корректность, полнота, непротиворечивость. Теорема о дедукции для исчисления высказываний. 21 | 22 | * **Общезначимость( $\models \alpha$ ) .** Общезначимое высказывание - высказывание, которое истинно при любой оценке пропозициональных переменных. 23 | 24 | * **Следование( $\Gamma\models\alpha$ ).** Пусть $\Gamma =\gamma_1,\gamma_2,\ ...,\gamma_n$. Тогда $\alpha$ следует из $\Gamma$, если при любой оценке пропозициональных переменных, входящих в высказывания $\Gamma$ и $\alpha$, на которых все высказывания из $\Gamma$ истинны, $\alpha$ также истинна. 25 | 26 | * **Выполнимость.** Формула истинна при какой-нибудь оценке. 27 | 28 | * **Невыполнимость.** Формула не истинна ни при какой оценке. 29 | 30 | * **Опровержимость.** Формула ложна при какой-нибудь оценке. 31 | 32 | *
Схемы аксиом и правило вывода 33 | 34 | $1.\ \alpha\rightarrow\beta\rightarrow\alpha\\$ 35 | $2.\ (\alpha\rightarrow\beta)\rightarrow(\alpha\rightarrow\beta\rightarrow\gamma)\rightarrow(\alpha\rightarrow\gamma)\\$ 36 | $3.\ \alpha\rightarrow\beta\rightarrow\alpha\&\beta\\$ 37 | $4.\ \alpha\&\beta\rightarrow\alpha\\$ 38 | $5.\ \alpha\&\beta\rightarrow\beta\\$ 39 | $6.\ \alpha\rightarrow\alpha\lor\beta\\$ 40 | $7.\ \beta\rightarrow\alpha\lor\beta\\$ 41 | $8.\ (\alpha\rightarrow\gamma)\rightarrow(\beta\rightarrow\gamma)\rightarrow(\alpha\lor\beta\rightarrow\gamma)\\$ 42 | $9.\ (\alpha\rightarrow\beta)\rightarrow(\alpha\rightarrow\neg\beta)\rightarrow\neg\alpha\\$ 43 | $10.\ \neg\neg\alpha\rightarrow\alpha\\$ 44 | 45 | $Modus Ponens:$ 46 | $${{\alpha,\alpha\rightarrow\beta}\over{\beta}}$$ 47 | 48 |
49 | 50 | 51 | * **Доказуемость( $\vdash\alpha$ ) .** Высказывание $\alpha$ доказуемо, если существует доказательство $\alpha_1,\alpha_2...\alpha_k$ и $\alpha_k$ совпадает с $\alpha$ 52 | 53 | Доказательство. Доказательство в исчислении высказываний — это некоторая конечная последовательность выражений (высказываний) $\alpha_1,\alpha_2...\alpha_k$, что каждое из высказываний $\alpha_i$ либо является аксиомой, либо получается из других утверждений $\alpha_{P_1},\alpha_{P_2},...,\alpha_{P_n}\ (P_1... P_n < i)$ по правилу вывода. 54 | 55 | * **Выводимость( $\Gamma\vdash\alpha$ ).** Высказывание $\alpha$ выводимо из списка гипотез $\Gamma$, если существует вывод $\alpha_1,\alpha_2...\alpha_k$ и $\alpha_k$ совпадает с $\alpha$. 56 | 57 | Вывод. Доказательство, в котором могут использоваться гипотезы. 58 | Ака. Вывод в исчислении высказываний — это некоторая конечная последовательность выражений (высказываний) $\alpha_1,\alpha_2...\alpha_k$, что каждое из высказываний $\alpha_i$ либо является аксиомой, либо получается из других утверждений $\alpha_{P_1},\alpha_{P_2},...,\alpha_{P_n}\ (P_1... P_n < i)$ по правилу вывода, либо является гипотезой из списка $\Gamma$. 59 | 60 | * **Корректность( $\vdash\alpha\ \Rightarrow\ \models\alpha$ ).** Если высказывание доказуемо, то оно общезначимо 61 | 62 | * **Полнота( $\models\alpha\ \Rightarrow\ \vdash\alpha$ ).** Если высказывание общезначимо, то оно доказуемо. 63 | 64 | * **Непротиворечивость.** Теория непротиворечива если не существует формулы $\alpha$ такой, что $\vdash\alpha$ и $\vdash\neg\alpha$ 65 | 66 | * **Противоречивость.** Если теория противоречива, то в ней доказуема любая формула 67 | 68 | * **Теорема о дедукции.** Пусть имеется $\Gamma,\alpha,\beta$. Утверждение $\Gamma\vdash\alpha\rightarrow\beta$ тогда и только тогда, когда $\Gamma,\alpha\vdash\beta$ 69 | 70 | (если из списка высказываний $\Gamma$ выводится импликация $\alpha$ и $\beta$, то можно перестроить вывод таким образом, что из $\Gamma,\alpha$ выводимо $\beta$ и наоборот) 71 | 72 | 73 | ## 2. Теорема о полноте исчисления высказываний. 74 | 75 | * Классическое исчисление высказываний полно. 76 | 77 | Полнота( $\models\alpha\ \Rightarrow\ \vdash\alpha$ ). Если высказывание общезначимо, то оно доказуемо. 78 |
Вспомогательные утверждения 79 | 80 | * *Лемма 1.* Если $\Gamma,\Sigma\vdash\alpha$, то $\Gamma,\Sigma,\Delta\vdash\alpha$. Если $\Gamma,\Sigma,\Delta,\Phi\vdash\alpha$, то $\Gamma,\Delta,\Sigma,\Phi\vdash\alpha$. 81 | 82 | * *Лемма 2.* Если справедливы три утверждения: $\Gamma\vdash\gamma,\ \Delta\vdash\delta,\ \gamma,\delta\vdash\alpha$, то справедливо и $\Gamma,\Delta\vdash\alpha$ 83 | 84 | * *Лемма 3.* (Правило контрапозиции). Каковы бы ни были формулы $\alpha,\beta$, справедливо, что $\vdash(\alpha\rightarrow\beta)\rightarrow(\neg\beta\rightarrow\neg\alpha)$ 85 | 86 | * *Лемма 4.* Правило исключенного третьего. Какова бы ни была формула $\alpha,\vdash\alpha\vee\neg\alpha$ 87 | 88 | * *Лемма 5.* Каждое из построенных по таблицам истинности утверждений доказуемо. 89 | 90 | * *Лемма 6.* Пусть пропозициональные переменные $X_1,X_2...X_N$ - все переменные, которые используются в формуле $\alpha$. И пусть задана некоторая оценка переменных. Тогда $X_1^{(\neg)},X_2^{(\neg)}...X_N^{(\neg)}\vdash\alpha^{(\neg)}$. 91 | * 92 | * *Лемма 7.* Исключение допущения. Пусть справедливо $\Gamma,\rho\vdash\alpha$ и $\Gamma,\neg\rho\vdash\alpha$. Тогда также справедливо $\Gamma\vdash\alpha$. 93 | 94 | * *Лемма 8.* Пусть при всех оценках переменных $X_1^{(\neg)},X_2^{(\neg)}...X_N^{(\neg)}\vdash\alpha$, тогда $\vdash\alpha$ 95 | 96 |
97 | 98 | * Классическое исчисление высказываний корректно. 99 | 100 | ## 3. Интуиционистское исчисление высказываний. BHK-интерпретация. Решётки. Булевы и псевдобулевы алгебры. Теорема Гливенко. 101 | * **Интуиционистское исчисление высказываний.** Чтобы получить **ИИВ** (Интуиционистское исчисление высказываний) нужно в **КИВ** (Классическое исчисление высказываний) заменить 10-ю аксиому ($\neg\neg\alpha\rightarrow\alpha$) на $\alpha\rightarrow\neg\alpha\rightarrow\beta$ 102 | 103 | * В интуиционистском исчислении высказываний невозможно доказать правило исключенного третьего: $\alpha\vee\neg\alpha$ 104 | * Существует множество способов построить модель для интуиционистской логики: BHK-интерпретация, Модели Крипке, Топологическая интерпретация... 105 | *
Топологическая интерпретация. 106 | 107 | Начнем с множества истинностных значений. Возьмем в качестве этого множества все открытые множества некоторого заранее выбранного топологического пространства. Определим оценку для связок интуиционистского исчисления высказываний следующим образом: 108 | * $[A\& B]= [A]\cap[B]$ 109 | * $[A\vee B]= [A]\cup[B]$ 110 | * $[A\rightarrow B]= (c[A]\cup[B])^{\circ}$ 111 | * $[\neg A] = (c[A])^{\circ}$ 112 | 113 | Будем считать, что формула истинна в данной модели, если её значение оказалось равно всему пространству. 114 | * Example: возьмем пространство $R$, и вычислим значение формулы $A\vee\neg A$ при $A$ равном (0,1): $[A\vee\neg A] = (0,1)\cup [\neg A] = (0,1)\cup(c(0,1))^{\circ} = (0,1)\cup((-\infty,0)\cup(1,\infty)) = (-\infty,0)\cup(0,1)\cup(1,\infty)$ 115 |
116 | 117 | * **BHK-интерпретация (Brouwer-Heyting-Kolmogorov interpretation).** Пусть заданы высказывания $\alpha,\beta$, тогда: 118 | 119 | * мы считаем $\alpha\&\beta$ доказанным, если у нас есть доказательство $\alpha$ и есть доказательство $\beta$ 120 | * мы считаем $\alpha\lor\beta$ доказанным, если у нас есть доказательство $\alpha$ или доказательство $\beta$, и мы точно знаем какое 121 | * мы считаем $\alpha\rightarrow\beta$ доказанным, если из доказательства $\alpha$ мы можем построить доказательство $\beta$ 122 | * мы считаем $\bot$ (aka 0) утверждением не имеющим доказательства 123 | * $\neg\alpha$ есть сокращение $\alpha\rightarrow\bot$. Мы считаем $\neg\alpha$ доказанным, если мы умеем из доказательства $\alpha$ получить противоречие 124 | 125 | * **Решётка.** Частично-упорядоченное(рефлексивно, транзитивно, антисимметрично) множество $\langle M,\sqsubseteq\rangle$, в котором, для любых $a,b$ определены две операции: 126 | 127 | * верхняя грань $a,b$: $a+b = c,$ наименьший $c$, что $a\sqsubseteq c,b\sqsubseteq c$ 128 | * нижняя грань $a,b$: $a \ast b = c$, наибольший $c$, что $c\sqsubseteq a,c\sqsubseteq b$ 129 | * example: $a+b=x,a\ast b = y$ 130 | 131 | ```mermaid 132 | graph TD; 133 | x --> a 134 | x --> b 135 | a-->y 136 | b-->y 137 | ``` 138 | * наименьший и минимальный:\ 139 | $z$-наименьший в M, если для всех $t\in M:\ z\sqsubseteq t$\ 140 | $z$-минимальный в M, если нет такого $t\in M:\ t\sqsubseteq z$ 141 | example: $z,z':$ никакой не наименьший, но оба минимальные 142 | 143 | ```mermaid 144 | graph TD; 145 | q -->a 146 | q -->b 147 | a-->z 148 | b-->z 149 | a-->z' 150 | b-->z' 151 | ``` 152 | 153 | * **Дистрибутивная решетка.** Для любых $a,b,c$: $(a+b)\ast c=a\ast c+b\ast c$ 154 | 155 | * Решетка дистрибутивна т. и т. т., когда при любых $a,b,c$ : $a\ast b+c = (a+c)\ast(b+c)$ 156 | 157 | * **Импликативная решётка.** Решетка с псевдодополнением, определённым для любых двух элементов этой решетки 158 | 159 | * Операция псевдодополнения. $c=a\rightarrow b$, $c$ - это такой наибольший $t$, что $t\ast a\sqsubseteq b$ 160 | 161 | * В импликативной решетке есть наибольший элемент 162 | 163 | * **Псевдобулева алгебра (алгебра Гейтинга).** Импликативная решетка с 0 164 | 165 | * 0 - наименьший элемент решетки 166 | 167 | * **Булева алгебра.** Псевдобулева алгебра, в которой для любых $a$: $a + (a\rightarrow 0) = 1$. \ 168 | Булева алгебра - пример классической логики: 169 | а + (а -> 0) = 1 - Закон исключенного третьего, который читается как "Либо альфа, либо не альфа выполнено" 170 | 171 | 172 | * **Теорема Гливенко.** $\vdash_{КИВ}\alpha$, то $\vdash_{ИИВ}\alpha$.Если формула $\alpha$ выводима в классическом исчислении высказываний, то $\neg\alpha$ выводима в интуиционистком исчислении высказываний. 173 | 174 | ## 4. Алгебра Линденбаума. Полнота интуиционистского исчисления высказываний в псевдобулевых алгебрах. 175 | 176 | * **Алгебра Линденбаума.** Множество множеств (классов) факторизованных по отношению эквивалентности. 177 | 178 | * Определение. Возьмем множество всех формул ИИВ, тогда: 179 | 1. $\alpha\sqsubseteq\beta$, если $\alpha\vdash\beta$ 180 | 2. $\alpha\approx\beta$, если $\alpha\sqsubseteq\beta$ и $\beta\sqsubseteq\alpha$ 181 | 182 | * Полнота ИИВ TODO() 183 | 184 | ## 5. Модели Крипке. Сведение моделей Крипке к псевдобулевым алгебрам. Нетабличность интуиционистского исчисления высказываний. 185 | 186 | * **Вообще, очень полезно посмотреть видосики на степике** 187 | 188 | * **Определение** 189 | 190 | 1. Пусть $\mathrm{W}$ - множество миров. (миры - это какие-то множества; 191 | 192 | 2. $(\preceq)\subseteq W \times W$ - отношение частичного порядка на W; 193 | 194 | 3. $(\Vdash)\subseteq W \times P$ - отношение вынужденности, причём если $W_x \preceq W_y$ и $W_x \Vdash X$, то $W_y \Vdash X$ , где $X$ - переменная. (*Мы требуем, чтобы если некоторый мир наследует нашему, то все переменные, которые вынуждены в нашем мире в нем тоже были бы вынуждены*) 195 | 196 | Тогда $$ - **модель Крипке** 197 | 198 | Как оценить высказывание в модели Крипке? 199 | 200 | * **Определение** 201 | 202 | 1. $W_k \Vdash P$ - задано в модели. 203 | 204 | 2. $W_k \Vdash \phi \& \psi$ - если $W_k \Vdash \phi$ и $W_k \Vdash \psi$ 205 | 206 | 3. $W_k \Vdash \phi \vee \psi$ - если $W_k \Vdash \phi$ или $W_k \Vdash \psi$ 207 | 208 | 4. $W_k \Vdash \phi \rightarrow \psi$ - если в любом $W_i:W_k\preceq W_i$ из $W_i \Vdash \phi$ следует $W_i \Vdash \psi$ 209 | 210 | 5. $W_k \Vdash \neg \phi$ - если в любом $W_i:W_k\preceq W_i$ выполнено $W_i \nVdash \phi$ 211 | 212 | 6. $W_k \nVdash \perp$ 213 | 214 | 215 | 216 | * **Определение** 217 | 218 | * $\Vdash \phi$ в модели $W$ (иначе: $W\vDash\phi$), если $W_i \Vdash \phi$ при всех $W_i \in W$ (*Будем говорить, что формула $\phi$ **истинна** в данной модели, если она вынуждена в каждом мире этой модели*) 219 | * $\vDash \phi$, если $\Vdash\phi$ во всех моделях $W$ (*Будем говорить, что формула $\phi$ **общезначима**, если она вынуждена во всех моделях*) 220 | 221 | * **Теорема** 222 | 223 | * Модель Крипке это **алгебра Гейтинга** 224 | 225 | * **Табличная модель.** Будем говорить, что модель исчисления - табличная, если: 226 | 1. Задано множество истинностных значений $V$. 227 | 2. Для каждой связки задана функция оценки: $f_{\star}:V\ast V\rightarrow V$ и $f_{\neg}:V\rightarrow V$ 228 | 3. Среди $V$ выделены некоторые истинные значения $\top$. Мы считаем, что $\models\alpha$, если $[\alpha]\in\top$ при любых оценках пропозициональных переменных. 229 | 4. Модель корректна 230 | * классическая оценка для исчисления высказываний - табличная модель 231 | 232 | * TODO картинки?, ... 233 | 234 | * **Теорема** В интуиционистской логике нет полной табличной модели 235 | 236 | ## 6. Гёделева алгебра. Операция $\Gamma(A)$. Дизъюнктивность интуиционистского исчисления высказываний. 237 | 238 | * **Гёделева алгебра** Алгебра $А$ - гёделева, если для любых $a,b\in A$ если $a+b=1$, то $a=1$ и $b=1$. 239 | 240 | * **Гёделизация ($\Gamma(A)$)** Добавление элемента, который больше всех 241 | ```mermaid 242 | graph TD; 243 | 1 --> 0 244 | 1 --> 0 245 | 1ГА --> w 246 | w --> n[0] 247 | w --> n[0] 248 | ``` 249 | Алгебра с добавлением $\omega$ и $1_{\Gamma (A)}$. Причем если $a\in A$, то $\omega\geqslant a, 1_\Gamma(A)\geqslant a$ и $1_\Gamma(A)>\omega$ 250 | * Утв. если A - алгебра Гейтинга, то ${\Gamma (A)}$ - алгебра Гейтинга 251 | * Дизъюнктивность ИИВ. Если $\vdash\alpha\lor\beta$, то $\vdash\alpha$ или $\vdash\beta$ 252 | 253 | 254 | ## 7. Исчисление предикатов. Общезначимость, следование, выводимость. Теорема о дедукции в исчислении предикатов. 255 | 256 | * **Определение** 257 | * ***Терм*** исчисления предикатов (или *предметное выражение*) это: 258 | * *Предметная переменная* - маленькая буква начала или конца лат. алфавита, (возможно с индексами или апострофом) 259 | * Применение функции: если $(\theta_1,...\theta_n)$ - термы и $f$ - *функциональный символ* (некая функция), то $f(\theta_1,...\theta_n)$ тоже терм. (Например константы - нульместные функции) 260 | 261 | * **Определение** 262 | 263 | * **Формула** исчисления предикатов - это: 264 | * Если $\alpha$ и $\beta$ - формулы исчисления предикатов, то $\neg\alpha, \alpha \&\beta, \alpha \vee \beta, \alpha \rightarrow \beta$ - также формула 265 | * Если $\alpha$ - формула, и $x$ - предметная переменная, то $\forall x.\alpha$ и $\exists x. \alpha$ - также формулы 266 | * Применение предиката: если $(\theta_1,...\theta_n)$ - термы, и $P$ - предикатный символ, то $P(\theta_1,...\theta_n)$ - формула. 267 | 268 | * **Определение** 269 | 270 | * Дана некоторая формула $s$. Будем говорить, что подстрока $s_1$ строки $s$ является подформулой если она в точности соответствует какому-то одному нетерминалу в дереве разбора строки $s$. 271 | 272 | * **Определение** 273 | 274 | * Если в формулу входит подформула, полученная по правилам для кванторов $(\forall x.\alpha , \exists x. \alpha)$, то мы будем говорить, что формула $\alpha$ находится в области действия данного квантора по переменной $x$. Также будем говорить, что любая подформула формулы $\alpha$ находится в области действия данного квантора. 275 | 276 | * **Определение** 277 | 278 | * Если некоторое вхождение переменной $x$ находится в области действия квантора по переменной $x$, то такое вхождение мы назовем **связанным**. Вхождение $x$ непосредственно рядом с квантором назовём **связывающим**. Те вхождения переменных, которые не являются связанными или связывающими назовём **свободными**. Формула не имеющая свободных вхождений переменных называется **замкнутой**. 279 | 280 | * **Определение** 281 | 282 | * Будем говорить, что терм $\theta$ **свободен для подстановки** в формулу $\psi$ вместо $x$, если после подстановки вместо свободных вхождений $x$ ни одно вхождение свободной переменной в $\theta$ не станет связанным. 283 | 284 | * В исчислении предикатов к схемам аксиом из исчисления высказываний добавляется две схемы аксиом: 285 | 286 | Пусть $\theta$ свободно для подстановки вместо $x$ в $\psi$ 287 | 288 | 1. ($\forall x. \psi) \rightarrow (\psi[x:=\theta])$ 289 | 2. $\psi[x:=\theta]\rightarrow \exists x. \psi$ 290 | 291 | * Правила вывода: 292 | 293 | Пусть $x$ не входит свободно в $\phi$, тогда имеют место следующие правила вывода: 294 | 295 | $${{\phi\rightarrow\psi}\over{\phi\rightarrow \forall x.\psi}}$$ 296 | $${{\psi\rightarrow\phi}\over{(\exists x. \psi)\rightarrow \phi}}$$ 297 | 298 | * **Определения** 299 | 300 | * Формула в исчислении предикатов **общезначима**, если она истинна на любом предметном множестве $D$, при любой оценке предикатных и функциональных символов, и при любых оценках свободных предметных переменных. 301 | * Пусть имеется некоторое исчисление предикатов с множеством аксиом $A$, и пусть дан некоторый список $\Gamma$ формул исчисления предикатов. Тогда **вывод** формулы $\alpha$ в исчислении с аксиомами $A \cup\Gamma$ мы назовем выводом из допущений $\Gamma$ и будем записывать как $\Gamma\vdash\alpha$ 302 | * Пусть имеется какое-то предметное множество $D$, список формул $\Gamma$ и высказывание $\alpha$, тогда **следованием** из $\Gamma$ в $\alpha$ назовем следующее утверждение: если при всех оценках (предикатных, функциональных и т.д.) в предметном множестве $D$, где формулы $\Gamma$ истинны, истинна и $\alpha$. (мб можно понятнее написать TODO) 303 | 304 | * **Теорема о дедукции** 305 | 306 | Если $\Gamma, \alpha\vdash\beta$, и в доказательстве отсутствуют применения правил для кванторов, использующих свободные применения правил для кванторов, использующих свободные переменные из формулы $\alpha$, то $\Gamma\vdash\alpha\rightarrow\beta$. Обратно, если $\Gamma\vdash\alpha\rightarrow\beta$, то $\Gamma, \alpha\vdash\beta$ 307 | 308 | * *Исчисление предикатов* **корректно**, т.е. любое доказуемое утверждение общезначимо 309 | 310 | ## 8. Непротиворечивые множества формул. Доказательство существования моделей у непротиворечивых множеств формул в бескванторном исчислении предикатов. 311 | 312 | * **Непротиворечивое множество формул.** Назовем $\Gamma$ - множество замкнутых формул - непротиворечивым, если ни для какой формулы $\alpha$ невозможно показать, что $\Gamma\vdash\alpha$ и $\Gamma\vdash\neg\alpha$ 313 | 314 | * *Альтернативное определение.* $\Gamma$ - непротиворечивое множество формул, если $\Gamma\nvdash\alpha\&\neg\alpha$ при некотором $\alpha$ 315 | 316 | * **Пример замкнутых и бескванторных.** 317 | 318 | * Бескванторная = не содержащая кванторов.\ 319 | Замкнутая = не содержащая свободных переменных. 320 | 321 | Возможны все 4 варианта:\ 322 | ЗБ: $0=1\\$ 323 | З: $\forall x.x=1\\$ 324 | Б: $x=1\\$ 325 | : $\forall x.x=y\\$ 326 | 327 | * **Def.** Полным непротиворечивым множеством замкнутых (замкнутых и бескванторных) формул назовем такое множество $\Gamma$, что для любой замкнутой (замкнутой и бескванторной) формулы $\alpha$ либо $\alpha\in\Gamma$, либо $(\neg\alpha)\in\Gamma$ 328 | 329 |
Некоторые теоремы. 330 | 331 | * **Теорема.** Пусть $\Gamma$ - непротиворечивое множество замкнутых (замкнутых и бескванторных) формул. Тогда какова бы ни была замкнутая (замкнутая и бескванторная) формула $\phi$, хотя бы $\Gamma\cup\{\phi\}$ или $\Gamma\cup\{\neg\phi\}$ - непротиворечиво 332 | 333 | * **Теорема.** Пусть $\Gamma$ - непротиворечивое множество замкнутых (замкнутых и бескванторных) формул. Тогда найдется полное непротиворечивое множество замкнутых (замкнутых и бескванторных) формул $\Delta$, что $\Gamma\in\Delta$. 334 | 335 |
336 | 337 | * **Def.** Моделью для множества формул $F$ назовем такую модель $M$, что при всяком $\phi\in F$ выполнено $[\phi]_M=И$ 338 | 339 | * **Альтернативное обозначение.** $M\models\phi$ 340 | 341 | * **Теорема.** Любое непротиворечивое множество замкнутых бескванторных формул имеет модель. 342 | 343 | * **Def.** Пусть $\Mu$ - полное непротиворечивое множество замкнутых формул. Тогда модель $M$ задается так: 344 | 345 | 1. $D$ - множество всех бескванторных формул и дополнительная строка "ошибка!" 346 | 2. $[f(\theta_1,...,\theta_n)]="f(" ++ [\theta_1] ++ "," ++...++ ","++ [\theta_n] ++")"$ 347 | 3. 348 | $$ 349 | [P(\theta_1,...,\theta_n)] = 350 | \left \{ 351 | \begin{array}{ll} 352 | И,\ если\ "f(" ++ [\theta_1] ++ "," ++...++ ","++ [\theta_n] ++")"\in M\\ 353 | Л,\ иначе 354 | \end{array} 355 | \right. 356 | $$ 357 | 1. $[x]=$"ошибка!", т.к. формулы замкнуты 358 | 359 | * *Лемма.* Пусть $\phi$ - бескванторная формула, тогда $M\models\phi$ тогда и только тогда, когда $\phi\in\Mu$ 360 | 361 | * **Lemma.** Пусть $\Gamma$ - полное непротиворечивое множество бескванторных формул. Тогда существует модель для $\Gamma$. 362 | 363 | 364 | ## 9. Теорема Гёделя о полноте исчисления предикатов. Доказательство полноты исчисления предикатов. 365 | 366 | * **Определение** 367 | 368 | * Назовём формулу $\alpha$ **формулой с поверхностными кванторами**, если существует такой узел в дереве разбора формула, не являющийся квантором, ниже которого нет ни одного квантора, а выше - нет ничего кроме кванторов. (Например: $\forall x\exists y\forall z(P(x,y,z)\&P(z,y,x)$) 369 | 370 | * **Лемма** 371 | 372 | Для любой формулы исчисления предикатов найдётся эквивалентная ей формула с поверхностными кванторами. 373 | 374 | * **Теорема Гёделя о полноте исчисления предикатов.** 375 | 376 | Пусть $\Gamma$ - непротиворечивое множество формул исчисления предикатов. Тогда существует модель для $\Gamma$. 377 | 378 | * **Теорема** 379 | 380 | Если $\vDash\alpha$, то $\vdash\alpha$ 381 | 382 | ## 10. Теории первого порядка, структуры и модели. Аксиоматика Пеано. Арифметические операции. Формальная арифметика. 383 | 384 | * **Теория первого порядка.** Теорией первого порядка назовем исчисление предикатов с дополнительными ("нелогическими" или "математическими") 385 | 386 | * предикатными и функциональными символами 387 | 388 | * аксиомами\ 389 | сущности, взятые из исходного исчисления высказываний, назовём логическими. 390 | 391 | * **Структура.** Структурой теории первого порядка мы назовем упорядоченную тройку $\langle D,F,P\rangle$, где $F=\langle F_0,F_1...\rangle$ - списки оценок для 0-местных, 1-местных и т.д. функций, и $P=\langle P_0,P_1...\rangle$ - списки оценок для 0-местных, 1-местных и т.д. предикатов, $D$ - предметное множество. 392 |
393 | Небольшое пояснение 394 | Понятие структуры - развитие понятия оценки из исчисления предикатов. Но оно касается только нелогических составляющих теории; истинностные значения и оценки для связок по-прежнему определяются исчислением предикатов, лежащим в основе теории. Для получения оценки формулы нам нужно задать структуру, значения всех свободных индивидных переменных, и (естественным образом) вычислить результат 395 |
396 | 397 | * **Def.** Назовем структуру корректной, если любая доказуемая формула истинна в данной структуре. 398 | * **Модель.** Модель теории - любая корректная структура 399 | 400 | * **Аксиоматика Пеано.** Рассмотрим некоторое множество $N$. Будем говорить, что оно удовлетворяет аксиомам Пеано, если выполнено: 401 | * В нем существует некоторый выделенный элемент $0$ ($0\in N$) 402 | * Для каждого элемента определена операция $'$, результат ее также принадлежит множеству $N$ ($N\rightarrow N$) 403 | 404 | Кроме того, эти элементы и операция к этим элементам должны удовлетворять следующим требованиям: 405 | 406 | * Не существует такого $x\in N$, что $x'=0$ (Нет предшественника у минимального элемента) 407 | * Если при $x$ и $y$ из $N$ верно, что $x'=y'$, то $x=y$. Если $x=y'$, то $x$ назовем следующим за $y$, а $y$ - предшествующим $x$ (определение операции $'$) 408 | * Каково бы ни было свойство ("предикат") $P:N\rightarrow V$, если: 409 | * выполнено $P(0)$ 410 | * при любом $x\in N$ из $P(x)\Rightarrow P(x')$\ 411 | то при любом $x\in N$ выполнено $P(x)$\ 412 | (Индукция) 413 | 414 | * **Формальная арифметика.** (формализация аксиоматики Пеано) формальная арифметика - теория первого порядка, со следующими добавленными нелогическими: 415 | 416 | * двуместными функциональными символами ($+$),($\ast$), одноместным функциональным символом ($'$), нульместным функциональным символом 0; 417 | 418 | * двуместным предикатным символом ($=$); 419 | 420 | * восемью аксиомами: 421 | 422 | * $(A1)\ a=b\rightarrow a=c\rightarrow b=c$ (транзитивность равенства) 423 | * $(A2)\ a=b\rightarrow a'=b'$ (инъективность штриха) 424 | * $(A3)\ a'=b'\rightarrow a=b$ (инъективность штриха) 425 | * $(A4)\ \neg a'=0$ (у нуля нет предшественников) 426 | * $(A5)\ a+0=a$ (определение сложения) 427 | * $(A6)\ a+b'=(a+b)'$ (определение сложения) 428 | * $(A7)\ a\ast 0 =0$ (определение умножения) 429 | * $(A8)\ a\ast b'=a\ast b+a$ (определение умножения) 430 | 431 | * схемой аксиом индукции 432 | $\psi[x:=0]\&(\forall x.(\psi\rightarrow\psi [x:=x']))\rightarrow\psi$ 433 | 434 | * Еще один пример теории первого порядка. 435 | 436 | **Теория групп.** К исчислению предикатов добавим двуместный предикат $(=)$, двуместную функцию $(\ast)$, одноместную функцию $x^{-1}$, нульместную функцию $1$ и следующие аксиомы: 437 | 438 | * $(E1)\ a=b\rightarrow a=c\rightarrow b=c$ 439 | * $(E2)\ a=b\rightarrow(a\ast c=b\ast c)$ 440 | * $(E3)\ a=b\rightarrow(c\ast a=c\ast b)$ 441 | * $(G1)\ a\ast(b\ast c)=(a\ast b)\ast c$ 442 | * $(G2)\ a\ast 1=a$ 443 | * $(G3)\ a\ast a^{-1}=1$ 444 | 445 | ## 11. Примитивно-рекурсивные и рекурсивные функции. Функция Аккермана. Примитивная рекурсивность арифметических функций, функций вычисления простых чисел, частичного логарифма. 446 | 447 | * **Примитивы:** 448 | 449 | 1. Ноль. $Z: \N_0\rightarrow\N_0, Z(x)=0$ 450 | 2. Инкремент. $N: \N_0\rightarrow\N_0, N(x)=x'$ 451 | 3. Проекция. $V_i^n:\N_0^n\rightarrow\N_0, V_i^n(x_1,...,x_n)=x_i$ 452 | 4. Подстановка. Если $f:\N_0^n\rightarrow\N_0$ и $g_1,...,g_n:\N_0^m\rightarrow\N_0$, то $S\langle f,g_1,...,g_n\rangle:\N_0^m\rightarrow\N_0$, при этом: 453 | 454 | $$ 455 | S\langle f,g_1,...,g_n\rangle(x_1,...,x_m)=f(g_1(x_1,...,x_m),...,g_n(x_1,...,x_m)) 456 | $$ 457 | 458 | 5. Примитивная рекурсия. Если $f: \N_0^n\rightarrow\N_0$ и $g:\N_0^{n+2}\rightarrow\N_0$, то $R\langle f,g\rangle:\N_0^{n+1}\rightarrow\N_0$, при этом 459 | 460 | $$ 461 | R\langle f,g\rangle(x_1,...,x_n,y) = 462 | \left \{ 463 | \begin{array}{ll} 464 | f(x_1,...,x_n), y=0\\ 465 | g(x_1, ..., x_n,y-1,R\langle f,g\rangle(x_1,...,x_n,y)), y>0 466 | \end{array} 467 | \right. 468 | $$ 469 | 470 | 471 | 6. Минимизация. Если $f:\N_0^{n+1}\rightarrow\N_0$, то $\mu\langle f\rangle:\N_0^n\rightarrow\N_0$, при этом 472 | $$ 473 | \mu\langle f\rangle(x_1,...,x_n)=такое\ минимальное\ число\ y,\ что\ f(x_1,...,x_n,y)=0.\\ Если\ такого\ y\ нет,\ то\ результат\ примитива\ не определён 474 | $$ 475 | 476 | * **Примитивно-рекурсивная функция.** Функция называется примитивно-рекурсивной, если возможно построить выражение только из первых пяти примитивов, такое, что оно при всех аргументах возвращает значение, равно значению требуемой функции. 477 | 478 | * **Рекурсивная функция.** Если функция может быть выражена только из 6 примитивов, то она называется рекурсивной. 479 | 480 | * **Функция Аккермана.** Рекурсивна, но не примитивно-рекурсивна 481 | $$ 482 | A(m,n) = 483 | \left \{ 484 | \begin{array}{ll} 485 | n+1,\ если\ m=0\\ 486 | A(m-1,1),\ если\ m>0,n=0\\ 487 | A(m-1,A(m,n-1)),\ если\ m>0,n>0 488 | \end{array} 489 | \right. 490 | $$ 491 | 492 | * **Простые арифметические операции.** 493 | 494 | * Сложение 495 | 496 | * Умножение 497 | 498 | * Вычитание 499 | 500 | * [Остальные арифметические операции](https://github.com/DubKoldun/mathlog_labs_2018/tree/master/PrRecFunctions/haskell) 501 | 502 | * **Проверка числа на простоту.** Функция проверки числа на простоту примитивно-рекурсивна. 503 | 504 | * **Частичный логарифм.** Частичный логарифм примитивно-рекурсивен. 505 | 506 | 507 | ## 12. Выразимость отношений и представимость функций в формальной арифметике. Представимость примитивов $N$, $Z$, $S$, $U$ в формальной арифметике. 508 | 509 | * **Выразимое отношение.** Отношение $R$ называется выразимым (в формальной арифметике), если существует такая формула $\alpha(x_1,...x_n)$ с $n$ свободными переменными, что для любых натуральных чисел $k_1,...,k_n$ 510 | 511 | 1. если $(k_1,...,k_n)\in R$, то доказуемо $\alpha(\overline{k_1},...,\overline{k_n})$ 512 | 2. если $(k_1,...,k_n)\notin R$, то доказуемо $\neg\alpha(\overline{k_1},...,\overline{k_n})$ 513 | 514 | * **Представимость.** Функция $f$ от $n$ аргументов называется представимой в формальной арифметике, если существует такая формула $\alpha(x_1,...,x_{n+1})$ с $n+1$ свободной переменной, что для любых натуральных $k_1,...,k_n$: 515 | 516 | 1. $f(k_1,...,k_n) = k_{n+1}$ тогда и только тогда, когда доказуемо $\alpha(\overline{k_1},...,\overline{k_{n+1}})$ 517 | 2. Доказуемо $\exist!b.\alpha(\overline{k_1},...,\overline{k_n},\overline{b})$, 518 | 519 | где $\exist!y.\alpha(y)=(\exist y.\alpha(y))\&\forall a.\forall b.\alpha(a)\&\alpha(b)\rightarrow a=b$ 520 | 521 | * **Вспомогательные утверждения.** 522 |
Spoiler 523 | 524 | Для любого выводимого выражения мы можем составить этот же вывод с другими переменными, пусть $T\ :=\ 0=0\rightarrow 0=0\rightarrow 0=0$ (sch.ax.1) : \ 525 | $Lemma\ 1)\vdash P[x:=\Theta ]$\ 526 | $1.\ P \rightarrow T \rightarrow P$ (sch.ax.1)\ 527 | $1.5\ P$ (т.к. это выводимое утверждение) \ 528 | $2.\ T \rightarrow P$ (MP 1, 1.5) \ 529 | $3.\ T \rightarrow \forall{x}.(P)$ (по правилу вывода(2) можно ввести кванторы по переменным внутри P, если эти переменные не входят свободно в T, что верно по построению) \ 530 | $3.5\ T$ (sch.ax.1) \ 531 | $4.\ \forall{x}.(P)$ (MP 3.5, 3) \ 532 | $5.\ (\forall{x}.(P))\rightarrow (P[x:=\Theta ])$ (по sch.ax.11 можно заменить переменные по кванторам внутри P) \ 533 | $6. (P[x:=\Theta])$ (MP 4,5) 534 | 535 | $Lemma\ 2)\ a=b\vdash b=a\\$ 536 | $1.\ a=b\ (Hypothesis\ 1)\\$ 537 | $2.\ a=a\ (нетрудно\ показать\ по\ Лемме\ 1)\\$ 538 | $3.\ a=b\rightarrow a=a\rightarrow b=a\ (Ax.\ 2\ (FA))\\$ 539 | $4.\ b=a\ (2\ MP\ from\ 3)\\$ 540 |
541 | 542 | * **Представимость примитива $Z$ (Ноль).** Примитив $Z$ представим в ФА $\psi(x_1,x_2):=x_1=x_1\& x_2=0$ 543 | 544 | * **Представимость примитива $N$ (Инкремент).** Примитив $N$ представим в ФА. $\alpha(x_1,x_2):=x_2=x_1'$ 545 | 546 | * **Представимость примитива $U$ (Проекция).** Примитив $U$ представим в ФА 547 | $\beta(x_1,...,x_{n+1}):=(\&_{i\neq k}x_i=x_i)\&x_k=x_{n+1}$ 548 | 549 | * **Представимость примитива $S$ (Подстановка).** Пусть функции $f,g_1,..,g_k$ представимы в ФА. Тогда $S\langle f,g_1,..,g_k\rangle$ представим в ФА $\exist g_1...\exist g_k.\phi(g_1,...,g_k,x_{n+1})\&\gamma_1(x_1,...,x_n,g_1)\&...\&\gamma_k(x_1,...x_n,g_k)$ 550 | 551 | 552 | ## 13. Бета-функция Гёделя. Представимость примитивов $R$ и $M$ и рекурсивных функций в формальной арифметике. 553 | 554 | * **$\beta$-функция Гёделя.** $\beta(b,c,i):=b\%(1+(i+1)\ast c)$ 555 | 556 | Здесь $b,c$ параметры, а $i$ - какой-то элемент последовательности. Ака $b,c$ определяют что за массив, а $i$ говорит о каком-то индексе. 557 | 558 |
Представление бета-функции в ФА 559 | 560 | $\beta$-функция Гёделя представима в ФА формулой: 561 | $\beta(c,d,i,d):=\exist q.(b=q\ast(1+c\ast(i+1))+d)\&(d<1+c\ast(i+1))$\ 562 | Деление $b$ на $x$ с остатком: найдутся частное ($q$) и остаток ($d$), что $b=q\ast x+d$ и $0\leq d 566 | 567 | **Теорема.** Китайская теорема об остатках (вариант формулировки): 568 | 569 | если $u_0,...,u_n$ - попарно взаимно-просты, и $0\leq a_iНекоторые определения 625 | 626 | * **Проблема останова.** Не существует функции ```bool p (std::string source, std::string arg)```, возвращающей $true$ тогда и только тогда, когда функция с исходным кодом $source$ (имеющая аргумент типа ```std::string```) оканчивает работу, если ей передать на вход значение $arg$ 627 | 628 | Ее полный исходный код - в переменной $s\_source\\$ 629 | Что вернет ```p (s_source, s_source)```? Если возвращаемое $p$ истинно, то $s$ должна остановиться, но по ее исходному коду она зациклиться. Если возвращаемое $p$ ложна, то $s$ должна зациклиться, но по ее исходному коду она должна остановиться. Противоречие.\ 630 | Из этого получаем, что такой функции $p$ не существует. 631 | 632 | * **Самоприменимость.** $W_1:W_1(x,p)=1$, если $x=\ulcorner \xi\urcorner$, где $\xi$ - формула с единственной свободной переменной $x_1$, а $p$ - доказательство самоприменения $\xi$: 633 | 634 | $\vdash\xi(\overline{\ulcorner \xi\urcorner})\\$ 635 | $W_1(x,p)=0$, если это не так. 636 | 637 | **Теорема.** Существует формула $\omega_1$ со свободными переменными $x_1,x_2$, такая, что: 638 | 639 | 1. $\vdash\omega_1(\overline{\ulcorner\phi\urcorner}, \overline{p})$, если $p$ - гёделев номер доказательства самоприменения $\phi$; 640 | 2. $\vdash\neg\omega_1(\overline{\ulcorner\phi\urcorner}, \overline{p})$, иначе 641 | 642 | Док-во. $W_1$ рекурсивна, то есть представима в ФА формулой $o_1$. Функция такая же как и $proof$ (add ref to proof TODO()). 643 | 644 | Возьмем $\omega_1(x_1,x_2):=o_1(x_1,x_2,\overline{1})$. 645 |
646 | 647 | * **Непротиворечивость.** Формальная арифметика непротиворечива, если нет формулы $\alpha$, что $\vdash\alpha$ и $\vdash\neg\alpha$ 648 | 649 | * **$\omega$-непротиворечивость.** Формальная арифметика $\omega$-непротиворечива, если для любой формулы $\phi(x)$, что 650 | * $\vdash\phi(\overline{p})$ при всех $p\in\N_0$ выполнено $\nvdash\exist p.\neg\phi(p)$ 651 | * (менее формально) пусть $\vdash\phi(\overline{0}),\vdash\phi(\overline{1})$... Значит, нет $p$, что $\vdash\neg\phi(p)$ 652 | 653 | * **Теорема.** Если формальная арифметика $\omega$-непротиворечива, то она непротиворечива. 654 | 655 | 656 | 657 | * **Первая теорема Гёделя о неполноте арифметики.** 658 | 659 | **Def.** $\sigma(x):=\forall p.\neg\omega_1(x,p)$. Не существует доказательства $p$ для самоприменения $x$. 660 | 661 | **Теорема Гёделя** 662 | 663 | * Если формальная арифметика непротиворечива, то $\nvdash\sigma(\overline{\ulcorner\sigma\urcorner})$ 664 | * Если формальная арифметика $\omega$-непротиворечива, то $\nvdash\neg\sigma(\overline{\ulcorner\sigma\urcorner})$ 665 | 666 | 667 | $\sigma(x):=\forall p.\neg\omega_1(x,p)$: $\sigma(\overline{\ulcorner\sigma\urcorner})$ означает "я не доказуема". При этом мы показали, что она не доказуема, значит она истинна? Покажем это формально. 668 | 669 | **Теорема** $\models\sigma(\overline{\ulcorner\sigma\urcorner})$ В стандартной интерпретации формальной арифметики: $D=\N_0,a'=a+1$ и т.д. 670 | 671 | 672 | 673 | ## 16. Формулировка первой теоремы Гёделя о неполноте арифметики в форме Россера, её неформальный смысл. Формулировка второй теоремы Гёделя о неполноте арифметики, $Consis$. Неформальное пояснение метода доказательства. 674 | 675 | * **Первая теорема Гёделя в форме Россера.** 676 | 677 | * **Def.** $W_2(x,p)=1$, если p-доказательство отрицания самоприменения. 678 | * **Лемма.** Существует формула $\omega_2$, что $\vdash\omega_2(\overline{x},\overline{p})$, если $W_2(x,p)=1$, иначе $\vdash\neg\omega_2(\overline{x},\overline{p})$ 679 | * **Теорема**. Пусть $\rho(x):=\forall p.\omega_1(x,p)\rightarrow\exist q.q Суслина Ирина Александровна 4 | > 5 | > --- 6 | > 7 | > Литература: 8 | > 9 | > Боровков А.А. ТВ М 1986 10 | > 11 | > Прохоров Ю.В. ТВ М 1975 12 | 13 | Базовый объект ТВ ($\Omega, \ \Sigma, \ P$), где $\Omega$ - пространство элементарных исходов, $\Sigma$ - $\sigma$-алгебра множеств (событий), P : $\Sigma \rightarrow [0,\ 1], \forall A \in \Sigma: p = p(A)$ - вероятностная мера 14 | 15 | $\Omega = \{\omega\}$, $\omega$ - элементарный исход 16 | 17 | эксперимент => один и только один элементарный исход 18 | 19 | эксперимент можно повторить многократно в идентичных условиях 20 | 21 | **def** $(\Omega, \ \Sigma)$ - измеримое пространство, $(\Omega, \ \Sigma, \ P)$ - вероятностное пространство 22 | 23 | **def** измеримое пространство $(\Omega, \ \Sigma)$, где $\Omega$ - не более, чем счётно; здесь $\Sigma$ - множество всех подмножеств 24 | 25 | Если $\Omega$ более чем счётно 26 | 27 | $\sigma$-алгебра должна быть указана конкретная 28 | 29 | Любой элемент из $\Sigma$ определяется событием A, B, C 30 | 31 | ### Действия 32 | 33 | 1. $A + B = C \ (A \cup B)$ 34 | 2. $A \times B = C \ (A \cap B)$ 35 | 3. $A \setminus B = C$ 36 | 4. $\overline{A} = \Omega \setminus A$ 37 | 38 | ### Свойства 39 | 40 | 1. $A + B = B + A$ 41 | 42 | $(A + B) + C = A + (B + C) = A + B + C$ 43 | 44 | 2. $A \times B = B \times A$ 45 | 46 | $(A \times B) \times C = A \times (B \times C) = A \times B \times C$ 47 | 48 | 3. $A \times \Omega = A$ 49 | 50 | $A + \Omega = \Omega$ 51 | 52 | $A \times \empty = \empty$ 53 | 54 | $A + \empty = A$ 55 | 56 | 4. $A \times \overline{A} = \empty$ 57 | 5. $A + \overline{A} = \Omega$ 58 | 6. $A \times B \subset A \ (A \times B \subset B)$ 59 | 7. $\overline{\overline{A}} = A$ 60 | 8. $A \setminus B = A \times \overline{B}$ 61 | 9. $\overline{A + B} = \overline{A} \times \overline{B}$ 62 | 10. $\overline{A \times B} = \overline{A} + \overline{B}$ 63 | 11. $(A + B) \times C = A \times C + B \times C$ 64 | 12. $(A \setminus B) \times C = A \times C \setminus B \times C$ 65 | 66 | обощение свойств 9-11 на _счётное число_ множеств: 67 | 68 | 9. $(\overline{\sum_{i = 1}^{\infty} A_i}) = \prod_{i = 1}^{\infty} \overline{A_i}$ 69 | 10. $\overline{(\prod_{i = 1}^{\infty} A_i)} = \sum_{i = 1}^{\infty} A_i$ 70 | 11. $(\sum_{i = 1}^{\infty} A_i) \times B = \sum_{i = 1}^{\infty} A_i \times B$ 71 | 72 | **def** $\mathbb{A}$ называется алгеброй множеств, если: 73 | 74 | 1. $\Omega \in \mathbb{A}$ 75 | 2. $] A \in \mathbb{A} \Rightarrow \overline{A} \in \mathbb{A}$ 76 | 3. $] A \in \mathbb{A}, B \in \mathbb{A} \Rightarrow A \times B \in \mathbb{A}$ 77 | 78 | **stat** алгебра замкнута относительно действий в конечном числе 79 | 80 | **доказательство** $A \times B = \overline{A + B}$, свойство 10 81 | 82 | ​ $A \setminus B = A \times \overline{B}$, свойство 8 83 | 84 | **stat** $\Sigma$ - $\sigma$-алгебра множеств, если $\Sigma$ - алгебра и $\forall A_i \in \Sigma, i = 1, 2, ... \ \sum_{i = 1}^{\infty} A_i \in \Sigma$ 85 | 86 | #### дополнительные определения событий 87 | 88 | 1. $\forall A \in \Sigma$ определяется событием 89 | 2. $\Omega = D$ - достоверное событие 90 | 3. $A = \empty$ - невозможное событие 91 | 4. $\overline{A} = \Omega \setminus A$ - противоположное событие 92 | 5. A и B называются несовместимыми =, если $A \times B = \empty$ 93 | 94 | $] \ \Omega$ не более чем счётно 95 | 96 | 1. $p: \ \Omega \rightarrow [0, 1], \ p(\omega) \geqslant 0$ 97 | 2. $\sum_{\omega \in \Omega} p(\omega) = 1$ 98 | 99 | $\forall A \in \Sigma: p(A) = \sum_{\omega \in A} p(\omega)$ ($\Sigma$ - множество всех подмножеств) 100 | 101 | ### примеры основных дискретных схем 102 | 103 | 1. Классическая (+ обобщение: геометрическая поверхность) 104 | 2. Геометрическая 105 | 3. Пуассона 106 | 4. Бернулли 107 | 5. Полиномиальная 108 | 6. Гипергеометрическая 109 | 110 | ## I. Классическая схема 111 | 112 | $card(\Omega) = n$ 113 | 114 | $p(\omega ) \stackrel{\omega \in \Omega}{=} \frac{1}{n}$, p - вероятностная мера 115 | 116 | $p(A) = \frac{card(A)}{card(\Omega)}$ 117 | 118 | 1. $p(\omega) \geqslant 0$ 119 | 2. $\sum_{\omega \in \Omega} p(\omega) = \frac{1}{n} \sum_{\omega \in \Omega} 1_\omega$ 120 | 121 | $\Omega$ - измерима по Лебегу 122 | 123 | $\forall A \subset \Omega: \ p(A) = \frac{\mu(A)}{\mu(\Omega)}$ 124 | 125 | ## II. Геометрическая схема 126 | 127 | $\Omega = \{A, \overline{A} A, \overline{A} \overline{A} A, ... \}$ 128 | 129 | имеется эксперимет с двумя исходами 130 | 131 | $\forall p \in (0, 1) p(A) = p, p(\overline{A}) = 1 - p = q$ 132 | 133 | $p(\overline{A} ... \overline{A} A) = q^k p$ 134 | 135 | #### свойства вероятностной меры (дискр.) 136 | 137 | 1. $p(B) \stackrel{B \in \Sigma}{=} q^k p, k = 0, 1, 2, ...$ 138 | 139 | $p(B) > 0$ 140 | 141 | 2. $\sum_{B \in \Omega} p(B) = \sum_{k = 0}^{\infty} q^k p = p \frac{1}{1 - q} = 1$ 142 | 143 | --- 144 | 145 | ## III. Схема Бернулли 146 | 147 | Серия из "n" испытаний с двумя исходами "А" - успех, "$\overline{A}$" - неудача 148 | 149 | $p \in (0, 1), p(A) = p, p(\overline{A}) = 1 - p = q$ 150 | $$ 151 | ] C_i = 152 | \left \{ 153 | \begin{array}{ll} 154 | A, success \ in \ i-th \\ 155 | \overline{A}, fail -//- 156 | \end{array} 157 | \right. 158 | $$ 159 | 160 | $\omega$ - исход всей серии: $\Omega = \{\omega \}$ 161 | 162 | $\omega = C_1 C_2 C_3 ... C_n$ 163 | 164 | ] k($\omega$) - количество успехов в элементарных исходах $\omega$ 165 | 166 | $p(\omega) = (def) \ p^{k(\omega)} q^{n - k}(\omega)$ 167 | 168 | $B_{n,m,p} = \{ \omega \in \Omega (result \ n -), k(\omega) = m \}$ 169 | 170 | $p(B_{n,m,p}) = \sum_{\omega \in B_{n,m,p}} p(\omega) = p^m q^{n - m} |B_{n,m,p}| = C^m_np^,q^{n-m}$ 171 | 172 | $\{ B_{n,m,p}, P(B_{n,m,p}) \}$ def схема Бернулли 173 | 174 | Проверка корректности определения 175 | 176 | 1. $p(\omega)=p^{k(\omega)}q^{n-k(\omega)} > 0$ 177 | 2. $\sum_{\omega \in \Omega} = \sum^n_{m = 0} \sum_{\omega \in B_{n,m,p}} p(\omega) = \sum_{m = 0}^n C^m_n p^mq^{n-m}=(p+q)^n =1$ 178 | 179 | ## IV. Схема Пуассона 180 | 181 | $\Omega = \{\omega_0 = 0, \omega_1 = 1, ..., \omega_n = n, ... \}$, фикс $\lambda > 0$ 182 | 183 | $p(\omega_n) = ^{def} \frac{\lambda^n}{n!}e^{-\lambda}$ 184 | 185 | Проверка корректности определения 186 | 187 | 1. $p(\omega_n) = \frac{\lambda^n}{n!} e^{-\lambda} > 0$ 188 | 2. $\sum^{\infty}_{n = 0} p(\omega_n) =e^(-\lambda) \sum^\infty_{n = 0} \frac{\lambda^n}{n!} = e^\lambda e^{-\lambda} = 1$ 189 | 190 | ## V. Полиномиальная схема 191 | 192 | Пусть имеется последовательность независимых однотипных опытов в результате любого опыта может произойти одно из событий $A_1 .. A_k$ 193 | 194 | с вероятностями $p_i \geqslant 0, i = 1..k$ 195 | 196 | $\sum_{i = 1}^m p_i = 1$ 197 | 198 | Общее число объектов "n" и рассматриваем событие 199 | 200 | $B_{n,m_1,...,m_k,p_1,...,p_k}$ 201 | 202 | $m_i \geqslant 0 \sum^k_{i = 1} m_i = n$ 203 | 204 | $p(B_{n,m,...,m_k}) =p_1^{m_1}p_2^{m_2}...p_k^{m_k} |B_{n,m,...,m_k}| = p^{m_1}_1 p_2^{m_2}...p_k^{m_k} \frac{n!}{m!...m_k!}$ 205 | 206 | ## VI. Гипергеометрическая схема 207 | 208 | Пусть в урне имеется n однотипных предметов, при чём 209 | 210 | $n_1 \geqslant 0, n_1$ - с признаком 1, $n_2 \geqslant 0, n_2$ - с признаком 2, $n_1 + n_2 = n$ $\Rightarrow$ случайных известных "k" предметов 211 | 212 | ] $B_{n,n_1,k,k_1} = B_{n,n_1}(k,k_1)$ 213 | $k_1$ - 1-ого типа 214 | $k_2 = k - k_1$ - 2-ого типа 215 | ] $\omega - \forall$ извлечь $\Omega = \{\omega \}$ 216 | $\Rightarrow |\Omega| = C^k_n$ 217 | $P(B_{n,n_1} (k, k_1)) = \frac{|B_{n,n_1} (k, k_1)|}{C^k_n} = \frac{C^{k_1}_{n_1} C^{k_2}_{n_2}}{C^k_n}$ 218 | $\{B_{n,n_1} (k, k_1), P(B_{n,n_1} (k, k_1)) \}$ 219 | 1. $p(B_{n,n_1} (k, k_1)) \geqslant 0$ 220 | 2. $\sum_{\omega \in \Omega} p(\omega) = \sum^k_{k_1 = 0} \frac{C^{k_1}_{n_1} C^{k_2}_{n_2}}{C^k_n}$ 221 | 222 | ## Общая вероятностная схема 223 | ] $(\Omega, \Sigma)$ - измеримое пространство 224 | $\Sigma$ - выделенная $\sigma$-алгебра 225 | **def** $p = p(A): \Sigma \rightarrow ^p [0,1]$ называется *вероятностной мерой, если для неё выполнено три аксиомы Колмагорова 226 | 227 | ### Аксиомы Колмогорова 228 | 229 | 1. $P(\Omega) = 1$ 230 | 2. $P(A) \geqslant 0, \forall A \in \Sigma$ 231 | 3. $P(\sum^\infty_{i = 1} A_i) = \sum^\infty_{i = 1} (A_i)$, если $A_i \in \Sigma, i = 1,2,..., A_i, A_j \stackrel{i \ne j}{=} \empty$ 232 | 233 | **stat** дискретная схема есть частный случай общей схемы $(\Omega, \Sigma, p)$ 234 | 235 | > Доказательство: 236 | > 237 | > 1. $p(\Omega) = \sum_{\omega \in \Omega} p(\omega) = 1$ 238 | > 239 | > 2. $p(A) = \sum_{\omega \in A} p(\omega) \geqslant 0$ 240 | > 241 | > 3. ] $\{A_i \}^\infty_{i = 1}, A_i \in \Sigma$ 242 | > 243 | > $A_i A_j = \empty$ 244 | > 245 | > $\sum^\infty_{i = 1} A_i \subseteq \Omega$ 246 | > 247 | > $ 1 \geqslant p(\sum^\infty_{i = 1} A_i) = \sum_{\omega \in \sum^\infty_{i = 1} A_i \subseteq \Omega}\ p(\omega) = \sum_i \sum_{\omega \in A_i p(\omega)}$ 248 | > $\square$ 249 | 250 | ### Аксиомы непрерывности и счётной аддитивности 251 | 252 | #### две аксиомы непрерывноси 253 | 254 | 1. **аксиома** / *аксиома непрерывности* / 255 | 256 | ] $(\Omega, \Sigma, P)$ - вероятностное пространство 257 | 258 | и $B_1 \supseteq B_2 \supseteq B_3 \supseteq ...$ 259 | 260 | $B_n, n = 1,2,3, ...; B_n \in \Sigma$ 261 | 262 | $B = \cap^\infty_{n = 1} B_n \stackrel{def}{=} \lim_{n \to \infty} B_n, B \in \sum$ 263 | 264 | $P(B) = p(\lim_{n \to \infty} B_n) = \lim_{n \to \infty} p(B_n)$ 265 | 266 | 2. **аксиома** / *аксиома непрерывности* / 267 | 268 | ] $\{A_i \}^\infty_{i = 1} A_i \in \Sigma$ 269 | $A_1 \subseteq A_2 \subseteq A_3 \subseteq ...$ 270 | 271 | $A = \cup^\infty_{i = 1} A_i = ^{def} \lim_{i \to \infty} A_i, A \in \Sigma$ 272 | 273 | $p(A) = p(\lim_{i \to \infty} A_i) = \lim_{i \to \infty} P(A_i)$ 274 | 275 | **stat** аксиома непрерывности *эквивалентны* 276 | 277 | > Доказательство: 278 | > 279 | > ] $B_1 \supseteq B_2 \supseteq B_3 \supseteq ...$ - убывающая последовательность множеств 280 | > 281 | > тогда $\{A_i \}^\infty_{i = 1} = \{A_i: A_i = \Omega - B_i \}_i$ 282 | > 283 | > и ] справедлива 1 аксиома непрерывности 284 | > 285 | > $B = \cap^\infty_{n = 1} B_n = \cap^\infty_{n = 1} (\Omega \setminus A_n) = \Omega - \cup^\infty_{n - 1} A_n = \Omega \setminus A$ 286 | > 287 | > $p(B) = p(\cap^\infty_{n = 1} B_n) \stackrel{ 1 \ ax}{=} \lim_{i \to \infty} p(B_n) = lim_{n \to \infty} p(\Omega \setminus A_n) = p(\Omega \setminus A) = 1 - P(A) = p(\cup_n A-n)$ 288 | > 289 | > т.е. $p(\lim_{n \to \infty} A_n) = p(A)$ 290 | > 291 | > $\square$ 292 | 293 | --- 294 | 295 | ### Свойства действий под событиями в общем случае 296 | 297 | 1. $p(\empty) = 0$ 298 | $A_1 = \Omega, A_1 = A_2 =A_3 = ... = \empty$ 299 | 300 | $\sum_{i = 1} ^\infty A_1 = \Omega,\ A_i A_j \stackrel{i \ne 1}{=} \empty \Rightarrow$ по аксиоме о счётной аддитивности и аксиоме нормирования 301 | $1 = P(\Omega) = P(\sum_{i = 1} ^\infty A_i) = P(A_1) + \sum_{i = 1}^\infty P(A_i) = P(\Omega) + P(\sum_{i = 2}^\infty \empty_i) = 1 + P(\empty) => P(\empty) = 0 $ 302 | 303 | 2. Конечная аддитивность 304 | ] $A_i \in \Sigma, \{A_i\}^n_{i = 1},\ A_i A_j \stackrel{i \ne j}{=} \empty$ 305 | $A_{n + 1} = A_{ n + 1} = ... = \empty$ 306 | 307 | Из счетной аддитивности получаем и первого св-ва получаем конечный ответ 308 | 309 | 3. $A \in \Sigma, \overline{A} = \Omega \setminus A$ 310 | $p(\overline{A}) = 1- p(A)$ 311 | 312 | > Доказательство: 313 | > 314 | > $A + \overline{A} = \Omega, A \times \overline{A} = \empty \Rightarrow 1 = p(\Omega) = p(A) + p(\overline{A})$ 315 | 316 | 4. $A, B \sub \Sigma $ 317 | $A \subseteq B$ тогда $P(A) \ P(B)$ 318 | 319 | >Доказательство: 320 | > 321 | >$B = A = A(A \setminus B)$ 322 | 323 | 5. $ 0 \leqslant P(A) \leqslant 1, \ A \sub \Sigma \Rightarrow$ св-ва 4, св-ва 1, 1 аксиомы к-ва 324 | $\empty \subseteq A \subseteq \Omega$ 325 | 326 | 6. $P(A + B) = P(A) + P(B) - P(A \times B)$ 327 | > Доказательство: 328 | > $A +B = A +B \setminus A = A + B \overline{A}, B \overline{A} \times A = \empty$ 329 | > $\Rightarrow P(A + B) = P(A) + P(B \setminus A) = P(A) + p(B \setminus A \times B) \stackrel{AB \subseteq B}{=} P(A) + P(B) - P(AB)$ 330 | 331 | 7. $P (\sum^n_{i = 1} A_i) \stackrel{свойство\ +\ индукция}{=} \\ = \sum^n_{i = 1} P(A_i) - \sum_{i > j} P(A+i A_j) + \sum_{i > j >k} P(A_i A_j A_k) + (-1)^{n - 1} P(\prod^n_{i = 1} A_i)$ 332 | 333 | Следствие: $\sum^\infty_{i = 1} P(A_i) \geqslant P(\sum^\infty_{i = 1} A_i)$ 334 | 335 | **stat 2** Аксиома счётной аддитивности $\Leftrightarrow$ первой аксиоме непрерывноси + конечная аддитивность 336 | 337 | > Доказательство: 338 | > 339 | > 1. ] выполнена аксиома счётной аддитивности $\Rightarrow$ конечная аддитивность - свойство общей вероятностной схемы 340 | > 341 | > Невозрастающая последвательность множеств 342 | > 343 | > $B_1 \supseteq B_2 \supseteq ... \supseteq B_n \supseteq ...$ 344 | > 345 | > $\{B_n\}^\infty_{n = 1}$ рассмотрим последовательность множеств 346 | > 347 | > $A_1 = B_1 \overline{B_2}, A_2 = B_2\overline{B_3}, ..., A_n = B_n\overline{B_{n+1}}$ 348 | > 349 | > $B_1 = B + \sum^\infty_{i = 1}, A_i A_j \stackrel{i \ne j}{=} \empty, A_i B \stackrel{i \ne j}{=} \empty$ 350 | > 351 | > $\Rightarrow P(B_i) = P(B) + \sum^\infty_{i = 1} P(A_i) (сх-ся) \Rightarrow S_N = \sum^\infty_{i = N + 1} P(A_i) \to_{n \to \infty} 0$ 352 | > 353 | > $B_n = B + \sum^\infty_{i = n} A_i$ 354 | > 355 | > $\Rightarrow \lim_{n \to \infty} P(B_n) \stackrel{аксиома\ счётной\ аддитивности}{=} \lim_{n \to \infty} (P(B) + P(S_{n - 1})) = P(B)$ 356 | 357 | 2. ] верны конечная аддитивность и первая аксиома непрерывности 358 | 359 | Рассмотрим $A_1, A_2, ..., A_i \in \Sigma, i = 1,2,..., A_i A_j \stackrel{i \ne j}{=} \empty$ 360 | 361 | Тогда $P(\sum^\infty_{i = 1 A_i}) = P(\sum^n_{i = 1} A_i + \sum^\infty_{i = n + 1} A_i) \stackrel{B \times C = \empty, \ конечная\ аддитивность \ (\times)}{=} \\ = P(\sum^n_{i = 1} A_i) + P(\sum^\infty_{i = n + 1} A_i)$ 362 | 363 | Найдём $\sum^\infty_{i = 1} P(A_i) = \lim_{n \to \infty} (\sum^n_{i = 1} P(A_i)) \stackrel{ конечная\ аддитивность}{=} \\ = \lim_{n \to \infty}(P(\sum^n_{i = 1} A_i)) \stackrel{(\times)}{=} \lim_{n \to \infty}\\ = (P(\sum^n_{i = 1} A_i) - P(\sum^\infty_{i = n + 1} A_i)) = P(\sum^\infty_{i = 1} A_i) - \lim_{n \to \infty} P(C_n)$ 364 | 365 | $B_n = \sum^\infty_{i = n + 1} A_i$ 366 | 367 | $B_0 = \sum^\infty_{i = 1} A_i$ 368 | 369 | $B_0 \supseteq B_1 \supseteq B_2 \supseteq ... $ 370 | 371 | ] $B = \lim_{n \to \infty} B_n = \cap^\infty_{n = 0} B_n$ 372 | 373 | $\forall x \in B_o \exists ! A_x: x \in A_x, x \overline{\in} A_i, i \ne i_x$ 374 | 375 | $\stackrel{**}{=} P(\sum^\infty_{i = 1} A_i) - P(\lim_{n \to \infty} B_n) = P(\sum^\infty_{i = 1} - P(\empty)) \Rightarrow $ счётная аддитивность доказана $\square$ 376 | 377 | 378 | 379 | ## Независимость, условная вероятность, формула полной вероятности, формула Байеса 380 | 381 | 382 | 383 | ] $(\Omega, \Sigma, P) $ - вероятностное пространство 384 | 385 | $B \in \Sigma\ and\ P(B) > 0$ 386 | 387 | Пусть известно, что в результате опыта произошло событие b. В таком случае возникает новое вероятностное пространство 388 | 389 | $B = \Omega_B, \Sigma_b = \{A_B, A \in \Sigma, A_B = A \times B\}$ 390 | 391 | и $(B, \Sigma_B)$ - новое измеримое пространство 392 | 393 | $P_B(A_B) = \frac{P(A \times B)}{P(B)}$ 394 | 395 | **stat** $\{B, \Sigma_B, P_B\}$ - вероятностное пространство 396 | 397 | > проверить аксиомы Колмогорова: 398 | > 399 | > 1. $P_B(B)=\frac{P(B \times B)}{P(B)} = 1$ 400 | > 2. $P_B(A_B)=\frac{P(AB)}{P(B)} \geqslant 0$ 401 | > 3. Счётная аддитивность, $\{A_i\}$ - дизъюнктны 402 | > 403 | > $P_B(\Sigma_i A_i) = \frac{P(\sum_i A_i B)}{P(B)} = \frac{\sum_i P(A_i B)}{P(B)} = \sum_i P_B(A)$ 404 | 405 | таким образом, $P_B$ - вероятностная мера 406 | 407 | **def** *условной вероятностью* события A при условии, что B, $P(B) > 0$ 408 | 409 | ​ $P(A|B) = P_B(A) = \frac{P(AB)}{P(B)}$ 410 | 411 | **def** $(\Omega, \Sigma, P)$ - вероятностное пространство, $A, B \in \Sigma$, события A и B называются *независимыми событиями*, если $P(A \times B) = P(A) \times P(B)$ 412 | 413 | **stat** Пусть $P(B) > 0$ тогда независимость A и B эквивалентна $P(A) = P(A|B)$ 414 | 415 | 416 | 417 | ### Свойства независимых событий 418 | 419 | 1. ] A и B независимы, тогда $A \times \overline{B}$ - независимы 420 | 421 | > Доказательство: 422 | > 423 | > $P(A \times \overline{B}) = P(A(\Omega \setminus B)) = P(A - AB) = \\\stackrel{AB \subseteq A}{=} P(A) - P(AB) \stackrel{незав}{=} P(A) - P(A)P(B) = P(A)P(\overline{B})$ 424 | 425 | 2. ] A и B~1~ независимы, A и B~2~ независимы, $B_1 B_2 = \empty \Rightarrow A$ и B~1~ + B~2~ - независимы 426 | 427 | > Доказательство: 428 | > 429 | > $P(A(B_1 + B_2)) = P(AB_1 + AB_2) \stackrel{AB_1 AB_2 = \empty}{=} \\ \stackrel{конечная\ аддитивность}{=} P(AB_1) + P(AB_2) \stackrel{независимы}{=} P(A)(P(B_1)+P(B_2)) \stackrel{кон\ адд}{=} \\ = P(A) \times P(B_1 + B_2)$ 430 | 431 | 3. Для нетривиальных событий независимость и несовместность взааимно исключимы 432 | 433 | > Доказательство: 434 | > 435 | > $P(AB) = P(A)P(B) > 0$ 436 | > 437 | > Т.е. из предположения A и B несовместимы ($AB = \empty$) => противоречие 438 | > 439 | > ] A и B несов 440 | > 441 | > $AB = \empty$ 442 | > 443 | > $P(AB) = 0 \ne P(A)P(B)$ 444 | 445 | **def** $\{A_i\}^n_{i = 1}$ называется *независимой по совокупности* $A_{i_1}, ..., A_{i_k} \\ P(\prod^k_{j = 1} A_{i_j}) = \prod_{j = 1}^k P(A_{i_j})$ 446 | 447 | Последовательность *независима по совокупности*, если любая подпоследовательность независима по совокупности 448 | 449 | ​ $\{A_i\}^\infty_{i = 1}$ 450 | 451 | ​ $\{A_i\}^n_{i = 1} \Rightarrow A_i, A_j, i \ne j, i, j\in (1, ..., n)$ независимы -------------------------------------------------------------------------------- /src/translation-methods.md: -------------------------------------------------------------------------------- 1 | # Translation Methods 2 | 3 | > Лабораторные: 4 | > 5 | > 1. Perl 6 | > 2. Ручное построение трансляторов 7 | > 3. Использование автоматических генераторов трансляторов 8 | > **e.g.** ANTLR (java), Bison + Yacc (c++), Happy (haskell) 9 | > 4. Написание автоматического генератора транслятора 10 | 11 | $\Sigma, \Sigma^*, L \subset \Sigma^*$ - формальный язык 12 | 13 | Базовый класс формальных языков - регулярные (= автоматные). Для порождения - регулярные выражeния, для распознавания - конечные автоматы 14 | 15 | Контекстно-свободные языки: КС-грамматики / МП-автоматы (магазинная память) 16 | 17 | **Токены (лексемы)** - единые неделимые элементы языка ($\in \Sigma$) 18 | 19 | ## Лексический анализ 20 | 21 | Первый этап любого разбора - *лексический анализ* 22 | 23 | Последовательность символов -> последовательность токенов ($\in \Sigma^*$) 24 | 25 | > **e.g.** арифмитические выражения 26 | > 27 | > $\Sigma = \{n,+,\times,\ (,\ ) \}$ 28 | > 29 | > $(2 \ + \ 2) \times 2 \rightarrow (n + n) \times n$ 30 | > 31 | > $n : (0|1|...|9)(0|1|...|9)^*$ 32 | 33 | *жадный лексический анализ на базе регулярных выражений*: пропускаем пробельные символы, смотрим первый непробельный, находим максимальный префикс какого-то возможного токена 34 | 35 | --- 36 | 37 | 1. Проверить, что строка выводится в грамматике $\Gamma$ // алгоритм КЯК(???) $\Omicron(n^3)$ 38 | 39 | 2. Построить дерево разбора 40 | 41 | 3. Синтаксически управляемая трансляция 42 | 43 | > $E \rightarrow T \\ E \rightarrow E \ + \ T \\ T \rightarrow F \\ T \rightarrow T \ \times \ F \\ F \rightarrow n \\ F \rightarrow (E)$ 44 | 45 | **Аттрибутно-транслирующие грамматики** - контекстно-свободные языки с добавлением двух элементов: аттрибуты и транслирующие символы 46 | 47 | **Транслирующие символы** - фрагменты кода, которые вставляем в грамматику, которые могут взаимодействовать с аттрибутами 48 | 49 | >$E \rightarrow E \ + \ T \ \{E_{0}.v = E_{1}.v \ +\ T.v \}$ 50 | > 51 | >$T \rightarrow T \ \times \ F \ \{T_{0}.v = T_{1}.v \ +\ F.v \}$ 52 | > 53 | 54 | Нужно быстрее, чем за куб $ \Rightarrow $ накладываем ограничения на грамматики 55 | 56 | --- 57 | 58 | **Однозначность** - если у любого слова не более одного дерева разбора в этой грамматике // Модификация алгоритма Эрли - $\Omicron(n^2)$ 59 | 60 | **LL, LR** - грамматики, на которые наложены дополнительные ограничения, чтобы разбор работал за линейное время. **LL(R)** - **L**: left to right parse - обходим слово слева направо; **L(R)**: leftmost derivation (right most derivation) - левосторонний (правосторонний) вывод. 61 | 62 | $\Gamma, \ w$ на вход 63 | 64 | Можем строить дерево разбора сверзу вниз - **нисходящая трансляция**(used **LL**). Шаг называется *раскрытие нетерминала*. Нисходящий парсер : 65 | 66 | > 1. Находим нетерминал,у которого неизвестно поддерево 67 | > 2. Раскрываем его 68 | > В основном это самый левый нетерминал 69 | 70 | Снизу вверх - **восходящий разбор** (used **LR**). Шаг - *свёртка* 71 | 72 | > 1. Находим правую часть какого-то терминала 73 | > 2. Сворачиваем ее 74 | > Получается правосторонний вывод слова (поэтому R) 75 | 76 | ## Метод нисходящих трансляций для LL грамматик 77 | 78 | ### LL(k) - грамматика 79 | 80 | **Def:** Грамматика $\Gamma = \big \langle \Sigma, N, S, P \big \rangle$, где $\Sigma$ - множество терминалов (terms), $N$ - множество нетерминалов (nonterms), $S $ - стартовый символ ($S \in N$), $P$ - множество правил вывода (productions) $\alpha \rightarrow \beta$. Пусть $\Gamma$ - контекстно-свободная (в левой части только одиночные нетерминалы) 81 | 82 | **Def: LL(k)-грамматика** - если достаточно посмотреть на первые k символов $\gamma$, чтобы понять, какое правило применить для нетерминала A: 83 | 84 | **S** - стартовый нетерминал, **w** - слово, префикс которого разобран. Рассмотрим два произвольных левосторонних вывода слова **w** . 85 | 86 | $s \Rightarrow^* xA\alpha \Rightarrow x\gamma\alpha \Rightarrow^* xy\zeta \\ s \Rightarrow^* xA\beta \Rightarrow x\xi\beta \Rightarrow^*xy\mu \\$ 87 | где $x$ и $\gamma$ - цепочки из терминалов - разобранная часть слова **w**, $A$ - нетерминал грамматики, в которой есть правила $A\rightarrow\gamma, A\rightarrow\xi$, причем $\alpha,\beta,\xi,\gamma,\mu,\zeta$ - последовательности из терминалов и нетерминалов. Если из выполнения условий, что ($|y| = k$) или ($|y| < k, \mu = \zeta =\epsilon $) , следует равенство $\gamma = \xi$, то $\Gamma$ называется **LL(k)-грамматикой** 88 | 89 | Грамматика $\Gamma$ называется **LL(1) грамматикой** (посмотрев на первый символ можно понять какое следующее правило нужно применить), если $s \Rightarrow^* xA\alpha \Rightarrow x\gamma\alpha \Rightarrow^* xc\zeta \\ s \Rightarrow^* xA\beta \Rightarrow x\xi\beta \Rightarrow^*xc\mu \\$ 90 | Неформально это означает, что, посмотрев на очередной символ после уже выведенной части слова, можно однозначно определить, какое правило из грамматики выбрать. 91 | 92 | (Смотрим на символ $c$ в строке и сразу понимаем, что $\gamma = \xi$, что значит, что мы используем одно и то же правило для $A$) 93 | 94 | **LL(0) грамматика** - для каждого нетерминала есть только одно правило. По-другому называются "линейные программы". Такие грамматики лежат в основе теории архивации (если грамматика короче, то слово сжато, тк каждый нетерминал будет задавать только одно слово и вы можете его заменить на соответсвующий нетерминал) 95 | 96 | --- 97 | 98 | *Example 1:* Рассмотрим грамматику и покажем, что она **LL(1)**. 99 | 100 | $S\rightarrow aA|bB \\ A\rightarrow aB|cB\\ B\rightarrow bC|a\\C\rightarrow bD\\D\rightarrow d $ 101 | 102 | **w** = aaabd 103 | 104 | $S\Rightarrow aA\Rightarrow aaB\Rightarrow aaaC\Rightarrow aaabD\Rightarrow aaabd\\ S\Rightarrow^*aaabd$ 105 | 106 | Каждый раз когда мы смотрели на очередной символ мы сразу определяли правило для дальнейшего вывода. 107 | 108 | --- 109 | 110 | *Example 2:* Рассмотрим грамматику, которая по первому символу не позволяет определить правило для дальнейшего вывода. 111 | 112 | $S\rightarrow abB|aaA\\ B\rightarrow d\\A\rightarrow c|d$ 113 | 114 | **w** = abd 115 | 116 | Смотрим на первый символ **w**, он подходит под несколько правил стартового нетерминала, только со второго символа понятно какое правило выбирать $\Rightarrow$ не **LL(1)-грамматика**. 117 | 118 | --- 119 | 120 | *Example 3:* 121 | 122 | $E \rightarrow T \\ E \rightarrow E \ + \ T \\ T \rightarrow F \\ T \rightarrow T \ \times \ F \\ F \rightarrow n \\ F \rightarrow (E)$ 123 | 124 | Данная грамматика не является **LL(k)**. Контр-пример: 125 | > $2*2*2*2*....+2$, где k символов до $+$ 126 | 127 | Мы не можем понять по первым k символам понять по какому нетерминалу нам применять правило. 128 | 129 | ### $FIRST$ и $FOLLOW$ 130 | 131 | --- 132 | 133 | **def** *FIRST*: $(N \cup \Sigma)^* \rightarrow 2^{\Sigma \cup \{\epsilon\}}$. По строчке из терминалов и нетерминалов возвращается множество, которое состоит из символов и $\epsilon$ 134 | $c \in FIRST(\alpha) \Leftrightarrow \alpha \Rightarrow^* cx$. Множество символов, с которых может начинаться $\alpha$ 135 | $e \in FIRST(\alpha) \Leftrightarrow \alpha\Rightarrow^* \epsilon $ 136 | 137 | > *Example* $S \rightarrow SS \\ S \rightarrow (S) \\ S \rightarrow \epsilon$ 138 | > 139 | > $FIRST(S) = \{c, \epsilon\}$ 140 | > 141 | > $FIRST('S)') = \{(,)\}$ 142 | > 143 | > $FIRST(\epsilon) = \{\epsilon\}$ 144 | > 145 | > $FIRST('))((') = \{')'\}$ 146 | > 147 | 148 | **def** *FOLLOW*: $N \rightarrow 2^{\Sigma \cup \{\$\}}$ 149 | $c \in FOLLOW(A) \Leftrightarrow S \Rightarrow^* \alpha A c \beta \\ 150 | \$ \in FOLLOW(A) \Leftrightarrow S \Rightarrow^* \alpha A$. Множество символов, которые могут быть после нетерминала 151 | 152 | > *Example* $E \rightarrow T \\ E \rightarrow E \ + \ T \\ T \rightarrow F \\ T \rightarrow T \ \times \ F \\ F \rightarrow n \\ F \rightarrow (E)$ 153 | > 154 | > $FOLLOW(F) = \{),\$,+,\times\}$ 155 | > 156 | > $FOLLOW(E) = \{),\$,+\}$ 157 | > 158 | 159 | #### Лемма о рекурсивном вычислении $FIRST$ 160 | 161 | $\alpha = c\beta$ 162 | $FIRST(\alpha) = \{c\}$ 163 | 164 | $\alpha = A\beta$ 165 | $FIRST(\alpha) = (FIRST(A)) \setminus \epsilon) \cup (FIRST(\beta)\ if\ \epsilon \in FIRST(A))$ 166 | 167 | $FIRST(\epsilon) = \{\epsilon\}$ 168 | 169 | #### Алгоритм построения $FIRST$ 170 | 171 | $\forall A\ FIRST[A]=\empty$ 172 | $while\ (FIRST\ changes) \{$ 173 | $for\ $$A\rightarrow\alpha:$ 174 | $FIRST[A]\cup=FIRST[\alpha]$ 175 | $\}$ 176 | 177 | #### Алгоритм построения $FOLLOW$ 178 | 179 | $FOLLOW: map>$ 180 | $FOLLOW(S) = {\$}$ 181 | $do \{$ 182 | $for\ A $$\rightarrow \alpha$ 183 | $for\ B\ in\ $$\alpha$ 184 | $let$ $\alpha = \xi B \eta$ 185 | $FOLLOW(B) = FIRST$($\eta) \setminus \epsilon$ 186 | $if$ $\epsilon \in FIRST(\eta)$ 187 | $FOLLOW(B) $$\cup =$$ FOLLOW(A)$ // почему FOLLOW(A) 188 | $\}\ while\ FOLLOW\ changes$ 189 | 190 | ##### Алгоритм TODO() 191 | 192 | 1. Удалить непорождающие символы 193 | 194 | 2. Удалить недостижимые 195 | 196 | Менять шаги алгоритма нельзя 197 | 198 | **ex**: Grammar: 199 | 200 | ##### Удаление непорождающих символов TODO() 201 | 202 | 1. Множество непорождающих символов $Gen = \empty$ 203 | 204 | do { 205 | ​ for A $\rightarrow \alpha$ 206 | ​ if $\alpha \in (\Sigma \cup Gen)^*$: 207 | ​ Gen $\cup=$ A 208 | } while Gen change 209 | 210 | NonGen = N $\setminus$ Gen 211 | 212 | A - порождающий, но Алгоритм 1 выбрал как порождающий 213 | 214 | $A \Rightarrow \alpha \Rightarrow^{k - 1} x$ 215 | 216 | ##### Алгоритм TODO() 217 | 218 | FIRST: map> 219 | 220 | function getFIRST($\alpha$) 221 | 222 | ​ if $\alpha = \epsilon$ return $\{\epsilon\}$ 223 | 224 | ​ if $\alpha[i] \in \Sigma$ return $\{\alpha[i]\}$ 225 | 226 | ​ // $\alpha[0] \in N$ 227 | 228 | ​ return $(FIRST[ \alpha[0]] \setminus \epsilon) \cup (getFIRST(\alpha[1:]), if \ \epsilon \in FIRST[\alpha[0]])$ 229 | 230 | #### Теорема 1 231 | 232 | $\Gamma\in$ **LL(1)** $\Leftrightarrow$ $\forall A \rightarrow \alpha, A \rightarrow \beta$: 233 | 234 | 1. $FIRST(\alpha) \cap FIRST(\beta) = \empty$ 235 | 2. $\epsilon \in FIRST(\alpha) \Rightarrow FIRST(\beta) \cap FOLLOW(A) = \empty$ 236 | 237 | > Доказательство: 238 | > Определение **LL(1)**. 239 | > 1. $S\Rightarrow^*xA\xi\Rightarrow^*x\gamma\xi\Rightarrow^*xc\tau$ 240 | > 2. $S\Rightarrow^*xA\eta\Rightarrow^*x\delta\eta\Rightarrow^*xc\sigma$ 241 | > Тогда $\gamma=\delta$ 242 | > 243 | > $\Rightarrow)$ (Необходимость). Пусть $\Gamma\in$ **LL(1)** 244 | > 245 | > 1. $\exists A \rightarrow \alpha, A \rightarrow \beta, c \in FIRST(\alpha) \cap FIRST(\beta)$ 246 | > $S \Rightarrow^* xA\sigma \Rightarrow x \alpha \sigma \Rightarrow^* xc\xi\sigma$ 247 | > $S \Rightarrow^* xA\sigma \Rightarrow x \beta \sigma \Rightarrow^* xc\eta\sigma$. По символу $c$ мы не можем понять какое из правил выбирать следующим $\Rightarrow\Gamma\notin$ **LL(1)** 248 | > 2. $\epsilon \in FIRST(\alpha) \cap FIRST(\beta)$ 249 | > $S \Rightarrow^* xA\sigma \Rightarrow x \alpha \sigma \Rightarrow^* x\sigma \Rightarrow xc\tau$ 250 | > $S \Rightarrow^* xA\sigma \Rightarrow x \beta \sigma \Rightarrow^* x\sigma \Rightarrow xc\tau$. По символу $c$ мы не можем понять какое из правил выбирать следующим $\Rightarrow\Gamma\notin$ **LL(1)** 251 | > 3. $\epsilon\in FIRST(\alpha)$ и $c\in FIRST(\beta)\cap FOLLOW(A)$ 252 | > $S\Rightarrow^*xA\xi\Rightarrow^*x\alpha\xi\Rightarrow^*x\xi\Rightarrow xc\eta$ 253 | > $S\Rightarrow^*xA\xi\Rightarrow^*x\beta\xi\Rightarrow^*xc\beta'\xi$. Аналогино первым двум пунктам 254 | > 255 | > $\Leftarrow)$ (Достаточность). Пусть $\gamma\neq\delta$. При этом выполнены условия 1 и 2: 256 | > 257 | > 1. Если из $\gamma$ выводится $c$ и из $\delta$ выводится $c$, то $c\in FIRST(\gamma)$ и $c\in FIRST(\delta)$, что противоречит условию 1 теоремы. 258 | > 2. Если из $\gamma$ выводится $c$ и из $\delta$ выводится $\epsilon$, при этом $c$ лежит в $\eta$, тогда $c\in FIRST(\gamma)$, $c\in FOLLOW(A)$ и $\epsilon\in FIRST(\delta)$, что противоречит условию 2 теоремы. (аналогично для $\gamma\Rightarrow^*\epsilon\zeta$ и $\delta\Rightarrow^*c\sigma$ ). 259 | > 3. Если из $\gamma$ выводится $\epsilon$ и из $\delta$ выводится $\epsilon$, тогда, соответственно, $\epsilon\in FIRST(\gamma)$ и $\epsilon\in FIRST(\delta)$, что противоречит 1 пункту теоремы. 260 | 261 | ## Рекурсивный спуск 262 | 263 | 264 | #### Алгоритм 265 | 266 | $A \rightarrow \alpha_1 | \alpha_2 | ... | \alpha_k$ 267 | 268 | 1. Построить множества $FIRST$ и $FOLLOW$ 269 | 2. Определим структуру $Node$ 270 | 271 | $Node:$ 272 | $s:$ $N \cup \Sigma$ 273 | $ch:$ array(Node) 274 | 275 | $token:$ $\Sigma \cup \{\$\}$ // текущий терминал 276 | $next()$ // функция взятия следующего токена 277 | 278 | 3. Определим мета-фукцию $FIRST'$ (которая, на самом деле, является множеством) 279 | 280 | $FIRST'(A \rightarrow \alpha) = (FIRST(\alpha) \setminus \epsilon) \cup (FOLLOW(A) \ if\ \epsilon \in FIRST(\alpha))$ 281 | 282 | 4. Для каждого нетерминала построим функции (строим дерево разбора). 283 | 284 | ```pseudocode 285 | Node A() { 286 | Node res = Node(A) 287 | switch (token) 288 | FIRST`(A -> a1): 289 | // a1 = X1X2...Xl 290 | // X1 in N 291 | Node x1 = X1() // вызывается рекурсивно X1 292 | res.addChild(x1) 293 | // X1 in N 294 | Node x2 = X2() 295 | res.addChild(x2) 296 | // X3 in Sigma 297 | assert x3 = token or Error() 298 | res.addChild(token) 299 | next() 300 | 301 | ... 302 | // Xl ... 303 | ... 304 | 305 | return res 306 | FIRST`(A -> a2) 307 | ... 308 | 309 | default: 310 | Error() 311 | } 312 | ``` 313 | 314 | 315 | 316 | ETF (expression, therm, factor) 317 | 318 | Grammar: 319 | $$ 320 | E \rightarrow E + T \\ 321 | E \rightarrow T \\ 322 | T \rightarrow T \times F \\ 323 | T \rightarrow F \\ 324 | F \rightarrow n \\ 325 | F \rightarrow (E) 326 | $$ 327 | 328 | 329 | | | FIRST | FOLLOW | 330 | | ---- | ------ | ------ | 331 | | E | `n, (` | `$, +, )` | 332 | | T | `n, (` | `$, +, *, )` | 333 | | F | `n, (` | `$, +, *, )` | 334 | 335 | $FIRST`(E + T) = {n, (}$ 336 | $FIRST`(T) = {n, (}$ замечаем, что наша грамматика не **LL(1)** (она леворекурсивная) 337 | 338 | ### Левая рекурсия и правое ветвление 339 | 340 | --- 341 | 342 | **Определение.** $\Gamma$ называется *леворекурсивной*, если в $\Gamma: A \Rightarrow^+ A \alpha$ 343 | **Определение.** Говорят, что в грамматике есть правое ветвление, если $A\rightarrow\alpha\beta$, $A\rightarrow\alpha\gamma$ и $\beta\neq\gamma$ 344 | 345 | #### Теорема 2. 346 | 347 | $\Gamma$ - леворекурсивная или в $\Gamma$ есть правое ветвление $\Rightarrow \ \Gamma \notin LL(1) $ 348 | 349 | **Доказательство** 350 | 351 | 1. Левая рекурсия 352 | $A\Rightarrow^*x,\ x\in\Sigma^*$ 353 | $A\Rightarrow^+A\alpha$ 354 | $A \Rightarrow^* B \xi \Rightarrow \gamma \xi \Rightarrow^* A \alpha\Rightarrow^*x\alpha=cy\alpha $ 355 | $A \Rightarrow^* B \xi \Rightarrow \delta \xi \Rightarrow^* x = cy$ 356 | $c \in (FIRST(\delta)) \setminus \epsilon \cup (FIRST(\xi) \ if \ \epsilon \in FIRST(\delta))$ 357 | $c \in FIRST(\gamma) \setminus \epsilon \cup (FIRST(\xi) \ if \ \epsilon \ in FIRST(\gamma))$ 358 | 359 | 2. Правое ветвление 360 | 361 | Очевидно из того, по $A\rightarrow\alpha\beta$, $A\rightarrow\alpha\gamma$ и $\beta\neq\gamma$ не выполняется пункт 1 теоремы 1 ($FIRST(\alpha\beta)\cap FIRST(\alpha\gamma)\neq\empty)$ 362 | 363 | Непосредственная левая рекурсия 364 | $A \rightarrow A \alpha$ 365 | $A \rightarrow \beta$ 366 | $\beta \alpha^*$ 367 | 368 | #### Устранение левой рекурсии и правого ветвления 369 | 370 | **Правое ветвление** 371 | Проблема: 372 | 373 | $A\rightarrow\alpha\beta$ 374 | $A\rightarrow\alpha\gamma$ 375 | 376 | Решение: 377 | 378 | $A\rightarrow\alpha A`$ 379 | $A`\rightarrow\beta$ 380 | $A`\rightarrow\gamma$ 381 | 382 | **Непосредственная левая рекурсия** 383 | Проблема: 384 | 385 | ```mermaid 386 | graph TD; 387 | A[A] --> B[A] 388 | A --> C[alpha] 389 | B --> D[A] 390 | B --> E[alpha] 391 | D --> F[A] 392 | D --> G[alpha] 393 | F --> H[beta] 394 | ``` 395 | 396 | $A\rightarrow A\alpha$ 397 | $A\rightarrow\beta$ 398 | 399 | Решение: 400 | 401 | $A \rightarrow \beta A`$ 402 | $A` \rightarrow \epsilon$ 403 | $A` \rightarrow \alpha A`$ 404 | 405 | **Косвенная левая рекурсия** (без $\epsilon$ правил) 406 | Добьемся такого: 407 | 408 | $A_1,...,A_n$ 409 | Если $A_i\Rightarrow^+A_j\alpha$, то $j>i$ 410 | 411 | $for\ i=1..n$ 412 | $removeDescentRecursion(A_i\rightarrow A_i\alpha)$ 413 | $for\ j=i+1..n$ 414 | $if(exist(A_j\rightarrow A_i\beta))\{$ 415 | $forall\ A_i\rightarrow\gamma$ 416 | $insert(A_j\rightarrow\gamma\beta)$ 417 | $remove(A_j\rightarrow A_i\beta)$ 418 | $\}$ 419 | Инвариант: 420 | Если $kk$ 421 | Если $k\geq i,A_k\rightarrow\beta, \beta[1]=A_l$, тогда $l\geq i$ 422 | 423 | 424 | #### Грамматика с устранённой непосредственной левой рекурсией 425 | 426 | $$ 427 | E \rightarrow TE` \\ 428 | E` \rightarrow \epsilon \\ 429 | E` \rightarrow +TE` \\ 430 | T \rightarrow FT` \\ 431 | T` \rightarrow \epsilon \\ 432 | T` \rightarrow \times FT` \\ 433 | F \rightarrow n \\ 434 | F \rightarrow (E) 435 | $$ 436 | 437 | | | FIRST | FOLLOW | 438 | | ---- | ----- | --------- | 439 | | E | `( n` | `$ )` | 440 | | E` | `+ e` | `$ )` | 441 | | T | `( n` | `+ $ )` | 442 | | T` | `* e` | `+ $ )` | 443 | | F | `( n` | `* + $ )` | 444 | 445 | ``` 446 | Node E() 447 | Node res = Node(E) 448 | switch (token) 449 | case n, (: 450 | // E -> TE' 451 | Node t = T() 452 | res.addChild(t) 453 | Node e' = E'() 454 | res.addChild(e') 455 | return res 456 | 457 | default: 458 | Error() 459 | 460 | Node E'() 461 | Node res = Node(E') 462 | switch (token) 463 | case $, ): 464 | // E' -> e 465 | return res 466 | case +, e: 467 | // E' -> +TE' 468 | assert token == + 469 | res.addChild(Node(t)) 470 | next() 471 | Node t = T() 472 | res.addChild(t) 473 | Node e' = E'() 474 | res.addChild(e') 475 | return res 476 | 477 | default: 478 | Error() 479 | 480 | // T and T' are similar with above 481 | 482 | Node F() 483 | Node res = Node(F) 484 | switch (token) 485 | case n: 486 | assert token == n 487 | res.addChild(n) 488 | next() 489 | return res 490 | case (: 491 | assert token == ( 492 | res.addChild(\() 493 | next() 494 | Node e = E() 495 | res.addChild(e) 496 | assert token == ) 497 | res.addChild(Node(\))) 498 | next() 499 | return res 500 | ``` 501 | 502 | #### Устранение левой рекурсии полный алгоритм (с удалением $\epsilon$ правил) 503 | 504 | $\beta \alpha^*$ 505 | $A()$ 506 | $switch$ 507 | $FIRST`$($A \rightarrow \beta_1$) 508 | $\beta_1$ 509 | $FIRST`$($A \rightarrow \beta_2$) 510 | $\beta_2$ 511 | ... 512 | while (token $\in$ FIRST'($A \rightarrow A \alpha $)) 513 | 514 | $A \Rightarrow^+ A\alpha$ 515 | $A \rightarrow X \alpha, \ X \in \Sigma$ или $\#X > \#A$ 516 | $A_1, A_2, ..., A_n, \ \#A_i = i$ 517 | 518 | $A_1 \rightarrow A_1 \alpha \\ A_1 \rightarrow \beta \\ A_1 \rightarrow \beta A_1' \\ A_1' \rightarrow \alpha A_1' \\ A_1' \rightarrow \epsilon $ 519 | 520 | 1. Избавиться от $\epsilon$-правила 521 | 522 | $A_1 \rightarrow \beta A_1' \\ A_1 \rightarrow \beta \\A_1' \rightarrow \alpha A_1' \\ A_1' \rightarrow \alpha $ 523 | 524 | 2. $A_2 \rightarrow A_1 \alpha \rightsquigarrow A_2 \rightarrow \xi \alpha \ для \ всех \ A_1 \rightarrow \xi \ \ (A_2 \rightarrow A_2 \beta, A_2 \rightarrow \gamma) \\ A_2 \rightarrow A_2 \beta \\ A_2 \rightarrow \gamma$ 525 | 526 | ``` 527 | for i = 1..n 528 | for j = 1..i - 1 529 | A_i -> A_j alpha 530 | for A_j -> xi alpha 531 | add A_i -> xi alpha 532 | remove A_i -> A_j alpha 533 | ``` 534 | 535 | $A \rightarrow \alpha \beta$ 536 | $A \rightarrow \alpha \gamma$ 537 | $L(\alpha) \ne \{\epsilon\}$, то LL(1) 538 | 539 | $A \rightarrow \alpha A' \\ A' \rightarrow \beta \\ A' \rightarrow \gamma$ 540 | 541 | 542 | 543 | ## Построение нерекурсивных нисходящих разборов 544 | 545 | Стек, управлящая таблица. В стеке будем хранить неразобранную часть дерева. (алгоритм ака dfs со стеком) 546 | 547 | Напишем грамматику и занумеруем правила, построим для нее множества $FIRST$ и $FOLLOW$. 548 | 549 | $$ 550 | E \rightarrow TE'\ (1)\\ 551 | E' \rightarrow +TE'\ (2)\\ 552 | E' \rightarrow \epsilon\ (3)\\ 553 | T \rightarrow FT'\ (4)\\ 554 | T' \rightarrow \times FT'\ (5)\\ 555 | T' \rightarrow \epsilon\ (6)\\ 556 | F \rightarrow n\ (7)\\ 557 | F \rightarrow (E) \ (8) 558 | $$ 559 | 560 | | | FIRST | FOLLOW | 561 | | ---- | ----- | --------- | 562 | | E | `( n` | `$ )` | 563 | | E' | `+ e` | `$ )` | 564 | | T | `( n` | `+ $ )` | 565 | | T' | `* e` | `+ $ )` | 566 | | F | `( n` | `* + $ )` | 567 | 568 | **Управляющая таблица** нерекурсивного парсера 569 | 570 | | | n | + | * | ( | ) | $ | 571 | | ------- | ------------- | ------------- | ------------- | ------------- | ------------- | ---- | 572 | | E | 1 | | | 1 | | | 573 | | E' | | 2 | | | 3 | 3 | 574 | | T | 4 | | | 4 | | | 575 | | T' | | 6 | 5 | | 6 | 6 | 576 | | F | 7 | | | 8 | | | 577 | | n | $\rightarrow$ | | | | | | 578 | | + | | $\rightarrow$ | | | | | 579 | | * | | | $\rightarrow$ | | | | 580 | | ( | | | | $\rightarrow$ | | | 581 | | ) | | | | | $\rightarrow$ | | 582 | | $\perp$ | | | | | | $OK$ | 583 | 584 | 585 | > пустые ячейки соответствуют ошибке 586 | 587 | > e.g. to parse: `2 + 2 * 2` 588 | > tree: 589 | > 590 | > ```mermaid 591 | > graph TD; 592 | > E --> T 593 | > E --> E' 594 | > T --> F 595 | > T --> T' 596 | > F --> n 597 | > T' --> epsilon 598 | > E' --> + 599 | > E' --> G[T] 600 | > E' --> H[E'] 601 | > G --> J[F] 602 | > G --> K[T'] 603 | > J --> U[n] 604 | > K --> * 605 | > K --> O[F] 606 | > K --> P[T'] 607 | > O --> L[n] 608 | > ``` 609 | 610 | --- 611 | 612 | ## Атрибутно-транслирующие грамматики (АТГ) 613 | 614 | $N, S \in N; \Sigma; P$ - правила 615 | Расширим определние грамматики 616 | N & $\Sigma$ определяется в Z 617 | **атрибуты** 618 | $\Sigma, N$ 619 | 620 | 0. имя 621 | 1. тип 622 | 2. значение (может быть не определено) 623 | 3. правило вычисления 624 | S-атрибуты - только присваивание атрибута 625 | 626 | Атрибуты бывают: 627 | 628 | 1. **Синтезируемые атрибуты** 629 | Если его значение зависит только от поддерева, в том числе, когда этот атрибут - атрибут терминала и его значение на этапе лексического анализа 630 | 2. **Наследуемый атрибут** 631 | Значение зависит от родителей или братьев 632 | L-атрибутная 633 | 634 | **Транслирующий символ** - специальный нетерминал, у которого единственное правило раскрыть его в $\epsilon$ и которого есть связанный с ним код, внутри которого мы можем работать с атрибутами 635 | 636 | Могут быть **именными** и **анонимными** 637 | 638 | 639 | 640 | > | $E \rightarrow E \ + \ T$ | \$MUL op1 = T1.v
\$MUL op2 = F.v
T0.v = \$MUL res | 641 | > | -------------------------------------- | ------------------------------------------------------------ | 642 | > | $E \rightarrow T $ | `E.v = T.v` | 643 | > | $T_0 \rightarrow T_1 \ \times_2 \ F_3$ | \$MUL op1 = ​T1.v
\$MUL op2 = F.v
T0.v = \$MUL​ res | 644 | > | $T \rightarrow F$ | `T.v = F.v` | 645 | > | $F \rightarrow n$ | `F.v = n.v` | 646 | > | $ F \rightarrow (E)$ | `F.v = E.v` | 647 | > 648 | > ``` 649 | > $MUL { 650 | > res = op1 * op2 651 | > } 652 | > ``` 653 | > 654 | > $$ 655 | > \$MUL 656 | > \left\{ 657 | > \begin{array}{ll} 658 | > op1 \ наследуемый \\ 659 | > op2 \ наследуемый \\ 660 | > res \ синтезируемый 661 | > \end{array} 662 | > \right. 663 | > $$ 664 | > 665 | > ``` 666 | > $ADD { 667 | > add = op1 + op2 668 | > } 669 | > ``` 670 | > 671 | > | E | v | | 672 | > | ---- | ---- | ------------- | 673 | > | T | v | | 674 | > | F | | синтезируемый | 675 | > | n | | синтезируемый | 676 | > 677 | > ```mermaid 678 | > graph TD; 679 | > E --> A[E] 680 | > A --> T 681 | > T --> F 682 | > F --> B[n v = 2] 683 | > E --> C[+] 684 | > E --> D[T] 685 | > D --> G[T] 686 | > G --> H[F] 687 | > H --> J[n v = 1] 688 | > D --> K[*] 689 | > D --> Z[F] 690 | > Z --> L[n v = 4] 691 | > D --> R[$MUL] 692 | > E --> W[$ADD] 693 | > ``` 694 | 695 | 696 | 697 | > 698 | >|$ E \rightarrow TE'$ ||E'.a = T.v
E.v = E'.v| 699 | >|--|--|--| 700 | >|$E' \rightarrow +TE' $|\$ADD E'|\$ADD​ op1 = E'0a
\$ADD op2 = T.v
E'4.a = \$ADD.res| 701 | >|$E' \rightarrow \epsilon $||E'.v = E'.a| 702 | >|$T \rightarrow FT' $||T'.a = E'.a
T.v = T'.v| 703 | >|$T' \rightarrow \times FT' $|\$MUL T'|\$MUL op1 = T'0.a
\$MUL op2 = F.v
T'4.a = \$MUL res| 704 | >|$T' \rightarrow \epsilon $||T'.v = T'.a| 705 | >|$F \rightarrow n $||F.v = n.v| 706 | >|$F \rightarrow (E)$||F.v = E.v| 707 | > 708 | >| E | v | 709 | >| ---- | ---------------------------------- | 710 | >| T | v | 711 | >| F | v синтезируемый | 712 | >| n | v синтезируемый | 713 | >| E' | a наследуемый
v синтезируемый | 714 | >| T' | a наследуемый
v синтезируемый | 715 | > 716 | > 717 | > 718 | >`2 + 3 * 4` 719 | > 720 | >```mermaid 721 | >graph TD; 722 | > E --> T 723 | > T --> F 724 | > F --> n 725 | > T --> T' 726 | > T' --> e 727 | > E --> E' 728 | > E' --> + 729 | > E' --> A[T] 730 | > A --> F' 731 | > F' --> B[n] 732 | > A --> C[T'] 733 | > C --> * 734 | > C --> G[F] 735 | > G --> L[n] 736 | > E' --> $ADD 737 | > E' --> U[E'] 738 | > C --> $MUL 739 | > C --> K[T'] 740 | > K --> Y[e] 741 | >``` 742 | 743 | 744 | 745 | ``` 746 | E'(a: int): int 747 | switch 748 | case // -> e 749 | return a 750 | case // +T $ADD E' 751 | skip + 752 | T.v = T() 753 | $ADD.res = $ADD(a, T.v) 754 | E'.v = E'($ADD.res) 755 | return E'.v 756 | 757 | E(): int 758 | switch 759 | case 760 | T.v = T() 761 | E'v. = E'(T.v) 762 | return E'.v 763 | 764 | $ADD(op1, op2: int): int 765 | return op1 + op2 766 | 767 | // alternative: 768 | Node E'(a) 769 | Node res = Node(E, atr = {a.a}) 770 | 771 | switch 772 | -> e 773 | res v = res.a 774 | return res 775 | -> +TE' 776 | skip + 777 | T = T() 778 | E'4.a = res.a + T.v 779 | E' = E'(E'4.a) 780 | res.v = E'v 781 | return res 782 | ``` 783 | 784 | 785 | 786 | **Регистровые** машины и **Стековые** машины 787 | операции регистровых машин: load загрузить значение и store выгрузить в память 788 | преимущество перед регистровыми, в регистровых конечное количество регистров, здесь есть стек и операции push, pop 789 | 790 | --- 791 | 792 | Непосредственная левая рекурсия 793 | $A \rightarrow A \alpha$ 794 | $A \rightarrow \beta$ 795 | x - синтезируемый атрибут A 796 | 797 | $A \rightarrow \beta A'$ 798 | $A' \rightarrow \epsilon$ 799 | $A' \rightarrow \alpha A'$ 800 | 801 | ```mermaid 802 | graph TD; 803 | A --> B[A] 804 | A --> D[a3] 805 | B --> C[A] 806 | B --> E[a2] 807 | C --> J[A] 808 | C --> K[a1] 809 | J --> L[b] 810 | N[A] --> I[b] 811 | N --> O[A'] 812 | O --> P[a1] 813 | O --> Q[A'] 814 | Q --> W[a2] 815 | Q --> R[A'] 816 | R --> Z[e] 817 | ``` 818 | 819 | A' x - соответствует Ax - синтезируемый 820 | a - аккумулятор - наследуемый 821 | 822 | $A \rightarrow \beta A'$ $A' a = f(\beta)$ 823 | $A' \rightarrow \epsilon$ 824 | $A' \rightarrow \alpha A'$ 825 | 826 | A s - синтезируемый атрибут 827 | a - наследуемый атрибут 828 | 829 | ``` 830 | A(a) -> s 831 | switch () 832 | ... 833 | // A -> a 834 | s = f(alpha) 835 | // alpha_k = B 836 | B(<->) 837 | ``` 838 | 839 | Но вообще генерируются парсеры со стеком 840 | 841 | ## Восходящий разбор 842 | 843 | перенос - свёртка 844 | `shift - reduce` 845 | 846 | Рабочий стек ($WS$) и стек предпросмотра ($PS$) (изначально вся последовательность токенов лежит в стеке предпросмотра). 847 | Есть две операции: 848 | 849 | 1) Перенос. Берем символ из $PS$ и переносим в $WS$. 850 | 2) Свёртка. Берем суффикс из $WS$, находим правило, для которого это правая часть. Если правил несколько, то все зависит от метода разбора. 851 | 852 | **Пример**. Следующее дерево построено снизу-вверх. 853 | 854 | ```mermaid 855 | graph BT; 856 | A[n] --- B[F] 857 | B --- C[T] 858 | C --- D[E] 859 | + 860 | E[n] --- F[F] 861 | F --- G[T] 862 | * 863 | H[n] --- K[F] 864 | G --- I 865 | * --- I 866 | K --- I[T] 867 | D --- J 868 | + --- J 869 | I --- J[E] 870 | ``` 871 | 872 | Сразу понятно, что выбор операции (свертка или перенос) на текущем суффиксе $WS$ неочевиден, есть различные способы как это можно сделать. Первый из них - это по приоритетам операторов. 873 | 874 | ### LR - анализ 875 | 876 | Неформальный смысл **LR(k)**. Если мы знаем строчку целиком и следующие **k** символов, то мы можем выбрать правило, по которому будем сворачивать 877 | 878 | Отличие от **LL**. В **LL** грамматике мы знаем только первый символ того, что мы собираемся разбирать, а в **LR** грамматике мы знаем все символы того, что мы собираемся сворачивать и еще следующий. 879 | 880 | Будем в дальнейшем рассматривать грамматику правильных скобочных последовательностей: 881 | $S'\rightarrow S$ 882 | $S\rightarrow (S)S$ 883 | $S\rightarrow\epsilon$ 884 | 885 | #### LR(0)-ситуация 886 | **LR(0)-ситуация** называется пара из правила и позиции в его правой части. Где количество позиций = длина правила + 1 887 | 888 | $A\rightarrow\alpha\bullet\beta$, где $\bullet$ - позиция 889 | 890 | Рассмотрим стек, давайте построим конечный автомат по поиску основ: посмотрим в строку $\alpha$ в $WS$, будем называет ее суффикс основой, если существует такое содержимое в $PS$, что, учитывая содержимое строки $\alpha$ можно их свернуть в левую часть некоторого правила, чтобы у нас получилась свертка до стартового терминала. (ака пытаемся по какому-то кол-ву символов угадать дерево разбора) 891 | 892 | Добавим формализма: 893 | $\alpha=\beta\gamma$, $\gamma$ - основа, если $\exist t$, $A\rightarrow\gamma$, то $S\Rightarrow^*\beta At\Rightarrow\beta\gamma t$, где $S$ - стартовый нетерминал, $A\in N$, $t\in\Sigma$, $\alpha,\gamma,\beta\in(\Sigma\cup N)^*$ 894 | 895 | *Конфликт свёртки/свёртки:* ноль нетерминальных и больше одного терминала 896 | *Конфликт переноса/свёртки*: больше нуля нетерминальных и больше нуля терминальных 897 | 898 | **def** Грамматика называется **LR(0)-грамматикой**, если детерминированная версия автомата по поиску основы выглядит: каждый шаг содержит либо одно состояние недетерминированного автомата и ничего больше, либо содержит только нетерминальные состояния недетермнированного автомата. 899 | 900 | #### Автомат 901 | 902 | **LR(0)**-ситуации - это состояния автомата. (\ - левая скобка, / - правая скобка, ибо mermaid душит). Алфавит автомата $\Sigma_A=\Sigma\cup N$. 903 | 1) Если точка стоит перед каким-то символом, то по этому же символу в этом же правиле переходим в следующую ситуацию. 904 | 2) По $\epsilon$: если точка стоит перед нетерминалом, то по $\epsilon$ переходим в начало всех правил, которые начинаются с этого нетерминала. 905 | 3) Стартовое $S'\rightarrow.S$. Ромбовидные - терминальные состояния. 906 | 907 | ```mermaid 908 | graph TD; 909 | A(S'->.S) --S--> B 910 | A --e--> H 911 | A --e--> C 912 | B{S'->S.} 913 | C[S->.\S/S] --\--> D 914 | D[S->\.S/S] --S--> E 915 | D --e--> C 916 | D --e--> H 917 | E[S->\S./S] --/--> F 918 | F[S->\S/.S] --S--> G[alpha] 919 | F --e--> C 920 | F --e--> H 921 | G{S->\S/S.} 922 | H{S->.} 923 | ``` 924 | 925 | Рассмотрим наш недетерминированный автомат: 926 | 1) Если мы находимся только в терминальном состоянии, то должны сделать свертку 927 | 2) Если мы находимся только в нетерминальных состояниях мы должны сделать перенос 928 | 3) Если мы находимся в терминальных и нетерминальных, то у нас конфликт перенос-свертка 929 | 4) Если мы находимся в нескольких терминальных, то у нас конфликт свертка-свертка 930 | 931 | Заметим, что наша грамматика не **LR(0)** 932 | 933 | LR(0) редко используется, есть LR(1) 934 | LR -> SLR (Simple LR) -> LALR -> LR(1) 935 | 936 | #### SLR - анализ 937 | 938 | Разновидность **LR(0)**, в котором конфликты перенос-свертка решаются с помощью $FOLLOW$. 939 | 940 | Алгоритм для нашей грамматики с **SLR** анализом: 941 | 1) передаем в наш автомат строку с $WS$; 942 | 2) если оказались только в терминальном - это свертка; 943 | 3) только в нетерминальных - перенос; 944 | 4) если хоть одно терминальное и не верно, что только оно одно - смотрим $FOLLOW$ всех терминальных состояний, в которых мы оказались и если следующий символ в $PS$ лежит ровно в одном $FOLLOW$, то сворачиваем по этому правилу, если не лежит ни в одном, то делаем перенос. Если лежит в нескольких $FOLLOW$, то у нас неустранимый конфликт свертка-свертка. 945 | 946 | Построим $FOLLOW$: 947 | 948 | | | $FOLLOW$ | 949 | | -- | - | 950 | | S' | $ | 951 | | S | ), $ | 952 | 953 | На самом деле, текущий алгоритм на практике применим только к детерминированному автомату. Распишем его полностью заново 954 | 955 | #### Алгоритм для SLR анализа 956 | 957 | 1. Строим **LR(0)** автомат 958 | 2. Детерминизируем 959 | 3. Строим управляющую таблицу **SLR** анализа 960 | 1. $[A\rightarrow\alpha\bullet]$ - терминальное, свертка $A\rightarrow\alpha$ 961 | 2. $[A\rightarrow\alpha\bullet,B\rightarrow\beta\bullet,...,C\rightarrow\xi\bullet X\eta...]$, $FOLLOW(A)$ - свертка $[A\rightarrow\alpha]$, $FOLLOW(B)$ - свертка $[B\rightarrow\beta$], если любой нетерминал, то перенос. 962 | 3. $[A\rightarrow\alpha\bullet X\beta, B\rightarrow\gamma\bullet Y\delta,...]$ - перенос 963 | 964 | 965 | Построим нашу управляющую таблицу. (shift,3 - перенеси и перейди в 3 номер; reduce(3), сверни по 3 правилу грамматики и смотри предыдущий номер состояния для следующего перехода) 966 | 967 | | Номер | Состояния | S | ( | ) | $ | 968 | | - | - | - | - | - | - | 969 | | 1 | $S'\rightarrow\bullet, S\rightarrow\bullet(S)S, S\rightarrow\bullet$ | 2 | shift,3 | reduce(3) | reduce(3) | 970 | | 2 | $S'\rightarrow S\bullet$ | error | error | error | reduce(1) | 971 | | 3 | $S\rightarrow(\bullet S)S, S\rightarrow\bullet(S)S, S\rightarrow\bullet$ | 4 | shift,3 | reduce(3) | reduce(3) | 972 | | 4 | $S\rightarrow(S\bullet)S$ | error | error | shift,5 | error | 973 | | 5 | $S\rightarrow(S)\bullet S, S\rightarrow\bullet(S)S,S\rightarrow\bullet $ | 6 | shift,3 | reduce(3) | reduce(3) | 974 | | 6 | $S\rightarrow(S)S\bullet$ | error | error | reduce(2) | reduce(2) | 975 | 976 | Проходом по таблице храним все прошедшие позиции по номерам состояний, сворачиваем по правилам и переносим перемещаясь на требуемое состояние. 977 | 978 | 979 | 980 | Когда не работает SLR: 981 | 982 | ![tablichka](../photos/tm-29-10-2019-3.jpg) 983 | 984 | Мы не можем понять по $FOLLOW$, как дальше сворачивать, потому что $FOLLOW$ не учитывает контекст. Однако **LR(1)** разбор нам поможет 985 | 986 | #### LR(1)-ситуация 987 | 988 | **def** *LR1-ситуация* - это тройка из правила, числа от 0 до длины правой части и символа, который называется *символом предпросмотра (look ahead) 989 | 990 | $[A \rightarrow \alpha \bullet \beta, c]$ 991 | $[A \rightarrow \alpha \bullet d\ \beta , c] \stackrel{d}{\rightarrow} [A \rightarrow \alpha d \bullet \beta, c]$ 992 | Если $d\in N$ 993 | 994 | lr1 - грамматике - если в детерминированном автомате по поиску lr1 основ 995 | 996 | одно из них терминальное,а другое нетерминальное, то их символ предпросмотра отличается от символа перед которым находится позиция в правой части нетерминального 997 | 998 | если они оба терминальные, то их символ предпросмотра не совпадает 999 | 1000 | [lr1 приколюхи](jsmachines.sourceforge.net/machines/lr1.html) 1001 | 1002 | #### LR(k) 1003 | 1004 | **Определение.** **LR(k)**-рамматика 1005 | 1006 | $S\Rightarrow^*\alpha Axy \Rightarrow^*\alpha\gamma xy\Rightarrow^* sxy,$ $|x|\leq k, |x|alpha.CDbeta,x ,, C->.ab,f/x] --С--> B[A->alphaC.Dbeta,x ,, D->.fg,b ,, D->.x,b] 1040 | 1041 | ``` 1042 | 1043 | **Грамматика с конфиктом свертка свертка** 1044 | 1045 | $S\rightarrow aAc$ 1046 | $S\rightarrow bAd$ 1047 | $S\rightarrow aBd$ 1048 | $S\rightarrow bBc$ 1049 | $A\rightarrow x$ 1050 | $B\rightarrow x$ 1051 | 1052 | Автомат 1053 | 1054 | ```mermaid 1055 | graph TD; 1056 | S[S'->.S,$ ,, S->.aAc,$ ,, S->.bAd,$ ,, S->.aBd,$ ,, S->.bBc,$] --a--> A[S->a.Ac,$ ,, S->a.Bd,$ ,, A->.x,c ,, B->.x,d] 1057 | S --b--> C[S->b.Ad,$ ,, S->b.Bc,$ ,, A->.x,d ,, B->.x,c] 1058 | A --х--> B[A->x.,c ,, B->x.,d] 1059 | C --х--> D[A->x.,d ,, B->x.,c] 1060 | 1061 | 1062 | ``` 1063 | 1064 | Грамматика простых арифметических выражений **LR(1)** 1065 | 1066 | ![table](../photos/tm-22-10-2019.jpg) 1067 | 1068 | ![table](../photos/tm-22-10-2019-2.jpg) 1069 | 1070 | --- 1071 | 1072 | ![table](../photos/tm-29-10-2019.jpg) 1073 | 1074 | ![table-another-one](../photos/tm-29-10-2019-2.jpg) 1075 | 1076 | -------------------------------------------------------------------------------- /src/type-theory.md: -------------------------------------------------------------------------------- 1 | ## $\lambda - calculation$ 2 | 3 | _Алонзо Чёрч_ ~ 40 годы. Развитие идеи, что все - функция 4 | 5 | 1) Предметный язык: 6 | 7 | $$ 8 | pred- \lambda -term \ T \ := 9 | \left\{ 10 | \begin{array}{ll} 11 | x \ (variable; set \ of \ small \ letter \ with \ indices); \\ 12 | (T,T) \ (application); \\ 13 | (\lambda x.T) \ (abstraction). \\ 14 | \end{array} 15 | \right. 16 | $$ 17 | 18 | 2) Мета-язык 19 | 20 | x, y - метапеременные для переменных 21 | большие буквы - метапеременные для T 22 | 23 | Договоренность об интерпретации сокращенных записей: 24 | 25 | 1) Аппликация. $2\ 2\ 2\ 2\rightarrow((2\ 2)\ 2)\ 2$. (слева направо) 26 | 2) $\lambda-abstraction$. $\lambda x.\lambda. y a b c\rightarrow \lambda x.(\lambda y. (a b c))$. (жадно) 27 | 28 | #### $\alpha$ - эквивалентность 29 | 30 | Назовем два $ pre- \lambda -terms$ (P, Q) $ \alpha$ - **эквивалентными** (P$=_\alpha$Q), если 31 | 32 | 1. P = x, Q = y и x = y 33 | 2. P = (S1T1), Q = (S2T2) и S1 $=_\alpha$S2, T1 $ =_\alpha$T2 34 | 3. P = $(\lambda x.A), \ Q \ = \ \lambda y.B \ and \ A[x:=t]=_\alpha B[y:=t]$, где $ t $ - свободная(свежая???) переменная 35 | 36 | **Равенство** <=> текстовое совпадение 37 | 38 | **Определение.** $P[x:=Q]$ 39 | 40 | 1. Если $Q$ свободен для подстановки в $P$ вместо $x$ 41 | 2. 42 | 43 | $$ 44 | P[x:=Q] = 45 | \left \{ 46 | \begin{array}{ll} 47 | Q,\ if\ P=y,\ p=x \\ 48 | y,\ if\ P=y, \ y\neq x \\ 49 | R[x:=Q]S[x:=Q],\ if \ P = (RS) \\ 50 | \lambda y.R[x:=Q],\ if\ \ P = (\lambda y.R)\ and\ x\neq y \\ 51 | P, \ if \ P= \lambda y.R\ and\ x=y 52 | \end{array} 53 | \right. 54 | $$ 55 | **Example** 56 | $ (\lambda x.(\lambda y.(y x))) [x := p] \rightarrow 57 | \lambda t.[(\lambda y.(y.x))] [x := p] \rightarrow \\ 58 | \lambda t. \lambda y((y.x)[x := p]) \rightarrow \lambda t.\lambda y.y[x := p] x[x := p] \rightarrow (\lambda t.(\lambda y.yp)) $ 59 | 60 | 1. аппликация левоассоциативна: $x.y.r.t = (((x y)r)t)$ 61 | 2. $\lambda$ берёт всё, что дают: $((\lambda a.(\lambda b (((((ab)c)d)e))f)g)$ 62 | 63 | $$ 64 | FV(T) = 65 | \left \{ 66 | \begin{array}{ll} 67 | \{x\}, T = x \\ 68 | FV(P) \cup FV(Q), T = PQ \\ 69 | FV(P) \setminus \{x\}, T = \lambda x.P 70 | \end{array} 71 | \right. 72 | $$ 73 | 74 | **lambda term** - класс эквивалентности lambda-term'ов по отношению эквивалентности 75 | 76 | **def** **$\beta$-редекс** 77 | 78 | **def** $\alpha$ $\rightarrow_\beta$ B находятся в отношении $\beta $ - редукции, если 79 | 80 | 1. A = PQ B = RS. P ->$\beta$R Q =$\alpha$ S либо (знаки отрази) 81 | 2. A - B - редекс A = ($\lambda$ x.P) Q, B = p[x := Q] при условии, что Q обобщается для подстановки для x в P 82 | 83 | **example** 84 | $$ 85 | \lambda a. \lambda b. a \ - И = T \\ 86 | \lambda a. \lambda b. b \ - Л = F \\ 87 | And = \lambda x. \lambda y. x \ y \ F \\ 88 | And \ T \ F = ((\lambda x. \lambda y x \ y \ F) T) F \rightarrow _\beta ((\lambda y. x \ y \ F) [x := T]) F = \\ 89 | = (\lambda y. T \ y \ F) F \rightarrow _\beta T \ F \ F = ((\lambda a. \lambda b. a) F) F) \rightarrow _\beta (\lambda b. F) F \rightarrow _\beta F 90 | $$ 91 | 92 | 93 | ### Чёрчевские нумералы 94 | 95 | $\lambda f. \lambda x. f^n x$ 96 | 97 | $f^k (x) = 98 | \left \{ 99 | \begin{array}{ll} 100 | x, n = 0 \\ 101 | f(f^{n - 1}, n > 0) 102 | \end{array} 103 | \right.$ 104 | 105 | $\overline{2} = \lambda n.\lambda f. \lambda x. n \ f \ (f \ x)$ 106 | 107 | _Карринг_: a (+) b: `let plus a = fun x -> x + a` 108 | 109 | `plus 1 3 = (plus 1) 3 = 4` 110 | 111 | **def** **Нормальная форма** - нет ни одного $\beta$-редексов (невозможно редуцировать) 112 | 113 | **example:** $\omega = \lambda f . \lambda x. x. x$ 114 | 115 | $\Omega = \omega \omega$ 116 | 117 | **statement** $\Omega$ не имеет норм. 118 | 119 | $(\lambda x. x. x) \omega = \omega. \omega$ 120 | 121 | У выражения существует нормальная форма, если существует последовательность $\rightarrow _\beta$, приводящая к нормальной форме 122 | 123 | ### Теорема Чёрча Росса 124 | 125 | Существует не более одной нормальной формы у любого выражения 126 | 127 | --- 128 | 129 | **def** *Транзитивное, рефлексивное и симметричное замыкание* $(\rightarrow _\beta)$ - отношение $\beta$-редуцируемости ( $\beta$-редукции) 130 | 131 | Если для A и B существует конечная поледовательность X~n~ ... X~n~ X~1~ = A, X~n~ = B, $X_i \rightarrow_\beta X_{i + 1}$ 132 | 133 | То $A \rightarrow_\beta B$ 134 | 135 | **def** *Транзитивное, рефлексивное и симметричное замыкание* $(\rightarrow_\beta)$ - есть $(=_\beta)$ 136 | 137 | R-отношение $\subseteq U^2$ 138 | 139 | R обладает ромбовидным свойством, если для любых A, B, C $\in U$ 140 | 141 | 1. $B \ne C$ 142 | 2. $(A, B) \in R \ \ (A, C) \in R$ 143 | 144 | Существует $D \in U$: 145 | 146 | ​ $(B, D) \in R\ \ (C, D) \in R$ 147 | 148 | ```mermaid 149 | graph TD; 150 | A --> B 151 | A --> C 152 | B --> D 153 | C --> D 154 | ``` 155 | 156 | > $\beta$-редукция не обладает ромбовидным свойством 157 | 158 | **def** *комбинатор* - $\lambda$-выражение без свободных переменных 159 | 160 | $Identit \ddot{a} t = \lambda x.x$ 161 | 162 | $verSchmelrung = \lambda x. \lambda y. \lambda z. x\ z\ (y \ z)$ 163 | 164 | $Konstant = \lambda x. \lambda y. x$ 165 | 166 | $I =_\beta S\ K \ K$ 167 | 168 | 169 | 170 | ## Теорема Чёрча Росса 171 | 172 | $(\twoheadrightarrow_\beta)$ обладает ромбовидным свойством 173 | 174 | **def** $(\rightrightarrows_\beta)$ отношение параллельной $\beta$-редукции 175 | 176 | $A \rightrightarrows_\beta$, если 177 | 178 | 1. $A \equiv \lambda x. P, B = \lambda x. Q, P \rightrightarrows_\beta Q$ 179 | 180 | 2. $A = (\lambda x. P) Q, B = P [x = Q] $ (если есть в каждой подстановке) 181 | 182 | 3. $A = P_1 Q_1, B = P_2 Q_2$ 183 | 184 | $P_1 = P_2 \ or\ P_1 \rightrightarrows_\beta P_2$ 185 | 186 | $Q_1 = Q_2 \ or Q_1 \rightrightarrows_\beta Q_2$ 187 | 188 | 4. $A = x, B = x, x \rightrightarrows_\beta x$ 189 | 190 | **stat** схема доказательства Чёрча Росса 191 | 192 | 1. $(\rightrightarrows_\beta)$ обладает ромбовидным свойством 193 | 2. Если R обладает ромбовидным свойством, то R^*^ - транзитивное замыкание обладает ромбовидным свойством 194 | 3. Из (1) и (2) следует, что $(\rightrightarrows_\beta)^*$ обладает ромбовидным свойством 195 | 4. $(\rightarrow_\beta) \subseteq (\rightrightarrows_\beta)$ 196 | 5. $(\rightrightarrows_\beta)^* \subseteq (\twoheadrightarrow_\beta)$ 197 | 6. $(\rightrightarrows_\beta)^* = (\twoheadrightarrow_\beta)$ 198 | 7. $(\twoheadrightarrow_\beta)$ обладает ромбовидным свойством 199 | 200 | ### Следствие из теоремы Чёрча Росса 201 | 202 | У $\lambda$-терма не может быть двух не равных нормальных форм 203 | 204 | Пусть $A \twoheadrightarrow_\beta X, A \twoheadrightarrow_\beta Y$, причём $X \ne Y$ 205 | 206 | Тогда по ромбовидному свойству существует $T: X \twoheadrightarrow_\beta T, \ Y \twoheadrightarrow_\beta T$ 207 | 208 | Если $X = T, Y = T$, то $ X = Y$ невозможно 209 | 210 | Значит одно из равенств не выполняется, пусть $X \ne T$ 211 | 212 | Значит X - ненормальная форма А 213 | 214 | **def** $(=_\beta)$ - транзитивное, рефлексивное и симметричное замыкание $(\rightarrow_\beta)$ 215 | 216 | Y - комбинатор 217 | 218 | Оператор неподвижной терма 219 | 220 | $\Omega = (\lambda x. x\ x) (\lambda x. x\ x)$ 221 | 222 | $Y = \lambda f. (\lambda x. f \ (x\ x)) (\lambda x. f (x \ x))$ 223 | 224 | $x =_\beta A\ x, \ \ \ \ x = ?$ 225 | 226 | Давайте рассмотрим $x = Y A$ 227 | 228 | $YA = _\beta A (Y A)$ 229 | 230 | $YA = (\lambda f. (\lambda x. f(x \ x)) (\lambda x. f(x\ x))) A \rightarrow_\beta \\ (\lambda x. A (x \ x)) (\lambda x. A (x \ x)) \rightarrow_\beta A [(\lambda x. A(x \ x)) (\lambda x. A (x \ x))]$ 231 | 232 | $$ 233 | Fact = \lambda f. \lambda a . ((>) \ a\ 0)\\ 234 | ((*)\ a\ [f\ ((-1)\ a)])\ 1\\ 235 | ---\\ 236 | (Y\ Fact)\ 3 \rightarrow Fact\ (Y \ Fact) \ 3 \rightarrow_\beta \\ 237 | (*)\ 3\ ((Y \ Fact) \ 2) \rightarrow (*) \ 3\ [(*) \ 2\ [(*) \ 1 \ [Y \ Fact \ 0]]] 238 | $$ 239 | 240 | ## Нормальный порядок редукции 241 | 242 | **def** самый левый редекс - это редекс с минимальной редукцией его первого символа 243 | 244 | *Нормальный порядок редукции* - редуцируете самый левый редекс 245 | 246 | ### Теорема 247 | 248 | Если нормальная форма существует, то она может быть получена п. л. (??) 249 | 250 | --- 251 | 252 | Введём импликацию: $\supset$, аксиомы: 253 | 254 | + $(A \supset (A \supset B)) \supset (A \supset B)$ 255 | + $(A \supset A)$ 256 | + $A = _\beta B \implies A \supset B \ \& \ B \supset A$ 257 | 258 | Теория противоречива, если $\vdash \alpha$ 259 | $\Phi_A : \Phi_A =_\beta \Phi_A \supset A$ 260 | $$ 261 | \Phi_A = _\beta \Phi_A \supset A \\ 262 | \Phi_A \supset (\Phi_A \supset A) \\ 263 | (\Phi_A \supset (\Phi_A \supset A)) \supset (\Phi_A \supset A) \\ 264 | \Phi_A \supset A 265 | (\Phi_A \supset A) =_\beta \Phi_A 266 | $$ 267 | $\Phi_A = Y (\lambda x. x \supset A) = _\beta (\lambda x .x \supset A) [Y(\lambda x. x \supset A)] = [Y(\lambda x . x \supset A)] \supset A$ 268 | $$ 269 | X = \{a \ |\ a \notin a \} \\ 270 | \empty - 0\ type \\ 271 | \{\empty\} - 1 \ type \\ 272 | \{\{\empty\}\} - 2 \ type \\ 273 | \{\{\empty\}, \empty\} = \overline{2} \\ 274 | a \notin a \\ 275 | n \ n + 1 276 | $$ 277 | 278 | $T :: = T_\lambda \ | \ T \rightarrow T$ 279 | $T_\lambda = \{\alpha, \beta, \gamma\}$ - множество элементарных (атомарных) типов 280 | $\Lambda$-выражение A имеет тип $\tau$ в контексте $\Gamma$ 281 | $\Gamma \vdash A : \tau$ 282 | $\Gamma = \{x_1 : \tau_1; x_2 : \tau_2; ...; x_n : \tau_n\}$ 283 | если: 284 | 285 | 1. $\overline{\Gamma, x : \tau \vdash x : \tau}$ x не входит в $\Gamma$ (*аксиома*) 286 | 2. $\dfrac{\Gamma, x \ : \ \tau\ \vdash A \ : \ \sigma}{\Gamma\ \vdash \ \lambda \ x \ .\ A :\ \tau\ \rightarrow\ \sigma}$ x не входит в $\Gamma$ (*введение имплации*) 287 | 3. $\dfrac{\Gamma \ \vdash \ A \ : \ \tau \ \rightarrow \ \sigma \ \ \Gamma \ \vdash \ B \ : \ \tau}{\Gamma \ \vdash \ (A \ B) \ : \ \sigma}$ (*удаление импликации*) 288 | 289 | 290 | 291 | ## Просто-типизированное $\lambda$-исчисление (по Карри) 292 | 293 | Импликационный фрагмент ИИВ 294 | 295 | Термы: 296 | 297 | 1. $\alpha, \beta, \gamma$ (переменные) 298 | 2. $(\tau \rightarrow \sigma)$ 299 | 300 | A. Гильбертовский вид: 301 | 302 | 1. $\alpha \rightarrow \beta \rightarrow \alpha$ 303 | 2. $(\alpha \rightarrow \beta) \rightarrow (\alpha \rightarrow \beta \rightarrow \gamma)$ 304 | 3. M.P. $\dfrac{\alpha \ \ \alpha \rightarrow \beta}{\beta}$ 305 | 306 | B. Нормальный вывод: 307 | 308 | $\dfrac{[посылка \ 1, [посылка \ 2 \ [...]]]}{заключение}$ 309 | 310 | 1. Аксиома: $\overline{\tau \rightarrow \tau}$ 311 | 2. Ввод импликации: $\dfrac{\sigma \ \tau}{\sigma \rightarrow \tau}$ 312 | 3. Удаление импликации: $\dfrac{\sigma \ \sigma \rightarrow \tau}{\tau}$ 313 | 314 | $$ 315 | \overline{\Gamma, x : \tau \vdash x : \tau} \\ 316 | \dfrac{\Gamma, x : \sigma \vdash B : \tau}{\Gamma \vdash \lambda x. B : \sigma \rightarrow \tau} \\ 317 | \dfrac{\Gamma \vdash A : \sigma \ \ \Gamma \vdash B : \sigma \rightarrow\ \tau}{\Gamma \vdash B \ A : \tau} 318 | $$ 319 | 320 | **Закон Пирса**: $((\alpha \rightarrow \beta) \rightarrow \alpha) \rightarrow \alpha$ 321 | 322 | 0. Сохранение типа: $A \rightarrow_\beta B, \Gamma \vdash A : \alpha \implies \Gamma \vdash B : \alpha$ 323 | 324 | 1. Теорема Чёрча-Россера для просто-типизированного $\lambda$-исчисленияC 325 | 326 | $$ 327 | \vdash A : \alpha \\ 328 | A \twoheadrightarrow_\beta B \\ 329 | A \twoheadrightarrow_\beta C 330 | $$ 331 | 332 | Тогда существует $\Gamma \vdash D : \alpha$, что $B \twoheadrightarrow_\beta D$ и $ C \twoheadrightarrow_\beta D$ 333 | 334 | 2. **Теорема об Изоморфизме Карри-Ховарда** 335 | 336 | $(\implies)$ Пусть $\Gamma \vdash A : \alpha$, тогда $|\Gamma\Vdash_{ИИВ} |\alpha|$ 337 | $|\Gamma| = |\{x_1 : \tau_1, ..., x_n : \tau_n\}| = \{|\tau_1|, ..., |\tau_n|\}$ 338 | $|\tau|$ - отображение типа в высказывание 339 | 340 | $(\Longleftarrow)$ Пусть $\Gamma \vdash \alpha$ 341 | Тогда найдётся $\Gamma ' : |\Gamma '| = \Gamma, |\alpha '| = \alpha'$. существует A, что $\Gamma ' \vdash A : \alpha '$ 342 | 343 | > Доказательство: индукция по структуре 344 | 345 | Изоморфизм К-Х 346 | 347 | тип - высказывание 348 | 349 | терм - докозательство 350 | 351 | свободная переменная - гипотеза 352 | 353 | 3. О замкнутости ИФИИВ (интуиционный фрагмент ИИВ) 354 | 355 | Пусть $\alpha$ - формула с "$\rightarrow$" только (без &, |, !) 356 | 357 | Тогда $\vdash_{ИИВ} \alpha \Longleftrightarrow \ \vdash_{ИФИИВ} \alpha$ 358 | 359 | 360 | 361 | ## Исчисление по Чёрчу 362 | 363 | $\Lambda ::= X \ - \ variable \ |(\Lambda \ \Lambda)| \ (\lambda x^\tau . \Lambda)$, x имеет тип $\tau$ 364 | 365 | > e.g. паскаль чуть больше, чем Чёрчу 366 | > хаскель и окамль - типизация по Карри 367 | > 368 | > по Черчу - точно определяем тип 369 | 370 | --- 371 | 372 | $\lambda x : \sigma . A$ - альтернативный синтаксис 373 | 374 | ## Теорема: ИФИИВ замкнут относительно доказуемости 375 | 376 | $\vdash_{ИИВ} \alpha \implies \vdash_{ИФИИВ} \alpha$ 377 | 378 | $\Leftarrow \ :\ \vdash_{ИФИИВ} \alpha \implies \vdash_{ИИВ} \alpha$ очевидно 379 | $\Rightarrow \ :\ \vdash_{ИИВ} \alpha \implies \vdash_{ИФИИВ} \alpha$ 380 | 381 | ### Теорема: модели Крипке полны для ИИВ 382 | 383 | $\Gamma \vdash \phi \Leftrightarrow \forall$ шкал (моделей) Крипке C $ \Vdash _C \Gamma \implies \Vdash _C \phi$ 384 | 385 | ### Теорема Полнота интуционного фрагмента 386 | 387 | $\Gamma \vdash_{ИФ} \alpha \Leftrightarrow C -$ модель Крипке $\Vdash _C \Gamma \implies \Vdash _C \alpha$ (вынуждено) 388 | 389 | $\Rightarrow$ очевидно 390 | 391 | $\Leftarrow$ пусть $\Gamma \nvdash_{ИФ} \alpha$ 392 | $W = \{\Delta \ |\ \Gamma \subseteq \Delta, \Delta$ замкнуто относительно $\vdash_{ИФ}\}$ 393 | $\{\Delta \ | \Gamma \subseteq \Delta, if \ \Delta \vdash \beta, then \ \beta \in \Delta\}$ 394 | 395 | $w_0 \leqslant w_1 \Leftrightarrow w_0 \subseteq w_1$ 396 | $w_2 \Vdash p \Leftrightarrow p \in w_2$ 397 | (p - пропозициональная переменная) 398 | 399 | Покажем, что $w_i \Vdash \alpha \Leftrightarrow \alpha \in w_2$ 400 | 401 | По предположению теоремы $\Gamma \Vdash \alpha$ во всех моделях, в том числе и в этой, значит, $\Vdash_w \alpha$ 402 | Значит, $\Gamma \vdash_{ИФ} \alpha$ (по определению $\Vdash$) 403 | 404 | По предположению теоремы, $\Vdash_C \Gamma$ влечёт $\Vdash_C \alpha$ в любой C 405 | Возьмём w в каждой C 406 | Заметим, что $\Vdash_w \Gamma \implies \Vdash_w \alpha$ (по ф Т) 407 | Также очевидно $\Vdash_w \Gamma$. Значит, $\Vdash_w \alpha$ 408 | Значит, $\Gamma \vdash_{ИФ} \alpha$ (по определению $\Vdash$) 409 | 410 | ```mermaid 411 | graph TD; 412 | A -- "фn ~ ф1" --> B 413 | A((Г*)) --> |ф2| B[Г U ф1*] 414 | A --> C[Г U ф2*] 415 | B --> D 416 | C --> D["Г U {ф1, ф2}*"] 417 | A --> E["Г U {фn}*"] 418 | D --> F[Г*] 419 | ``` 420 | 421 | 1. Пусть $A : (\alpha \rightarrow \alpha) \rightarrow (\alpha \rightarrow \alpha)$ ($ = \nu$) 422 | $F : \nu \rightarrow \nu \rightarrow \nu$ ($\nu$ - это тип числа) 423 | 424 | **def** 425 | $$ 426 | E (a, b) = 427 | \left\{ 428 | \begin{array}{ll} 429 | p_1, a = b = 0 \\ 430 | p_2(a), b = 0 \\ 431 | p_3(b), a = 0 \\ 432 | p_4,(a, b), a, b > 0 433 | \end{array} 434 | \right. 435 | $$ 436 | $E: \N^2 \rightarrow \N$ 437 | $p_i(a, b)$ - полином 438 | $p^{k_i}(a, b) = x_1 a^{k_1}b^0 + x_2 a^{k_1 -1 }b^1 + ... + x_{k_1 + i, k_1} a^0 b^{k_1} + p^{k_1 -1}(a, b) = \sum_{0 \leqslant i, j < k } y_{i j} a^i b^j$ 439 | $p^0(a, b) = x_0$ 440 | 441 | **def** f(a, b) - полином от a и b, если существует k, существует $\{y_{i j}\}_{0 \leqslant i, j < k}$, что $f(a, b) = \sum_{0 \leqslant i, j,< k} y_{i j} a^i b^j$ 442 | Тогда существует E(a, b): для любых a и b: $F \overline a \overline b =_\beta \overline{E(a, b)}$ (результат функции $\beta$- эвивалентен) 443 | 444 | 445 | 446 | ## Теорма $\lambda_\rightarrow$ сильно нормализуемо 447 | 448 | Любой терм $A : \alpha$ сильно нормализуем 449 | 450 | 451 | 452 | 453 | > 3 задачи: 454 | > 455 | > 456 | > | | $\lambda$ | | логика | решение | 457 | > | ---- | ------------------------------------------------------------ | --------------------------------- | ---------------------------------------------------------- | ------------------ | 458 | > | e.g. | $? \vdash ? : ?$ // ($\vdash \lambda x . x : \alpha \rightarrow \alpha$) | | | | 459 | > | 1. | $\Gamma /? \vdash ? : \alpha$ | "Задача обитаемости типа" | существует ли доказательство $\alpha$ в контексте $\Gamma$ | перебор деревьев | 460 | > | 2. | $\Gamma / ? \vdash M : ?$ | "Вывод типа / реконструкция типа" | Понять, что доказываем | унификация | 461 | > | 3. | $\Gamma \vdash M : \alpha$ | "Проверка вывода" | дз номер 2 по мл | сводится ко второй | 462 | > 463 | > все 3 задачи решаются в $\lambda_\rightarrow$ (экспоненциальные алгоритмы) 464 | 465 | В исчислении сложнее, чем лямбда-исчисление неразрешимы все 3 задачи. (ex: исчисление предикатов) 466 | 467 | --- 468 | 469 | ## Алгоритм унификации, Задача реконструкции типа, Расширение языка 470 | 471 | $\Gamma \vdash M :\ ?$ 472 | $? \vdash M : \ ?$ 473 | $? \vdash Y : \ ?$ 474 | 475 | **Алгебраический терм** - либо переменная: $A ::= X \ |\ (f\ A ... A) $ 476 | 477 | > **e.g.** `f (u a a) (u b x)` 478 | > X - множество переменных 479 | > F - множество функциональных символов $\{f_n\}$ 480 | > $f_n \ T_1 ... T_n$, где $f_n$ - n-местный функциональный символ 481 | 482 | Подстановка: $S_o$ - подстановка переменных 483 | $S_0 : X \rightarrow A$ 484 | $S_0$ тождественна почти везде (кроме конечного количества переменных) 485 | $S_0$ задаётся $(, ..., )$ 486 | $S : A \rightarrow A$ 487 | 488 | $S_o(P) = Q$ 489 | $S_0$ задаётся $()$ 490 | Тогда $S_0(a) = f \ x \ x \\ S_0 (x) = x \\ S_o (b) = b$ 491 | $$ 492 | S_0 (a) = 493 | \left\{ 494 | \begin{array}{ll} 495 | T_i, a = x_i \\ 496 | a, нет \ i: \ a = x_i 497 | \end{array} 498 | \right. \\ 499 | S (T) = 500 | \left\{ 501 | \begin{array}{ll} 502 | f_n (S (T_1)) ... (S(T_n)), T = f_n \ T_1 .. T_n \\ 503 | S_0 (x), T = x 504 | \end{array} 505 | \right. \\ 506 | $$ 507 | **def** *задача унификации*: пусть задано уравнение в алгебраических термах: $T_A = T_B$. Найти такую S (<все такие S>), что $S (T_A) \equiv S (T_B)$. 508 | 509 | > **e.g.** $f \ (g \ a \ b) \ t= f\ p\ (g\ a\ b)$ 510 | > $S_0(p) = S_0(t) = g \ a\ b$ - решение 511 | > $S_o(a) = h\ u\ v\ w$ - тоже решение. И если соберём подстановки вместе - тоже решение 512 | 513 | **def** $S, T$ - подстановки, $S \circ T$, $S \circ T(A) = S(T(A))$ 514 | 515 | **def** будем говорить, что S - *наиболее общее решение*, если для любого U существует $T: \ U = T \circ S$ 516 | 517 | $S(p) = S(t) = g \ a \ b$ - более общее решение, так как $T(a) = h \ u\ v\ w$, $U = T \circ S$ 518 | 519 | **def** подстановка U - *частный случай подстановки* S, если существует $T: \ U = T \circ S$ 520 | 521 | **def** решение $\equiv$ *унификатор* 522 | 523 | **def** система уравнений $\left\{ \begin{array}{ll} P_1 = Q_1 \\ ... \\ P_n = Q_n \end{array}\right.$ *эквивалента* $\left\{ \begin{array}{ll} M_1 = N_1 \\ ... \\ M_k = N_k \end{array}\right.$, если для любой подстановки при $i = \overline{1, n}$ $S(P_i)\equiv S(Q_i)$ выполнено $S(M_j) \equiv S(N_j)$ при $j = \overline{1, k}$ и наоборот 524 | 525 | 526 | 527 | ### Теорема 528 | 529 | Для любой решение системы $\left\{ \begin{array}{ll} P_1 = Q_1 \\ ... \\ P_n = Q_n \end{array}\right.$ существует эквивалентное уравнение $M = N$ 530 | 531 | > Доказательство: 532 | > 533 | > Пусть $z_n$ - свежий (не используемый выражением выше) n-местный функциональный символ 534 | > Тогда $M := z_n \ \ \ P_1 ..P _n$ 535 | > $N := z_n \ \ \ Q_1 ... Q_n$ 536 | > (индукция дальше) 537 | > $\square$ 538 | 539 | **def** система уравнений имеет *разрешенную форму*, если оно имеет следующий вид: 540 | 541 | 1. $\left\{ \begin{array}{ll} X_1 = T_1 \\ ... \\ X_n = T_n \end{array}\right.$ 542 | 2. Каждый $X_i$ входит в систему ровно 1 раз 543 | 544 | 545 | 546 | ### Теорема 547 | 548 | Если система в разрешенном виде, то наиболее общее решение устроино так: $(, \ , ..., )$ 549 | 550 | > Доказательство: индукция $\square$ 551 | 552 | 553 | 554 | **def** система *несовместна*, если в системе есть уравнение вида: $x_i = f \ ...\ x_i \ ...$, $x_i$ входит в правую часть, но не равен ей 555 | А также: $g_k \ T_1 ... T_k = f_n \ Q_1 ... Q_n \\ x_i = f \ ... x_i ... \\ g_k \ne f_n$ 556 | 557 | **fact** несоместная система не имеет решений (доказывается по индукции) 558 | 559 | 560 | 561 | ### Алгоритм унификации 562 | 563 | последовательность шагов - переписывание системы 564 | 565 | 1. $T = x$, где $T$ - не переменная $\Rightarrow x = T$ 566 | 2. $x = x \Rightarrow \empty$ 567 | 3. $f_k \ P_1 .. P_k = g_l \ Q_1 ... Q_l$ 568 | + Если $l = k$ и $f_k = g_l$ $\Rightarrow \left\{ \begin{array}{ll} P_1 = Q_1 \\ ... \\ P_k = Q_k \end{array}\right.$ (*редукция терма*) 569 | + система несовместна 570 | 4. Пусть $x = T \\ P = Q$ и $x$ входит куда-то ещё 571 | (*ислючение переменной*) 572 | $\left\{ \begin{array}{ll} P_1 = Q_1 \\ ... \\ P_s = Q_s \end{array}\right. \Rightarrow \left\{ \begin{array}{ll} P_1[x := T] = Q[x := T] \\ ... \\ P_s[x := T] = Q_s[x := T] \end{array}\right.$ 573 | 574 | 575 | 576 | ### Теорема 577 | 578 | 1. Алгоритм завершается за конечное время 579 | 2. Каждый шаг приводит к эквивалентной системе 580 | 581 | > Доказательство (hint): 582 | > Второй пункт - рутинная проверка 583 | > 584 | > Первый пункт - индукция по тройке: 585 | > $(n_1, n_2, n_3)$: 586 | > $n_1$ - количество "неразрешённых" переменных 587 | > 588 | > > *Разрешённая* переменная - входящая в одно уравнение слева от равенства 589 | > 590 | > $n_2$ - общее количество вхождений функциональных символов в систему 591 | > $n_3$ - количество уравнений типов (1) и (2) 592 | > 593 | > Дальше индукция в лексикографическом порядке - упорядочить и have fun 594 | > 595 | > // Неформально можно доказать: 596 | > 597 | > 1. Каждый шаг уменьшает тройку 598 | > 2. У тройки есть минимум (невозможно уменьшать бесконечно) 599 | > 3. Алг м либо приводит к несовместной, либо к разершённой 600 | > 601 | > Аккуратное доказательство: 3 индукции 602 | > Когда мы доходим до (0, p, 0) - система в разрешённо форме 603 | 604 | 605 | 606 | ### Сведние задачи унификации к задаче типизации 607 | 608 | Рассморим $\lambda$-терм $M$ по терму построим $E_M$ - систему уравнений в алгебраических термах, где переменные - это переменные, а $f_2 \equiv (\rightarrow)$ и $\tau_M$ - тип 609 | 610 | | | $E_M$ | $\tau_M$ | 611 | | ------------------------ | ------------------------------------------------------------ | -------------------------------------- | 612 | | $M \equiv x$ | $\empty$ | $\alpha_x$ - свежая типовая переменная | 613 | | $M \equiv P Q$ | $E_p \cup E_Q \cup \{\tau_p = \tau_q \rightarrow \alpha_M\}$ | $\alpha_M$ - свежая типовая переменная | 614 | | $M \equiv \lambda x . P$ | $E_p$ | $\tau_m = \alpha_x \rightarrow \tau_p$ | 615 | 616 | 617 | 618 | ### Теорема 619 | 620 | 1. $\Gamma \vdash M : \sigma$ , то существует решение S для $E_M$, чт $\sigma = S(\tau_M), S(\alpha_x) = \Gamma(x), (x: S(\alpha_x \in \Gamma))$ 621 | 2. Пусть S - решение $E_M$, $\Gamma = \{x : S(\alpha_x)\}_x$. Тогда $\Gamma \vdash M : S(\tau_m)$ 622 | 623 | -------------------------------------------------------------------------------- /translation-methods.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DubKoldun/notes/7bee12793cad579092e2b917fda6b88576236f82/translation-methods.pdf -------------------------------------------------------------------------------- /type-theory.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DubKoldun/notes/7bee12793cad579092e2b917fda6b88576236f82/type-theory.pdf --------------------------------------------------------------------------------