$ - **модель Крипке**
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 | 
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 | 
1067 |
1068 | 
1069 |
1070 | ---
1071 |
1072 | 
1073 |
1074 | 
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
--------------------------------------------------------------------------------