Welcome to Centaur

Francis Wright's personal web site

Photo of Francis Wright

This web site has taken over some of the content that was once served from Centaur at Queen Mary, University of London. Currently, it provides details of the two books I have authored or co-authored, GNU Emacs code, Maple code, various sets of lecture notes, and a list of my research papers, etc (plus access to a few of them, including my PhD dissertation and some presentations); see the links on the left. Some other increasingly obsolete information is available on my Queen Mary web site. You can contact me via the contact / feedback page.

Francis Wright

October 2023

Mini biography

I took A-levels in Maths, Physics and Chemistry, followed by a degree in Natural Sciences (Theoretical Physics) at the University of Cambridge and a PhD in Theoretical Physics at the University of Bristol. I joined the Department of Applied Mathematics at Queen Mary, University of London, as a Lecturer in 1979. I was a Reader in Mathematics from 1989 and Director of Undergraduate Studies in Mathematical Sciences from 2007 until I retired on 1 October 2017. My main interests are various aspects of computing, in particular algebraic computing and web technology. In my spare time I like to watch Formula-1 and Wimbledon on television!

centaur n.

a creature in Greek mythology with the head, arms, and torso of a man and the body and legs of a horse.

[Middle English via Latin centaurus from Greek kentauros, of unknown origin: the Greek name for a Thessalonian tribe of expert horsemen]


Definition from the Concise Oxford Dictionary Ninth Edition; graphic originally from www.astrology-numerology.com.

Open-source programming projects

I mainly work on REDUCE (the computer algebra system) and occasionally GNU Emacs (the programmer's editor).

I'm developing a GUI (graphical user interface) for Web REDUCE, which is a web app version of REDUCE. Web REDUCE consists of CSL REDUCE compiled to WebAssembly using Emscripten, wrapped in an XHTML5/CSS/JavaScript GUI.

In Autumn 2019 I began developing a new desktop GUI for REDUCE called Run-REDUCE, written in Java, which I continue to work on sporadically. After writing a prototype using the Swing graphics library I switched to JavaFX. Run-REDUCE is freely available from GitHub, which is currently my preferred version control and off-site backup facility.

I develop and maintain the REDUCE web site, which is a merged version of the web site created by Tony Hearn (the original author of REDUCE) around the turn of the millennium when REDUCE was a commercial product and the web site I created at SourceForge when REDUCE became Open Source in late 2008. Both the original URLs now provide access to the same merged site hosted at SourceForge. When I merged the two sites in mid 2017 I introduced the use of PHP, mainly to handle the navigation menu. I later introduced the use of the Bootstrap library to make the site responsive, but Bootstrap requires a lot of markup within the body of a web page, so to facilitate that I experimented with the PHP-based template system Smarty, which I subsequently dropped in favour of just using PHP directly.

I am slowly enhancing the support for editing REDUCE files and running REDUCE in Emacs (REDUCE IDE) that I originally wrote several decades ago.

I have ported REDUCE to run on Common Lisp. This requires an emulation layer to make Common Lisp behave like Standard Lisp and a modified build system. So far, I can build almost all of the current version of REDUCE using both SBCL (Steel Bank Common Lisp) and CLISP, and almost all of the test files run without errors. However, there are useful components of REDUCE that don't have test files and I don't yet know how well they run. Also, REDUCE on Common Lisp is slow (although SBCL is much faster than CLISP). So there is more work to do.

I have also worked on porting REDUCE to run on Emacs Lisp, which provided the basis for my port of REDUCE to Common Lisp but is currently on hold. This requires an emulation layer to make Emacs Lisp behave like Standard Lisp, a user interface and a modified build system. So far, I can build a version of REDUCE 3.8 (which was the last commercial version) that runs most test files correctly. REDUCE requires support for arbitrary-precision integers which, when I was working on this, Emacs Lisp did not provide. I got quite a long way without "big integers" and using the GNU Emacs Calc package got me somewhat further, but I began trying to develop a better package that will efficiently support the big integers that REDUCE needs. (This is probably redundant since Emacs now supports big integers.) When I finish porting REDUCE to run on Common Lisp I intend to take what I have learnt back to porting REDUCE to run on Emacs Lisp, which should soon support native compilation and so run much faster.