diff --git a/out/tesi-triennale.pdf b/out/tesi-triennale.pdf index a80b775..d5b098f 100644 Binary files a/out/tesi-triennale.pdf and b/out/tesi-triennale.pdf differ diff --git a/src/main.typ b/src/main.typ index 8200072..801db9b 100644 --- a/src/main.typ +++ b/src/main.typ @@ -1,6 +1,8 @@ #import "theme.typ": * +#import "prelude.typ": * + #import "@preview/cetz:0.3.4" -#import "skein.typ": skein +#import "skein.typ": * #import "@preview/drafting:0.2.2": set-margin-note-defaults, inline-note, margin-note, set-page-properties #import "@preview/colorful-boxes:1.1.0": stickybox @@ -8,7 +10,7 @@ rect: (..kwargs, content) => rect( ..kwargs, { - set text(size: 9pt) + set text(size: 8pt, font: "Open Sans") set par(leading: 0.5em, justify: false) content }, @@ -16,12 +18,8 @@ side: right, ) - // Prelude -#let kL = $L$ -#let dotss = $space dots.c space$ - #show: ams-article.with( paper-size: "a4", title: [Il polinomio di Kauffman, \ un Invariante di Isotopia Regolare], @@ -40,10 +38,8 @@ bibliography: bibliography("refs.bib"), ) - #set-page-properties(margin-right: 4cm) - // Content = Introduzione @@ -66,6 +62,8 @@ In questa tesi studieremo un invariante di isotopia regolare chiamato polinomio == Introduzione alla Teoria dei Nodi +Ora introdurremo le definizioni di nodi e link ed alcuni risultati di fondazione della teoria dei nodi che ci servono per poter parlare ad esempio dei diagrammi planari e dell'isotopia regolare. + #definition[ Siano $X, Y$ due spazi topologici, allora un'applicazione continua $f : X arrow Y$ si dice *embedding* se $X$ è omeomorfo a $f(X) subset Y$ con la topologia di sottospazio indotta da $Y$. ] @@ -89,12 +87,176 @@ In questa tesi studieremo un invariante di isotopia regolare chiamato polinomio $U inter K$, $<->$, ${ 0 } times [0, 1]$, ) } + + inoltre si dice *localmente piatto* (ovunque) se lo è in ogni punto di $X$. ] #let locally-flat-def = ref-link()[localmente piatto] #definition[ - Un *nodo tame* è un sottoinsieme $K subset bb(R)^3$ tale che esiste un #embedding-def $f : bb(S)^1 arrow.hook bb(R)^3$ e $forall p in K, f$ è #locally-flat-def in $p$. + Un *nodo tame* è un sottoinsieme $K subset bb(R)^3$ tale che esiste un #embedding-def $f : bb(S)^1 arrow.hook bb(R)^3$ #locally-flat-def. In questo caso $f$ è anche detto *embedding tame*. +] + +#todo[ + Disegnino nodi non tame +] + +#definition[ + Due nodi $K_0, K_1 subset bb(R)^3$ sono *equivalenti* se esiste un'*isotopia ambiente* $H$ che porta uno nell'altro, ovvero esiste un'applicazione continua $H : bb(R)^3 times [0, 1] arrow bb(R)^3$ tale che + + - $forall t in [0, 1], H(dot, t)$ è un omeomorfismo + + - $H_0 = id_(bb(R)^3)$ + + - $H_1(K_0) = K_1$ +] + +Inoltre vale che se due nodi sono equivalenti allora abbiamo che $bb(R)^3 without K_0$ è omeomorfo a $bb(R)^3 without K_1$. + +#definition[ + Un *nodo poligonale* è un nodo equivalente ad un'unione finita di seguenti lineari. +] + +#fact(name: [Cromwell])[ + Dato un nodo $K subset bb(R)^3$, $K$ è tame $<=>$ $K$ è poligonale. +] + +#definition[ + Il *nodo banale* è la classe di equivalenza del bordo di un triangolo equilatero piano. +] + +Possiamo generalizzare tutte le definizioni per i nodi a *link*, sostituendo $bb(S)^1$ con $bb(S)^1 union dots.c union bb(S)^1$ con le opportune modifiche. + +#definition[ + Dato $L subset bb(R)^3$ è detto *link* se $exists$ #embedding-def $f : bb(S)^1 union dots.c union bb(S)^1 arrow bb(R)^3$ #locally-flat-def tale che l'immagine sia $L$. +] + +#definition[ + Due link $L_1, L_2$ sono *combinatorialmente equivalenti* se si ottengono uno dall'altro tramite un numero finito delle seguenti mosse: + + 1. Aggiunta/rimozione di vertici + + #todo[disegnino 1] + + 2. Dato $Delta subset bb(R)^3$ triangolo piano tale che $Delta inter L$ sia un lato di $Delta$ ed un segmento di $L$ allora una $Delta$-move è la seguente + + #todo[disegnino 2] +] + +#fact[ + Due link poligonali $L_1, L_2 subset bb(R)^3$ sono equivalenti $<=>$ sono combinatorialmente equivalenti +] + +== Proiezioni e Diagrammi + +Dato $v in bb(S)^2 subset bb(R)^3$, possiamo definire la proiezione $pi_v : bb(R)^3 arrow v^perp$ sul piano ortogonale a $v$ come segue + +#todo[disegnino] + +#definition(name: [Punti regolare, singolare, doppio])[ + Dato $L subset bb(R)^3$, $v in bb(S)^2$ e $pi = pi_v : bb(R)^3 arrow v^perp$, un punto $x in pi(L) subset v^perp$ è + + - *regolare* se $abs(pi^(-1)(x)) = 1$ + + - *singolare* se $abs(pi^(-1)(x)) > 1$ + + - *doppio* se $abs(pi^(-1)(x)) = 2$ +] + +#fact[ + Dato un link poligonale $L subset bb(R)^3$, esiste un aperto denso $U subset bb(S)^2$ tale che $forall v in U$, $pi_v(L)$ soddisfa + + - Non esistono segmenti di $L$ paralleli a $v$. + + - Se $x in pi_v(L)$ singolare allora $pi_v^(-1)(x)$ non contiene vertici, $x$ è un punto doppio ed è intersezione trasversa delle immagini di due segmenti. +] + +Dato $L subset bb(R)^3$ link poligonale, esiste una proiezione regolare $pi(L) subset bb(R)^2$, ovvero con un numero finito di punti singolari, ciascuno dei quali è un punto doppio e di intersezione trasversa e viene detto *incrocio*. + +#definition[ + Un *diagramma* $D subset bb(R)^2$ di un link $L subset bb(R)^3$ è una proiezione regolare di $L$ decorata con l'informazione sopra/sotto ad ogni incrocio. +] + +#fact[ + Due link con lo stesso diagramma sono equivalenti. +] + +#todo[ + Vari commenti +] + +#theorem(name: [Reidemeister])[ + Due diagrammi di link equivalenti sono collegati da una successione finita di isotopie planari e mosse di tipo R1, R2, R3 (e loro inverse). +] + +#definition[ + L'insieme di isotopie planari e mosse R1, R2, R3 (e loro inverse) sono le *mosse di Reidemeister*. +] + +#todo[Commenti sul teorema di Reidemeister, $phi$ invariante a meno di mosse di Reidemeister ci permette di dire che due link non sono equivalenti] + +#fact[ + Come abbiamo generalizzato nodi a link possiamo ripetere tutto anche aggiungendo un'orientazione e studiare *nodi e link orientati* ed esiste anche una versione orientata del teorema di Reidemeister. +] + +== Operazioni su Diagrammi + +#definition[ + Dato un link $L subset bb(R)^3$ possiamo definire + + - Il *mirror* $m(L) colon.eq rho(L)$ dove $rho : bb(R)^3 arrow bb(R)^3$ è la riflessione rispetto al piano di proiezione. In particolare dato un diagramma è lo stesso diagramma con l'informazione sopra/sotto scambiata. + + Se $L$ è anche _orientato_ allora possiamo definire + + - Il *reverse* $r(L)$ che è lo stesso $L$ con l'orientazione opposta su ogni componente. + + - L'*inverso* $-L colon.eq m(r(L)) = r(m(L))$. +] + +#definition[ + Se $K subset bb(R)^3$ e $K tilde.not m(K)$ allora diciamo che $K$ è *chirale*, altrimenti è detto *anfichirale*. +] + += Isotopia Regolare + +#todo[ + Aggiungere più commenti +] + +Il teorema di Reidemeister ci dice che se due nodi sono equivalenti per isotopia ambiente allora i loro diagrammi lo sono anche a meno di isotopie planari e mosse di Reidemeister R1, R2, R3. Possiamo studiare cosa succede se ci restringiamo solo alle isotopie planari e le ultime due mosse, questo ci dà una nuova equivalenza tra nodi più forte dell'isotopia ambiente. + +#definition[ + Due nodi o link $K_1, K_2$ si dicono equivalenti a meno di *isotopia regolare* se due loro diagrammi sono equivalenti a meno di isotopie planari e solo mosse R2 ed R3. +] + +#todo[ + Disegnino con le mosse +] + +Una prima cosa che possiamo notare è che tutte le mosse R1 possono essere "fattorizzate" in modo da averle tutte raggruppate insieme. #margin-note[Magari dimostrare questa cosa] + +#todo[ + Altro disegnino +] + +Questo ci suggerisce un primo invariante di isotopia regolare per link orientatati, per prima cosa introduciamo il segno di un incrocio. + +#definition[ + Dato un incrocio di un link orientato ci possono essere due casi + + $ + epsilon(#skein-generic(direction: (+1, +1))) = +1 + #h(2em) + epsilon(#skein-generic(direction: (+1, -1))) = -1 + $ +] + +#definition[ + Dato $K$ link orientato, il *writhe* $w(K)$ (o numero di avvolgimento) è dato dalla somma dei segni dei suoi crossing + + $ + w(K) colon.eq sum_c epsilon(c) + $ ] = Relazioni Skein diff --git a/src/prelude.typ b/src/prelude.typ new file mode 100644 index 0000000..bd4131c --- /dev/null +++ b/src/prelude.typ @@ -0,0 +1,139 @@ +#let kL = $L$ +#let dotss = $space dots.c space$ + +#let statement-style = (name, numbered: false) => it => { + set align(start) + block({ + strong({ + it.supplement + if numbered and it.numbering != none { + [ ] + // current chapter and section + + [#( + ..counter(heading).get().slice(0, 2).map(it => str(it)), + numbering(it.numbering, ..it.counter.at(it.location())), + ).join(".")] + } + if name != none { + [ (#name)] + } + [.] + }) + [ ] + it.body + }) +} + +#let definition(body, name: none) = { + show figure: statement-style(name, numbered: false) + figure( + body, + kind: "definition", + supplement: [Definizione], + ) +} + +#let fact(body, name: none) = { + show figure: statement-style(name, numbered: false) + figure( + body, + kind: "fact", + supplement: [Fatto], + ) +} + +#let proposition(body, name: none, numbered: true) = { + show figure: statement-style(name, numbered: numbered) + figure( + body, + // kind: "proposition", + kind: "proposition", + supplement: [Proposizione], + numbering: if numbered { "1" }, + ) +} + +#let lemma(body, name: none, numbered: true) = { + show figure: statement-style(name, numbered: numbered) + figure( + body, + // kind: "lemma", + kind: "proposition", + supplement: [Lemma], + numbering: if numbered { "1" }, + ) +} + +#let theorem(body, name: none, numbered: true) = { + show figure: statement-style(name, numbered: numbered) + figure( + body, + kind: "theorem", + supplement: [Teorema], + numbering: if numbered { "1" }, + ) +} + +#let proof(body) = block( + spacing: 11.5pt, + { + emph[Proof.] + [ ] + body + h(1fr) + + // Add a word-joiner so that the proof square and the last word before the + // 1fr spacing are kept together. + sym.wj + + // Add a non-breaking space to ensure a minimum amount of space between the + // text and the proof square. + sym.space.nobreak + + $square$ + }, +) + +#let ref-link(target, content) = { + show link: it => { + set text(luma(10%)) + + // remove underline for this + show underline: it => it.body + + it + } + + link(target, emph(content)) +} + +#let todo-color = color.mix((red, 10%), (yellow, 90%)) +#let todo(content) = block( + breakable: false, + grid( + rows: 2, + align: left, + block( + fill: todo-color.desaturate(20%), + inset: (x: 0.5em, y: 0.35em), + radius: (top: 0.25em), + { + set text(fill: black.transparentize(15%), size: 8pt, font: "Open Sans") + [*TODO*] + }, + ), + block( + width: 100%, + fill: todo-color.desaturate(40%), + inset: (x: 0.5em, y: 0.5em), + radius: (bottom: 0.25em, top-right: 0.25em), + { + set text(fill: black.transparentize(15%), size: 9pt, font: "Open Sans") + content + }, + ), + ), +) + + diff --git a/src/skein.typ b/src/skein.typ index 43db1df..caa304b 100644 --- a/src/skein.typ +++ b/src/skein.typ @@ -90,3 +90,38 @@ draw-strand({ hobby((1.5, +1), (1, +1), (-0.5, 0), (-0.1, -1), (0, -1)) }) }), ) + + +#let skein-generic( + kind: "over", + direction: (+1, +1), + arrows: (true, true), + styles: ((:), (:)), +) = { + skein-canvas({ + import cetz.draw: * + if kind == "over" { + draw-strand({ line((-1, -1), (1, 1)) }, style: styles.at(1)) + draw-strand({ line((-1, 1), (1, -1)) }, style: styles.at(0)) + } + if kind == "under" { + draw-strand({ line((-1, 1), (1, -1)) }, style: styles.at(0)) + draw-strand({ line((-1, -1), (1, 1)) }, style: styles.at(1)) + } + + if arrows.at(0) { + if direction.at(0) == +1 { + line((1 - arrow-size, -1), (1, -1), (1, -1 + arrow-size), ..styles.at(0)) + } else { + line((-1, 1 - arrow-size), (-1, 1), (-1 + arrow-size, 1), ..styles.at(0)) + } + } + if arrows.at(1) { + if direction.at(1) == +1 { + line((1 - arrow-size, 1), (1, 1), (1, 1 - arrow-size), ..styles.at(1)) + } else { + line((-1, -1 + arrow-size), (-1, -1), (-1 + arrow-size, -1), ..styles.at(1)) + } + } + }) +} diff --git a/src/theme.typ b/src/theme.typ index c412fcb..510b0b1 100644 --- a/src/theme.typ +++ b/src/theme.typ @@ -9,7 +9,10 @@ #let heading-level-size(level) = normal-size * calc.pow(heading-factor, 4 - level) -#let fact-counter = counter("fact") +// #let fact-counter = counter("fact") + +#let chapter-counter = counter("chapter") +#let section-counter = counter("section") // This function gets your whole document as its `body` and formats // it as an article in the style of the American Mathematical Society. @@ -131,8 +134,10 @@ line(length: 100%), ) } else { - number - it.body + block({ + number + it.body + }) } v(heading-size, weak: true) @@ -216,7 +221,7 @@ rows: 2, align: left, block( - fill: orange.transparentize(50%), + fill: red.mix((yellow, 33%)).desaturate(20%), inset: 0.5em, { set text(size: 9pt) @@ -225,13 +230,12 @@ ), block( width: 100%, - fill: orange.transparentize(75%), + fill: red.mix((yellow, 33%)).desaturate(40%), inset: (x: 0.25em, y: 0.5em), it, ), ) - // Display the title and authors. v(35pt, weak: true) align( @@ -267,11 +271,10 @@ // Display the bibliography, if any is given. if bibliography != none { - show std.bibliography: set text(footnote-size) - show std.bibliography: set block(above: 11pt) + pagebreak() { - colbreak() + // colbreak() show heading: it => { set text(size: heading-level-size(2)) block(it.body) @@ -283,95 +286,3 @@ } } -#let definition(body, name: none, numbered: true) = { - show figure: it => { - set align(start) - block({ - strong({ - it.supplement - if it.numbering != none { - [ ] - numbering(it.numbering, ..it.counter.at(it.location())) - } - if name != none { - [ (#name)] - } - [.] - }) - [ ] - it.body - }) - } - - figure( - body, - kind: "fact", - supplement: [Definizione], - numbering: if numbered { "1" }, - ) -} - -#let fact(body, numbered: true) = figure( - body, - // kind: "fact", - kind: "fact", - supplement: [Fatto], - numbering: if numbered { "1" }, -) - -#let proposition(body, numbered: true) = figure( - body, - // kind: "proposition", - kind: "fact", - supplement: [Proposizione], - numbering: if numbered { "1" }, -) - -#let lemma(body, numbered: true) = figure( - body, - // kind: "lemma", - kind: "fact", - supplement: [Lemma], - numbering: if numbered { "1" }, -) - -#let theorem(body, numbered: true) = figure( - body, - // kind: "theorem", - kind: "fact", - supplement: [Theorem], - numbering: if numbered { "1" }, -) - -#let proof(body) = block( - spacing: 11.5pt, - { - emph[Proof.] - [ ] - body - h(1fr) - - // Add a word-joiner so that the proof square and the last word before the - // 1fr spacing are kept together. - sym.wj - - // Add a non-breaking space to ensure a minimum amount of space between the - // text and the proof square. - sym.space.nobreak - - $square$ - }, -) - -#let ref-link(target, content) = { - show link: it => { - set text(luma(10%)) - - // remove underline for this - show underline: it => it.body - - it - } - - link(target, emph(content)) -}