I am delighted to be able to say that the Wiki for mathematical problem-solving techniques is going to exist very soon, by which I mean that it should be up and running within the next couple of weeks, though possibly without some of the features that it will eventually have. So in this post I want to say quite a bit about what it will be like and how it will differ from other mathematical websites.
First, however, I want to make very clear that the main reason I am in this happy position is that Olof Sisask and Alex Frolkin have put in a huge amount of work over the last few months developing the software for what has the potential to be a fabulous site. I’ll say a bit more about what they have done later, but soon you will be able to see for yourself, which will give a much better idea than any description I could give. But in this post I want to concentrate more on what material should go on the site and how it should be organized, which is something that Alex, Olof and I have been thinking about together. Needless to say, any comments will be read with great interest: it is probably too late for a radical rethink of the whole site, but it is definitely not too late to add features to it, and won’t be too late even after the launch.
Before I dive into the details, let me make a general remark. The subject matter of this Wiki is going to be problem-solving techniques, and that leads immediately to a difficulty, namely how to find the material that’s on the site. The obvious method is to classify it by subject matter, but it doesn’t take long to see why that is not wholly satisfactory. There are many problem-solving techniques that are applicable in widely differing contexts, and it’s not too much of an exaggeration to say that the usual subject-matter classification of mathematics is almost orthogonal to any classification that would be genuinely useful for this site. (I say “almost” because the early stages of classification, such as the broad division in to analysis, algebra, geometry, etc., does have at least some correlation with the area of applicability of a typical problem-solving technique. The difficulty appears at a finer level of detail.) Thus, a very important feature of the site is going to be the tools that help one navigate about in it. In fact, I’d go further than this. Let us call the core content of the site the material such as has appeared in sample articles on this blog: that is, descriptions of techniques, examples of their use, and discussions of how to recognise when to use them. Then the site will consist not just of the core content, but also a superstructure of navigation tools that will help you find techniques related to a mathematical problem you might have, and this superstructure will be at least as important as the core content. Later I’ll say more about what the navigation tools will be.
The name of the site
We thought about asking for opinions about this, but in the end we made the decision ourselves and went for “The Tricki”. We thought of “The Tricks Wiki” but decided that the work “trick” gives slightly the wrong idea of what the site is about: we want articles on all mathematical techniques, regardless of whether they have a magic aspect to them. Indeed, we want to demonstrate that many mathematical tricks are, on closer inspection, not really tricks at all but very natural things to do. It might be thought that the name “Tricki” suffers from precisely the same defect, but we decided that because it sounded more like a proper name than a description, it was in fact slightly better, and it seemed a pity to give up the word altogether, especially given its fit with “Wiki”.
The presentation of the core content
The main content of the Tricki will be a (large, if all goes according to plan) body of articles about methods for solving mathematical problems. Associated with these articles will be many qualities that will vary substantially from article to article. For example, some will be about very general problem-solving tips such as, “If you can’t solve the problem, then try to invent an easier problem that sheds light on it,” whereas others will be much more specific tips such as, “If you want to solve a linear differential equation, you can convert it into a polynomial equation by taking the Fourier transform.” Some articles will be written at a very elementary level, and some will be quite advanced (though, obviously enough, the usefulness of an article will increase dramatically if it can be made widely accessible). Some will concern particular areas of mathematics, such as algebraic geometry or probability, whereas others will concern techniques that are relevant to many different areas. And so on.
Because clarity and accessibility are so important to the success of the Tricki, we have decided to have a recommended format for the articles. However, we also want to be as unprescriptive as possible, so this format is very loose. Originally we had thought of having articles divided into three parts: a brief summary of the technique in question, ideally in a highly memorable sentence or two; a general discussion of what the technique is and the kinds of situations in which it applies; and a collection of examples of the technique in action. However, once we started to write sample articles we came to realize that examples and general discussion were often best mixed. So instead we merely ask that the beginnings and ends of examples should be clearly labelled, and we recommend that there should not be too much general discussion without illustrative examples. (In many cases, it may be best to start with examples and then move on to general discussion.) See some of my recent blog posts for examples of articles written in this format. See also this article by Terence Tao, and this one by Emmanuel Kowalski.
The navigation problem
As commented above, a major question we face is how to organize the articles in such a way that they can be located easily. If you have a mathematical difficulty, and the Tricki contains an article that deals with exactly that difficulty, you will not be helped unless there is a convenient way of finding that article. This problem is much less acute for Wikipedia because a typical Wikipedia article takes a phrase such as “Abelian variety” or “The mean-value theorem” and gives you its definition or statement. So if you want to find out about such concepts, you just type them into Google and one of the first two or three entries is usually the most relevant Wikipedia article. But often when one is trying to solve a mathematical problem, one doesn’t know what the relevant definition or theorem is. So even if all the Wikipedia articles gave beautifully clear and detailed explanations, one would still have the problem of finding the right ones.
A major aim for the Tricki is that it should be possible to search by the problem you face rather than by the answer to that problem. Until the number of articles is large, it will be feasible to do this by simple means such as key-word searches and tags. But even these may leave some articles a bit hard to find. For example, consider my sample article on just-do-it proofs. If you are unfamiliar with the just-do-it technique and have a problem that you find difficult but that is easy if you use the technique, then what is going to lead you to find the article that explains the technique? Similarly, if you are trying to build some structure and Zorn’s lemma is what you need to make your argument work, what key words or tags are going to help you? It isn’t obvious.
Navigation in the Tricki
I said earlier that I do not regard the core content as primary and the navigation in the site as a mere add-on to help people find it. That would be a bit like saying that proofs are primary and problem-solving techniques are just an add-on to help people discover them. My own view is that if the Tricki expands as we hope it will, then a well-organized method for searching for articles about certain kinds of proof techniques would constitute a higher-level proof technique of its own. So I don’t want to draw too sharp a distinction between core content and navigational content. More precisely, we envisage at the moment two kinds of navigational aid, one manually created and the other more automatic. Let me discuss them each in turn.
First, we plan to have a collection of “navigation pages” on the Tricki. These will be guides to the rest of the site, or to parts of the rest of the site, and will be a bit like annotated bibliographies. They will also have a somewhat hierarchical organization, so near the top of the hierarchy there might be a page that says things like, “If your problem is in linear algebra then go to the linear algebra main page here for further advice,” and then when you get to the linear algebra page it might split further into problems about simultaneous equations, vector spaces, inner product spaces, numerical linear algebra (which might point you to a parallel page on numerical analysis), and so on. But after a couple of steps down this fairly obvious hierarchy one would start to find categorizations that were very different from subject-matter categorizations. For instance, you might be asked, “Are you trying to construct an example of something?” or “Are you looking for an exact solution or would an estimate be good enough?” or “Does it seem as though the constraints you face are tight or loose?” Some of these might then lead you to techniques that applied to several different areas.
How will these navigation pages be maintained? Another of our priorities is to decentralize the control of the site as much as possible, so we emphatically do not want a team of editors who are constantly updating the navigation pages or deciding in advance how the entirety of mathematics should be organized. So instead, we intend to allow people to create and edit navigational pages as well, perhaps keeping one super-index page at the very top of the hierarchy that cannot be edited directly (but that we will change in response to suggestions).
This may seem like a recipe for chaos, but there are various reasons to suppose that it could work, and perhaps even work extremely well. One is that we will have guidelines that we will strongly encourage people to stick to. For example, if you want to write a navigation page for articles about paracompact topological spaces, then don’t have a link to it from the main page on branches of mathematics: instead, the user of the site will be expected to follow a path such as analysis –> general topology –>properties of topological spaces –> paracompact topological spaces. Another guideline would be that one should be much more cautious about deleting a link than about adding one. Indeed, one should not delete a link to an article unless (i) it is clearly in an inappropriate place and (ii) you are certain that there are good paths to the article even when the link is deleted. Another would be that if a navigation page turned into a very long list of links then these links should be categorized and a new level of the hierarchy created.
A second reason for optimism about the navigation pages arises from looking at them in a different way, which I have already discussed to some extent above. Instead of thinking of them as completely different from the articles on mathematical techniques, one can think of them as techniques in themselves. For example, a navigation page on constructing interesting subsets of the plane might be regarded as advocating the technique of classifying your problem and thereby finding the appropriate Tricki article. In order to help you with the classification, the navigation page might have quite a bit of text in it. Indeed, it might even have examples and general discussion, just like a more specific Tricki article.
It is clear that there will be several different styles of navigational article. Soon I will have a sample article ready, which will be a navigation page, with quite a lot of text, devoted to a classification of problems in combinatorics. (It will of course refer to all sorts of articles that don’t yet exist. It will also be incomplete, but I hope that others will edit and expand it when it goes up on the site.)
Automatic navigation tools
At the end of each article there will be the chance to give various bits of information about it that will help people to find it in a more conventional way. For instance, there will be the opportunity to give key words from the article, there will be tags for branches and sub-branches (and sub-sub-branches etc.) of mathematics, and, most importantly but also most problematically, there will be tags for types of problems. I discussed this last matter with Olof today, and we hope to have something along the following lines. Suppose you write an article on a certain technique. Then you would describe in very general terms the problem it solves, simplify the language in your description, and finally break up your simplified description into natural chunks that serve as tags.
Let me give an example to try to illustrate the sort of thing I’m talking about. Suppose the trick can be summarized by the slogan, “If you want to prove that a graph exists with certain properties and the properties seem to force the edges of the graph to be very evenly distributed around the graph, then try taking a random graph.” What problem does this solve? Something like this:
To show: there exists –> a graph –> such that –> certain properties hold?
The first three elements of this can be thought of as hierarchically organized tags that could appear in many other contexts. The last one is more of a problem, because it isn’t easy to use a tag to explain what kinds of properties are more likely to be obtainable by the probabilistic method. But just the tags
To show: there exists –> a graph –> such that –> **********
narrows down the problem significantly. (However, it is not necessarily the optimal choice: one might be better off replacing “a graph” by something more general such as “a combinatorial structure”.)
Designing a good system of such tags is clearly a challenging problem, but again we hope that this will be a collective effort. We may well not have these type-of-problem tags up and running when the site is launched. When we do introduce them, we hope to have a good and useful collection of them ready, but we will invite suggestions for other tags to add.
Several years ago, I wrote this essay, in the first part of which I explained why I thought that automatic theorem proving was a less distant goal than many others take it to be. On the way, I talked about how computers might work in an interactive way with human mathematicians, making the point that there were no serious theoretical obstacles to having genuinely useful help from computers (unlike with fully automatic theorem proving, which is significantly harder). The main obstacle, I claimed then and will rejustify here, was merely the work needed to put together a semi-intelligent database, work that would need to be a collective effort of many people.
What I absolutely did not foresee was the rise of the Wiki, which suddenly makes it feasible to develop a database of almost exactly the kind that I was talking about. The realization that this was the case arose out of the discussions about the navigation problem. I now think that the organization of the Tricki has the potential to lead to a resource that will be able to do what such an interactive program would have been able to do, even if the way it does it is not quite the same.
In that article I wrote an imaginary conversation between a human and a computer. My claim was that such a conversation should be feasible even with present-day technology. Here is another imaginary conversation of a similar kind.
Computer: What is your problem?
Human: I want to know how big a subset of I can choose if no element is allowed to be twice as big as another element.
Computer: What general kind of problem is that?
Human: I wish to maximize the size of a set of integers, subject to certain constraints.
Computer: What general area of mathematics would you say that belongs to?
Computer: And subarea, if appropriate?
Human: Extremal combinatorics.
Computer: Do there seem to be many constraints or few?
Human: I don’t really know.
Computer: Well think about it. If you choose an element to belong to your set, does that have many repercussions for the rest of the set?
Human: I suppose it doesn’t: if belongs to the set, then all that tells you is that does not belong to the set.
Computer: Have you thought of using a greedy algorithm?
Human: What’s that?
Computer: You’re building up a set and you just keep on adding the first element you can, by some definition of “first”.
Human: Ah, let me have a try. The obvious definition of “first” is “minimal”. Yes, that gives a pretty good example: it works out to be all numbers that can be written as with even. And it’s actually not that hard to prove that this is the best possible example.
Here is how an equivalent “conversation” could take place if one had a Tricki equipped with a good series of navigation pages. This time the computer is more passive, because the questions have so to speak been supplied to it in advance. First one goes to the global navigation page and chooses Combinatorics as the main area, followed by Extremal Combinatorics as the subarea. (The navigation page for combinatorics would not be just a list of subareas but a list with descriptions of the subareas and what typical problems in those subareas are like. Or it might have a bare list for the experienced user and an annotated list for the novice.)
Then on the extremal combinatorics page there would be questions like “Are there many constraints?” “Do you believe that the extremal example is unique up to simple symmetries?” and “What general kind of object are you trying to construct?” (which might be a graph, or a system of sets, or a set of integers, etc.).
If you clicked on “few constraints” then you would be led to a general discussion about maximizing sizes of substructures subject to few constraints. One of the techniques mentioned there would be greedy algorithms, which would have a link to a discussion, with examples, of solving problems using greedy algorithms. And at that point the Tricki would have done the same job as the one done by the hypothetical conversing computer above.
Alternatively, if there was a good system of tags in place and you didn’t need quite so much help, you could do things more quickly via the tags. On the one hand you could follow subject-matter tags as far as extremal combinatorics, and on the other you could follow problem-type tags as far as something like
maximize –> cardinality of –> subset of –> –> subject to –> loose constraints.
The Tricki as a collective mathematical brain.
The remarks in this section are thoughts that greatly interest me, but you may want to take them with a pinch of salt: the usefulness of the Tricki will not depend on my being right.
It is an incontestable fact that experience in solving problems in mathematics, or in a branch of mathematics, makes you better at solving other problems. But what, precisely, is the benefit of this experience? Some of the benefit is psychological: if you have successfully solved some problems then you will be less likely to be discouraged if you find a new one difficult, you will be better able to judge when your approaches are getting somewhere, and so on. But a more direct benefit of experience is that it gives you a bigger repertoire of approaches to try and a better ability to recognise approaches that are unlikely to work: in this way it considerably speeds up the process of doing research, and makes much of that process automatic when for a less experienced mathematician it would require hard thought.
This repertoire of approaches is stored in many different ways. Some research wisdom comes in the form of tips that have forms such as these: if you find yourself with a problem of type X, then method Y is likely to be useful; problems of type X’ are known to be hard; problems of type X” cannot be solved by method Z because if they could then we would also be able to prove W, which is known to be false. Some is a little vaguer, but still extremely useful: I can’t remember how to prove this, but I know where to look it up; problems of type X were discussed in a seminar I once went to so I think people know how to solve them.
We would like the Tricki to imitate the brain of a human mathematician in the following ways.
1. In its core articles it will store problem-solving expertise of the kind just discussed. This means that as well as articles that deal directly with how to solve mathematical problems of various kinds, there will also be articles that help you discover whether your problem is of a known kind and, if it is, that guide you to appropriate places in the literature. (If this “literature” is available online, then so much the better.) Another kind of article that could well be useful would be one that explained why certain approaches do not work for certain problems: perhaps because they lead to difficulties that nobody knows how to deal with, or perhaps because there are counterexamples.
2. It will be very interlinked, and will contain “triggers” (in the form of navigation pages) that will cause the user to think of trying various methods.
3. It will be highly modular, with modules organized in a somewhat hierarchical way. In particular, once there is a lot of core content, there will also start to be a lot of secondary content that helps you find the right part of the core content, tertiary content that leads you to the secondary content, and so on.
4. The same bit of information may well be repeated in many articles, so there will be a certain amount of robustness and redundancy.
5. Use of the Tricki will be rather like applying an algorithm that is not fully deterministic. (A fully deterministic algorithm would tell you exactly which route to take in order to arrive at the right bit of core content. But there will be many routes and many ways of describing a problem, and the user will have to make decisions along the way.)
6. The Tricki will learn from experience. By that I mean that if you use the Tricki and find that it doesn’t help you in the way you wanted even though the answer to your problem was in fact known, then you will be strongly encouraged to modify the Tricki (by writing or improving a core article, or by modifying the navigation pages) so that the next person with your problem will have better luck. At a later stage of development, we might consider something more ambitious, such as measuring how often various links are used successfully and reinforcing the good ones, which would be reminiscent of the way that pathways in the brain are reinforced by means of neurons changing their likelihood of firing.
How to arrive at a major mathematical resource, starting from zero.
If the Tricki succeeds in its aims, it will be a time-saving device for research mathematicians of an importance at least as great as that of TeX, or Sloan’s database of sequences, or MathSciNet, or the ArXiV. But it will not reach this stage without a huge amount of effort: we hope that enough people will get involved that no one individual has to put in too much of this effort.
In the initial stages, we would like the site to grow as rapidly as possible, even if this is at the expense of quality. The idea is that we should arrive quite quickly at a sort of skeleton of the site, on to which people could add the flesh and blood later. Thus, the navigation pages will be important not just for navigation, but also for shaping the site as it grows. So one thing that you can do that would be very useful indeed is this. If you feel that you have a complete enough perspective on some class of problems to be able to classify it into a good set of subclasses, then write a navigation page for the class that does just that, even if the links you put in your page are to articles that do not exist. An example of such a page will be ready soon. If others are convinced by your organization of the given class of problems, then they may well be inspired to write the articles that you have suggested ought to exist.
An implication of this is that if you have an idea for a core article, then before constructing a navigation path to your article, you should first check whether a good path, or set of paths, already exists. (In fact, you will probably have done this already in order to find out whether the article itself already exists.)
Another implication is that if you have an idea for a core article but not the time to do it properly, then do it anyway and don’t be a perfectionist. You can always explain at the beginning of the article (there will be a facility for doing this) the ways in which you feel it could be improved. Something is better than nothing, and if others do not like everything about what you have written, then they will be free to edit it.
So if you are feeling public spirited, then next time your understanding of a certain part of mathematics takes a jump forward, don’t let it be just your brain’s connections that are changed: change those of the Tricki as well, so that in future other mathematicians can get to where you are more quickly. This advance in understanding could be of an existing piece of mathematics, or it could be a breakthrough that you yourself have made. Either way, the Tricki wants to know about it.
Other kinds of content.
One can imagine all sorts of other useful articles that might appear on the Tricki, such as references to journal papers together with descriptions of the main ideas contained in those papers. We are not at all against expanding the concept of the Tricki to include other kinds of content, and even if we were, we would not be able to stop people writing it. But we also think it is good to have some focus to the site. The overarching general principle is that it should be all about methods of doing mathematics rather than about mathematical subject matter.
Software features of the Tricki.
As well as a facility for writing articles, which should be self-explanatory, there will be two ways of making comments. One will be in the usual blog style, at the end of an article. But another will be inline comments. These will be comments that can be made just after the text to which they refer. Such a comment will not normally be visible, but there will be a little symbol next to the relevant piece of text, and if someone else clicks on the symbol then the comment will appear in a box to the side of the article. In this way the commenter won’t have to say things like “In the second paragraph of section 3.2” and the reader won’t have to scroll back and forth between comment and text. (However, the comment will also appear at the bottom in the usual blog way.) It will also be possible to reply to comments and have the replies indented.
Another gorgeous feature will be something that Doron Zeilberger suggested in this comment, in his point number 5. It will be possible to write an article and include a phrase such as “an easy calculation shows that”, and to do it in such a way that the reader can click on that phrase and see it replaced by a more detailed argument. It will therefore also be possible for other people to add optional further details in this way too. (They could if they wanted use the inline comments system for this, but having expanding and contracting text will be a very nice alternative way of doing it.)
As on Wikipedia, the full editorial history of each article will be available on the site. The names of the authors of articles will not appear on the articles, but can be found out from this editorial history. For this it will be necessary to register, though it will be possible to edit and comment anonymously without registering. And registering will be a very easy process.
I think there is more to say, so I may well add to this post, and particularly to this rather short final section. But for now let me simply post it.