Mathkaba : my tool for managing bibliography

I recently decided to systematically conserve a backup copy of articles I am downloading. But what if I want to use these backup copy: I usually only remember the title of the article, or the name of the author. If I was not really working on the article, I may forget the author, or even the title, if I only remember that “somewhere it is written that…”. You may know Mendeley: I tried to use it for some time, but it is not open source, has too many features for what I need, and could be better suited to a mathematical use, by supporting, for example, the MSC classification, or by having specific interfaces with MathSciNet or zentralBlatt.

Hence I decided writing my own program to do the job. For the moment, it may probably crash at any time, and seriously lack essential features, but it satisfies my daily purposes, which are:

  • have a quick overview of the articles I have on my computer
  • have a way of opening them without having to know where it is
  • in case it is not stored on my computer, open a suitable URL without having to search through MathSciNet

The result is called Mathkaba, and is hosted on GitHub. For the moment, it works by reading metadata which is not stored in a database as usual (I hate databases), but in plain text files along with the PDF files, which should have the same syntax as the ASCII output of ZentralBlatt. MathSciNet can also output entries in the endNote format, which seems equally interesting. Any comments are welcome.

5 March 2010 at 9:55 am 4 comments

Creating executables for Windows from a Linux box

When writing a program, especially a graphical one, you may feel some compassion towards Windows users and wonder whether it would be possible to give them a chance of using it. Famous toolkits like GTK and Qt provide good support for Windows and an abstraction layer for OS-dependent vital functions, so it becomes easier to write OS-independant code.

Next you need a cross-compiler: it’s just a compiler, except that instead of creating executable files you could run, it creates executables in another format (e.g. Win32 .exe files). But since Windows is very different from GNU/Linux, some code or one of its dependencies has to use Windows-specific functions: so you need source headers, and maybe additional libraries.

3 March 2010 at 3:34 pm Leave a comment

Changing default applications, for developers

When not using those uber-featured desktop environments (such as KDE or Gnome) out there, it can sometimes be challenging to find a simple, text-based way of configuring things. For example, I am currently writing a GTK2 program, which uses the method gtk_show_uri to open files using default programs: on the computer I am using at work, this results in opening Acrobat Reader over an XDMCP connection, which is really distasteful. Even using GNOME’s control center, there does not seem to be a way to change that. What should I look at?

24 February 2010 at 7:33 pm Leave a comment

Merry Christmas from a dying blog

To anyone still reading me, I wish a merry Christmas. May it be free from any gratuitous consumerist madness and proprietary software. I may still have several things to talk about in the near future.

25 December 2009 at 10:58 am 1 comment

Operads in Haskell

Mikael Vejdemo Johansson, who was at the Operads conference in Luminy (which I also attended), wrote in only one week a Haskell module computing Gröbner bases for operads. Nice work !

11 May 2009 at 8:25 pm Leave a comment

Elliptic curves for high school students

I had to give a talk to high school students about some mathematical notion: I decided to tell them something about elliptic curves, but not the usual speech about cryptography, finite fields and the group law on a cubic curve…

Instead, I talked about the perhaps less known appearances of elliptic functions as solutions of classical ODEs (even if I don’t really know much about these myself). The simplest mechanical system whose motion is governed by an elliptic curve is the pendulum: the reason for this is that the ODE \ddot{x} + \sin x = 0 which classically describes the time evolution of the angle of the pendulum is best rewritten in terms of the altitude of the pendulum: the law of energy conservation is then written as
p^2 = q(q-q_0)(q-2l) = P(q)
where 0 and 2l are the extremal values of the altitude q, q_0 is the highest altitude which can be reached with a given energy (even if q_0 > 2l, which corresponds to the pendulum make full rotations around its axis), and p is the vertical momentum of the pendulum.

In this setting, there are classical Hamilton relations dq = p dt, dp = P'(q) dt, so the differential form dt = dq/p turns out to be the canonical non-vanishing abelian differential on the elliptic curve. This explains why the period of the pendulum is an elliptic integral, which can be calculed by an arithmetic-geometric mean, and why the position of the pendulum at t = t_1 + t_2 can be deduced from its position at times t_1 and t_2 by the classical secant-tangent law.

The notes for the talk (in French) are available here.

11 May 2009 at 8:08 pm Leave a comment

Cardboard associahedron

After the dodecahedron comes the cardboard associahedron : it represents the combinatorics of moving parentheses to calculate an associative product of five things step by step. The vertices of the associahedron are thus the 14 different binary trees with 5 leaves.

Associahedron 1

Given four factors, there are exactly five ways of multiplying them using a binary operation: by moving parentheses according to the associativity rule, you go through five different trees in a cyclic way. This is known as MacLane’s pentagon coherence rule, which states that in not too weak notions of monoid, checking coherence for pentagon diagrams ensures that the definition of the product is well-behaved.

8 April 2009 at 12:11 am Leave a comment

Cardboard dodecahedron

I made a cardboard dodecahedron for the needs of a talk.

Cardboard dodecahedron

If you draw 5-coloured stars on all facets, by choosing smartly the colours, you can get five coloured cubes whose vertices are vertices of the dodecahedron. This trick can be used to show that the symmetry group of the dodecahedron is the alternate symmetric group \mathcal A_5: it replaces a star by a star with a different arrangement of colours.

Since there are 12 facets and 5 ways of rotating each of them, 60 colourings can be seen by rotating the dodecahedron by direct isometries. However, it is NOT true that you can see the 120 possible colourings by allowing also reflections (the full isometry group of the dodecahedron is the symmetric group on five colours). An easy reason for this is that the colouring is invariant under symmetry through the central point (which is a determinant -1 transformation). You can also argue that reflections act as double transpositions of the colours of a star.

People also talk about five tetrahedra in a isocahedron, which can also be obtained in the dodecahedron by choosing a tetrahedron in each cube in a consistent way. The tetrahedra have faithful action of the isometry group: there are two sets of five tetrahedron, which are exchanged under signature -1 transformations, and even permutations of the tetrahedra correspond to direct isometries.

6 April 2009 at 12:01 am Leave a comment

Computing Gröbner bases in Haskell

I wrote a small package to compute Gröbner bases in Haskell with the Buchberger algorithm (with applications to variable elimination). Performance is quite bad compared to specialised software like Macaulay, but it seems to work ! I put a Cabal package here. Maybe I’ll add several functions afterwards.

A testcase :
import Data.Polynomial
import Data.Ring
import Algebra.GroebnerBasis
import Algebra.Elimination
type R = Polynom QQ VarXYZ
[x,y,z,t,u,v] = map returnp [X,Y,Z,T,U,V] :: [R]
-- projection from a point on the intersection of quadrics
main = do
print $ step_eliminate [T] $ MakeIdeal
[x^2 - 3*y*z + z*t + 2*x*t,
z^2 + 5*y^2 + z*x - 2*t*z]

The output should be :

20 March 2009 at 7:47 pm Leave a comment

Schemes in algebraic geometry 3 : glued schemes and sheaves

André Weil was among the first ones to point out the importance of having a local description of varieties, especially projective spaces, which can always locally be described as an affine space with completion by a hyperplane at infinity, and projective varieties, which similarly look like varieties in affine space. The use of sheaves in local description of spaces was magnified by Cartan and Serre, in the context of complex analytic spaces, and generalised to the algebraic setting by Serre in Faisceaux algébriques cohérents.

The projective space is the simplest example of an algebro-geometric object which cannot be described by the prime spectrum or the functor of points of a ring. For example, there is no obvious ring whose ideals describe varieties in projective space, which come from homogeneous equations. We would like to give a correct definition of gluing affine lines (with coordinates z and 1/z) to define the projective line \mathbb P^1 as the gluing of \mathbb A^1 with \mathbb A^1 \to \mathbb P^1 given by z \mapsto 1/z. For functors of points, the latest article by Alain Connes and Caterina Consani, gives a definition. For prime spectra, one has to be aware that gluing only topological spaces do not give meaningful information on algebraic properties. This is illustrated by the case of differentiable manifolds, which are not the same as topological manifolds: gluing differentiable manifolds has to induce a correspondance between differentiable functions (this is equivalent to the requirement that gluing maps between charts be differentiable).

17 March 2009 at 12:35 am Leave a comment

Older Posts