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 15, 2009 in Research | Comments (3)
Tags: algebra, Haskell, Pola
First, some exciting news that I’ve added the Pola project as my first project. There is a Subversion repository for it as well. We’ve been talking about getting a site set up around Pola, with examples and user’s guides and maybe some interactive features, so this is a very small first step towards that.
Code-wise, what I’ve been working on lately is finally trying to do bounds inference properly in the implementation. The bounds inference still isn’t entirely done and what’s there still isn’t working entirely perfectly, but it is excitingly close! Type in any well-typed function which relies only on inductive data types and it will give you polynomial bound on the running time! Coinductive data types will come soon.
In an effort to making my “boring” research blog more interesting, I’ve now even got a screenshot! Is code any more exciting when it’s in screenshot form?
The biggest problem I’ve had so far is writing my own Polynomial data type in Haskell. I don’t even need anything fancy: I need addition, subtraction and multiplication of polynomials over arbitrary variables. Sadly I haven’t found anything suitable and had to build my own. I’m a little out of my depth here: it would be a pretty big understatement to say that I’m ignorant when it comes to computer algebra. It’s a virtual certainty that I’m doing my data representations and arithmetic operations in the least efficient way possible. But I can’t worry too much about; this isn’t really what my research is about.
If I find time today I think I’ll go through some computer algebra systems to find one which has a suitably free licence and has a reasonable Foreign Function Interface (so that I can use it painlessly from Haskell). Does such a thing exist?
First, some exciting news that I’ve added the Pola project as my first project. There is a Subversion repository for it as well. We’ve been talking about getting a site set up around Pola, with examples and user’s guides and maybe some interactive features, so this is a very small first step towards that.
Code-wise, what I’ve been working on lately is finally trying to do bounds inference properly in the implementation. The bounds inference still isn’t entirely done and what’s there still isn’t working entirely perfectly, but it is excitingly close! Type in any well-typed function which relies only on inductive data types and it will give you polynomial bound on the running time! Coinductive data types will come soon.
In an effort to making my “boring” research blog more interesting, I’ve now even got a screenshot! Is code any more exciting when it’s in screenshot form?
The biggest problem I’ve had so far is writing my own Polynomial data type in Haskell. I don’t even need anything fancy: I need addi