Projects
What dreams I dream...
I am writing those here with two goals in mind. First I might remember them better and actually get some of my ideas done, as opposed to the current situation where I forget most shortly after thinking them up. Second, and perhaps more important, I hope some students might decide to talk to me more about them and carry them out.
So, if any of these tickle your fancy, please talk to me. I will fill you in on the details of the current situation and help you work on them. Most of these could easily lead to a publishable paper.
With Eddie Cheng, I have written an Integer Program model of the scheduling of instructor in the Mathematics department. It is very general and would work in any department at Oakland without any change. It would likely work in many other schools with little change.
I am curious to see if an Eclipse version would not be better in terms of the changes it could accommodate easily and the running time. It might also easily lead to a hybrid CP-IP version. (Here and after, CP is Constraint Programming and IP is Integer Programming.)
I have written some code to take a set of linear inequalities and project onto a subset of them, yielding a projected polytope. It works but the interface is not clean. It would be good to re-write to have a good, clean front-end, then a call to a fast FM code (from somebody else), then a back-end that would write a clean file. The yacc grammar is not bad but that would be the first thing to clean up.
Every time I have to model something as a semidefinite program, I spend hours (if not days) in the minutiae of taking a high-level formulation, transforming it, then writing some Matlab/Octave code to re-formulate all the blocks into a format digestible by CSDP or Sedumi. It's a big PITA and leads to all sorts of errors. Moreover the experiments always stops short because I never want to make any modifications; it's just too painful.
Thinking up a clean language of matrix manipulation that would spit out Octave code (for example) would be great. I haven't thought this one through yet. But simply looking at my code for the Mesnard/Kruk paper on the proof of termination of programs and creating a language to make that transformation clean would be a good start.
Addendum: This has been done; it is called Yalmip. Unfortunately it only works with Matlab. An Octave version?
A semi-algebraic set is a set described by polynomial inequalities. It is clear that such a set can WLOG be described by a set of quadratic inequalities in a larger space. A program that would do that change automatically would be nice. Maybe this should be considered with the FM project. There may be a way to abstract from both of these and merge them.
I also need to project back to the original space. (This is part of the full picture of the Loop Termination paper.)
This is a project that was started years and years ago with a very primitive derivative function in Maple. (The paper was accepted by a journal that died before publication and I never had the courage to resurect it.) The original code was more of the Kleenex variety (throw-away after use) but the need remains for a symbolic differentiation engine for function of matrices. (Think of the derivative of log(det(X)) w.r.t. X, not w.r.t. each component of X, for positive definite matrix X.)
I would likely not write it in Maple nowadays, but in Maxima or maybe even in pure lisp. But even a good Maple version would be welcome. The first problem to tackle in a Maple version would be a 'good' definition of what a symbolic matrix is. (Come to think of it, that would also be the first problem in any implementation!) The Maple object of that name is useless since it needs to have a dimension (like 5 by 25) while a 'good' definition, in my mind, must allow for matrices of size m by n. (Or even m_1 by m_2 by ... by m_n.)
Gnuplot has all the features one would want to plot graphs for a research but when I have to create a graph for a test in pre-calc or some other remedial mathematics class, it never works. Piecewise functions must be clear and an open or closed circle at the junction must be easy to specify. Maybe Gnuplot is not the right drawing tools or maybe, we can simply write front-end. Not sure which way to go; I just would like to stop wasting hours preparing tests in pre-calc because the graphs take so long to get right. I'm sure I spend more time preparing the tests than most of my students prepare for the tests.
It would be an interface that reads a gpg-encrypted file, given the appropriate password, let's you edit the file and re-encrypt it on 'save'. I see this as perfect for maintaining multiple passwords, for example, but there are many other possibilities. Something like this may exist. First look for it.
Added: It's been done and works perfectly.
I need this for the program termination paper, but it is also nice to have for different models to test. For example to generate Optimal Design of Experiments, or to contrast SAT solved via SDPs and other methods.
Of course, an interface Lisp - CSDP would be considerably easier... (Sigh) Added: Done. http://code.google.com/p/eclipse-clp-csdp/