[SnapPea-planning] priorities

Nathan Dunfield nmd at illinois.edu
Sun May 3 14:41:06 EDT 2009


> If we're going to get this ambitious, I think it makes sense to
> rewrite the core in a modern language.  I'd favor either Haskell or
> Python (not knowing very much about either), as being friendlier to
> mathematicians who aren't experienced programmers.  Also, there's no
> special reason we can't have both -- we should have a reasonable
> separation of the various modules, and it's possible to write common
> library routines, some of which would handle the conversion between
> human-readable file and internal representation.

In an ideal world, rewriting the core in a modern language would make  
sense, but in this one I suspect it's too low on the reward/work  
ratio to be worth it --- for one thing, it would be a tremendous  
amount of work, even with todays more expressive programming languages.

Also, you can get a lot of the benefits of rewriting the core by just  
mixing it in with more modern code.  For instance:

* Marc and I wrote, some years ago, a Python triangulation package  
called "t3m" (which is available at our website).  It does basic  
normal surface theory, including spun normal surfaces.   We have a  
class that "mixes" t3m's representation of a 3-manifold  with  
SnapPea's and allows you to do things like this:

 >>> from boundary_slopes import *
 >>> M = OneCuspedManifold("8_20")
 >>> M.find_normal_surfaces()
 >>> M.boundary_slopes()
[(0, 1), (1, 0), (2, -1), (4, -1), (8, 3), (10, -1)]
 >>> M.volume()
4.1249032518076758
 >>> M.fundamental_group()
Generators:
    a,b
Relators:
    aabbaabbaaBAAAB

* In this context,  I should also mention Ben Burton's program  
"Regina" (http://regina.sf.net) which focuses on Normal surface  
theory.   The core triangulation library is written in C++ and there  
is a full python interface to this.  He also has a complete GUI,  
based on KDE/Qt, which runs on Linux and OS X.  Ben's program is very  
well documented, though I haven't used it all that much.  (Which I  
think comes back to my response to Bill's question about big vs.  
small.  Ben's program is big, and when it was first introduced was  
very hard to get to compile much less mess with.  I think it is much  
better now, but I haven't been motivated to look at it much because,  
of course, I already understand how t3m works...)

---------------------------

In terms of additional items for your wish list, an idea version of  
GUI SnapPea would encompass Damian Heard's orbifold additions to  
SnapPea as shown in his Orb program.

	Best,

	Nathan









More information about the SnapPea-planning mailing list