(Also: My computing account with Uchicago,
and hence that email address, is now defunct. Oh well...)
EDIT: Emily points out that the above is mistaken.
(Also also: Right now it seems I can only play Dominion at all decently if I can get combo cards. Need to learn how to better handle games where those don't exist.)
So let's take a moment for me to explain the computations I've been doing.
So let's let f(n) be complexity of n, define d(n)=f(n)-3log_3(n) (d stands for "defect"), and A_k={n:d(n)<k.} (Yes, this used to be a nonstrict inequality. I've decided I like the strict inequality better. You'll see why.) Recall, some time ago Josh proved that for any k, A_k(x) is polylogarithmic in x. He did this by showing that A_k satisfied a... what would you call it, a sub-recurrence? A_(k+1) is contained in something that depends on A_k. Although he didn't actually use step size 1, he used step size 1/10. Really any step size at most d(2)=2-3log_3(2) would work. (I'm going to call that number α
1... I think I've said that before. Actually, no, I'm just going to call it d(2), because that's much easier to write here.) In fact, any step size less than 1 would work, but we didn't realize this till later. However I'm going to continue to talk just about using a step size of d(2), for reasons you'll see.
So I asked, is this good enough to explicitly compute A_k beyond what we already know? Unfortunately, well, it wasn't. But I'm going to skip over how we got to where we did, seeing as I don't remember the chronology very well and much of it involved us doing stuff that was a bit dumb (i.e. trying to use a step size of 1.) (Basically, I tried to use a step size of 1, and concluded I couldn't do it. Then Josh tried to fix what I did by just using a strict inequality instead (at that point we were generally using nonstrict inequalities). But when I looked over his argument, it didn't quite work. While trying to repair it and failing, somewhere I realized the whole issue would go away if we just used a step size of less than 1. D'oh.)
Anyway, eventually Josh got an improvement on the addition part and I got an improvement on the multiplication part that allowed us to get that linear bound on the power of the logarithm; but also to start actually computing A_k. Let's say we pick a step size of &alpha, and let A
α* denote the multiplicative closure of A_α (which is polylogarithmic iff α<1); then an element of A
(k+1)α is an element of A
α* times one of the following: A product of an element of A_iα and A_jα where i+j=k+2; or an element of A_kα plus an element of of a finite set which depends on (k+1)α; or an element of a finite set that depends on α.
Is *this* good enough to explicitly compute A_k? Almost! We need two things. Firstly, we need to pick a step size at most d(2). Otherwise, A_α contains 2, meaning A
α* contains all powers of 2; and if we knew how to handle powers of 2, well, we probably wouldn't be doing all this. But if α≤d(2) then we just have to deal with powers of 3. Secondly, we need to use an additional clever argument of Josh's that improves the addition case a bit - if k<3, we can take the finite set we're adding from to just be {1}.
OK. So procedure is now as follows: 1/10<d(2)<1/9, and we already know A_1 from stuff I'd done previously; what's more, we explicitly know the defects of all those numbers, so we know A_kd(2) for k≤9.(Actually, this procedure is good enough we could start from the bottom and recompute this! We don't need to use the stuff I did earlier.) So say we want to carry out the first step and compute A_10d(2). (We also want to compute the defects of all its elements, so we can determine A_k for any k≤10d(2).) Well, we take products of elements from A_id(2) and A_jd(2), where i+j=11. And we take elements of A_9d(2), and add 1 to them. Then, we compute f of these numbers. How? Well, upper bounds are easy; and for lower bounds, we use the fact that we know that these numbers are not in A_9d(2). Well, if they're not. If they are, then we already know their defects. So having computed f, we now know d of these numbers, and so in particular we know which ones have defect less than 10d(2). Yay! Repeat until you hit kd(2)>3 and you have to rethink your method (because now 1 is not the only number you might have to add), or until you get sick of it.
I have currently, by hand, gone up to 14d(2) (a little over 3/2), and most of this was looking quite automatable. The lower bounds on f I was doing a bit adhocly at first, but actually it's not too hard to prove that - so long as the number's not one you already have - they work out to be what you want them to. The only sticky part, that I couldn't think of how to automate, was how do you check if the numbers *are* ones you already have? We're dealing with infinite families of numbers here.
Of course, these infinite families of numbers are all of forms like a*3^n+b*3^m+c*3^k, but somehow it didn't occur to me till recently that I should just
write everything in ternary. Suddenly it's so much easier - I can check it pretty much by eye! Indeed, it seemed automatable... and now I'm quite certain it is, and that's what I'm working on right now. This shouldn't take too long; it's much simpler than
that previous monstrosity I wrote.
Unfortunately, what I'm writing up right now will necessarily break down when we hit 2 (i.e. when we hit 19d(2)). You see, the numbers 3^n+1 all have defect less than 1; so numbers (3^n+1)(3^m+1) will all have defect less than 2. And that infinite family is not one that the program as I'm writing it can handle. It's quite possibly doable, but I'll think about that afterwards.
Hm, perhaps I should upload my table of summarized results so far... note not everything in the initial note will be comprehensible as this was originally just intended to show to Josh (and due to its nature as something only partially completed, I'm not going to fix that right now).
Here it is! The reason it includes 14d(2) itself is because we can get that as a freebie, already knowing it from elsewhere.
ADDENDUM: I just realized I never explained why strict inequalities make things better! The reason for this is that if you use nonstrict inequalities, then 2∈A_d(2), and so you can't actually compute A_k using steps of size d(2), you'd have to use steps of size less than d(2). So that is way more trouble. Especially since determining things of defect exactly k*d(2) is (in cases so far) pretty easy (the freebie mentioned above), so truly nothing is lost.
-Harry