cp's OEIS Frontend

This is a front-end for the Online Encyclopedia of Integer Sequences, made by Christian Perfect. The idea is to provide OEIS entries in non-ancient HTML, and then to think about how they're presented visually. The source code is on GitHub.

A336327 Period of orbit of Post's tag system ({0,1},{(0,0),(1,01101)},3,100^n).

Original entry on oeis.org

0, 4, 0, 4450, 0, 4450, 0, 0, 0, 4450, 0, 0, 6, 0, 0, 4450, 0, 0, 0, 0, 910, 4450, 0, 4450, 910, 4450, 0, 4450, 0, 4450, 910, 0, 0, 4450, 0, 4450, 910, 4, 0, 4, 0, 0, 910, 0, 6, 0, 910, 0, 0, 4450, 0, 4450, 910, 4450, 0, 292, 0, 4450, 0, 0, 910, 4450, 6, 4450
Offset: 1

Views

Author

A.H.M. Smeets, Jul 17 2020

Keywords

Comments

In general a tag as defined by Emil Leon Post, is given by a 4-tuple (Sigma,AF,n,w0), where Sigma is some (nonempty) set of symbols called the alphabet, AF is the associated function (sometimes also called set of production rules) AF: Sigma -> Sigma*, n is the deletion number and w0 the initial string.
From the starting sequence we obtain a new string in each step by adjoining the string associated to the prefix symbol of the string, where after the prefix n symbols are removed from the string.
The decision problem is: will the tag end up in an empty string, a(n) = 0 or not, a(n) <> 0?
a(n) is an even number. Proof: for each cycle the number of associations (productions) 0 -> 0 must equal the number of associations (productions) 1 -> 01101 applied within a cycle.
For n=85 the tag is hard to solve by a brute force method, similar to the tag for n=110 with associated function {(0,00),(1,1101)} as reported in A284119.
Also period of orbit of Post's tag system ({0,1},{(0,0),(0,11010)},3,100^(n-1)).

Crossrefs

Programs

  • Python
    def step(w):
        i = 0
        while w[0] != alfabet[i]:
            i = i+1
        w = w+suffix[i]
        return w[n:len(w)]
    alfabet, suffix, n, ws, w0, m = "01", ["0", "01101"], 3, "100", "", 0
    while m >= 0:
        w0, m = w0+ws, m+1
        w, ww, i, a = w0, w0, 0, 0
        while w != "" and a == 0:
            w, i = step(w), i+1
            if i%100000 == 0:
                ww = w
            else:
                if w == ww or w == "":
                    if w != "":
                        a = i%100000
                    print(m, a)

Formula

Observed: if n is even then a(n) in {0, 4, 292, 4450}, if n is odd then a(n) in {0, 6, 910}.