06-1350/Syzygies in Asymptote
cheap herbal phentermine valium vs vicodin casino gaming online 37 5mg cheap phentermine buy cheap com h1 phentermine phentermine ripway casino game online poker casino gambling line online propecia side effects casino riverside borgata casino casino fun online play casino gambling guide online casino hotel palm valium without prescription order propecia online order cheap phentermine online overnite phentermine cheap order by valium iv casino online slot casino com online bonus casino casino flash online casino free online slot get phentermine cheap valium use cheap phentermine pill cheap order phentermine prescription casino gaming cheap cod extremely phentermine buy link nowcom online xanax casino greektown buy link online sitekreatorcom xanax casino chip indication of valium cheap prescription diet pill phentermine canadian casino online valium dosage casino choctaw propecia study valium half life valium side effects buy link onlinefansto xanax buy doctor xanax bingo casino free game online play propecia online brand buy online xanax cheap phentermine without rx casino free online play buy online upjohn xanax ativan anxiety long term side effects of propecia casino hotel las vegas propecia impotence casino new york ativan birth defect cheap phentermine no prior prescription cheapest cheap phentermine casino deposit new no online ativan dose lethal buy xanax legally ativan and alcohol viagra medication prescription levitra cialis propecia casino craps online casino thunder valley casino online play casino online wagering ativan forum buy overseas xanax casino in las vegas casino links casino on net ativan for depression casino golden online palace canada cheap phentermine ativan addiction buy xanax cod propecia before and after buy cheap lowest phentermine price casino grand online casino free game online valium online ativan attack medication online order panic buy propecia online how propecia works buy insurance medication without xanax casino eagle soaring valium sale casino gambling internet online cheap online order phentermine online casino game cheap phentermine no prescription needed buy buy target xanax xanax casino vegas propecia result casino deposit no propecia and woman buy link member spacesmsncom xanax casino slot online prescription propecia baldness hair lasercomb loss propecia casino news online casino commerce casino payout addicted to ativan casino hard rock seminole casino pechanga propecia sale propecia picture propecia cost buy xanax online pay by check casino fortunelounge online 2mg buy generic xanax buy xanax overnight propecia work casino online poker casino hotel paris propecia body building advice casino online cheap phentermine no prescription required propecia vs rogaine picture pill valium casino forum online ativan ativan buy cheap online valium versus xanax ativan benefit casino game online play cheap est phentermine casino directory gambling online casino internet what does valium do ativan and pregnancy 2005com buy link onlinebuy xanax casino download free online blogspirit cheap com online phentermine buy cheap link onlinecom xanax xanax does effects propecia side work capri casino isle casino gambling advanced casino conscious gambling investor online roulette system tax technique ultimate winning ativan effects hair loss propecia best price for propecia ativan combining neurontin tramadol get propecia cache casino creek order propecia cheap phentermine table casino guide online casino online review california casino casino free valium ativan casino poker buy online prescription propecia vaniqa viaga xenical propecia patent propecia effectiveness cheap phentermine online propecia rogaine propecia patent expiration casino casino casino online top casino winner propecia hair loss treatment generic propecia canada casino wager loss propecia casino las vegas best casino buy no online prescription xanax propecia alternative 4younarodru buy link onlinehtm xanax xanax casino free machine online slot breakthrough growth hair propecia archive blog buy inurl propecia approval cheap doctor phentermine without archive ativan blog buy inurl online casino chip poker cheap diet online phentermine pill casino motion original picture soundtrack discount propecia casino internet online casino gamble propecia forum casino keno online blog cheap phentermine casino online us casino rama benzodiazepine buy xanax cheap cheap phentermine casino reno finasteride propecia ambien sleep walking cheap phentermine c o d ativan doctor withdrawal casino free online buy xanax xr cheap danger menopause phentermine ativan from withdrawal casino online propecia baldness
|
For a condensed version of this page, check 06-1350/Syzygies in Asymptote in Brief.
Disclaimer
These instructions (and the program they describe) are a work in progress and should be considered highly unreliable.
Installation
To use the syzygy script, first install Asymptote. Instructions for installing the program on several OSes is given in the documentation at the Asymptote website. The documentation also gives helpful instructions on how to run a script in Asymptote to produce a picture. Once installed, download syzygy.asy and put it in a directory where Asymptote can find it. You should also have (or install) a variant of TeX on your system, such as MiKTeX, so that Asymptote can typeset labels.
Braids
Once installed, we can draw a braid in Asymptote:
import syzygy; // Accesses the syzygy module. Braid b; // Start a new braid. b.n=3; // The braid has three strands. // The strands are numbered left to right starting at 0. b.add(bp,0); // Add a overcrossing component starting at strand 0, // the leftmost strand. b.add(bm,1); // Add an undercrossing starting at strand 1. b.add(phi,0); // Add a trivalent vertex that merges strands 0 and 1. // Strand 2 is now renumbered as strand 1. b.draw(); // Draw the resulting braid.
When saved into an asy file, say mybraid.asy
and run with Asymptote, the result is a picture:
Relations
Drawing
To define a relation, we first define two braids, and then stick them into a Relation
structure. The below script generates an R3 relation.
import syzygy; // Access the syzygy module. Braid l; // Define the left hand side of the relation. l.n=3; l.add(bp,0); l.add(bp,1); l.add(bp,0); Braid r; // Define the right hand side of the relation. r.n=3; r.add(bp,1); r.add(bp,0); r.add(bp,1); Relation r3; // Define a relation. r3.lsym="\rho_3"; // Give the relation a name for when it is written in functional form. r3.codename="rho3"; // Give the relation a name to be used by Mathematica. r3.lhs=l; r3.rhs=r; r3.draw();
When saved into an asy file and run, this draws the two sides of the relation. If TeX is installed, Asymptote will also put a lovely equals sign, typeset by TeX, between the two figures.
Outputting Equations
We can also get useful equations out of the relation. The method r3.toFormula()
will produce a string that is the formula for the relation.
(1230)^\star B^ (1213)^\star B^ (1023)^\star B^ = (1123)^\star B^ (1203)^\star B^ (1231)^\star B^
This string can be written out to the standard output by write(r3.toFormula())
. It can be written to a file by file f=output("filename.txt"); write(f, r3.toFormula())
. The string is formatted so it can be put into TeX or a wiki page using math mode:
Failed to parse (syntax error): {\displaystyle (1230)^\star B^ (1213)^\star B^ (1023)^\star B^ = (1123)^\star B^ (1203)^\star B^ (1231)^\star B^ }
The method r3.toLinear()
produces the formula in linear form:
and r3.toCode()
produces a version of the relation that can be used in Mathematica:
rho3[x1_, x2_, x3_, x4_] :> bp[x1, x2, x3] bp[x1 x3, x2, x4] bp[x1, x3, x4] - bp[x1 x2, x3, x4] - bp[x1, x2, x4] - bp[x1 x4, x2, x3]
A few relations, such as r3
, are already defined in syzygy.asy
but more should be added.
Applying
Now that we have relations, we can apply them to bigger braids. Let's start with the braid in the around B syzygy:
import syzygy; Braid b; b.n=4; b.add(bp,2); b.add(bp,0); b.add(bp,1); b.add(bp,0); b.add(bp,2); b.add(phi,1);
After skipping the lowest knot, we can apply R3 to the next three knots:
Braid bb=apply(r3, b, 1, 0);
here apply(r, b, k, n)
means we are applying the relation r
to the braid b
at the place in the braid found by counting k
components up from the bottom component and n
strands in from the leftmost strand. apply
does not modify the original braid, but returns the result of applying the relation (stored here as bb
):
This went from the left hand side of the relation to the right hand side. To apply a relation in reverse, simply prefix it by a minus sign. For example apply(-r3, bb, 1, 0)
will yield a braid equivalent to our original. When applying a relation, the script first checks that the one side of the relation matches that portion of the braid, and will give a (somewhat cryptic) error if the relation cannot be applied.
In our braids, the components are placed from bottom to top in a fixed order. Sometimes when building syzygies, it is neccessary to swap the order that these components occur. This is done by the swap
method. For instance, starting from b
, we can swap the two bottom crossings:
Braid swapped=b.swap(0,1);
Remember that components are ordered from bottom to top, starting at 0. Again, the script checks to make sure the swap is valid (ie. changing the order of the two components, doesn't actually change the knot) and will issue an error if it isn't.
Syzygies
One could manually apply relations and swaps, and make a whole bunch of braids, but it would be annoying to keep track of them all. Thankfully, the Syzygy
structure does that for us. For example, here is the complete code for the around B syzygy:
import syzygy; // Phi around B Braid initial; initial.n=4; initial.add(bp,2); initial.add(bp,0); initial.add(bp,1); initial.add(bp,0); initial.add(bp,2); initial.add(phi,1); Syzygy pb; pb.lsym="\Phi B"; pb.codename="PhiAroundB"; pb.initial=initial; pb.apply(r3,1,0); pb.apply(r4a,3,1); pb.swap(2,3); pb.apply(r4b,0,1); pb.apply(-r3,1,0); pb.apply(-r4a,0,0); pb.swap(2,3); pb.apply(-r4b,3,0); pb.apply(r3,1,1); pb.draw();
and the result
Again, like relations, we can use pb.toLinear()
and pb.toCode()
PhiAroundB[x1_, x2_, x3_, x4_, x5_] :> rho3[x1, x2, x3, x5] rho4a[x1 x5, x2, x3, x4] rho4b[x1 x2, x3, x4, x5] - rho3[x1, x2, x3 x4, x5] - rho4a[x1, x2, x3, x4] - rho4b[x1, x3, x4, x5] rho3[x1 x3, x2, x4, x5]
to give the formulas for the syzygies.
The Syzygy
structure assumes that after the last application of a relation, the braid is in the same form as the start, so it won't draw the last braid. This is annoying when building a syzygy, so it can be turned off by pb.cyclic=false;
If you set bp.showall=true;
the syzygy will draw all changes to the braid, including swaps. Finally, setting bp.number=true;
will print numbers on the diagrams so you can follow them around.
Conclusion
Example syzygyies and the latest version of the script can be found in the syzygy directory on the course Subversion repository [1]. Please contact me if you have any questions or suggestions. Good luck and happy syzyging!