In[]:=

Plot[{4^(.75n),2.8284271247461903`^n},{n,1,20}]

Out[]=

In[]:=

4^.75

Out[]=

2.82843

In[]:=

2^28

Out[]=

268435456

3

{28,{2,264107671}}

1/Sqrt[t]

In[]:=

Sqrt[643.*^9]

Out[]=

801873.

In[]:=

1/%

Out[]=

1.24708×

-6

10

In[]:=

1/Sqrt[2.5*^7]

Out[]=

0.0002

In[]:=

1/%

Out[]=

5000.

#### Send blocks of 100k

Send blocks of 100k

What we want back is mostly de novo nonterminating cases

#### Any strings that reach a critical size .... will get checkpointed

Any strings that reach a critical size .... will get checkpointed

We will send people lists of already known checkpoints

## What fraction of initial conditions reach 1000 elements?

What fraction of initial conditions reach 1000 elements?

## How diverse are the results

How diverse are the results

TSDirectEvolveList

Out[]=

PostTagSystem`

In[]:=

ParallelEvaluate[Needs["PostTagSystem`"]]

In[]:=

PostTagSystemFinalState[{0,{1,1,1,0,1,1,1,0,1}},800]

Out[]=

{1,{1,0,1,0,1,1,1,0,1,1,1,1,1,0,1,1,1,0,0,0,1,1,1,0,1,1,1,0,0,0,0,0,0,0,0,1,1,0,0,0,0,1,1}}

In[]:=

CountDistinct[#]/Length[#]&[DeleteMissing[ParallelTable[SelectFirst[TSPhaseEvolveList[{0,RandomInteger[1,30]},8000],Length[#[[2]]]>100&],1000]]]//N

Out[]=

0.678832

In[]:=

CountDistinct[#]/Length[#]&[DeleteMissing[ParallelTable[SelectFirst[TSPhaseEvolveList[{0,RandomInteger[1,30]},8000],Length[#[[2]]]>200&],10000]]]//N

Out[]=

0.55814

In[]:=

CountDistinct[#]/Length[#]&[DeleteMissing[ParallelTable[SelectFirst[TSPhaseEvolveList[{0,RandomInteger[1,30]},8000],Length[#[[2]]]>400&],10000]]]//N

1

0

Out[]=

Indeterminate

In[]:=

{CountDistinct[#],Length[#]}&[DeleteMissing[ParallelTable[SelectFirst[TSPhaseEvolveList[{0,RandomInteger[1,30]},20000],Length[#[[2]]]>400&],100000]]]

Out[]=

{22,153}

In[]:=

22/153.

Out[]=

0.143791

In[]:=

{{100,.68},{200,.55},{400,.143}}

Out[]=

{{100,0.68},{200,0.55},{400,0.143}}

In[]:=

ListPlot[%155]

Out[]=

In[]:=

.55/Sqrt[2]

Out[]=

0.388909

In[]:=

.68/Sqrt[2]

Out[]=

0.480833

In[]:=

Length[#[[2,2]]]&/@With[{re=PostTagSystem[{0,{1,1,1,1,1,1,0,1,0}}]},Table[{i,re["State",i]},{i,1,25000,1}]]

Out[]=

In[]:=

Union[%]

Out[]=

{0,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216}

In[]:=

Differences[%]

Out[]=

{9,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}

## When we get back a result package...

When we get back a result package...

#### Combine with other result packages

Combine with other result packages

#### Prep these for subsequent sent packages

Prep these for subsequent sent packages

#### Send to other people for full running.......

Send to other people for full running.......

They can send back their results after a trillion steps.... or if it gets bigger than some size....

### We need to parametrize the comparison checkpoint

We need to parametrize the comparison checkpoint

## Parameters

Parameters

### For trawlers [generalists] [broad explorers] [ breadth-first searchers ] [ primary inspection ]

For trawlers [generalists] [broad explorers] [ breadth-first searchers ] [ primary inspection ]

Question: will they be able to run in parallel on a single machine? [can Max’s code work like this?]

We give them their block of initial conditions

We also give them:

• checksize : at what size to do the comparison with the known string [ it will always hit a given size ]

• the list of known sequences

◼

the maximum time to run a single string for for (in case they have a string that doesn’t grow)

They return:

◼

for each init:

{basic disposition, data}

Dispositions:

- Found to terminate (i.e. goes to {}) [we know number of steps] <”terminated”>

- Found to repeat [we know number of doublings in step count for transient; period; final state] <”repeated”>

- Found to match checkpoint string [we know number of steps to match, and what the match was] <”checkpointed”> [gets sent to long-haulers]

- <<<< Exceeded max size [ we know how many steps, and what the final state was ] [ manual inspection ] impossible >>>>>

- Ran to the max step count [we know the final state <or just give the size of the final state> ] ⟶ manual inspection

- Found to terminate (i.e. goes to {}) [we know number of steps] <”terminated”>

- Found to repeat [we know number of doublings in step count for transient; period; final state] <”repeated”>

- Found to match checkpoint string [we know number of steps to match, and what the match was] <”checkpointed”> [gets sent to long-haulers]

- <<<< Exceeded max size [ we know how many steps, and what the final state was ] [ manual inspection ] impossible >>>>>

- Ran to the max step count [we know the final state <or just give the size of the final state> ] ⟶ manual inspection

### For long-haul [specialists] [deep explorers] [ secondary inspection ]

For long-haul [specialists] [deep explorers] [ secondary inspection ]

We give them:

a bucket of initial conditions

Let them run as long as possible

a bucket of initial conditions

Let them run as long as possible

They return for each one:

They will give us dispositions:

- terminated (number of steps + max intermediate size)

- repeated (number of doublings + number of steps + final state + max intermediate size)

- too big [i.e. memory limit] (number of steps to hit limit)

- ran out of time (number of steps, final state [< 10 MB?] , max intermediate size)

- repeated (number of doublings + number of steps + final state + max intermediate size)

- too big [i.e. memory limit] (number of steps to hit limit)

- ran out of time (number of steps, final state [< 10 MB?] , max intermediate size)

I.e. 20 trillion steps

### For long-haul relay runners

For long-haul relay runners

## Specific Programs

Specific Programs

### wolfram-postproject

wolfram-postproject

#### -trawl

-trawl

-cribfile XXXX

-criblength / maxlength

-criblength / maxlength

-initlength 30

-initrange XXXXXX XXXXXXX

-initrange XXXXXX XXXXXXX

-maxsteps [ 10^10 ? ]

-timeconstraint XXXXX

-outputfile XXXXX

#### -longhaul

-longhaul

-initfile XXXX [things to search]

[ should allow long initial strings ]

[ should allow long initial strings ]

-timeconstraint XXXXX

-sizeconstraint XXXXX [~ 10^9 ]

-outputfile XXXXX

### Return values

Return values

Serialize a C struct??

## Head End

Head End

#### Decide on crib sizes

Decide on crib sizes

#### Register outputs from trawlers

Register outputs from trawlers

### We need to be able to prime the system with a crib file...

then ingest crib results from trawlers

We need to be able to prime the system with a crib file...

then ingest crib results from trawlers

then ingest crib results from trawlers

### We would harvest crib results, and generate a de-duped list

We would harvest crib results, and generate a de-duped list

Maximum list size ~10,000

If the number of cribs is larger, need to increase the crib size....

If the number of cribs is larger, need to increase the crib size....