Definiamo ora il polinomio $L_(K)(a,z)$ induttivamente come segue:
Definiamo ora il polinomio $L_(D)(a,z)$ induttivamente come segue:
1. Se $K$ è in _forma discendente_: $L_K (a, z) colon.eq a^w(K)$
1. Se $D$ è in _forma discendente_: $L_D (a, z) colon.eq a^w(D)$
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)$
2. Se $D = D_1 union D_2$: $L(D_1 union D_2) colon.eq delta L(D_1) L(D_2)$ #h(1fr) $("con " delta colon.eq (a + 1 slash a) / z - 1)$
3. Altrimenti $K = K_1 union dotss union K_n$:
3. Altrimenti $D = D_1 union dotss union D_n$:
#v(0.75em)
a) #h(0.35em) Se $n > 1$: $display(
L_K (a, z) colon.eq
L_D (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)))
((-1)^(abs(lambda(p_i))+1) delta L_(D_i) L_(D - D_i) + z sum_D (lambda(p_i)))
) #rect(stroke: none, height: 3.5em, width: 1pt)$
#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_D (lambda(p))
L_D (a, z) colon.eq
(-1)^(abs(lambda(p))+1) L[hat(D)(p)] + z sum_D (lambda(p))
) #rect(stroke: none, height: 3.5em, width: 1pt)$
][
Definiamo ora il polinomio $L_(K)(a,z)$ induttivamente come segue:
Definiamo ora il polinomio $L_(D)(a,z)$ induttivamente come segue:
1. Se $K$ è in _forma discendente_: $L_K (a, z) colon.eq a^w(K)$
1. Se $D$ è in _forma discendente_: $L_D (a, z) colon.eq a^w(D)$
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)$
2. Se $D = D_1 union D_2$: $L(D_1 union D_2) colon.eq delta L(D_1) L(D_2)$ #h(1fr) $("con " delta colon.eq (a + 1 slash a) / z - 1)$
3. Altrimenti $K = K_1 union dotss union K_n$:
3. Altrimenti $D = D_1 union dotss union D_n$:
#v(0.75em)
a) #h(0.35em) Se $n > 1$: $display(
L_K (a, z) colon.eq
L_D (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)))
((-1)^(abs(lambda(q))+1) delta L_(D_i) L_(D - D_i) + z sum_D (lambda(q)))
) #rect(stroke: none, height: 3.5em, width: 1pt)$
#v(1.5em)
b) #h(0.35em) Se $n=1$: $display(
L_K (a, z) colon.eq
L_D (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)))
((-1)^(abs(lambda(q))+1) L_(hat(D)(q)) + z sum_D (lambda(q)))
) #rect(stroke: none, height: 3.5em, width: 1pt)$
]
@ -902,19 +956,19 @@ _Dimostrazione._
#set list(spacing: 1.5em)
#set enum(numbering: "a)", spacing: 1.5em)
*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:
*Ipotesi induttiva.* Dimostreremo induttivamente le seguenti proprietà: per ogni diagramma di link $D$ 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).
1. $L_D$ è ben definito (non dipende dalla scelta di punto base).
2. $L_K$ verifica gli assiomi:
2. $L_D$ verifica gli assiomi:
- $L[K] + L[S_i K] = z ( L[e_i K] + L[E_i K] )$
- $L[D] + L[S_i D] = z ( L[e_i D] + L[E_i D] )$
- $L[#skein.over-twist-large] = a L [#skein.strand-large]$, $L[#skein.under-twist-large] = a^(-1) L [#skein.strand-large]$
3. $L_K$ è invariante per mosse di tipo II e III che non aumentano il numero di incroci.
3. $L_D$ è invariante per mosse di tipo II e III che non aumentano il numero di incroci.
4. Per certi diagrammi vale $L_K = a^w(K)$
4. Per certi diagrammi vale $L_D = a^w(D)$.
]
== Dimostrazione buona definizione
@ -926,9 +980,9 @@ _Dimostrazione._
_Dimostrazione._
1. $L_K$ è ben definito (non dipende dalla scelta di punto base)
1. $L_D$ è ben definito (non dipende dalla scelta di punto base)
- Invarianza $sum_K (lambda)$ per rotazioni
- Invarianza $sum_D (lambda(p))$ per rotazioni
- Caso più componenti
@ -936,45 +990,38 @@ _Dimostrazione._
- Splice di un nodo in forma discendente
- Assiomi di $L_K$ per nodi in forma discendente
- Assiomi di $L_D$ per nodi in forma discendente
2. $L_K$ verifica gli assiomi
2. $L_D$ verifica gli assiomi
3. $L_K$ è invariante per mosse di tipo II e III che non aumentano il numero di incroci
3. $L_D$ è invariante per mosse di tipo II e III che non aumentano il numero di incroci
4. Per certi diagrammi vale $L_K = a^w(K)$
4. Per certi diagrammi vale $L_D = a^w(D)$.
]
== Dimostrazione buona definizione
= Laboratorio Computazionale
== Implementazione in Python
#show raw: set text(size: 15pt)
#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 \~1990.
- *KnotScape* -- scritto in C, degli anni \~1990
- *KnotTheory*: ultimo aggiornamento \~2010, per Mathematica.
- *KnotTheory* -- ultimo aggiornamento \~2010, per Wolfram Mathematica
#pause
Per il progetto di Lab. Comp. abbiamo scritto una *nuova implementazione* in _Python_ open source:
Per il progetto di Laboratorio Computazionale abbiamo scritto una *nuova implementazione* in *Python* open source:
- Rappresentazione di nodi attraverso *codici PD* e *SG*.
- Strutture dati per la rappresentazione di nodi con *codici P.D.* e *S.G.*
- Algoritmo per il calcolo di $L_K$ e $F_K$.
- Algoritmo per il calcolo di $L_D$ e $F_D$
#pause
- Verifica di tutti i polinomi contenuti nel *database di KnotInfo*.
- Verifica di tutti i polinomi contenuti nel *database di KnotInfo* (\~7K tra nodi e link, \~20min)
#pause
- _Trovato un errore nel nodo_ $10_125$: è presente $F[m(10_125)]$ invece di $F[10_125]$ ovvero $F[10_125](1 slash a, z)$. #h(1fr)