Appendix A. gap.cc

```
#include <stdlib.h>
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
int main(int argc, char** args) {
  long long N = atoi(args[1]); // size of torus
  const long long EN = 1LL<<N; // 2^N
```

```
long long ix;
  cout << "P00˽:=˽(" << (1LL<<N) << ",1)";
  ix = 0; // rightmost cell active, n=0
  for (long long i = 1; i < EN; i++) {
     if (((i ^ 1LL) > i) (((5LL<<(N-1LL))
         & (i ^ (i<<N))) != (1LL<<(N-1LL)))) {
       cout << "(" << i << "," << (i^1LL) << ")";
       ix++;
       if ((ix%6LL) == 0) {cout << endl ;}
     }
  }
cout << ";" << endl;
for (long long n = 1; n < N; n++) { // active cell/bit
  long long En = 1LL<<n;
  ix = 0;
  cout << "P" << (char) (0x30+((n/10)%10))
       << (char) (0x30+(n%10)) << "˽:=˽("
       << (1LL<<N) << "," << (1LL<<n) << ")";
  for (long long i = 1; i < EN; i++) // all 2^N patterns
     if (((i ^ En) > i) && (((0x5LL<<(n-1LL)) & (i ^ (i<<N)))
          != (1LL<<(n-1LL)))) {
       cout << "(" << i << "," << (i^En) << ")";
       ix++;
       if ((ix%6LL) == 0) {cout << endl ;}
     }
   }
   cout << ";" << endl;
} // n
cout << "G" << (char) (0x30+((N/10)%10))
     << (char) (0x30+(N%10)) << "˽:=˽Group(P00" ;
for (int n = 1; n < N; n++) {
  cout << ",P" << (char) (0x30+((n/10)%10)) << (char) (0x30+(n%10));
}
cout << ");" << endl;
//remainder, what to put interactively in GAP, no use as part of file
cout << "#IsNaturalAlternatingGroup(G"<< (char) (0x30+((N/10)
     << (char) (0x30+(N/10)%10)) << " ); " << endl ;
cout << "#IsNaturalSymmetricGroup(G"<< (char) (0x30+((N/10) %10))
     << (char) (0x30+(N%10)) << " ); " << endl ;
cout << "#Size(G"<< (char) (0x30+((N/10)%10))
     << (char) (0x30+(N%10)) << " ); " << endl ;
}
```
If that result remains valid for all n ∈ N, and the reported values strongly suggest this, this would mean that the typical full step can be replaced by no more than 2..3 elementary unfair

As can be appreciated, n ¼ 5 might be feasible for an attack by meet-in-the-middle, but n ¼ 6 and above is certainly no candidate for this brute-force approach. Dealing with these sizes will require a more intelligent approach, for instance using group-theoretic techniques like repre-

We have seen that many functions are clocking-computable, namely, the even bijective ones

The elementary cellular automaton ECA-57 can be used to implement an etherealware com-

Temporal order of activating the CA cells is thus a new way to encode algorithms, a "volatilization of

We increased the size for example programs from n ¼ 3 in [10, 14] to n ¼ 4 and are confident to

My thanks go to Dr. Mónica del Pilar Canales Chacón for proofreading, commenting, and all the rest. Furthermore, the anonymous referee gave valuable comments concerning the first draft of the paper, pointing out a substantial error and several occasions for clarifying the intended meaning.

From n ¼ 6 onwards, we shall need more mathematical concepts, e.g., from group theory.

steps, independent of n.

7. Conclusion

information".

also be able to tackle the case n ¼ 5.

Acknowledgements

Appendix A. gap.cc

#include <stdlib.h> #include <iostream> #include <fstream> #include <iomanip> using namespace std;

int main(int argc, char\*\* args) {

const long long EN = 1LL<<N; // 2^N

long long N = atoi(args[1]); // size of torus

sentation theory, applied to the alternating group.

202 From Natural to Artificial Intelligence - Algorithms and Applications

and the non-bijective ones with enough "loss" in their image.

puting device: The computed function is a result only of the clocking order.
