*Def.* $K_0, K_1 subset bb(R)^3$ sono *equivalenti* se esiste un'*isotopia ambiente* che porta uno nell'altro, ovvero esiste $H : bb(R)^3 times [0, 1] arrow bb(R)^3$ continua, tale che:
// *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:
- $forall t in [0, 1], H(dot, t)$ è un omeomorfismo
@ -86,52 +88,62 @@ e posta $H_t (x) colon.eq H(x, t)$ si ha:
// *Fatto (Crowell).* Dato un nodo $K subset bb(R)^3$, $K$ è *nodo (tame)* $<=>$ $K$ è *poligonale*.
== Proiezioni e Diagrammi
#pause
*Fatto.* Sia $L subset bb(R)^3$ link poligonale, allora esiste un aperto denso $U subset bb(S)^2$ tale che $forall v in U$ e detta $pi_v : bb(R)^3 arrow v^perp$ la proiezione sul piano $v^perp$ come in figura, abbiamo che:
*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.
2. Se $x in pi_v (L)$ è tale che $abs(pi^(-1)(x)) > 1$, ovvero è un punto *singolare*, allora:
- $x in pi_v (L) subset v^perp$ tale che $abs(pi^(-1)_v (x)) = 2$ sono detti *incroci*.
- $pi_v^(-1)(x)$ non contiene vertici di $L$
// == Proiezioni e Diagrammi
- $abs(pi^(-1)(x)) = 2$ ovvero è un *punto doppio*, questi sono gli *incroci* della proiezione.
// 2. Se $x in pi_v (L)$ è tale che $abs(pi^(-1)(x)) > 1$, ovvero è un punto *singolare*, allora:
Gli altri punti sono detti *regolari*.
],
)
// - $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*.
// ],
// )
== Proiezioni e Diagrammi
*Def.* Un *diagramma* $D subset bb(R)^2$ di un link $L subset bb(R)^3$ è l'immagine di $L$ attraverso una proiezione regolare decorata con l'informazione sopra/sotto ad ogni incrocio.
#pad(
top: 1em,
top: 1.5em,
grid(
columns: (1fr, auto),
gutter: 1em,
align: top,
align: horizon,
[
*Def.* Le mosse I, II, III in figura sono dette *mosse di Reidemeister*.
*Teorema (di Reidemeister).* Due diagrammi di link _equivalenti_ sono collegati da una _successione finita mosse di Reidemeister_ e isotopie planari.
\
*Teorema (di Reidemeister).* Due diagrammi di link _equivalenti_ sono collegati da una _successione finita di mosse di Reidemeister_ e isotopie planari.
*Def.* $D_1, 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.
*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.
@ -140,77 +152,77 @@ 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
*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.
// *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.
// Ovvero un nodo in forma discendente è _equivalente_ ad uno composto solo da riccioli.
\
// \
#pause
// #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:
// _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:
*Def.* Definiamo *il segno* di un incrocio di un diagramma come segue:
*Def.* 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$
-(2a + a^(-1)) + (1 + a^(-2)) z + (a + a^(-1)) z^2
$,
)
})
// == 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
@ -457,11 +595,21 @@ $
== Considerazioni preliminari
#slide({
[*Def.* Sia $K$ un diagramma di un nodo, $p in K$ un punto di partenza direzionato e sia $lambda = (lambda_n, dots, lambda_0)$ una sequenza di etichette di incroci di $K$:]
#align(center)[
Il *nodo banale standard* (o in _forma discendente_) associato $K$ è $hat(K)(cal(U), p)$:
*Def (induttiva di $L_K$).* Il polinomio $L_(K)(a,z)$ è definito induttivamente come segue:
#slide(
repeat: 2,
self => [
#let (alternatives,) = utils.methods(self)
#alternatives[
// la definizione è sotto perché gli enumerate non vanno d'accordo con le figure
*Def (induttiva di $L_K$).* Il polinomio $L_(K)(a,z)$ è definito induttivamente come segue:
1. Se $K$ è in _forma discendente_: $L_K (a, z) colon.eq a^w(K)$
// la definizione è sotto perché gli enumerate non vanno d'accordo con le figure
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$)
1. Se $K$ è in _forma discendente_: $L_K (a, z) colon.eq a^w(K)$
3. Altrimenti $K = K_1 union dotss union K_n$:
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$)
#v(0.75em)
3. Altrimenti $K = K_1 union dotss union K_n$:
a) #h(0.35em) Se $n > 1$: $display(
L_K (a, z) colon.eq
1 / (2n)
sum_(i=1)^n sum_(q=p_i, overline(p)_i)
((-1)^(abs(lambda(q))+1) delta L_(K_i) L_(K - K_i) + z sum_K (lambda(q)))
)$
#v(0.75em)
#v(1.5em)
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)))
)$
b) #h(0.35em) Se $n=1$: $display(
L_K (a, z) colon.eq
1 / 2
sum_(q = p, overline(p))
((-1)^(abs(lambda(q))+1) L_(hat(K)(q)) + z sum_K (lambda(q)))
)$
#v(1.5em)
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))
)$
][
*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 / (2n)
sum_(i=1)^n sum_(q=p_i, overline(p)_i)
((-1)^(abs(lambda(q))+1) delta L_(K_i) L_(K - K_i) + z sum_K (lambda(q)))
)$
#v(1.5em)
b) #h(0.35em) Se $n=1$: $display(
L_K (a, z) colon.eq
1 / 2
sum_(q = p, overline(p))
((-1)^(abs(lambda(q))+1) L_(hat(K)(q)) + z sum_K (lambda(q)))
)$
]
],
)
== Dimostrazione buona definizione
@ -718,13 +907,12 @@ $
#slide[
L'ipotesi induttiva che useremo nel corso della dimostrazione è la seguente:
#set par(spacing: 1.5em)
#set list(spacing: 1.5em)
#set enum(numbering: "a)", spacing: 1.5em)
Per ogni diagramma di link $K$ con $< N$ incroci e per diagrammi contenenti $#skein.over-twist-large$ con $< N$ incroci:
*Def (Ipotesi induttiva).* Dimostreremo induttivamente le seguenti proprietà: per ogni diagramma di link $K$ con $< N$ incroci e per diagrammi contenenti $#skein.over-twist-large$ con $< N$ incroci:
1. $L_K$ è ben definito (non dipende dalla scelta di punto base).
@ -772,21 +960,21 @@ $
== Implementazione in Python
#show raw: set text(size: 15pt)
#set par(spacing: 1.25em)
#set list(spacing: 1.25em)
#set enum(numbering: "a)", spacing: 1.25em)
#set par(spacing: 1.5em)
#set list(spacing: 1.5em)
#set enum(numbering: "a)", spacing: 1.5em)
Implementazioni esistenti:
- *KnotScape*: scritto in C, degli anni '90.
- *KnotScape*: scritto in C, degli anni \~1990.
- *KnotTheory*: ultimo aggiornamento \~2011, per Mathematica.
- *KnotTheory*: ultimo aggiornamento \~2010, per Mathematica.
#pause
Per il progetto di Lab. Comp. abbiamo scritto una *nuova implementazione* in _Python_ open source:
- Rappresentazione di nodi attraverso codici *PD* e *SG*.
- Rappresentazione di nodi attraverso *codici PD* e *SG*.
- Algoritmo per il calcolo di $L_K$ e $F_K$.
@ -798,4 +986,9 @@ Per il progetto di Lab. Comp. abbiamo scritto una *nuova implementazione* in _Py