diff --git a/out/presentation.pdf b/out/presentation.pdf index 97afc7f..a7aff03 100644 Binary files a/out/presentation.pdf and b/out/presentation.pdf differ diff --git a/src/assets/10_125.png b/src/assets/10_125.png new file mode 100644 index 0000000..11a033c Binary files /dev/null and b/src/assets/10_125.png differ diff --git a/src/presentation.typ b/src/presentation.typ index 5fa5158..f73d652 100644 --- a/src/presentation.typ +++ b/src/presentation.typ @@ -13,7 +13,7 @@ #let fletcher-diagram = touying-reducer.with(reduce: fletcher.diagram, cover: fletcher.hide) -#show: dm-unipi-theme.with(aspect-ratio: "16-9", config-info( +#show: dm-unipi-theme.with(aspect-ratio: "4-3", config-info( title: [Il Polinomio di Kauffman: un invariante di isotopia regolare], subtitle: [Tesi di Laurea Triennale], // author: { @@ -39,9 +39,13 @@ #set text(font: "Open Sans", weight: 400, size: 16pt) #show math.equation: set text(size: 19pt) #show strong: it => text(weight: 600, it.body) -#set par(leading: 1em, spacing: 1em) -#set list(indent: 0.6em, body-indent: 0.75em, spacing: 1em) -#set enum(indent: 0.6em, body-indent: 0.75em, spacing: 1em, numbering: "i.1.a)") +// #set par(leading: 1em, spacing: 1em) +// #set list(indent: 0.6em, body-indent: 0.75em, spacing: 1em) +// #set enum(indent: 0.6em, body-indent: 0.75em, spacing: 1em, numbering: "i.1.a)") + +#set par(spacing: 1.5em) +#set list(spacing: 1.5em) +#set enum(numbering: "i.a)", spacing: 1.5em) #show figure.caption: caption => block(inset: (x: 2em), { set align(left) @@ -70,7 +74,7 @@ // *Def.* $K_0, K_1 subset bb(R)^3$ sono *equivalenti* se esiste un'*isotopia ambiente* che porta uno nell'altro, ovvero esiste continua, tale che: -#v(0.75em) +\ *Def.* $K_0, K_1$ sono equivalenti se $exists H : bb(R)^3 times [0, 1] arrow bb(R)^3$ *isotopia ambiente*, ovvero tale che: @@ -90,7 +94,7 @@ e posta $H_t (x) colon.eq H(x, t)$ si ha: #pause -#v(0.75em) +\ *Esistenza Proiezioni Regolari.* Sia $L subset bb(R)^3$ _link poligonale_, allora esiste un aperto denso $U$ tale che $forall v in U subset SS^2$, la proiezione sul piano $v^perp approx RR^2$ è regolare. @@ -143,7 +147,7 @@ e posta $H_t (x) colon.eq H(x, t)$ si ha: *Def.* $D_1 tilde D_2$ diagrammi di link si dicono equivalenti a meno di *isotopia regolare* se e solo se sono equivalenti a meno di isotopie planari e mosse II e III di Reidemeister. -#v(1em) +\ #figure(image("assets/ambient-regular-isotopy-difference.jpg", height: 7cm)) @@ -152,7 +156,7 @@ e posta $H_t (x) colon.eq H(x, t)$ si ha: *Osservazione.* Tutte le mosse di tipo I, quelle che introducono quelli che chiameremo *riccioli*, possono passare sopra o sotto altri fili senza problemi applicando le seguenti mosse -#v(1em) +\ #figure(image("assets/move-1-factorization.png", width: 75%)) @@ -160,7 +164,7 @@ e posta $H_t (x) colon.eq H(x, t)$ si ha: *Osservazione.* Quando abbiamo una coppia di riccioli con segni opposti abbiamo la seguente proprietà di cancellazione detto _trucco di Whitney_. -#v(1em) +\ #figure(image("assets/whitney-trick.png", width: 100%)) @@ -244,16 +248,12 @@ e posta $H_t (x) colon.eq H(x, t)$ si ha: *Def.* Per ogni diagramma di link _non orientato_ $K$, il polinomio $L_K in bb(Z)[a, a^(-1), z, z^(-1)]$ verifica i seguenti assiomi: -#set par(spacing: 1em) -#set list(spacing: 1em) -#set enum(numbering: "i.a)", spacing: 1em) +#set enum(numbering: "i.a)") 1. $K tilde K' => L_K = L_K'$. 2. Valgono le seguenti relazioni: - #set enum(numbering: "i.a)", spacing: 1.25em) - 1. $L[#skein.over-large] + L[#skein.under-large] = z (L[#skein.h-large] + L[#skein.v-large])$ 2. $L[#skein.unit-large] = 1$ @@ -264,7 +264,7 @@ e posta $H_t (x) colon.eq H(x, t)$ si ha: #pause -#v(0.25em) +\ *Osservazione.* A questo punto non sappiamo se $L_K$ _sia ben definito_. @@ -274,21 +274,34 @@ e posta $H_t (x) colon.eq H(x, t)$ si ha: #pause -#v(0.75em) +\ *Prop.* $F_K$ invariante di isotopia ambiente. -#v(0.75em) +_Dimostrazione._ + +#grid( + columns: (1fr, auto), + align: (left, left, right), + row-gutter: 1.75em, + // stroke: 1pt, + + [ + $F[ #skein.over-twist-large ] = pause a^(-w(#skein.over-twist)) dot L[ #skein.over-twist-large ]$ + ], + { + show math.equation: set text(size: 15pt) + $pause L[#skein.over-twist] = a L[#skein.strand], quad w(#skein.over-twist) = w(#skein.strand) + 1$ + }, -_Dim._ + $pause = a^(-w(#skein.strand) - 1) dot a L[ #skein.strand-large ]$, [], -$display( - F[ #skein.over-twist-large ] - = pause a^(-w(#skein.over-twist)) dot L[ #skein.over-twist-large ] - = pause a^(-(w(#skein.strand) + 1)) dot a L[ #skein.strand-large ] - = pause a^(-w(#skein.strand)) dot L[ #skein.strand-large ] - = pause F[ #skein.strand-large ] -)$ + $pause = a^(-w(#skein.strand)) cancel(stroke: #1pt, a^(-1)) dot cancel(stroke: #1pt, a) L[ #skein.strand-large ]$, [], + + $pause = a^(-w(#skein.strand)) dot L[ #skein.strand-large ]$, [], + + $pause = F[ #skein.strand-large ]$, [], +) == Calcoli impliciti @@ -300,7 +313,7 @@ $display( #let (alternatives,) = utils.methods(self) #set align(center + top) - #v(3em) + #v(7em) #alternatives(position: center + top)[ #grid( @@ -475,8 +488,6 @@ $display( }, ) ][ - - #grid( columns: 2, gutter: 2em, @@ -610,7 +621,7 @@ $display( [$K$ un diagramma di un nodo, $i$ etichetta di uno degli incroci] - v(1em) + v(1.5em) grid( columns: 4, @@ -649,13 +660,16 @@ $display( $K$, $S_i K$, $E_i K$, $e_i K$, ) + pause + [\ ] - [$lambda = (lambda_n, dots, lambda_0)$ sequenza di etichette di incroci di $K$] + [\ ] - v(1em) + [$lambda = (lambda_n, dots, lambda_0)$ sequenza di etichette di incroci di $K$] + v(1.5em) $ A_i^lambda colon.eq E_lambda_i S_lambda_(i-1) dots.c space S_lambda_0 @@ -676,11 +690,13 @@ $display( self => { let (only, uncover) = utils.methods(self) - set align(center) { + set align(center) [$p$ punto base direzionato, $lambda$ una sequenza di scambi che porta $K$ a $hat(K)(p)$:] } + show math.equation: set text(size: 18pt) + v(1em) only( @@ -730,7 +746,12 @@ $display( ) #slide({ - align(center, [$p$ punto base direzionato, $lambda$ una sequenza di scambi che porta $K$ a $hat(K)(p)$:]) + { + set align(center) + [$p$ punto base direzionato, $lambda$ una sequenza di scambi che porta $K$ a $hat(K)(p)$:] + } + + show math.equation: set text(size: 18pt) v(1em) @@ -753,7 +774,12 @@ $display( }) #slide({ - align(center, [$p$ punto base direzionato, $lambda$ una sequenza di scambi che porta $K$ a $hat(K)(p)$:]) + { + set align(center) + [$p$ punto base direzionato, $lambda$ una sequenza di scambi che porta $K$ a $hat(K)(p)$:] + } + + show math.equation: set text(size: 18pt) v(1em) @@ -776,7 +802,12 @@ $display( }) #slide({ - align(center, [$p$ punto base direzionato, $lambda$ una sequenza di scambi che porta $K$ a $hat(K)(p)$:]) + { + set align(center) + [$p$ punto base direzionato, $lambda$ una sequenza di scambi che porta $K$ a $hat(K)(p)$:] + } + + show math.equation: set text(size: 18pt) v(1em) @@ -798,17 +829,15 @@ $display( )$ }) -#slide[ - - - #{ +#slide({ + { set align(center) - [$p$ punto base direzionato, $lambda$ una sequenza di scambi che porta $K$ a $hat(K)(p)$:] } - #v(1em) + show math.equation: set text(size: 18pt) + v(1em) $ & L[K] + cancel(L[S_0 K]) = z( L[E_0 K] + L[e_0 K] ) \ @@ -817,24 +846,30 @@ $display( (-1)^n (& cancel(L[S_(n-1) dotss S_0 K]) + L [hat(K)(p)]) = (-1)^n z (L[E_n S_(n-1) dotss S_0 K] + L[e_n S_(n-1) dotss S_0 K]) $ - #{ - v(1.5em) - - h(4.4em) - $display( - => L[K] = (-1)^(abs(lambda(q))+1) L[hat(K)(p)] + - z sum_K^text(fill: #white, n) (lambda) - )$ - show math.equation: set text(size: 14pt) - h(1fr) - $display((sum_K (lambda) colon.eq sum_(i=0)^n (-1)^i (L[A_i^lambda K] + L[B_i^lambda K])))$ - } -] + v(1.5em) + + h(4.4em) + $display( + => L[K] = #rect( + fill: gray.mix(white), + outset: (top: 0.25em, bottom: 0.5em), + radius: 0.25em, + $display( + (-1)^(abs(lambda(q))+1) L[hat(K)(p)] + + z sum_K^text(fill: #gray.mix(white), n) (lambda) + )$, + ) + )$ + + show math.equation: set text(size: 14pt) + h(1fr) + $display((sum_K (lambda) colon.eq sum_(i=0)^n (-1)^i (L[A_i^lambda K] + L[B_i^lambda K])))$ +}) == Definizione induttiva #slide( - repeat: 2, + repeat: 3, self => [ #let (alternatives,) = utils.methods(self) @@ -863,7 +898,49 @@ $display( b) #h(0.35em) Se $n=1$: $display( L_K (a, z) colon.eq - (-1)^(abs(lambda(p))+1) L[hat(K)(p)] + z sum_K (lambda(p)) + #rect( + fill: gray.mix(white), + inset: (top: 0.65em), + outset: (top: 0.25em, bottom: 0.5em), + radius: 0.25em, + $display((-1)^(abs(lambda(p))+1) L[hat(K)(p)] + z sum_K (lambda(p)))$, + ) + // display((-1)^(abs(lambda(p))+1) L[hat(K)(p)] + z sum_K (lambda(p))) + )$ + + ][ + + *Def (induttiva di $L_K$).* Il polinomio $L_(K)(a,z)$ è definito induttivamente come segue: + + // la definizione è sotto perché gli enumerate non vanno d'accordo con le figure + + 1. Se $K$ è in _forma discendente_: $L_K (a, z) colon.eq a^w(K)$ + + 2. Se $K = K_1 union K_2$: $L(K_1 union K_2) colon.eq delta L(K_1) L(K_2)$ #h(1fr) (con $delta colon.eq (a + 1 slash a) / z - 1$) + + 3. Altrimenti $K = K_1 union dotss union K_n$: + + #v(0.75em) + + a) #h(0.35em) Se $n > 1$: $display( + L_K (a, z) colon.eq + 1 / n + sum_(i=1)^n + ((-1)^(abs(lambda(p_i))+1) delta L_(K_i) L_(K - K_i) + z sum_K (lambda(p_i))) + )$ + + #v(1.5em) + + b) #h(0.35em) Se $n=1$: $display( + L_K (a, z) colon.eq + #rect( + fill: white, + inset: (top: 0.65em), + outset: (top: 0.25em, bottom: 0.5em), + radius: 0.25em, + $display((-1)^(abs(lambda(p))+1) L[hat(K)(p)] + z sum_K (lambda(p)))$, + ) + // display((-1)^(abs(lambda(p))+1) L[hat(K)(p)] + z sum_K (lambda(p))) )$ ][ @@ -955,6 +1032,10 @@ $display( 4. Se $K$ ammette una _funzione di slacciamento_ allora $L_K = a^w(K)$ ] +== Dimostrazione buona definizione + + + = Laboratorio Computazionale == Implementazione in Python @@ -982,7 +1063,49 @@ Per il progetto di Lab. Comp. abbiamo scritto una *nuova implementazione* in _Py - Verifica di tutti i polinomi contenuti nel *database di KnotInfo*. -- _Trovato un errore nel nodo_ $10_125$, c'è $L_m(K)$ invece di $L_K$. +- _Trovato un errore nel nodo_ $10_125$, c'è $F[10_125]$ invece di $F[10_125]$ ovvero $F_(10_125)(1 slash a, z)$. #h(1fr) + +== Implementazione in Python + +#{ + set align(center) + set text(15pt) + show math.equation: set text(size: 12pt) + + grid( + columns: 2, + align: top, + gutter: 2em, + + [*Polinomio corretto*], + + [*Polinomio in KnotInfo*], + + $ + F[10_125] = & z^8 (1 / a^2 + 1) + z^7 (a + 2 / a + 1 / a^3) + z^6 (-6 - 6 / a^2) \ + & + space z^5 (-5 a - 11 / a - 6 / a^3) + + z^4 (2 a^2 + 13 + 11 / a^2) \ + & + space z^3 (a^3 + 8 a + 17 / a + 10 / a^3) + + z^2 (a^4 - 6 a^2 - 15 - 8 / a^2) \ + & + space z (a^5 - a^3 - 6 a - 8 / a - 4 / a^3) + + 3 a^2 + 7 + 3 / a^2 + $, + + $ + F[m(10_125)] = & z^8 (a^2 + 1) + z^7 (a^3 + 2 a + 1 / a) + z^6 (-6 a^2 - 6) \ + & + space z^5 (-6 a^3 - 11 a - 5 / a) + + z^4 (11 a^2 + 13 + 2 / a^2) \ + & + space z^3 (10 a^3 + 17 a + 8 / a + 1 / a^3) + + z^2 (-8 a^2 - 15 - 6 / a^2 + 1 / a^4) \ + & + space z (-4 a^3 - 8 a - 6 / a - 1 / a^3 + 1 / a^5) + + 3 a^2 + 7 + 3 / a^2 + $, + + image("assets/10_125.png", height: 6cm), + + scale(x: -100%, image("assets/10_125.png", height: 6cm)), + ) +} == Fine @@ -990,5 +1113,9 @@ Per il progetto di Lab. Comp. abbiamo scritto una *nuova implementazione* in _Py #set align(center) #set text(size: 42pt) - Grazie per l'attenzione + *Grazie per l'attenzione* ] + +== Appendice + +