Logic Life Search (LLS)

For scripts to aid with computation or simulation in cellular automata.
User avatar
TheWayOfTheCon
Posts: 302
Joined: March 28th, 2025, 11:40 pm
Location: Kraken Mare, Titan

Re: Logic Life Search (LLS)

Post by TheWayOfTheCon »

EvinZL wrote: March 3rd, 2026, 11:30 pm
can you try adding

Code: Select all

--force-change 0 4
to the options? This should tell LLS to make generations 0 and 4 different.
The -c in my commands is a shorthand version of --force-change, but I could try those specific values and see what I get.

Didn't change anything unfortunately.
I could've chose a better username, but oh well.

Still learning the ropes of cellular automata, focused on one OCA at a time. My current interest is B35/S126 and range-two LTLs.
Sokwe
Moderator
Posts: 3378
Joined: July 9th, 2009, 2:44 pm

Re: Logic Life Search (LLS)

Post by Sokwe »

TheWayOfTheCon wrote: March 4th, 2026, 8:25 pm
EvinZL wrote: March 3rd, 2026, 11:30 pm can you try adding

Code: Select all

--force-change 0 4
to the options? This should tell LLS to make generations 0 and 4 different.
The -c in my commands is a shorthand version of --force-change, but I could try those specific values and see what I get.

Didn't change anything unfortunately.
It's best to test with a search you know will complete quickly. Consider this D4+ symmetric p8 oscillator whose envelope fits in an 8x8 bounding box:

Code: Select all

x = 8, y = 8, rule = B3/S13
3b2o$2bo2bo2$2bo2bo$2bo2bo2$2bo2bo$3b2o!
To find this oscillator we can run the following command:

Code: Select all

./lls -s p8 x0 y0 -c 0 4 -b 8 8 -r B3/S13 -p "=12" -s "D4+" -n 5
I included `-n 5` so that LLS will try to find 5 solutions with the above constraints. The search returns only 4 solutions, corresponding to the 4 phases of the oscillator that have 12 cells. Now if I use your original changed phases `-c 1 8` like so:

Code: Select all

./lls -s p8 x0 y0 -c 1 8 -b 8 8 -r B3/S13 -p "=12" -s "D4+" -n 5
I quickly get 5 solutions, at least one of which is not p8. This is because `-c 1 8` is a difference of 7 generations. Notice that any p2 oscillator will be different after 7 generations, so this does not prevent the discovery of p2 oscillators. By contrast, `-c 0 4` gives a difference of 4 generations, and every p2 (and p4) oscillator will be the same after 4 generations.

Also, generations are indexed starting at 0, so you should really use `-c 0 N` to force a change between generation 0 and generation N.

Please test the above searches to make sure you get the same results. If you do not get the same results, please share your results here.
-Matthias Merzenich
Disaster16439
Posts: 334
Joined: June 30th, 2023, 9:17 am
Location: Teyvat

A LLS input generator

Post by Disaster16439 »

After experiencing the pain of manually inputting stuff into a table, I decided to make a program to generate it. How to use: First, in Golly, switch your rule to LifeSuper. Then, make your pattern, where the state mappings are:

State 0 --> 0

State 1 --> 1

State 2 --> *

State 3 --> 0'

State 4 --> 1'

State 5 --> *'

The later states are variables. - signs are not currently supported. You have to run this script once for every state

Code: Select all

import golly as g
output=""
convertlist=["0","1","*","0'","1'","*'","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t"]
rect=g.getselrect()
if len(rect)==0:
	g.exit(message="No selection!")
else:
	for y in range(rect[1],rect[1]+rect[3]):
		for x in range(rect[0],rect[0]+rect[2]):
			if x==rect[0]:
				if y==rect[1]:
					output=str(convertlist[g.getcell(x,y)])
				else:
					output+="\n"+str(convertlist[g.getcell(x,y)])
			else:
				output+=","+str(convertlist[g.getcell(x,y)])

with open("llsmakeroutput.txt","w") as f:
	f.write(output)
g.show('Done!')
The script will store it in a file called llsmakeroutput.txt.


Edit: Whoops, included a part from a previous version. fixed.


Edit: Whoops, said whoops instead of fixed. fixed

Code: Select all

x=0,y=0,rule=B34q/S23-k
14b3o$13bo3bo$13b2ob2o9$15bo$15bo$b2o12bo12b2o$obo25bobo$o10b3o3b3o10b
o$obo25bobo$b2o12bo12b2o$15bo$15bo9$13b2ob2o$13bo3bo$14b3o!
[[ LOOP 200 THEME POISON AUTOSTART T 0 PAUSE 0.3 ]]
I’m sandless :D
User avatar
LaundryPizza03
Posts: 2629
Joined: December 15th, 2017, 12:05 am
Location: Unidentified location "https://en.wikipedia.org/wiki/Texas"

Re: Logic Life Search (LLS)

Post by LaundryPizza03 »

This search found a c/3o instead of the expected 3c/5o.

Code: Select all

(native) gabefrohaug@MacBook-Pro logic-life-search % ./lls -S kissat -b 12 11 -r pB2a345678/S -s p5 x3 -a p1 -p "<=10"
Getting search pattern...
Done

Preprocessing...
Done

Width: 14
Height: 13
Duration: 6

Number of undetermined cells: 594
Number of variables: 2418
Number of clauses: 309397

x = 14, y = 13, rule = B2acn3ar4-cew5-cknr6-ck78/S
bbbbbbbbbbbbbb$
bbbbbbbbbbbbbb$
bbbbbbbbbbbbbb$
bbbbbbbbbobbbb$
bbbbbbbbbobbbb$
bbbbbbbobobbbb$
bbbbbbbobobbbb$
bbbbbbbobobbbb$
bbbbbbbbbobbbb$
bbbbbbbbbobbbb$
bbbbbbbbbbbbbb$
bbbbbbbbbbbbbb$
bbbbbbbbbbbbbb!


Total solver time: 44.02043318748474

Code: Select all

x = 3, y = 7, rule = B2ac3n4cintz5e6i/S
2bo$2bo$obo$obo$obo$2bo$2bo!
EDIT: Probably just a bit-flip error. Try running it 100 times in a row and see how often it finds a non-3c/5o result.
EDIT2: The rule was copied incorrectly the reported result is indeed 3c/5o.

Code: Select all

x = 3, y = 7, rule = B2acn3ar4-cew5-cknr6-ck78/S
2bo$2bo$obo$obo$obo$2bo$2bo!

Code: Select all

x = 4, y = 3, rule = B3-q4z5y/S234k5j
2b2o$b2o$2o!
LaundryPizza03 at Wikipedia
User avatar
hotcrystal0
Posts: 4594
Joined: July 3rd, 2020, 5:32 pm
Location: wherever you think I am

Re: Logic Life Search (LLS)

Post by hotcrystal0 »

Why is LLS saying this in front of all searches I run?

Code: Select all

/home/hotcrystal/logic-life-search/./lls:40: SyntaxWarning: "\ " is an invalid escape sequence. Such sequences will not work in the future. Did you mean "\\ "? A raw string is also an option.
  help="""Impose a symmetry on the pattern Examples: "D4x" enforces reflection symmetry about both axes, "p7" enforces period 7, "p2 RE\ x1" imposes the glide-reflect symmetry of a glider."""
124 days until New York's age verification law goes into effect.

Code: Select all

x = 192, y = 53, rule = B3/S23
33$42b4o$41b6o$40b2ob4o$41b2o3$41b2o$39bo6bo$38bo8bo$38bo8bo$38b9o3$42b
4o$41b6o$40b2ob4o$41b2o!
Sokwe
Moderator
Posts: 3378
Joined: July 9th, 2009, 2:44 pm

Re: Logic Life Search (LLS)

Post by Sokwe »

hotcrystal0 wrote: May 21st, 2026, 7:38 pm Why is LLS saying this in front of all searches I run?

Code: Select all

/home/hotcrystal/logic-life-search/./lls:40: SyntaxWarning: "\ " is an invalid escape sequence. Such sequences will not work in the future. Did you mean "\\ "? A raw string is also an option.
  help="""Impose a symmetry on the pattern Examples: "D4x" enforces reflection symmetry about both axes, "p7" enforces period 7, "p2 RE\ x1" imposes the glide-reflect symmetry of a glider."""
The argparse help string regarding symmetry options fails to escape a backslash. This does not impact LLS in any way other than giving this annoying message.
-Matthias Merzenich
g0t0
Posts: 63
Joined: August 3rd, 2026, 7:05 am

Re: Logic Life Search (LLS)

Post by g0t0 »

How to download LLS in China?
There is not gitlab.com.
Replicating or dying, that is a question.
User avatar
Macbi
Posts: 919
Joined: March 29th, 2009, 4:58 am
Contact:

Re: Logic Life Search (LLS)

Post by Macbi »

g0t0 wrote: September 21st, 2026, 7:18 amHow to download LLS in China?
There is not gitlab.com.
I have created a mirror on GitHub here: https://github.com/OscarCunningham/logic-life-search
Please let me know if that's also inaccessible.
Post Reply