Welcome to TiddlyWiki created by Jeremy Ruston; Copyright © 2004-2007 Jeremy Ruston, Copyright © 2007-2011 UnaMesa Association
Background: #eee
Foreground: #000
PrimaryPale: #8cf
PrimaryLight: #18f
PrimaryMid: #04b
PrimaryDark: #014
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
Lecture 1: Covers Chapters 1,2 in the book
[[Blackboard File | http://www-thphys.physics.ox.ac.uk/people/SteveSimon/topological2020/Topo1.pdf ]].
Lecture 2: Covers Chapter 3 in the book
[[Blackboard File | http://www-thphys.physics.ox.ac.uk/people/SteveSimon/topological2020/Topo2.pdf ]].
Lecture 3: Covers Chapter 4 in the book
[[Blackboard File | http://www-thphys.physics.ox.ac.uk/people/SteveSimon/topological2020/Topo3.pdf ]].
Lecture 4: Covers Chapter 5 in the book
[[Blackboard File | http://www-thphys.physics.ox.ac.uk/people/SteveSimon/topological2020/Topo4.pdf ]].
Lecture 5: Covers Chapter 6 in the book
[[Blackboard File | http://www-thphys.physics.ox.ac.uk/people/SteveSimon/topological2020/Topo5.pdf ]]. This is optional material (But it is fun and short, so listen to it anyway!)
Lecture 6: Covers Chapter 7 in the book
[[Blackboard File | http://www-thphys.physics.ox.ac.uk/people/SteveSimon/topological2020/Topo6.pdf ]].
Lecture 7: Covers Chapter 8 in the book
[[Blackboard File | http://www-thphys.physics.ox.ac.uk/people/SteveSimon/topological2020/Topo7.pdf ]].
Lecture 8: Covers Chapter 9,10,11 (briefly),13.3 in the book
[[Blackboard File | http://www-thphys.physics.ox.ac.uk/people/SteveSimon/topological2020/Topo8.pdf ]].
Lecture 9: Covers Chapters 12,13,14,15,16 (all briefly),17.1-17.3
[[Blackboard File | http://www-thphys.physics.ox.ac.uk/people/SteveSimon/topological2020/Topo9.pdf ]].
Lecture 10: Covers Chapter 22
[[Blackboard File | http://www-thphys.physics.ox.ac.uk/people/SteveSimon/topological2020/Topo10.pdf ]].
Lecture 11: Covers Chapter 24.1
[[Blackboard File | http://www-thphys.physics.ox.ac.uk/people/SteveSimon/topological2020/Topo11.pdf ]].
Lecture 12: Covers Chapter 24.2 - 24.6
[[Blackboard File | http://www-thphys.physics.ox.ac.uk/people/SteveSimon/topological2020/Topo12.pdf ]].
[[Powerpoint File | http://www-thphys.physics.ox.ac.uk/people/SteveSimon/topological2020/LectureSlidesToricMMathPhys.pptx ]].
Lecture 13: Covers Chapter 25
[[Blackboard File | http://www-thphys.physics.ox.ac.uk/people/SteveSimon/topological2020/Topo13.pdf ]]. This is optional material.
Lecture 14: Covers Chapter 26
[[Blackboard File | http://www-thphys.physics.ox.ac.uk/people/SteveSimon/topological2020/Topo14.pdf ]].
Lecture 15: Covers Chapter 27-28
[[Blackboard File | http://www-thphys.physics.ox.ac.uk/people/SteveSimon/topological2020/Topo15.pdf ]].
Lecture 16: Covers Chapter 29-30
[[Blackboard File | http://www-thphys.physics.ox.ac.uk/people/SteveSimon/topological2020/Topo16.pdf ]].
Lecture 17: Covers Chapter 31
[[Blackboard File | http://www-thphys.physics.ox.ac.uk/people/SteveSimon/topological2020/Topo17.pdf ]].
Lecture Notes for 2020
Newest version is [[Sep 14, 2020 | http://www-thphys.physics.ox.ac.uk/people/SteveSimon/topological2020/TopoBookSep14.pdf ]] Recent Changes: Compared to the Sept 12 version (link below), it is very very minor typos and broken cross references fixed.
NOTE 1: The "Notes" are in pretty good shape up to chapter 24. For chapter 24 and later, it should be considered "Draft" form. I apologize that those pieces are not cleaner by now.
NOTE 2: These "Notes" are obviously aimed to be a book. Please send me feedback: any typos, mistakes, things that are hopelessly unclear. Please let me know so I can fix it.
NOTE 3: These notes are getting MUCH too long to be appropriate for a 1 credit course -- we do not remotely cover all of the topics discussed in the book, and lots of the subtleties we brush entirely under the rug. For those who want the abbreviated version, here are some comments on what sections you need to read closely
Chapter 2: Do read this (can skip appendix)
Chapter 3: Do read this
Chapter 4: Do read this
Chapter 5: Do read this, but don't worry about details. Can skip the appendices
Chapter 7: Students panic when they get to this chapter, so don't worry about it too much. However, it provides a lot of context and structure for what is to come and it is quite a beautiful topic too... so... give it a try and see how far you get! Section 7.3 can be tough going. Skip the appendix 7.4.
Chapter 8: Do read this. Skip 8.6 (which should called an appendix -- its a typo that it is not labeled as such)
Chapter 9: Do read this. Can skip 9.4 and the appendices 9.5.
Chapter 10: Do read this
Chapter 13: If you do the optional problem 13.3 you will need section 13.3.
Chapter 14: Might be useful for some of the optional problems.
Chapter 15: If you do the optional problem 15.2 and 15.3
Chapter 16: Look through this (can skip 16.3 and 16.4)
Chapter 17: Look through this. Can certainly skip 17.6 and the appendices.
Chapter 22: This is relevant for exercise 22.X. This chapter is a follow-on from chapter 7... it is also challenging. Skip 22.3.2.
As I mention above, after chapter 23, things are in draft form only.
Chapter 24: Read this
Chapter 26: Read this.
Chapter 27: Look through this
Chapter 29: Look through this
Chapter 31: You will need this if you want to do optional questions on bose vertex and the Z4 parafermions.
..and read whatever else looks interesting to you!
Older versions:
Newest version is [[Sep 12, 2020 | http://www-thphys.physics.ox.ac.uk/people/SteveSimon/topological2020/TopoBookSep12.pdf ]] Recent Changes: Compared to the Aug 30 version (link below), it is mostly fixing some very minor typos and typesetting changes.
[[Aug 30 2020 | http://www-thphys.physics.ox.ac.uk/people/SteveSimon/topological2020/TopoBookAug30.pdf ]]. Major changes from Feb 10 in section from diagrammatics up but before Toric code.
[[Feb 10 2020 | http://www-thphys.physics.ox.ac.uk/people/SteveSimon/topological2019/Topobook-Feb10.pdf ]].
[[Nov 12 2019 | http://www-thphys.physics.ox.ac.uk/people/SteveSimon/topological2019/Topobook-Nov12-2019.pdf ]].
[[Nov 2 2019 | http://www-thphys.physics.ox.ac.uk/people/SteveSimon/topological2019/Topobook-Nov2-2019.pdf ]].
[[Oct 1 2019 | http://www-thphys.physics.ox.ac.uk/people/SteveSimon/topological2019/Topobook-Oct1-2019.pdf ]].
[[Nov 1 2018 | http://www-thphys.physics.ox.ac.uk/people/SteveSimon/topological2019/Topobook-Nov1-2019.pdf ]].
[[Oct 28 2018 | http://www-thphys.physics.ox.ac.uk/people/SteveSimon/topological2018/Topobook-Oct28-2019.pdf ]].
[[Oct 19 2018 | http://www-thphys.physics.ox.ac.uk/people/SteveSimon/topological2019/Topobook-Oct18-2019.pdf ]].
[[Oct 14 2018 | http://www-thphys.physics.ox.ac.uk/people/SteveSimon/topological2019/Topobook-Oct14-2019.pdf ]].
[[Sept 2018 | http://www-thphys.physics.ox.ac.uk/people/SteveSimon/topological2018/TopoBook-Sept-18.pdf ]].
[[2018 |http://www-thphys.physics.ox.ac.uk/people/SteveSimon/topological2018/Draft2017.pdf ]].
List of exercises from the book. (The chapter.problem numbering matches this version of the book).
WARNING: These are still being finalized! They are not official yet.
Sheet 1
Problem 2.1
Problem 2.2
Problem 3.3 a, b
Problem 8.2
Problem 9.4
deadline: week 4 Friday at 11 pm
Please also try the [[Optional Problems for Sheet 1]]. Some of them will be discussed in class
-----------------------------------------
Sheet 2
Problem 10.6 a, b, c, d
Problem 11.1
Problem 13.5 a, b, c, d
deadline: week 6 Friday at 11 pm
Please also try the [[Optional Problems for Sheet 2]]. Some of them will be discussed in class
----------------------------------------
Sheet 3
Problem 17.3
Problem 22.2
Problem 22.4
Problem 22.5
Problem 26.1 a,b
Problem 26.2 a,b
deadline: week 8 Friday at 11pm
Please also try the [[Optional Problems for Sheet 3]]. Some of them will be discussed in class
-------------------------------------
Sheet 4
Problem 27.1
Problem 27.2 a,b,c,d,e
Problem 29.2 a,b
deadline: week 0 Hilary Term Friday at 11pm
Please also try the [[Optional Problems for Sheet 4]]. Some of them will be discussed in class
-------------
For reference and comparison, here is [[Last Year's List of Exercises]]. Not *too* much has changed.
THIS IS THE 2020 WEB SITE. YOU PROBABLY MEAN TO BE LOOKING AT 2021?
!! 2016 Nobel prize awarded for Topological Phases of Matter !!
[[My prediction for the next Nobel Prize]]
This is the official website for the Topological Quantum course being taught in Michaelmas term 2020 as part of the [[ MMathPhys | http://mmathphys.physics.ox.ac.uk/ ]] program.
The intersection of topology and quantum mechanics is an enormous and still growing field. It touches upon physics topics ranging from quantum gravity to quantum information to materials physics and condensed matter experiment, as well as being one of the most interesting directions in the mathematical study of topology. This course aims to give a broad brush introduction to the topic, giving enough information for students to begin research in these exciting directions.
Prerequisites: Although this is a high level course, there are no particular prerequisites -- most of the material being self-contained. It is expected that the students will be familiar with quantum mechanics. Some familiarity with quantum field theory may be useful but is not necessary.
IF YOU ARE A DPHIL STUDENT WHO WANTS TO TAKE THIS COURSE (for credit or not) PLEASE SEND ME EMAIL SO I CAN GIVE YOU ACCESS.
If you are an MPhys/MSc Student, you should get a link to all the lectures and friday morning question/answer sessions.
The lecturer is [[Professor Steve Simon | http://www-thphys.physics.ox.ac.uk/people/SteveSimon/ ]]
If you are in the [[ MMathPhys | http://mmathphys.physics.ox.ac.uk/ ]], your teaching assistants will be Fatimah Ahmadi and Greg Henderson.
Special Treat: [[Link to this videos of this recent conference | https://www.youtube.com/playlist?list=PLqJ4D_Db7W_qtwTbN1dSAccyffU3xVz2R ]] discussiing the first unambiguous observations of anyons. I give the introductory talk and discuss the history of the field.
This page is a [[ TiddlyWiki | http://tiddlywiki.com/ ]]. It can be edited by anyone, but you can only save the edits if you have the password.
Classes 2020-2021
To sign up for classes use the doodle poll
https://doodle.com/poll/wcbpmumewxz574wx
Please enter your Oxford email in the name section, not your name or other email addresses! Otherwise, you won't be notified of the result. Please make sure to choose at least one slot each week. We will have four sessions: Michaelmas, week 5, week 7, week 9, and Hilary, week 1. If none of them works for you, please drop Greg or Fatimah an email.
Third and fourth sessions of homework classes are in the following dates, check your group [[here | https://docs.google.com/spreadsheets/d/16IXdTIl_pgNi3VXqVPANNgCiDWaOg3Vac6_nsFZoFeA/edit#gid=0]]
Week 3 and Week 4:
''Group one'': Thursday 16-18
''Group Two'': Friday 14-16
''Group Three'': Friday 16-18
"Location": TBC
THE EXERCISES STILL MAY BE CHANGED FOR THE YEAR. (Probably most of them will remain the same, but if you are particularly eager to get started, be warned there may be modifications).
PAGE STILL UNDER CONSTRUCTION
The recommended exercises for the course are in a big pdf file [[ here | http://www-thphys.physics.ox.ac.uk/people/SteveSimon/topological2019/ProblemSet.pdf ]]. You are HIGHLY encouraged to try as many of them as you can. They are an integral part of the course and if you actually want to learn anything, you should try the problems. The TA will discuss all of the problems with you in the homework classes.
''NOTE'': Only a small fraction of the problems are actually required and need to be marked for the course completion requirement. The required exercises are:
''Due Dates, Class 2019':
''Set One'': Problem 1, Problem 3ab, Problem 5ab
Due Friday 4th week 4pm
''Set Two'': Problem 7ab, Problem 8, Problem 12ab
Due Friday 6th week 4pm
''Set Three'': Problem 13abcd, Problem 16ab, Problem 17ab
Due Friday 8th week 4pm
''Set Four'': Problem 19, Problem 20abcde, Problem 22ab
Due Friday 0th week 4pm, Hilary
(1) Lecture videos will be posted online. Probably on weblearn or something similar. I'll post links as soon as I have them up. I've posted the "blackboard files" here as well (these are pdfs of everything I write on the blackboard)
[[Comments on Lectures]] (Blackboard files included)
(2) We will schedule weekly "Question/Answer" sesssions. which we will run over the internet via zoom or teams. This is in addition to classes run by the teaching assistants to discuss the homeworks.
The Question/Answer sessions will be FRIDAYS AT 10AM starting friday 1st week (Oct 16).
Since it is a horrible idea to make a zoom link public, the invite will be sent to you by email. Let me know if you do not get the invite.
You can show up and ask anything, but you are likely to get a more thoughtful answer if you email me the question in advance. Although you can ask questions on any of the material in the course, questions on the first few chapters are particularly encouraged in the first week, and the next few chapters the next week and so forth (I may defer questions from later in the course to later weeks). This way students who are working through the material slowly will be able to maximally benefit from the discussion.
[[Notes from Classes]] (Blackboard Files)
/***
|''Name:''|LoadRemoteFileThroughProxy (previous LoadRemoteFileHijack)|
|''Description:''|When the TiddlyWiki file is located on the web (view over http) the content of [[SiteProxy]] tiddler is added in front of the file url. If [[SiteProxy]] does not exist "/proxy/" is added. |
|''Version:''|1.1.0|
|''Date:''|mar 17, 2007|
|''Source:''|http://tiddlywiki.bidix.info/#LoadRemoteFileHijack|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0|
***/
//{{{
version.extensions.LoadRemoteFileThroughProxy = {
major: 1, minor: 1, revision: 0,
date: new Date("mar 17, 2007"),
source: "http://tiddlywiki.bidix.info/#LoadRemoteFileThroughProxy"};
if (!window.bidix) window.bidix = {}; // bidix namespace
if (!bidix.core) bidix.core = {};
bidix.core.loadRemoteFile = loadRemoteFile;
loadRemoteFile = function(url,callback,params)
{
if ((document.location.toString().substr(0,4) == "http") && (url.substr(0,4) == "http")){
url = store.getTiddlerText("SiteProxy", "/proxy/") + url;
}
return bidix.core.loadRemoteFile(url,callback,params);
}
//}}}
[[Home]]
[[Syllabus]]
[[Lecture Schedule]]
[[Homework Classes]]
[[Course Notes]]
[[Exercises]]
[[References]]
[[WelcomeToTiddlyspot]] [[GettingStarted]]
[[ here | http://mb.boardhost.com/shsimon/ ]] is the link to the course message board.
I hope that people will use this to communicate with me, with the TA, or with each other!
I think this is the year when we will have another Nobel Prize for topological condensed matter physics:
I predict it will be awarded to Charlie Kane and Eugene Mele.
ADDED: OK, I was wrong again. But I'm happy that it went to Oxford's own Roger Penrose! Incidentally, Penrose made some very significant contributions to topological physics in the context of quantum gravity! I cite his work in chapter 19 (end of chapter) and section 21.3 (and end of chapter 21).
Completely unrelated, but I think the peace prize will go to the World Health Organization.
ADDED: OK, got this one wrong too. Next year!
[[First Week | http://www-thphys.physics.ox.ac.uk/people/SteveSimon/topological2020/ClassWeek1.pdf ]].
Questions: we only solve them in the class if you find them difficult!
Problem 4.1
Problem 9.1 a, b
Problem 9.2
Questions: we discuss them in the class!
Problem 2.3
Problem 3.1
Problem 9.3
Questions: solve them if you have time, and we discuss them after the class if there is any interest!
Problem 3.4 a, c
Problem 5.2
Problem 8.1
Problem 9.6 a
Questions: we discuss them in the class!
Problem 10.1 a, b, c
Problem 10.2
Problem 10.4
Problem 13.1
Problem 15.1 a, b, c
Questions: solve them if you have time, and we discuss them after the class if there is any interest!
Problem 10.5 a, c,d
Problem 12.1
Problem 13.2
Questions: we only solve them in the class if you find them difficult!
Problem 13.3;
Problem 15.3;
Problem 22.1;
Questions: we discuss them in the class!
Problem 15.2;
Problem 17.1;
Questions: solve them if you have time, and we discuss them after the class if there is any interest!
Problem 18.4;
Problem 18.5;
Problem 22.3;
Problem 26.3;
Questions: we discuss them in the class!
Problem 29.1
Problem 31.1
Questions: solve them if you have time, and we discuss them after the class if there is any interest!
Problem 29.2c
Problem 31.2
/***
|''Name:''|PasswordOptionPlugin|
|''Description:''|Extends TiddlyWiki options with non encrypted password option.|
|''Version:''|1.0.2|
|''Date:''|Apr 19, 2007|
|''Source:''|http://tiddlywiki.bidix.info/#PasswordOptionPlugin|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0 (Beta 5)|
***/
//{{{
version.extensions.PasswordOptionPlugin = {
major: 1, minor: 0, revision: 2,
date: new Date("Apr 19, 2007"),
source: 'http://tiddlywiki.bidix.info/#PasswordOptionPlugin',
author: 'BidiX (BidiX (at) bidix (dot) info',
license: '[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D]]',
coreVersion: '2.2.0 (Beta 5)'
};
config.macros.option.passwordCheckboxLabel = "Save this password on this computer";
config.macros.option.passwordInputType = "password"; // password | text
setStylesheet(".pasOptionInput {width: 11em;}\n","passwordInputTypeStyle");
merge(config.macros.option.types, {
'pas': {
elementType: "input",
valueField: "value",
eventName: "onkeyup",
className: "pasOptionInput",
typeValue: config.macros.option.passwordInputType,
create: function(place,type,opt,className,desc) {
// password field
config.macros.option.genericCreate(place,'pas',opt,className,desc);
// checkbox linked with this password "save this password on this computer"
config.macros.option.genericCreate(place,'chk','chk'+opt,className,desc);
// text savePasswordCheckboxLabel
place.appendChild(document.createTextNode(config.macros.option.passwordCheckboxLabel));
},
onChange: config.macros.option.genericOnChange
}
});
merge(config.optionHandlers['chk'], {
get: function(name) {
// is there an option linked with this chk ?
var opt = name.substr(3);
if (config.options[opt])
saveOptionCookie(opt);
return config.options[name] ? "true" : "false";
}
});
merge(config.optionHandlers, {
'pas': {
get: function(name) {
if (config.options["chk"+name]) {
return encodeCookie(config.options[name].toString());
} else {
return "";
}
},
set: function(name,value) {config.options[name] = decodeCookie(value);}
}
});
// need to reload options to load passwordOptions
loadOptionsCookie();
/*
if (!config.options['pasPassword'])
config.options['pasPassword'] = '';
merge(config.optionsDesc,{
pasPassword: "Test password"
});
*/
//}}}
References come in all levels of detail and for all different backgrounds. These are listed in roughly the order in which they will be useful for the course.
#A general reference which should be useful for much of the course is "Non Abelian Anyons and Topological Quantum Computation; Chetan Nayak, Steven H. Simon, Ady Stern, Michael Freedman, Sankar Das Sarma; Rev. Mod. Phys. 80, 1083 (2008). Also available online [[ here | https://arxiv.org/abs/0707.1889 ]]
#A wonderful little book which is really fun to read that introduces the Kauffman invariant and many other ideas of knot theory is the book "Knots and Physics", by Louis Kauffman published by World Scientific. This book really inspired me when I was a grad student. It appears to be available online in several places (not certain which, if any, are legal). Although the whole book is fun; and written at a very introductory level; mainly the end of part 1 is the most relevant part where he explains the connection of Kauffman invariant to Chern - Simons theory (and pieces get to be well beyond introductory). There is a lot in here , the deep parts are easy to gloss over.
# A very nice introduction to non abelian anyons and topological quantum computation is given in Preskill's lecture notes, available [[here|http://www.theory.caltech.edu/~preskill/ph219/topological.pdf]].
# Frank Wilczek has two books which both discuss Berry phase and abelian anyons. The first is called "Geometric Phases in Physics" and the second is called "Fractional Statistics and Anyon Superconductivity". Both have a lot of reprints in them with some commentary by Wilczek. Often it is enough to read the commentary!
# If you need a refresher on path integrals, either Fabian Essler's C6 notes [[here| http://www-thphys.physics.ox.ac.uk/people/FabianEssler/C6web2012/lecturenotes2015.pdf]] look at the first 15 pages (quite similar to this year's C6 note), or the nice article by Mackenzie [[here| https://arxiv.org/abs/quant-ph/0004090]] look at the first 22 pages. Mackenzie actually has some useful applications such as Aharanov - Bohm effect.
#The classic paper "Quantum Field Theory and the Jones Polynomial" by Ed Witten is available online [[here | https://projecteuclid.org/euclid.cmp/1104178138 ]]. This is a tremendously deep paper which introduces a lot of brilliant ideas. I find something new every time I read it. I find it to be tough reading in some places and easy in others.
#From a more mathematial viewpoint [[ This article | http://www.maths.ed.ac.uk/~aar/papers/atiyahinttqft.pdf ]] and [[ this article | http://www.math.ru.nl/~mueger/TQFT/At.pdf ]] by Sir Michael Atiyah are an introduction to topological quantum field theories. There is a more detailed book by the same author called "The Geometry and Physics of Knots",Cambridge U. Press, 1990. The full book might be hard to read unless you have a very strong maths background.
# A rather remarkably well written and readable master's thesis by Lokman Tsui on Chern - Simons theories, topological quantum field theory, and knot theory is [[here|http://ms.mcmaster.ca/~boden/students/Tsui-MSc.pdf]].
# There are several nice references on the structure of topological quantum field theories, and diagrammatic calculus, [[Parsa Bonderson's thesis | http://thesis.library.caltech.edu/2447/2/thesis.pdf]]. This is a more detailed version of the long article by Kitaev which I mention below. Also a good reference is the book on Topological Quantum Computation by Zhenghan Wang, which appears to be online [[here | http://www.math.ucsb.edu/~zhenghwa/data/course/cbms.pdf]]. If you are more mathematical, you might like the thesis of Bruce Bartlett [[here| https://arxiv.org/abs/math/0512103]].
#The monumental work "Anyons in an exactly solved model and beyond by Alexei Kitaev", available online [[here | https://arxiv.org/abs/cond-mat/0506438 ]] brings the ideas of topological quantum field theory into the condensed matter arena. This is not easy reading, but a ton of great ideas are buried in this paper.. Another work by Kitaev, "Fault-tolerant quantum computation by anyons, available online [[here | https://arxiv.org/abs/quant-ph/9707021]] introduces the famous toric code, discusses quantum error correction, and generalizes the toric code model to arbitrary non-abelian groups. Kitaev's work on the quantum wire (which we might get to at the end of the course) is [[here | https://arxiv.org/abs/cond-mat/0010440]]. A brief digest of some of the many ideas introduced in these three papers is given by notes taken by Laumann of Kitaev's lectures, available [[here | https://arxiv.org/pdf/0904.2771v1.pdf]].
# Loop gases are introduced in [[this | https://arxiv.org/abs/cond-mat/0307511 ]] paper by Freedman et al. It has a lot of sections which are hard to parse.
# The double-fibonacci string-net is discussed in some detail in [[this| https://arxiv.org/abs/cond-mat/0610583]] work by Fidkowski et al,
# The classic paper on string - nets very generally is [[this | https://arxiv.org/abs/cond-mat/0404617 ]] by Levin and Wen.
# The standard reference on introductory quantum hall effect is the classic book, "The Quantum Hall Effect", edited by Prange and Girvin, published by Springer. The first chapter, and the chapters by Laughlin and Haldane are probably the best. The experimental chapters are good for context too. Another decent reference quantum Hall physics is T. Chakraborty and P. Piettilainen, "The Quantum Hall Effects: Integral and Fractional," (Springer 1995). A short review article by Macdonald is pretty nice and is available [[here | https://arxiv.org/pdf/cond-mat/9410047v1.pdf]].
# The article that introduced the ideas of conformal field theory into the field of quantum Hall effect is by Moore and Read, available online [[here| http://www.physics.rutgers.edu/~gmoore/MooreReadNonabelions.pdf]].
# A recent review article on Fractional quantum Hall hierarchies (and also discusses nonabelian quantum Hall and conformal field theory) is online [[here | https://arxiv.org/abs/1601.01697]]. A revised longer version of this article should be posted soon.
# [[This | https://arxiv.org/abs/1802.06176 ]] is a nice article on topological quantum computing and designing braids
A few random digressions:
# If you are interested in 2+1 D quantum gravity, see [[this article | https://link.springer.com/article/10.12942/lrr-2005-1 ]]. I can't vouch for it, but the introduction is interesting; [[This | http://srv2.fis.puc.cl/~mbanados/Cursos/TopicosRelatividadAvanzada/Witten2.pdf]] is the article by Witten explaining how 2+1 D gravity is "exactly solvable." More from Witten [[here| http://www.sciencedirect.com/science/article/pii/0550321389905919]]. There is reconsideration many years later, again by Witten, see [[ here | https://arxiv.org/abs/0706.3359 ]].
# I've been told the [[book | https://www.amazon.co.uk/Introduction-Topological-Quantum-Computation-Jiannis/dp/1107005043 ]] by Jiannis Pachos on topological quantum computation is a good resource.
# If you are interested in the topology of manifolds in 3 and 4 dimensions, there are several good books. One by Kirby is online [[here | https://math.berkeley.edu/~kirby/papers/Kirby%20-%20The%20topology%20of%204-manifolds%20-%20MR1001966.pdf ]]. There is a book by Gompf and Stipcitz "4-manifolds and Kirby Calculus" which is nice. See the link [[here| https://www.amazon.co.uk/4-Manifolds-Calculus-Graduate-Studies-Mathematics/dp/0821809946]]. Note that parts of this book are online free if you google them.
# For more information on conformal field theory. The standard reference is the [[ Big yellow book | http://link.springer.com/book/10.1007%2F978-1-4612-2256-9 ]]. The first part of this book (up to chapter 12) is excellent, but even that much is a lot of reading. There is a short set of lectures from les Houches by [[ Ginsparg | https://arxiv.org/abs/hep-th/9108028 ]]. I also like the short set of notes by [[ Fendley | http://galileo.phys.virginia.edu/~pf7a/msmCFT.pdf ]]. For even shorter introduction of what you need to apply CFT to quantum Hall, see the appendix of Ref. 1 above, or the appendix of [[this | https://arxiv.org/abs/1601.01697]].
# This [[ book | http://press.princeton.edu/titles/5528.html ]] by Kauffman and Lins gives more details of constructing a full anyon theory from the kauffman invariant.
Topological Quantum Field Theories, Topological Quantum Matter, Topological Quantum Computation
Course taught Michaelmas Term 2020 as part of the Oxford [[ MMathPhys | http://mmathphys.physics.ox.ac.uk/ ]] course. Also available to DPhil students.
StyleSheet
no tags
body {
font: 1em/1.4em "Bitstream Vera Sans", Verdana, Helvetica, Arial, sans-serif;
/*"Lucida Sans Unicode", "Lucida Grande","Trebuchet MS", */
}
mainMenu{
position:left;
width: auto;
background: #eee;
border-right: 3px solid #003;
padding: 1.5em 0 1.5em 2m;
text-align: left;
font-size: 1.2em;
margin-left: 1em;
}
.subtitle {display: all; padding: 0em 0em 0em 3em; }
.subtitle {display: none; padding: 0em 0em 0em 3em; }
.subtitle {display: name; padding: 0em 0em 0em 3em; }
.subtitle {display: modification-date; padding: 0em 0em 0em 3em; }
.subtitle {display: creation-date; padding: 0em 0em 0em 3em; }
/*{{{*/
* html .tiddler {height:1%;}
body {font-size:1em; font-family:arial,helvetica; margin:0; padding:0;}
h1,h2,h3,h4,h5,h6 {font-weight:bold; text-decoration:none;}
h1,h2,h3 {padding-bottom:1px; margin-top:1.2em;margin-bottom:0.3em;}
h4,h5,h6 {margin-top:1em;}
h1 {font-size:1.35em;}
h2 {font-size:1.25em;}
h3 {font-size:1.1em;}
h4 {font-size:1em;}
h5 {font-size:.9em;}
hr {height:1px;}
a {text-decoration:none;}
dt {font-weight:bold;}
ol {list-style-type:decimal;}
ol ol {list-style-type:lower-alpha;}
ol ol ol {list-style-type:lower-roman;}
ol ol ol ol {list-style-type:decimal;}
ol ol ol ol ol {list-style-type:lower-alpha;}
ol ol ol ol ol ol {list-style-type:lower-roman;}
ol ol ol ol ol ol ol {list-style-type:decimal;}
.txtOptionInput {width:11em;}
#contentWrapper .chkOptionInput {border:0;}
.externalLink {text-decoration:underline;}
.indent {margin-left:3em;}
.outdent {margin-left:3em; text-indent:-3em;}
code.escaped {white-space:nowrap;}
.tiddlyLinkExisting {font-weight:bold;}
.tiddlyLinkNonExisting {font-style:italic;}
/* the 'a' is required for IE, otherwise it renders the whole tiddler in bold */
a.tiddlyLinkNonExisting.shadow {font-weight:bold;}
#mainMenu .tiddlyLinkExisting,
#mainMenu .tiddlyLinkNonExisting,
#sidebarTabs .tiddlyLinkNonExisting {font-weight:normal; font-style:normal;}
#sidebarTabs .tiddlyLinkExisting {font-weight:bold; font-style:normal;}
.header {position:relative;}
.header a:hover {background:transparent;}
.headerShadow {position:relative; padding:4.5em 0 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:4.5em 0 1em 1em; left:0; top:0;}
.siteTitle {font-size:3em;}
.siteSubtitle {font-size:1.2em;}
#mainMenu {position:absolute; left:0; width:10em; text-align:right; line-height:1.6em; padding:1.5em 0.5em 0.5em 0.5em; font-size:1.1em;}
#sidebar {position:absolute; right:3px; width:16em; font-size:.9em;}
#sidebarOptions {padding-top:0.3em;}
#sidebarOptions a {margin:0 0.2em; padding:0.2em 0.3em; display:block;}
#sidebarOptions input {margin:0.4em 0.5em;}
#sidebarOptions .sliderPanel {margin-left:1em; padding:0.5em; font-size:.85em;}
#sidebarOptions .sliderPanel a {font-weight:bold; display:inline; padding:0;}
#sidebarOptions .sliderPanel input {margin:0 0 0.3em 0;}
#sidebarTabs .tabContents {width:15em; overflow:hidden;}
.wizard {padding:0.1em 1em 0 2em;}
.wizard h1 {font-size:2em; font-weight:bold; background:none; padding:0; margin:0.4em 0 0.2em;}
.wizard h2 {font-size:1.2em; font-weight:bold; background:none; padding:0; margin:0.4em 0 0.2em;}
.wizardStep {padding:1em 1em 1em 1em;}
.wizard .button {margin:0.5em 0 0; font-size:1.2em;}
.wizardFooter {padding:0.8em 0.4em 0.8em 0;}
.wizardFooter .status {padding:0 0.4em; margin-left:1em;}
.wizard .button {padding:0.1em 0.2em;}
#messageArea {position:fixed; top:2em; right:0; margin:0.5em; padding:0.5em; z-index:2000; _position:absolute;}
.messageToolbar {display:block; text-align:right; padding:0.2em;}
#messageArea a {text-decoration:underline;}
.tiddlerPopupButton {padding:0.2em;}
.popupTiddler {position: absolute; z-index:300; padding:1em; margin:0;}
.popup {position:absolute; z-index:300; font-size:.9em; padding:0; list-style:none; margin:0;}
.popup .popupMessage {padding:0.4em;}
.popup hr {display:block; height:1px; width:auto; padding:0; margin:0.2em 0;}
.popup li.disabled {padding:0.4em;}
.popup li a {display:block; padding:0.4em; font-weight:normal; cursor:pointer;}
.listBreak {font-size:1px; line-height:1px;}
.listBreak div {margin:2px 0;}
.tabset {padding:1em 0 0 0.5em;}
.tab {margin:0 0 0 0.25em; padding:2px;}
.tabContents {padding:0.5em;}
.tabContents ul, .tabContents ol {margin:0; padding:0;}
.txtMainTab .tabContents li {list-style:none;}
.tabContents li.listLink { margin-left:.75em;}
#contentWrapper {display:block;}
#splashScreen {display:none;}
#displayArea {margin:1em 17em 0 14em;}
.toolbar {text-align:right; font-size:.9em;}
.tiddler {padding:1em 1em 0;}
.missing .viewer,.missing .title {font-style:italic;}
.title {font-size:1.6em; font-weight:bold;}
.missing .subtitle {display:none;}
.subtitle {font-size:1.1em;}
.tiddler .button {padding:0.2em 0.4em;}
.tagging {margin:0.5em 0.5em 0.5em 0; float:left; display:none;}
.isTag .tagging {display:block;}
.tagged {margin:0.5em; float:right;}
.tagging, .tagged {font-size:0.9em; padding:0.25em;}
.tagging ul, .tagged ul {list-style:none; margin:0.25em; padding:0;}
.tagClear {clear:both;}
.footer {font-size:.9em;}
.footer li {display:inline;}
.annotation {padding:0.5em; margin:0.5em;}
* html .viewer pre {width:99%; padding:0 0 1em 0;}
.viewer {line-height:1.4em; padding-top:0.5em;}
.viewer .button {margin:0 0.25em; padding:0 0.25em;}
.viewer blockquote {line-height:1.5em; padding-left:0.8em;margin-left:2.5em;}
.viewer ul, .viewer ol {margin-left:0.5em; padding-left:1.5em;}
.viewer table, table.twtable {border-collapse:collapse; margin:0.8em 1.0em;}
.viewer th, .viewer td, .viewer tr,.viewer caption,.twtable th, .twtable td, .twtable tr,.twtable caption {padding:3px;}
table.listView {font-size:0.85em; margin:0.8em 1.0em;}
table.listView th, table.listView td, table.listView tr {padding:0 3px 0 3px;}
.viewer pre {padding:0.5em; margin-left:0.5em; font-size:1.2em; line-height:1.4em; overflow:auto;}
.viewer code {font-size:1.2em; line-height:1.4em;}
.editor {font-size:1.1em;}
.editor input, .editor textarea {display:block; width:100%; font:inherit;}
.editorFooter {padding:0.25em 0; font-size:.9em;}
.editorFooter .button {padding-top:0; padding-bottom:0;}
.fieldsetFix {border:0; padding:0; margin:1px 0px;}
.zoomer {font-size:1.1em; position:absolute; overflow:hidden;}
.zoomer div {padding:1em;}
* html #backstage {width:99%;}
* html #backstageArea {width:99%;}
#backstageArea {display:none; position:relative; overflow: hidden; z-index:150; padding:0.3em 0.5em;}
#backstageToolbar {position:relative;}
#backstageArea a {font-weight:bold; margin-left:0.5em; padding:0.3em 0.5em;}
#backstageButton {display:none; position:absolute; z-index:175; top:0; right:0;}
#backstageButton a {padding:0.1em 0.4em; margin:0.1em;}
#backstage {position:relative; width:100%; z-index:50;}
#backstagePanel {display:none; z-index:100; position:absolute; width:90%; margin-left:3em; padding:1em;}
.backstagePanelFooter {padding-top:0.2em; float:right;}
.backstagePanelFooter a {padding:0.2em 0.4em;}
#backstageCloak {display:none; z-index:20; position:absolute; width:100%; height:100px;}
.whenBackstage {display:none;}
.backstageVisible .whenBackstage {display:block;}
/*}}}*/
* Lecture 1ish
** What this course is about, and how we will run it
** Historical digression about topology in quantum physics
** Knots and Knot Invariants
** The Kaufmann Invariant (Ref: [[Kauffman | References]] )
** Relation to Quantum Physics and Topological Quantum Theory (Ref: [[Nayak,Simon et al | References]] )
** Connection to Condensed Matter Experiments
** Twists, Spin, Statistics and the Jones Polynomial
** Relation to Quantum Information / Quantum Computation
** Computational Power of Topological Quantum Systems
** Brief Description of Topological Quantum Computers
** Brief Description of Connection Between Knots and Quantum Mechanics
** Rough Picture of Fractional Quantum Hall Effect and Why it is Topological
*Lecture 2ish
** Particle Quantum Statistics
** Beyond Bosons and Fermions (Ref: [[Wilczek | References]])
** Digression on Path Integrals (Refs: [[Essler | References]], [[Mackenzie | References]])
** Topology of Paths in 2+1 and 3+1 Dimensions
** Digression on Group Theory and Representations
** Composition of Paths
** Permutation Group and Braid Group
** Back to Path Integrals
** Fractional Statistics / Anyons
** Non - Abelian Anyons (Ref: [[Nayak, Simon, et al | References]])
** Relation to Quantum Computation
*Lecture 3ish
** Aharonov - Bohm Effect; a useful Application of Path Integrals (Refs: [[Wilczek | References]], [[Mackenzie | References]])
** Understanding this in Path Integral Language
** Flux - Charge Composites and Fractional Statistics (Ref: [[Preskill | References]])
** Spin of Anyons / Spin - Statistics
** Fusion
** Ground State Degeneracy and Topological Quantum Memory
** Flux Binding and Abelian Chern - Simons Theory (Ref: [[Wilczek | References]], [[Preskill | References]])
** What is Topological Quantum Field Theory (Refs: [[Atiyah | References]], [[Witten Jones Polynomial Paper | References]], [[Tsui Thesis | References]], [[Kaufmann | References]])
** Chern - Simons Theory in General (Briefly!)
** Digression on Quantum Gravity (Ref: [[ Carlip | References ]], [[Witten 2+1 D Gravity | References]])
*Lecture 4ish
** Defining a Topological Quantum Field Theory (Refs: [[Atiyah | References]], [[Witten Jones Polynomial Paper | References]], [[Tsui Thesis | References]])
** Atiyah Axioms
** Hilbert Spaces,
** Gluing Space - Time Manifolds
** Manifolds with Particles
** Overlaps and the S - matrix
** Manifold Surgery
** Likorish - Wallace Theorem and Kirby Calculus
** Witten - Reshitikhin - Turaev Invariant
*Lecture 5-6ish
** Structure of Topological Quantum Field Theory (Refs: [[Nayak,Simon et al | References]], [[Bonderson Thesis | References]], [[Kitaev Anyons and Beyond | References]], [[Preskill | References]], [[Wang| References]], [[Bartlett | References]])
** Structure of Hilbert Space
** Fusion of Nonabelian Anyons
** Quantum Dimension
** Braiding Nonabelian Anyons
** Importance of Locality
** Examples:
*** Fibonacci Anyons
*** Ising Anyons
** Beginning to Define a Full Anyon Theory / TQFT / Fusion Category
** Ground State Degeneracy and Fusion Rules
** F-matrix and Pentagon Equation
** Twisting and Braiding and Hexagon Equation
** Example: Cabled Kauffman Anyons
** More Definition of TQFT / Modular Tensor Category
** Comments on Rigidity
** Diagrammatic Calculus
** S-matrix and Verlinde Formula
** Kirby Calculus and the S - matrix
*Lecture 7-8-9ish
** Quantum Error Correction and Relation to Topological Quantum Field Theory (Refs: [[Kitaev Toric Code | References]], [[Laumann| References]])
** Basics of Quantum Information -- Qubits
** Codes and Errors -- Classical Case
** No Cloning Theorem
** Quantum Error Correction
** Kitaev's Toric Code / Surface Code
*** Commuting Projection Operators
*** Protected Code Space
*** Checking and Correcting Errors
*** String Operators and Handles
** Toric Code as a Phase of Matter
** Braiding Properties
** Twists and S - matrix
** Robustness of the Phase
** Defining Topologically Ordered Matter (Ref: [[Nayak, Simon, et al | References]])
** Generalizing these ideas (Refs: [[Kitaev Toric Code | References]], [[Levin Wen | References]], [[Freedman | References]], [[Fidkowski | References]])
** Toric Code as Abstract Quantum Loop Gas
*** Algebra of Loops
*** Quasiparticles
** Double Semion Loop Gas
*** Algebra of Loops
*** Quasiparticles
*** Microscoic Double Semion Model
** Doubled Fibonacci String Net
** Levin - Wen Model
** Kitaev's Model and Lattice Gauge Theory
* Lecture 10,11,12ish
** Introduction to Quantum Hall Effects (Ref: [[Prange | References]], [[MacDonald | References]], [[Hermanns | References]])
** Experimental Observations
** Landau Problem in Landau Gauge
** Incompressibility
** Effect of Disorder
** Quantization and Gauge Invariance
*** Byers -Yang Theorem
*** Laughlin Argument for Integer Quantum Hall Effect
** Fractional Quantum Hall Effect
** Interaction Hamiltonian
** Symmetric Gauge
** Constraints on Wavefunction and Laughlin's Ansatz
** Incompressibility
** Exact Hamiltonian
** Quasiparticle
** Fractional Charge
** Digression on Berry Phase
** Arovas - Schrieffer - Wilczek argument
** Multiple Quasiholes and Gauge Choice
** Braiding in Fractional Statistics Gauge
** Fractional Quantum Hall Hierarchy
** Edge Modes
*** Integer
*** Fractional
*** Polynomials and Boson Operators
*Lecture 13,14ish
** Conformal Field Theory, Topological Quantum Field Theory, and Fractional Quantum Hall Effects
*** Details still coming
config.options.txtUserName = "Steve Simon";
/***
Description: Contains the stuff you need to use Tiddlyspot
Note, you also need UploadPlugin, PasswordOptionPlugin and LoadRemoteFileThroughProxy
from http://tiddlywiki.bidix.info for a complete working Tiddlyspot site.
***/
//{{{
// edit this if you are migrating sites or retrofitting an existing TW
config.tiddlyspotSiteId = 'oxfordtopquantum';
// make it so you can by default see edit controls via http
config.options.chkHttpReadOnly = false;
window.readOnly = false; // make sure of it (for tw 2.2)
window.showBackstage = true; // show backstage too
// disable autosave in d3
if (window.location.protocol != "file:")
config.options.chkGTDLazyAutoSave = false;
// tweak shadow tiddlers to add upload button, password entry box etc
with (config.shadowTiddlers) {
SiteUrl = 'http://'+config.tiddlyspotSiteId+'.tiddlyspot.com';
SideBarOptions = SideBarOptions.replace(/(<<saveChanges>>)/,"$1<<tiddler TspotSidebar>>");
OptionsPanel = OptionsPanel.replace(/^/,"<<tiddler TspotOptions>>");
DefaultTiddlers = DefaultTiddlers.replace(/^/,"[[WelcomeToTiddlyspot]] ");
MainMenu = MainMenu.replace(/^/,"[[WelcomeToTiddlyspot]] ");
}
// create some shadow tiddler content
merge(config.shadowTiddlers,{
'TspotControls':[
"| tiddlyspot password:|<<option pasUploadPassword>>|",
"| site management:|<<upload http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/store.cgi index.html . . " + config.tiddlyspotSiteId + ">>//(requires tiddlyspot password)//<br>[[control panel|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/controlpanel]], [[download (go offline)|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/download]]|",
"| links:|[[tiddlyspot.com|http://tiddlyspot.com/]], [[FAQs|http://faq.tiddlyspot.com/]], [[blog|http://tiddlyspot.blogspot.com/]], email [[support|mailto:support@tiddlyspot.com]] & [[feedback|mailto:feedback@tiddlyspot.com]], [[donate|http://tiddlyspot.com/?page=donate]]|"
].join("\n"),
'TspotOptions':[
"tiddlyspot password:",
"<<option pasUploadPassword>>",
""
].join("\n"),
'TspotSidebar':[
"<<upload http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/store.cgi index.html . . " + config.tiddlyspotSiteId + ">><html><a href='http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/download' class='button'>download</a></html>"
].join("\n"),
'WelcomeToTiddlyspot':[
"This document is a ~TiddlyWiki from tiddlyspot.com. A ~TiddlyWiki is an electronic notebook that is great for managing todo lists, personal information, and all sorts of things.",
"",
"@@font-weight:bold;font-size:1.3em;color:#444; //What now?// @@ Before you can save any changes, you need to enter your password in the form below. Then configure privacy and other site settings at your [[control panel|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/controlpanel]] (your control panel username is //" + config.tiddlyspotSiteId + "//).",
"<<tiddler TspotControls>>",
"See also GettingStarted.",
"",
"@@font-weight:bold;font-size:1.3em;color:#444; //Working online// @@ You can edit this ~TiddlyWiki right now, and save your changes using the \"save to web\" button in the column on the right.",
"",
"@@font-weight:bold;font-size:1.3em;color:#444; //Working offline// @@ A fully functioning copy of this ~TiddlyWiki can be saved onto your hard drive or USB stick. You can make changes and save them locally without being connected to the Internet. When you're ready to sync up again, just click \"upload\" and your ~TiddlyWiki will be saved back to tiddlyspot.com.",
"",
"@@font-weight:bold;font-size:1.3em;color:#444; //Help!// @@ Find out more about ~TiddlyWiki at [[TiddlyWiki.com|http://tiddlywiki.com]]. Also visit [[TiddlyWiki.org|http://tiddlywiki.org]] for documentation on learning and using ~TiddlyWiki. New users are especially welcome on the [[TiddlyWiki mailing list|http://groups.google.com/group/TiddlyWiki]], which is an excellent place to ask questions and get help. If you have a tiddlyspot related problem email [[tiddlyspot support|mailto:support@tiddlyspot.com]].",
"",
"@@font-weight:bold;font-size:1.3em;color:#444; //Enjoy :)// @@ We hope you like using your tiddlyspot.com site. Please email [[feedback@tiddlyspot.com|mailto:feedback@tiddlyspot.com]] with any comments or suggestions."
].join("\n")
});
//}}}
| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |
| 06/10/2020 18:44:12 | YourName | [[/|http://oxfordtopquantum.tiddlyspot.com/]] | [[store.cgi|http://oxfordtopquantum.tiddlyspot.com/store.cgi]] | . | [[index.html | http://oxfordtopquantum.tiddlyspot.com/index.html]] | . | ok |
| 06/10/2020 18:44:16 | YourName | [[/|http://oxfordtopquantum.tiddlyspot.com/]] | [[store.cgi|http://oxfordtopquantum.tiddlyspot.com/store.cgi]] | . | [[index.html | http://oxfordtopquantum.tiddlyspot.com/index.html]] | . |
| 07/10/2020 10:07:37 | YourName | [[/|http://oxfordtopquantum.tiddlyspot.com/]] | [[store.cgi|http://oxfordtopquantum.tiddlyspot.com/store.cgi]] | . | [[index.html | http://oxfordtopquantum.tiddlyspot.com/index.html]] | . |
| 09/10/2020 15:18:03 | YourName | [[/|http://oxfordtopquantum.tiddlyspot.com/]] | [[store.cgi|http://oxfordtopquantum.tiddlyspot.com/store.cgi]] | . | [[index.html | http://oxfordtopquantum.tiddlyspot.com/index.html]] | . |
| 16/10/2020 14:28:34 | YourName | [[/|http://oxfordtopquantum.tiddlyspot.com/]] | [[store.cgi|http://oxfordtopquantum.tiddlyspot.com/store.cgi]] | . | [[index.html | http://oxfordtopquantum.tiddlyspot.com/index.html]] | . | ok |
| 16/10/2020 14:29:17 | YourName | [[/|http://oxfordtopquantum.tiddlyspot.com/]] | [[store.cgi|http://oxfordtopquantum.tiddlyspot.com/store.cgi]] | . | [[index.html | http://oxfordtopquantum.tiddlyspot.com/index.html]] | . |
| 18/10/2020 09:36:58 | YourName | [[/|http://oxfordtopquantum.tiddlyspot.com/]] | [[store.cgi|http://oxfordtopquantum.tiddlyspot.com/store.cgi]] | . | [[index.html | http://oxfordtopquantum.tiddlyspot.com/index.html]] | . |
| 13/10/2021 06:05:31 | YourName | [[/|http://oxfordtopquantum.tiddlyspot.com/]] | [[store.cgi|http://oxfordtopquantum.tiddlyspot.com/store.cgi]] | . | [[index.html | http://oxfordtopquantum.tiddlyspot.com/index.html]] | . | failed |
| 13/10/2021 06:05:44 | YourName | [[/|http://oxfordtopquantum.tiddlyspot.com/]] | [[store.cgi|http://oxfordtopquantum.tiddlyspot.com/store.cgi]] | . | [[index.html | http://oxfordtopquantum.tiddlyspot.com/index.html]] | . | failed |
| 13/10/2021 06:06:28 | YourName | [[/|http://oxfordtopquantum.tiddlyspot.com/]] | [[store.cgi|http://oxfordtopquantum.tiddlyspot.com/store.cgi]] | . | [[index.html | http://oxfordtopquantum.tiddlyspot.com/index.html]] | . |
/***
|''Name:''|UploadPlugin|
|''Description:''|Save to web a TiddlyWiki|
|''Version:''|4.1.3|
|''Date:''|Feb 24, 2008|
|''Source:''|http://tiddlywiki.bidix.info/#UploadPlugin|
|''Documentation:''|http://tiddlywiki.bidix.info/#UploadPluginDoc|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0|
|''Requires:''|PasswordOptionPlugin|
***/
//{{{
version.extensions.UploadPlugin = {
major: 4, minor: 1, revision: 3,
date: new Date("Feb 24, 2008"),
source: 'http://tiddlywiki.bidix.info/#UploadPlugin',
author: 'BidiX (BidiX (at) bidix (dot) info',
coreVersion: '2.2.0'
};
//
// Environment
//
if (!window.bidix) window.bidix = {}; // bidix namespace
bidix.debugMode = false; // true to activate both in Plugin and UploadService
//
// Upload Macro
//
config.macros.upload = {
// default values
defaultBackupDir: '', //no backup
defaultStoreScript: "store.php",
defaultToFilename: "index.html",
defaultUploadDir: ".",
authenticateUser: true // UploadService Authenticate User
};
config.macros.upload.label = {
promptOption: "Save and Upload this TiddlyWiki with UploadOptions",
promptParamMacro: "Save and Upload this TiddlyWiki in %0",
saveLabel: "save to web",
saveToDisk: "save to disk",
uploadLabel: "upload"
};
config.macros.upload.messages = {
noStoreUrl: "No store URL in parmeters or options",
usernameOrPasswordMissing: "Username or password missing"
};
config.macros.upload.handler = function(place,macroName,params) {
if (readOnly)
return;
var label;
if (document.location.toString().substr(0,4) == "http")
label = this.label.saveLabel;
else
label = this.label.uploadLabel;
var prompt;
if (params[0]) {
prompt = this.label.promptParamMacro.toString().format([this.destFile(params[0],
(params[1] ? params[1]:bidix.basename(window.location.toString())), params[3])]);
} else {
prompt = this.label.promptOption;
}
createTiddlyButton(place, label, prompt, function() {config.macros.upload.action(params);}, null, null, this.accessKey);
};
config.macros.upload.action = function(params)
{
// for missing macro parameter set value from options
if (!params) params = {};
var storeUrl = params[0] ? params[0] : config.options.txtUploadStoreUrl;
var toFilename = params[1] ? params[1] : config.options.txtUploadFilename;
var backupDir = params[2] ? params[2] : config.options.txtUploadBackupDir;
var uploadDir = params[3] ? params[3] : config.options.txtUploadDir;
var username = params[4] ? params[4] : config.options.txtUploadUserName;
var password = config.options.pasUploadPassword; // for security reason no password as macro parameter
// for still missing parameter set default value
if ((!storeUrl) && (document.location.toString().substr(0,4) == "http"))
storeUrl = bidix.dirname(document.location.toString())+'/'+config.macros.upload.defaultStoreScript;
if (storeUrl.substr(0,4) != "http")
storeUrl = bidix.dirname(document.location.toString()) +'/'+ storeUrl;
if (!toFilename)
toFilename = bidix.basename(window.location.toString());
if (!toFilename)
toFilename = config.macros.upload.defaultToFilename;
if (!uploadDir)
uploadDir = config.macros.upload.defaultUploadDir;
if (!backupDir)
backupDir = config.macros.upload.defaultBackupDir;
// report error if still missing
if (!storeUrl) {
alert(config.macros.upload.messages.noStoreUrl);
clearMessage();
return false;
}
if (config.macros.upload.authenticateUser && (!username || !password)) {
alert(config.macros.upload.messages.usernameOrPasswordMissing);
clearMessage();
return false;
}
bidix.upload.uploadChanges(false,null,storeUrl, toFilename, uploadDir, backupDir, username, password);
return false;
};
config.macros.upload.destFile = function(storeUrl, toFilename, uploadDir)
{
if (!storeUrl)
return null;
var dest = bidix.dirname(storeUrl);
if (uploadDir && uploadDir != '.')
dest = dest + '/' + uploadDir;
dest = dest + '/' + toFilename;
return dest;
};
//
// uploadOptions Macro
//
config.macros.uploadOptions = {
handler: function(place,macroName,params) {
var wizard = new Wizard();
wizard.createWizard(place,this.wizardTitle);
wizard.addStep(this.step1Title,this.step1Html);
var markList = wizard.getElement("markList");
var listWrapper = document.createElement("div");
markList.parentNode.insertBefore(listWrapper,markList);
wizard.setValue("listWrapper",listWrapper);
this.refreshOptions(listWrapper,false);
var uploadCaption;
if (document.location.toString().substr(0,4) == "http")
uploadCaption = config.macros.upload.label.saveLabel;
else
uploadCaption = config.macros.upload.label.uploadLabel;
wizard.setButtons([
{caption: uploadCaption, tooltip: config.macros.upload.label.promptOption,
onClick: config.macros.upload.action},
{caption: this.cancelButton, tooltip: this.cancelButtonPrompt, onClick: this.onCancel}
]);
},
options: [
"txtUploadUserName",
"pasUploadPassword",
"txtUploadStoreUrl",
"txtUploadDir",
"txtUploadFilename",
"txtUploadBackupDir",
"chkUploadLog",
"txtUploadLogMaxLine"
],
refreshOptions: function(listWrapper) {
var opts = [];
for(i=0; i<this.options.length; i++) {
var opt = {};
opts.push();
opt.option = "";
n = this.options[i];
opt.name = n;
opt.lowlight = !config.optionsDesc[n];
opt.description = opt.lowlight ? this.unknownDescription : config.optionsDesc[n];
opts.push(opt);
}
var listview = ListView.create(listWrapper,opts,this.listViewTemplate);
for(n=0; n<opts.length; n++) {
var type = opts[n].name.substr(0,3);
var h = config.macros.option.types[type];
if (h && h.create) {
h.create(opts[n].colElements['option'],type,opts[n].name,opts[n].name,"no");
}
}
},
onCancel: function(e)
{
backstage.switchTab(null);
return false;
},
wizardTitle: "Upload with options",
step1Title: "These options are saved in cookies in your browser",
step1Html: "<input type='hidden' name='markList'></input><br>",
cancelButton: "Cancel",
cancelButtonPrompt: "Cancel prompt",
listViewTemplate: {
columns: [
{name: 'Description', field: 'description', title: "Description", type: 'WikiText'},
{name: 'Option', field: 'option', title: "Option", type: 'String'},
{name: 'Name', field: 'name', title: "Name", type: 'String'}
],
rowClasses: [
{className: 'lowlight', field: 'lowlight'}
]}
};
//
// upload functions
//
if (!bidix.upload) bidix.upload = {};
if (!bidix.upload.messages) bidix.upload.messages = {
//from saving
invalidFileError: "The original file '%0' does not appear to be a valid TiddlyWiki",
backupSaved: "Backup saved",
backupFailed: "Failed to upload backup file",
rssSaved: "RSS feed uploaded",
rssFailed: "Failed to upload RSS feed file",
emptySaved: "Empty template uploaded",
emptyFailed: "Failed to upload empty template file",
mainSaved: "Main TiddlyWiki file uploaded",
mainFailed: "Failed to upload main TiddlyWiki file. Your changes have not been saved",
//specific upload
loadOriginalHttpPostError: "Can't get original file",
aboutToSaveOnHttpPost: 'About to upload on %0 ...',
storePhpNotFound: "The store script '%0' was not found."
};
bidix.upload.uploadChanges = function(onlyIfDirty,tiddlers,storeUrl,toFilename,uploadDir,backupDir,username,password)
{
var callback = function(status,uploadParams,original,url,xhr) {
if (!status) {
displayMessage(bidix.upload.messages.loadOriginalHttpPostError);
return;
}
if (bidix.debugMode)
alert(original.substr(0,500)+"\n...");
// Locate the storeArea div's
var posDiv = locateStoreArea(original);
if((posDiv[0] == -1) || (posDiv[1] == -1)) {
alert(config.messages.invalidFileError.format([localPath]));
return;
}
bidix.upload.uploadRss(uploadParams,original,posDiv);
};
if(onlyIfDirty && !store.isDirty())
return;
clearMessage();
// save on localdisk ?
if (document.location.toString().substr(0,4) == "file") {
var path = document.location.toString();
var localPath = getLocalPath(path);
saveChanges();
}
// get original
var uploadParams = new Array(storeUrl,toFilename,uploadDir,backupDir,username,password);
var originalPath = document.location.toString();
// If url is a directory : add index.html
if (originalPath.charAt(originalPath.length-1) == "/")
originalPath = originalPath + "index.html";
var dest = config.macros.upload.destFile(storeUrl,toFilename,uploadDir);
var log = new bidix.UploadLog();
log.startUpload(storeUrl, dest, uploadDir, backupDir);
displayMessage(bidix.upload.messages.aboutToSaveOnHttpPost.format([dest]));
if (bidix.debugMode)
alert("about to execute Http - GET on "+originalPath);
var r = doHttp("GET",originalPath,null,null,username,password,callback,uploadParams,null);
if (typeof r == "string")
displayMessage(r);
return r;
};
bidix.upload.uploadRss = function(uploadParams,original,posDiv)
{
var callback = function(status,params,responseText,url,xhr) {
if(status) {
var destfile = responseText.substring(responseText.indexOf("destfile:")+9,responseText.indexOf("\n", responseText.indexOf("destfile:")));
displayMessage(bidix.upload.messages.rssSaved,bidix.dirname(url)+'/'+destfile);
bidix.upload.uploadMain(params[0],params[1],params[2]);
} else {
displayMessage(bidix.upload.messages.rssFailed);
}
};
// do uploadRss
if(config.options.chkGenerateAnRssFeed) {
var rssPath = uploadParams[1].substr(0,uploadParams[1].lastIndexOf(".")) + ".xml";
var rssUploadParams = new Array(uploadParams[0],rssPath,uploadParams[2],'',uploadParams[4],uploadParams[5]);
var rssString = generateRss();
// no UnicodeToUTF8 conversion needed when location is "file" !!!
if (document.location.toString().substr(0,4) != "file")
rssString = convertUnicodeToUTF8(rssString);
bidix.upload.httpUpload(rssUploadParams,rssString,callback,Array(uploadParams,original,posDiv));
} else {
bidix.upload.uploadMain(uploadParams,original,posDiv);
}
};
bidix.upload.uploadMain = function(uploadParams,original,posDiv)
{
var callback = function(status,params,responseText,url,xhr) {
var log = new bidix.UploadLog();
if(status) {
// if backupDir specified
if ((params[3]) && (responseText.indexOf("backupfile:") > -1)) {
var backupfile = responseText.substring(responseText.indexOf("backupfile:")+11,responseText.indexOf("\n", responseText.indexOf("backupfile:")));
displayMessage(bidix.upload.messages.backupSaved,bidix.dirname(url)+'/'+backupfile);
}
var destfile = responseText.substring(responseText.indexOf("destfile:")+9,responseText.indexOf("\n", responseText.indexOf("destfile:")));
displayMessage(bidix.upload.messages.mainSaved,bidix.dirname(url)+'/'+destfile);
store.setDirty(false);
log.endUpload("ok");
} else {
alert(bidix.upload.messages.mainFailed);
displayMessage(bidix.upload.messages.mainFailed);
log.endUpload("failed");
}
};
// do uploadMain
var revised = bidix.upload.updateOriginal(original,posDiv);
bidix.upload.httpUpload(uploadParams,revised,callback,uploadParams);
};
bidix.upload.httpUpload = function(uploadParams,data,callback,params)
{
var localCallback = function(status,params,responseText,url,xhr) {
url = (url.indexOf("nocache=") < 0 ? url : url.substring(0,url.indexOf("nocache=")-1));
if (xhr.status == 404)
alert(bidix.upload.messages.storePhpNotFound.format([url]));
if ((bidix.debugMode) || (responseText.indexOf("Debug mode") >= 0 )) {
alert(responseText);
if (responseText.indexOf("Debug mode") >= 0 )
responseText = responseText.substring(responseText.indexOf("\n\n")+2);
} else if (responseText.charAt(0) != '0')
alert(responseText);
if (responseText.charAt(0) != '0')
status = null;
callback(status,params,responseText,url,xhr);
};
// do httpUpload
var boundary = "---------------------------"+"AaB03x";
var uploadFormName = "UploadPlugin";
// compose headers data
var sheader = "";
sheader += "--" + boundary + "\r\nContent-disposition: form-data; name=\"";
sheader += uploadFormName +"\"\r\n\r\n";
sheader += "backupDir="+uploadParams[3] +
";user=" + uploadParams[4] +
";password=" + uploadParams[5] +
";uploaddir=" + uploadParams[2];
if (bidix.debugMode)
sheader += ";debug=1";
sheader += ";;\r\n";
sheader += "\r\n" + "--" + boundary + "\r\n";
sheader += "Content-disposition: form-data; name=\"userfile\"; filename=\""+uploadParams[1]+"\"\r\n";
sheader += "Content-Type: text/html;charset=UTF-8" + "\r\n";
sheader += "Content-Length: " + data.length + "\r\n\r\n";
// compose trailer data
var strailer = new String();
strailer = "\r\n--" + boundary + "--\r\n";
data = sheader + data + strailer;
if (bidix.debugMode) alert("about to execute Http - POST on "+uploadParams[0]+"\n with \n"+data.substr(0,500)+ " ... ");
var r = doHttp("POST",uploadParams[0],data,"multipart/form-data; ;charset=UTF-8; boundary="+boundary,uploadParams[4],uploadParams[5],localCallback,params,null);
if (typeof r == "string")
displayMessage(r);
return r;
};
// same as Saving's updateOriginal but without convertUnicodeToUTF8 calls
bidix.upload.updateOriginal = function(original, posDiv)
{
if (!posDiv)
posDiv = locateStoreArea(original);
if((posDiv[0] == -1) || (posDiv[1] == -1)) {
alert(config.messages.invalidFileError.format([localPath]));
return;
}
var revised = original.substr(0,posDiv[0] + startSaveArea.length) + "\n" +
store.allTiddlersAsHtml() + "\n" +
original.substr(posDiv[1]);
var newSiteTitle = getPageTitle().htmlEncode();
revised = revised.replaceChunk("<title"+">","</title"+">"," " + newSiteTitle + " ");
revised = updateMarkupBlock(revised,"PRE-HEAD","MarkupPreHead");
revised = updateMarkupBlock(revised,"POST-HEAD","MarkupPostHead");
revised = updateMarkupBlock(revised,"PRE-BODY","MarkupPreBody");
revised = updateMarkupBlock(revised,"POST-SCRIPT","MarkupPostBody");
return revised;
};
//
// UploadLog
//
// config.options.chkUploadLog :
// false : no logging
// true : logging
// config.options.txtUploadLogMaxLine :
// -1 : no limit
// 0 : no Log lines but UploadLog is still in place
// n : the last n lines are only kept
// NaN : no limit (-1)
bidix.UploadLog = function() {
if (!config.options.chkUploadLog)
return; // this.tiddler = null
this.tiddler = store.getTiddler("UploadLog");
if (!this.tiddler) {
this.tiddler = new Tiddler();
this.tiddler.title = "UploadLog";
this.tiddler.text = "| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |";
this.tiddler.created = new Date();
this.tiddler.modifier = config.options.txtUserName;
this.tiddler.modified = new Date();
store.addTiddler(this.tiddler);
}
return this;
};
bidix.UploadLog.prototype.addText = function(text) {
if (!this.tiddler)
return;
// retrieve maxLine when we need it
var maxLine = parseInt(config.options.txtUploadLogMaxLine,10);
if (isNaN(maxLine))
maxLine = -1;
// add text
if (maxLine != 0)
this.tiddler.text = this.tiddler.text + text;
// Trunck to maxLine
if (maxLine >= 0) {
var textArray = this.tiddler.text.split('\n');
if (textArray.length > maxLine + 1)
textArray.splice(1,textArray.length-1-maxLine);
this.tiddler.text = textArray.join('\n');
}
// update tiddler fields
this.tiddler.modifier = config.options.txtUserName;
this.tiddler.modified = new Date();
store.addTiddler(this.tiddler);
// refresh and notifiy for immediate update
story.refreshTiddler(this.tiddler.title);
store.notify(this.tiddler.title, true);
};
bidix.UploadLog.prototype.startUpload = function(storeUrl, toFilename, uploadDir, backupDir) {
if (!this.tiddler)
return;
var now = new Date();
var text = "\n| ";
var filename = bidix.basename(document.location.toString());
if (!filename) filename = '/';
text += now.formatString("0DD/0MM/YYYY 0hh:0mm:0ss") +" | ";
text += config.options.txtUserName + " | ";
text += "[["+filename+"|"+location + "]] |";
text += " [[" + bidix.basename(storeUrl) + "|" + storeUrl + "]] | ";
text += uploadDir + " | ";
text += "[[" + bidix.basename(toFilename) + " | " +toFilename + "]] | ";
text += backupDir + " |";
this.addText(text);
};
bidix.UploadLog.prototype.endUpload = function(status) {
if (!this.tiddler)
return;
this.addText(" "+status+" |");
};
//
// Utilities
//
bidix.checkPlugin = function(plugin, major, minor, revision) {
var ext = version.extensions[plugin];
if (!
(ext &&
((ext.major > major) ||
((ext.major == major) && (ext.minor > minor)) ||
((ext.major == major) && (ext.minor == minor) && (ext.revision >= revision))))) {
// write error in PluginManager
if (pluginInfo)
pluginInfo.log.push("Requires " + plugin + " " + major + "." + minor + "." + revision);
eval(plugin); // generate an error : "Error: ReferenceError: xxxx is not defined"
}
};
bidix.dirname = function(filePath) {
if (!filePath)
return;
var lastpos;
if ((lastpos = filePath.lastIndexOf("/")) != -1) {
return filePath.substring(0, lastpos);
} else {
return filePath.substring(0, filePath.lastIndexOf("\\"));
}
};
bidix.basename = function(filePath) {
if (!filePath)
return;
var lastpos;
if ((lastpos = filePath.lastIndexOf("#")) != -1)
filePath = filePath.substring(0, lastpos);
if ((lastpos = filePath.lastIndexOf("/")) != -1) {
return filePath.substring(lastpos + 1);
} else
return filePath.substring(filePath.lastIndexOf("\\")+1);
};
bidix.initOption = function(name,value) {
if (!config.options[name])
config.options[name] = value;
};
//
// Initializations
//
// require PasswordOptionPlugin 1.0.1 or better
bidix.checkPlugin("PasswordOptionPlugin", 1, 0, 1);
// styleSheet
setStylesheet('.txtUploadStoreUrl, .txtUploadBackupDir, .txtUploadDir {width: 22em;}',"uploadPluginStyles");
//optionsDesc
merge(config.optionsDesc,{
txtUploadStoreUrl: "Url of the UploadService script (default: store.php)",
txtUploadFilename: "Filename of the uploaded file (default: in index.html)",
txtUploadDir: "Relative Directory where to store the file (default: . (downloadService directory))",
txtUploadBackupDir: "Relative Directory where to backup the file. If empty no backup. (default: ''(empty))",
txtUploadUserName: "Upload Username",
pasUploadPassword: "Upload Password",
chkUploadLog: "do Logging in UploadLog (default: true)",
txtUploadLogMaxLine: "Maximum of lines in UploadLog (default: 10)"
});
// Options Initializations
bidix.initOption('txtUploadStoreUrl','');
bidix.initOption('txtUploadFilename','');
bidix.initOption('txtUploadDir','');
bidix.initOption('txtUploadBackupDir','');
bidix.initOption('txtUploadUserName','');
bidix.initOption('pasUploadPassword','');
bidix.initOption('chkUploadLog',true);
bidix.initOption('txtUploadLogMaxLine','10');
// Backstage
merge(config.tasks,{
uploadOptions: {text: "upload", tooltip: "Change UploadOptions and Upload", content: '<<uploadOptions>>'}
});
config.backstageTasks.push("uploadOptions");
//}}}