LuveelVoom wrote: September 26th, 2026, 5:16 pm
EDIT: This... this is Elkies' theorem. I might be dumb.
yeah, doesn't help that in his paper he introduces it as conjecture, spends most of the paper discussing different problem and then whams you with "proof of conjecture"
nowadays people are usually more careful, using "conjecture" only for unknown stuff and "theorem/our main result" for "we'll prove it in the latter half"
LuveelVoom wrote: September 26th, 2026, 6:08 pm
Supposed "corrected version" based on your criticism. I skimmed it and it seems somewhat better.
definitely better - I can understand eigenvalues theorem (R6) now!
apparently not bs, just spectral graph theory :/
Ai seems to still be confused between density-within-generation and density-over-multiple-generations, but magic of this theorem is that it works in both cases (as long as you count separate generations as non-neighbouring)
I've tried to make the proof more presentable, but it's essentially density <= (avg neighbours in set - min_eigen)/(avg neighbours total - min_eigen) and getting eigen lower bound of -4 on Moore requires spectral machinery...
Elementary machinery, mind it, but still very clunky to write down all the required introductory proofs
I think there're slightly easier arguments for -8 (all cells have 8 neighbours) and -6 (split cells into 2x2 groups + 5 edges per node connecting outside) bounds, but eigenvalues are still very disconnected from graph and weights intuition
---
R8 and R9 got finally written down, but they seem useless and only cover one specific case each (and even then limited)
R5 got explained better, so I raise my grading from "incorrect" to "useless". Basically covered by LP method
===
NooneAtAll3 wrote: September 26th, 2026, 9:55 am
also, if I understand it correctly, there might still be some juice to squeeze by adding constraints about 1x1x1, 1x1x2 and other sizes (or even shapes) while still not growing beyond 3x3x2 superlife rule
if you do go outside 3x3x2, I think amling had much more success with pyramid shape in the previous approach, so that might be worth an attempt, considering that it isn't really about symmetry of superrule encoding or inside region - only about translates of one fitting inside the other
I've spent some time on it and now can explain most general theorem and practical consequences:
Given
- 3 arbitrary sets of cell-moments of Life "spacetime" - smallSet, BigSetA and BigSetB
- 2 relative positions of BigSets from the smallSet - A and B
- assignment of cell liveness for the smallSet
For any evolution of Life universe
1) place smallSet on every cell-moment
2) mark smallSets equal to the given liveness assignment
3) for every smallSet place BigSetA at displacement A - set AA; BigSets placed relative to marked smallSets form set Aa
4) for every smallSet place BigSetB at displacement B - set BB; BigSets placed relative to marked smallSets form set Bb
Now ratios |Aa|/|AA| and |Bb|/|BB| are equal, due to 1-to-1 correspondence (|AA| == |BB| == cell-moments, |Aa|==|Bb|==cell-moments with marked smallSet)
---
Obviously, since the result is about subsets of BigSets, we'll be operating on separating those
And obvious way is to split by "cell liveness in BigSet", forming equivalence classes ("Superlife A/B" colors)
And to make theorem's subsets go cleanly along borders of equivalence classes, it's sufficient to make smallSet be within BigSets
Now, you can just assign a separate variables to equivalence classes of both BigSets and run wild totally free to choose arbitrary BigSets... But I have a feeling that won't be as useful
So obvious goal is to make equivalence classes for both coincide and be represented by same variables (same "SuperLife" rule for both)
If you do choose same BigSet in exact same orientation, just translated sideways - you're guaranteed to get that.
If BigSets are of different shape or anything other than Life's space symmetries away from each other - you're guaranteed to fail
Question then becomes "what if BigSetB is rotated/mirrored version of BigSetA? (i.e. smallSet is rotated/mirrored when creating linprog constraint)"
after going back and forth for while, I think I managed to convince myself that classical "given Life universe evolution, take 8 rotated/mirrored copies of it - then apply theorem on union of them" should suffice
(linprog already operates on such mix, and upper density bound stays the same)
---
The last useful part is that smallSet should be
maximal - that is, if you add constraint about smallSet in positions A and B, you don't need to add constraint about smallSet's subset at position A and exact same subset at position B
That's basically doing "a1=b1; a2=b2, but now add a1+a2=b1+b2 "
But note that this doesn't cover different subsets
The opposite way to look at it is that "smallSet is same in positions A and B" can be split into "smallSet is same and extra cell == live in positions A and B" + "smallSet is same and extra cell == dead in positions A and B" if that extra cell fits
So, for Ai example of 3x3x2 with 3x2x2 constraint - you shouldn't need adding 3x1x2 constraints for same (0;1;0) displacement, but you can add one for (0;2;0) displacement of one against the other
---
All that suggests following algorithm:
Code: Select all
given BigSet of cell-moments
make a list of all possible evolutions passing through it (linprog variables)
add constraints "sum of all evolutions = 1" and "0 <= every evolution <= 1"
take 2 copies of BigSet
for all combinations of displacement, rotation and mirroring of one against the other:
find where 2 copies intersect
intersection set is smallSet
location of intersection inside either BigSet copy are subsetA and subsetB
for every cell assignment of smallSet
create weighted sum
for every BigSet evolution
if subsetA == smallSet cell assignment
add +1 to evolution's weight
if subsetB == smallSet cell assignment
add -1 to evolution's weight
set constraint "weighted sum == 0"
create weighted sum
for every BigSet evolution
if central cell is live
add -1 to evolution's weight
optimize for min weighted sum # linprogs usually search for min
if BigSet is symmetric, some of the resulting constraints naturally say that rotated evolutions have equal frequency - but be careful with combining them into one variable, because sum weights might not be {-1, 0, 1} anymore
it's necessary to have all BigSet evolutions represented for the bound to be valid, but it's fine to have extras. It's also fine to only add part of the constraints - your bound would just be weaker