diff --git a/out/presentation.pdf b/out/presentation.pdf index 9222389..aeee565 100644 Binary files a/out/presentation.pdf and b/out/presentation.pdf differ diff --git a/src/presentation.typ b/src/presentation.typ index 7a6db43..6e181c0 100644 --- a/src/presentation.typ +++ b/src/presentation.typ @@ -3,12 +3,9 @@ #import "@preview/cetz:0.3.2" #import "@preview/fletcher:0.5.4" as fletcher: edge, node #import "@preview/numbly:0.1.0": numbly -// #import "@preview/theorion:0.3.2": * -// #show: show-theorion #import "skein.typ": * -// cetz and fletcher bindings for touying #let cetz-canvas = touying-reducer.with(reduce: cetz.canvas, cover: cetz.draw.hide.with(bounds: true)) #let fletcher-diagram = touying-reducer.with(reduce: fletcher.diagram, cover: fletcher.hide) @@ -16,32 +13,15 @@ #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: { - // set align(center) - - // grid( - // columns: 2, - // row-gutter: 0.75em, - // column-gutter: 0.5em, - // align: (right, left), - // [*Candidato:*], [Antonio De Lucreziis], - // [*Relatore:*], [Paolo Lisca], - // ) - // // grid(align: left, [*Candidato:* Antonio De Lucreziis \ *Relatore:* Paolo Lisca]) - // }, author: [Antonio De Lucreziis], date: [18 Luglio 2025], institution: [Dipartimento di Matematica \ Università di Pisa], logo: image("assets/dm-unipi-logo-bianco.png"), )) -// #set text(font: "Source Sans Pro", weight: 500, size: 20pt) #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(spacing: 1.5em) #set list(indent: 0.5em, body-indent: 0.75em, spacing: 1.5em) @@ -60,11 +40,6 @@ == Nodi e Diagrammi -// *Def.* $X, Y$ spazi topologici, $f : X arrow Y$ continua è *embedding* se $X approx f(X) subset Y$. - -// *Def.* $f : X arrow Y$ embedding, $p in X$ allora $f$ è *localmente piatto* in $p$ se esiste $U subset bb(R)^3$ intorno di $p$ tale che $U approx DD^2 times [0,1]$ e $U inter f(X) <-> {0} times [0, 1]$. - -// \ *Nodo.* $K subset bb(R)^3$ è un *nodo (tame)* se $exists f : bb(S)^1 arrow.hook bb(R)^3$ _embedding loc. piatto_ con $K = f(bb(S)^1)$. @@ -72,8 +47,6 @@ #pause -// *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: - \ *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: @@ -86,71 +59,23 @@ e posta $H_t (x) colon.eq H(x, t)$ si ha: - $H_1(K_0) = K_1$ -// == Introduzione - -// *Def.* Un *nodo poligonale* è un nodo equivalente ad un'unione finita di segmenti lineari. - -// *Fatto (Crowell).* Dato un nodo $K subset bb(R)^3$, $K$ è *nodo (tame)* $<=>$ $K$ è *poligonale*. - #pause \ *Def.* Un *diagramma* $D subset bb(R)^2$ proviene da un link $L subset RR^3$ attraverso una proiezione regolare. I punti doppi del diagramma sono detti *incroci*. - -// di un link $L subset bb(R)^3$ è l'immagine di $L$ attraverso una proiezione decorata con l'informazione sopra/sotto ad ogni incrocio. - -// *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. - -// - $x in pi_v (L) subset v^perp$ tale che $abs(pi^(-1)_v (x)) = 2$ sono detti *incroci*. - -// == Proiezioni e Diagrammi - -// #grid( -// columns: (auto, 1fr), -// gutter: 1em, -// figure(image("assets/projection-plane.png", height: 6cm)), -// [ -// 1. $L$ non ha segmenti paralleli a $v$. - -// 2. Se $x in pi_v (L)$ è tale che $abs(pi^(-1)(x)) > 1$, ovvero è un punto *singolare*, allora: - -// - $pi_v^(-1)(x)$ non contiene vertici di $L$ - -// - $abs(pi^(-1)(x)) = 2$ ovvero è un *punto doppio*, questi sono gli *incroci* della proiezione. - -// - $x$ è un punto di intersezione trasversa - -// Gli altri punti sono detti *regolari*. -// ], -// ) - == Teorema di Reidemeister - - -// #grid( -// columns: (1fr, auto), -// gutter: 1em, -// align: top, -// [ - -// ], -// , -// ) - *Mosse di Reidemeister.* Le mosse I, II, III in figura sono dette. *Teorema (di Reidemeister).* Due diagrammi di link _equivalenti_ sono collegati da una _successione finita di mosse di Reidemeister_ e isotopie planari. #figure(image("assets/reidemeister-moves.jpg", height: 7cm)) - == Isotopia Regolare #slide[ - #set align(center) #block([ @@ -159,85 +84,11 @@ e posta $H_t (x) colon.eq H(x, t)$ si ha: L'*isotopia regolare* è la relazione di equivalenza su diagrammi di link \ generata solo dalle mosse II e III. ]) - // $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. - - #figure(image("assets/ambient-regular-isotopy-difference.jpg", height: 7cm)) - ] -// == Comportamento Isotopia Regolare - -// *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 - -// \ - -// #figure(image("assets/move-1-factorization.png", width: 75%)) - -// == Comportamento Isotopia Regolare - -// *Osservazione.* Quando abbiamo una coppia di riccioli con segni opposti abbiamo la seguente proprietà di cancellazione detto _trucco di Whitney_. - -// \ - -// #figure(image("assets/whitney-trick.png", width: 100%)) - -// == Diagrammi in forma discendente - -// #align(center)[ -// Dato $K$ il *nodo banale standard* (o in _forma discendente_) associato è $hat(K)(cal(U), p)$: - -// #v(1em) - -// #image("assets/standard-unlink-construction.png", height: 8cm) -// ] - - -// == Comportamento Isotopia Regolare - - -// *Lemma.* Sia $K$ un diagramma di un nodo in _forma discendente_, allora o è composto interamente da riccioli o ammette una sequenza di mosse di tipo II e III che portano al diagramma di un nodo formato solo da riccioli. - -// Ovvero un nodo in forma discendente è _equivalente_ ad uno composto solo da riccioli. - -// \ - -// #pause - -// _Dim._ Consideriamo una successione di mosse $K = D_0 stretch(arrow) dots.c stretch(arrow) D_n = #skein.unit-large$. Modifichiamo le mosse nei seguenti casi: - -// - Mosse di tipo I che rimuovono un ricciolo - -// - Mosse di tipo I che aggiungono un ricciolo - -// - Mosse di tipo II, III - -// == Comportamento Isotopia Regolare - - -// #figure(image("assets/modified-curl-add-before.png", width: 7% * 6.5)) - -// $ #rotate(90deg, $~>$) $ - -// #figure(image("assets/modified-curl-add-after.png", width: 7% * 13)) - -// #align(center)[Mosse di tipo I che aggiungono un ricciolo] - -// == Comportamento Isotopia Regolare - -// #v(2em) - -// #figure(image("assets/modified-r2-before.png", width: 8% * 6.5)) - -// $ #rotate(90deg, $~>$) $ - -// #figure(image("assets/modified-r2-after.png", width: 8% * 8.5)) - -// #align(center)[Mosse di tipo II, III] - == Writhe - Il *segno* di un incrocio di un diagramma orientato è: $epsilon(#skein-generic(size-factor: 1.5, direction: (+1, +1))) = +1, epsilon(#skein-generic(size-factor: 1.5, direction: (+1, -1))) = -1$ $D$ diagramma di un link orientato, il *writhe* $display(w(D) colon.eq sum_(c "incrocio") epsilon(c))$. @@ -272,10 +123,6 @@ Dimostreremo che per ogni diagramma di link _non orientato_ esiste un polinomio 4. $L[#skein.under-twist-large] = a^(-1) L[#skein.strand-large]$ -// \ - -// *Osservazione.* A questo punto non sappiamo se $L_K$ _sia ben definito_. - == Normalizzazione a invariante di isotopia ambiente *Definizione.* $F_D (a, z) colon.eq a^(-w(D)) dot L_D (a, z)$ @@ -606,25 +453,11 @@ _Dimostrazione._ ] ]) -// == Invariante di isotopia ambiente associato - -// *Def.* Definiamo $F_K in bb(Z)[a, a^(-1), z, z^(-1)]$ per diagrammi di link orientati $K$ come -// $ -// F_K colon.eq a^(-w(K)) L_K -// $ - -// dove $L_K$ di un diagramma orientato è definito dimenticando l'orientazione. - -// *Prop.* Il polinomio $F_K (a, z)$ è un invariante di isotopia ambiente. - == Considerazioni preliminari #align(center)[ Il *nodo banale standard* (o in _forma discendente_) associato $D$ è $hat(D)(cal(U), p)$: - // #v(1em) - - #alternatives[ #move(dx: -1pt, image("assets/derived/std-unknot-1-cropped.jpg", height: 8cm)) @@ -717,28 +550,8 @@ _Dimostrazione._ $K$, $S_i K$, $E_i K$, $e_i K$, ) - - - // pause - - // [\ ] - - // [\ ] - - // [$lambda = (lambda_n, dots, lambda_0)$ sequenza di etichette di incroci di $D$] - - // v(1.5em) - - // $ - // A_i^lambda colon.eq E_lambda_i S_lambda_(i-1) dots.c space S_lambda_0 - // #h(2em) - // B_i^lambda colon.eq e_lambda_i S_lambda_(i-1) dots.c space S_lambda_0 - // $ }) - - - == Considerazioni preliminari #let dotss = $space dots.c space$ @@ -755,8 +568,6 @@ _Dimostrazione._ show math.equation: set text(size: 16pt) - // v(1em) - only( "1-4", $ @@ -818,8 +629,6 @@ _Dimostrazione._ show math.equation: set text(size: 16pt) - // v(1em) - $ & L[K] + cancel(L[S_0 K]) = z( L[E_0 K] + L[e_0 K] ) \ -(& cancel(L[S_0 K]) + cancel(L[S_1 S_0 K])) = -z( L[E_1 S_0 K] + L[e_1 S_0 K] ) \ @@ -870,7 +679,6 @@ _Dimostrazione._ ) #pin(2) )$ - // pinit-highlight(1, 2, fill: color.rgb("#0002"), dy: -1.75em, extended-height: 3.25em) pinit-place( (1,), dy: 1.25em, @@ -988,150 +796,6 @@ _Dimostrazione._ pinit-highlight(1, 2, dy: -1.75em, dx: 3pt, extended-height: 3em, fill: rgb("#0002")) }) -// // #slide({ -// // { -// // 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: 16pt) - -// // // v(1em) - -// // $ -// // & L[K] + cancel(L[S_0 K]) = z( L[E_0 K] + L[e_0 K] ) \ -// // -(& cancel(L[S_0 K]) + cancel(L[S_1 S_0 K])) = -z( L[E_1 S_0 K] + L[e_1 S_0 K] ) \ -// // & cancel(L[S_1 S_0 K]) + cancel(L[S_2 S_1 S_0 K]) = z( L[E_1 S_1 S_0 K] + L[e_1 S_1 S_0 K]) \ -// // & space dots.v \ -// // (-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)^n L[hat(K)(p)] = -// // z sum_(i=0)^n (-1)^i (L[A_i^lambda K] + L[B_i^lambda K]) -// // )$ - -// // // show math.equation: set text(size: 13pt) -// // // h(1fr) -// // // $display( -// // // (thin #grid( -// // // rows: 2, -// // // gutter: 1em, -// // // $A_i^lambda colon.eq E_lambda_i S_lambda_(i-1) dots.c space S_lambda_0$, -// // // $B_i^lambda colon.eq e_lambda_i S_lambda_(i-1) dots.c space S_lambda_0$, -// // // )) -// // // )$ -// // }) - -// #let hl(bg: gray.mix(white), body) = move(dx: -5pt, dy: 1pt, rect( -// fill: bg, -// outset: (top: 0.25em, bottom: 0.5em), -// radius: 0.25em, -// body, -// )) - -// #slide({ -// { -// 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: 16pt) - -// // v(1em) - -// $ -// & L[K] + cancel(L[S_0 K]) = z( L[E_0 K] + L[e_0 K] ) \ -// -(& cancel(L[S_0 K]) + cancel(L[S_1 S_0 K])) = -z( L[E_1 S_0 K] + L[e_1 S_0 K] ) \ -// & cancel(L[S_1 S_0 K]) + cancel(L[S_2 S_1 S_0 K]) = z( L[E_1 S_1 S_0 K] + L[e_1 S_1 S_0 K]) \ -// & space dots.v \ -// (-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)^(n+1) L[hat(K)(p)] + -// z sum_(i=0)^n (-1)^i (L[A_i^lambda K] + L[B_i^lambda K]) -// )$ -// }) - -// #slide({ -// { -// 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: 16pt) - -// // v(1em) - -// $ -// & L[K] + cancel(L[S_0 K]) = z( L[E_0 K] + L[e_0 K] ) \ -// -(& cancel(L[S_0 K]) + cancel(L[S_1 S_0 K])) = -z( L[E_1 S_0 K] + L[e_1 S_0 K] ) \ -// & cancel(L[S_1 S_0 K]) + cancel(L[S_2 S_1 S_0 K]) = z( L[E_1 S_1 S_0 K] + L[e_1 S_1 S_0 K]) \ -// & space dots.v \ -// (-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) - -// v(2pt) - -// h(4.4em) -// $display( -// => L[K] = -// #hl( -// bg: white, -// $display( -// (-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])))$ -// }) - -// #slide({ -// { -// 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: 16pt) - -// // v(1em) - -// $ -// & L[K] + cancel(L[S_0 K]) = z( L[E_0 K] + L[e_0 K] ) \ -// -(& cancel(L[S_0 K]) + cancel(L[S_1 S_0 K])) = -z( L[E_1 S_0 K] + L[e_1 S_0 K] ) \ -// & cancel(L[S_1 S_0 K]) + cancel(L[S_2 S_1 S_0 K]) = z( L[E_1 S_1 S_0 K] + L[e_1 S_1 S_0 K]) \ -// & space dots.v \ -// (-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] = #hl($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, fill: white) -// // 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( @@ -1147,8 +811,6 @@ _Dimostrazione._ Definiamo ora il polinomio $L_(K)(a,z)$ 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)$ @@ -1177,8 +839,6 @@ _Dimostrazione._ Definiamo ora il polinomio $L_(K)(a,z)$ 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)$ @@ -1199,14 +859,11 @@ _Dimostrazione._ 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_D (lambda(p)) - // display((-1)^(abs(lambda(p))+1) L[hat(K)(p)] + z sum_K (lambda(p))) ) #rect(stroke: none, height: 3.5em, width: 1pt)$ ][ Definiamo ora il polinomio $L_(K)(a,z)$ 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)$ @@ -1241,8 +898,6 @@ _Dimostrazione._ == Ipotesi induttiva #slide[ - - #set par(spacing: 1.5em) #set list(spacing: 1.5em) #set enum(numbering: "a)", spacing: 1.5em) @@ -1376,6 +1031,3 @@ Per il progetto di Lab. Comp. abbiamo scritto una *nuova implementazione* in _Py *Grazie per l'attenzione* ] -== Appendice - -