August 4, 2010 in Research | Comments (0)
Tags: bounds, Pola, thesis
When I visited Calgary last, I explained my bounds inference scheme to Brian. It took most of an entire day of solid explanations on the whiteboard before he understood what I was talking about, but he didn’t have any suggestions for how to simplify it. “No this is right,” he said. “This is completely the right way to do it.”
Some time later he said “my biggest worry is you’re going to do all this work and no one will ever be able to understand it.” Aside from myself, Brian is the person who understands this best in the world, so it’s disconcerting that it took a day to explain it to him. I have low hopes that I’ll be able to put together a thesis which is understandable to my committee, but on the other hand I have high confidence in my teaching abilities, and what is writing a thesis if not non-verbal teaching?
Pola is complex. The syntax and semantics are rather arcane, necessarily so: if there were any way to simplify it we would, and in fact we did put a few simplifications in. The typing system is moderately if you are well versed in type theory; if you don’t have a strong background in type theory I can only imagine it appears as a tangled vine of thorny bushes, where each thorn is recursively a tangled vine of thorny bushes somehow. The bounds inference system is probably even worse, though only because it hasn’t been done before and I’ve had to conjure it from the ground up. I feel most confident about the bounds inference because it’s my biggest contribution but also because it’ll be the easiest to make self-contained and not have to worry about whatever notation is conventional or canonical.
There are multiple versions of Pola, variations I suppose, which I keep mostly in my head. My thesis is focused on the “polynomial-time with unfolds and with duplication by peeks” variant of Pola, which I think to be the most useful, though probably the most annoying to deal with. Most of the stuff I’ve written up I’m now rewriting in a new notation which will hopefully be easier to understand.
A couple weeks ago my friend Angela came to my office and we chatted about theses. I don’t know whether to describe the process of writing a thesis as vanity or futility. Maybe it’s just compulsion. Whatever it is, it doesn’t seem totally sensical to consume so much effort and one’s twindling mental health into it. “Remember: nobody cares” she said. It’s become a bit of a mantra for me. Even if my work goes completely forgotten and truly no one cares, I can’t help but pretend that people do anyway and do everything properly. Every week I spend at least a couple panicked hours tying up loose ends that I’m entirely convinced no one would ever notice were loose to begin with. This diligence includes putting most of my days into dreaming up ways to represent things to make them easier to understand, even if no one fully will.
The further I get the more I notice the hacker part of me trying to overtake the academic part of me. It’s tempting to just strike out my entire chapter 3 and say “yeah seriously just download the software and play with it. You will learn more in 5 minutes of playing around than you will rereading this stupid chapter a hundred times”.
Man this entry sounded depressing. It’s all worth it when you do finish a section, though. You do get a bit of a rush when you finally word something really elegantly and you can visualize your committee nodding along thinking “well that’s clear. Why did put so much emphasis on something that’s so simple?”
When I visited Calgary last, I explained my bounds inference scheme to Brian. It took most of an entire day of solid explanations on the whiteboard before he understood what I was talking about, but he didn’t have any suggestions for how to simplify it. “No this is right,” he said. “This is completely the right way to do it.”
Some time later he said “my biggest worry is you’re going to do all this work and no one will ever be able to understand it.” Aside from myself, Brian is the person who understands this best in the world, so it’s disconcerting that it took a day to explain it to him. I have low hopes that I’ll be able to put together a thesis which is understandable to my committee, but on the other hand I have high confidence in my teaching abilities, and what is writing a thesis if not non-verbal teaching?
Pola is complex. The syntax and semantics are rather arcane, necessarily so: if there were any way to simplify it we would, and in fact we did put a few simplifications in. The typing system is
June 26, 2010 in Research | Comments (0)
Tags: bounds, conference, Pola, thesis
Check out the picture gallery. Even though it was all category theory, and consequently I can follow almost none of the other talks, it’s still a wonderful conference to go to. It’s a nice atmosphere, a good mixture of grad students, professors and professors emeriti.
After the conference I stayed in Calgary for another couple weeks working on my thesis and going through bounds inference in detail with Brian. Unfortunately, and excitingly, we found a big problem with the mixture of coinductive and inductive recursion which can take one out of polynomial time. I may write on that more at some other time, but only after I think of a good way to describe it, at which point the first place it will appear is my thesis.
Check out the picture gallery. Even though it was all category theory, and consequently I can follow almost none of the other talks, it’s still a wonderful conference to go to. It’s a nice atmosphere, a good mixture of grad students, professors and professors emeriti.
After the conference I stayed in Calgary for another couple weeks working on my thesis and going through bounds inference in detail with Brian. Unfortunately, and excitingly, we found a big problem with the mixture of coinductive and inductive recursion which can take one out of polynomial time. I may write on that more at some other time, but only after I think of a good way to describe it, at which point the first place it will appear is my thesis.
June 10, 2010 in Research | Comments (0)
Tags: bounds, conference, family, Pola
The following fffffffuuuuuuuuuuuu describes most of my life for this week:

I’m flying out to Calgary Sunday morning and then heading to Kananaskis for FMCS. My code is already working for many cases, but it’s not as complete as I’d like it to be. I’d like to do a proper demonstration of bounds inference when I give my talk. It’s a pretty laid-back conference so, truth be told, even if I don’t get it totally working by then I can still just demo what I have, or just not demo at all.
I went to FMCS once before, in 2004 at the end of my undergrad. It’s a very nice conference, less formal than most, which makes it a lot more fun and a lot more productive, I think. After the conference I’ll be hanging around in Calgary for another week or so working on my thesis and hanging out with the parents. Good times.
The following fffffffuuuuuuuuuuuu describes most of my life for this week:
I’m flying out to Calgary Sunday morning and then heading to Kananaskis for FMCS. My code is already working for many cases, but it’s not as complete as I’d like it to be. I’d like to do a proper demonstration of bounds inference when I give my talk. It’s a pretty laid-back conference so, truth be told, even if I don’t get it totally working by then I can still just demo what I have, or just not demo at all.
I went to FMCS once before, in 2004 at the end of my undergrad. It’s a very nice conference, less formal than most, which makes it a lot more fun and a lot more productive, I think. After the conference I’ll be hanging around in Calgary for another week or so working on my thesis and hanging out with the parents. Good times.
October 7, 2009 in Research | Comments (0)
Tags: algebra, bounds, peeks, Pola
My visit this week to Calgary to work with Brian and Robin is coming to an end and has definitely paid off again. We have another day at least of work ahead of us, but probably not much more real work will get done by then since we still have the FOPARA paper to finish up and get camera ready. But, just in the past couple of days we’ve already made tremendous progress in improving and stabilizing the language. It won’t be too much longer before “core Pola” is finalized.
I should say there was one interesting result that Brian told me about. The peek construct is a unique construct to the language, which allows one to, under some restrictions, break affineness, i.e., allows one to reference a variable multiple times to give the programmer more expressiveness. It’s a delicate business since affineness is what keeps Pola programs polynomial-time, particularly in the context of recursion. As it turns out, if you remove the recursion-symbol restrictions on peeks — allowing recursion within the condition of a peek—but keep the other restrictions on peeks, you exactly capture PSPACE! We demonstrated this by changing just a couple lines of code, allowing recursion, and coding up QSAT to play with. (more…)
My visit this week to Calgary to work with Brian and Robin is coming to an end and has definitely paid off again. We have another day at least of work ahead of us, but probably not much more real work will get done by then since we still have the FOPARA paper to finish up and get camera ready. But, just in the past couple of days we’ve already made tremendous progress in improving and stabilizing the language. It won’t be too much longer before “core Pola” is finalized.
I should say there was one interesting result that Brian told me about. The peek construct is a unique construct to the language, which allows one to, under some restrictions, break affineness, i.e., allows one to reference a variable multiple times to give the programmer more expressiveness. It’s a delicate business since affineness is what keeps Pola programs polynomial-time, particularly in the context of recursion. As it turns out, if you remove the recursion-symbol restrictions on peeks — allowing recursion within the condition of a pe
June 17, 2009 in Research | Comments (0)
Tags: bounds, peeks, Pola
My undergraduate supervisor (from the University of Calgary), Robin Cockett, was in town today on a short visit. My two current supervisors, Robin and I spent the entire day in a friendly research meeting. I suppose the biggest benefit was the everyone got to meet each other, but we also covered a lot of ground on Pola and what we should be focusing on.
The first big change is that we’re going to, again, redo peeks and cases. Peeks and cases have long been a problem with Pola and one which is, so far as I know, completely unique to Pola. In a typical functional language, case constructs are no matter at all: you have some datum and you case on it to see what it is (is it an empty list or a non-empty list?) and go on your way. In Pola things are not so neat and tidy: central to the workings of Pola is the idea that often you’re not allowed to reference a variable more than once (lest you break out of polynomial time). This restriction can be waived, very delicately, if you promise to only “peek” at a value but not use it. The distinction between a case (“consuming” a value) and a peek has always been a bit awkward, but also very dangerous to play with if you don’t want to accidentally allow non-polynomial things slipping in. I think we’ve finally figured out a good scheme.
The second big change is discussing how to the bounds inference. This is a huge one because having the compiler infer bounds is, in my mind, the raison d’être for Pola. I’m almost done implementing very loose, clumsy bounds. They’re correct as upper bounds, but they’re so loose as to be nigh useless. There will never be a perfect solution to getting totally tight bounds and I’m becoming increasingly aware that there is a huge trade-off between being able to get tight bounds on things and having to carry around a lot of typing information that allows you to infer those bounds. This is what I’ll be spending most of my time on in the near future.
As for the problem I mentioned last time about having to implement my own polynomial arithmetic: I just rewrote it myself and I’m happy with it. It works and it’s much cleaner than before.
My undergraduate supervisor (from the University of Calgary), Robin Cockett, was in town today on a short visit. My two current supervisors, Robin and I spent the entire day in a friendly research meeting. I suppose the biggest benefit was the everyone got to meet each other, but we also covered a lot of ground on Pola and what we should be focusing on.
The first big change is that we’re going to, again, redo peeks and cases. Peeks and cases have long been a problem with Pola and one which is, so far as I know, completely unique to Pola. In a typical functional language, case constructs are no matter at all: you have some datum and you case on it to see what it is (is it an empty list or a non-empty list?) and go on your way. In Pola things are not so neat and tidy: central to the workings of Pola is the idea that often you’re not allowed to reference a variable more than once (lest you break out of polynomial time). This restriction can be waived, very delicately, if you promise to only “peek” at a value