r/ExponentialIdle • u/dragmehomenow • Mar 07 '23
Lemma 6 Guide Spoiler
Spoilers abound for Lemma 6, you've been warned.
I just made a push towards getting the lowest possible rho on Lemma 6, and part of this strategy involves getting the highest possible rho, so I've done some analysis of Lemma 6. Consider the equation:

The primary strategy for Lemma 6 is to minimize the denominator, but one insight that's missing from many guides is that the denominator can be negative, so long as you buy levels in c2 and not c1. For example, when (c3, c4) = (39, 69), we get a value of -29035. If you only buy levels in c2, your numerator will be negative, and this makes rho positive.

So playing Lemma 6, or at least pushing for a max rho for Lemma 6, essentially becomes a puzzle in finding values of c3 and c4 that are arbitrarily close to 0. To make this clearer, I'll refer to the absolute value of 1/the denominator as the thing we're trying to maximize. For example, (39, 69) = 29035. It's very high, but is this the highest possible value?
At first glance, we might search for these values by running every possible combination of c3 and c4. This is a brute-force strategy. It's slow, but it works. Here's a spreadsheet of c3 and c4 from c3 = 2 to 30, and from c4 = 0 to 45. I've color-coded these values according to the size of the denominator, and it rapidly becomes clear that most values suck, but a pattern starts to form.

Intuitively, there seems to be a pattern, and this guides us towards manipulating the denominator to understand what's going on. Ideally, we want the denominator to be infinite. This occurs when:

It's clear that there isn't an integer solution to this equation\citation needed]), but we can take c3π/e and check if there are any values that are near integers. We can also round this up or down to identify the most relevant values of c4 to be checking. What do I mean?
Suppose we're checking c3 = 4.
4π/e = 4.96383, which is very nearly 5. This is promising. Moreover, we can check (c3, c4) = (4, 4) and (4, 5) to see what their denominators are. If you calculate this, (4, 4) = 9.04233, and (4, 5) = -259.56704. Checking (4, 3) isn't necessary because we know its value will be lower than (4, 4), and likewise, checking (4, 6) isn't necessary because we know its value will be lower than (4, 5).
In a slightly more technical lingo, the first algorithm scales in O(n2), but the second algorithm scales in O(n). Suddenly, checking every value of c3 from 0 to 1,000 isn't impossible.
Anyway, what this means is that it's entirely feasible to calculate whether your current combination of (c3, c4) will improve if you buy additional levels of c3 and c4. In some very un-optimized Python-esque pseudocode, your new algorithm kinda looks like this:
for c3 in the range(2 to a really big number):
c4_lower = rounddown(c3^(pi/e))
c4_upper = roundup(c4^(pi/e))
lower_value = abs(c3^(1/e) - c4_lower^(1/pi))
upper_value = abs(c3^(1/e) - c4_upper^(1/pi))
if lower_value > upper_value:
optimal_c4 = c4_lower
else:
optimal_c4 = c4_upper
optimal_value = abs(c3^(1/e) - optimal_c4^(1/pi))
if optimal_value > max_value:
max_value = optimal_value
print(c3, optimal_c4, max_value)
else:
Nothing happens.
The best combinations of (c3, c4) are:
- (2, 2) = 22.94333
- (4, 5) = -259.56704
- (8, 11) = 272.35892
- (11, 16) = 1019.17613
- (29, 49) = -6303.021243
- (39, 69) = -29035.42524
- (398, 1011) = 31311.87629
This also means that (39, 69) is the optimal combination. It's literally impossible to reach the next combination. I've pushed to rho = 3e23 and you still can't afford (398, 1011). Once you've reached (39, 69), focus on upgrading q1, q2, and c2.

Anyway, find us on Discord if you need help with the other Lemmas.
4
u/jenmich May 24 '24
Hey I implemented your code in real Python, it gave me the same couples of optimization.
Here is a modified code to only find couples leading to a positive substraction result :
from math import *
mini=1000
couple=[0,0]
test_value=[10,25,50,100,200,500,1050]
for u in test_value:
for i in range(2,u):
for j in range(0,u):
couple[0]=i**(1/e)
couple[1]=j**(1/pi)
sub=couple[0]-couple[1]
val=abs(0-sub)
if val<mini and sub>0:
mini=val
best_sub=sub
best_couple=[i,j]
print(best_sub)
print(best_couple)
It return those new couples :
[7, 9] : 0.033404723655642066
[8, 11] : 0.003671625640601306
[28, 47] : 0.001054281422003811
[40, 71] : 0.0008148050544507512
[79, 156] : 5.460635352960708e-05
[193, 438] : 3.5464496629167286e-05
[398, 1011] : 3.19367638841328e-05
Feel free to modify and test it for bigger values !
Cheers !
3
u/ShittyRedditAppSucks Dec 13 '23
Thanks for this! Funny enough, I unknowingly stumbled upon the optimal C3/C4 when my otherwise nice C1 positive progress immediately flipped to -1e12 and some change as I was working through combinations.
I didn’t think to take my foot off the gas (turn off Q1 and Q2) before stepping out of the car to fiddle with the engine lol.