-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.html
154 lines (140 loc) · 8.41 KB
/
index.html
1
2
3
4
5
6
7
8
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
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>o</title>
<meta name="author" content="Martin Maga">
<meta name="description" content="a constructed circular language">
<link rel="stylesheet" href="css/typography.css">
<link rel="stylesheet" href="css/layout.css">
<link rel="stylesheet" href="css/color.css">
<link rel="stylesheet" href="css/gh-fork-ribbon.css">
</head>
<body>
<a class="github-fork-ribbon right-top" href="https://github.com/qualiacode" data-ribbon="Fork me on GitHub" title="Fork me on GitHub">Fork me on GitHub</a>
<div class="grid">
<div class="o"></div>
<div class="form">
<label for="userRandomOnCheck">Random</label>
<input type="checkbox" id="userRandomOnCheck" name="userRandomOnCheck" value="off" unchecked>
<label for="messageBox">Talk</label>
<textarea id="messageBox" name="messageBox" placeholder="Hello World!"></textarea>
</div>
<div class="text">
<h1>o</h1>
<p>o is a
<a href="https://en.wikipedia.org/wiki/Constructed_language" target="_blank">constructed</a>,
<a href="https://en.wikipedia.org/wiki/Visual_communication" target="_blank">visual</a>,
<a href="https://en.wikipedia.org/wiki/Turing_completeness" target="_blank">Turing complete</a>,
<a href="https://en.wikipedia.org/wiki/Language" target="_blank">language</a>
and
<a href="https://en.wikipedia.org/wiki/Cellular_automaton" target="_blank">cellular automaton</a>
with
<a href="https://en.wikipedia.org/wiki/Supertask" target="_blank">supertask</a> properties,
comprised of just one symbol.
o is a
<a href="https://en.wikipedia.org/wiki/Synergy" target="_blank">synergetic</a>
<a href="https://en.wikipedia.org/wiki/Hybrid_(biology)" target="_blank">hybrid</a>
of a
<a href="https://en.wikipedia.org/wiki/Logogram" target="_blank">logographical</a>,
<a href="https://en.wikipedia.org/wiki/Alphabet" target="_blank">alphabetical</a>,
<a href="https://en.wikipedia.org/wiki/Natural_language" target="_blank">natural</a>
and
<a href="https://en.wikipedia.org/wiki/Formal_language" target="_blank">formal</a>
language.
o lives on the interfaces between
<a href="https://en.wikipedia.org/wiki/Philosophy" target="_blank">philosophy</a>,
<a href="https://en.wikipedia.org/wiki/Linguistics" target="_blank">linguistics</a>,
<a href="https://en.wikipedia.org/wiki/Computer_science" target="_blank">computer science</a>
and
<a href="https://en.wikipedia.org/wiki/Generative_art" target="_blank">generative art</a>.
o is written in
<a href="https://en.wikipedia.org/wiki/JavaScript" target="_blank">JavaScript</a>,
<a href="https://en.wikipedia.org/wiki/HTML" target="_blank">HTML</a>,
<a href="https://en.wikipedia.org/wiki/Cascading_Style_Sheets" target="_blank">CSS</a>
and
<a href="https://d3js.org/" target="_blank">d3.js</a>
<h1>?</h1>
<p>
At this moment the cells of o grow according to <a href="https://en.wikipedia.org/wiki/Constructed_language" target="_blank">rule 110</a> for 10 generations along the
<a href="https://en.wikipedia.org/wiki/Unit_circle" target="_blank">unit circle</a>.
They follow the geometry of the
<a href="https://en.wikipedia.org/wiki/Arbelos" target="_blank">Arbelos</a>
and join the <a href="https://en.wikipedia.org/wiki/Pappus_chain" target="_blank">Pappus chain</a> using
<a href="https://en.wikipedia.org/wiki/Inversive_geometry" target="_blank">circle inversion</a>.
If the cell is alive, then it enqueues itself into
<a href="http://mathworld.wolfram.com/PappusChain.html" target="_blank">the first Pappus chain</a>.
If the cell is not alive, then it enqueues itself into the second Pappus chain.
Each generation is contracted and then mirrored on the Y-axis.
o is Turing complete because it can run rule 110.
Since o is Turing complete it is a
<a href="https://en.wikipedia.org/wiki/Recursively_enumerable_language" target="_blank">type-0 language</a>
in the
<a href="https://en.wikipedia.org/wiki/Chomsky_hierarchy" target="_blank">Chomsky hierarchy</a>.
That is, if the
<a href="https://en.wikipedia.org/wiki/History_of_the_Church%E2%80%93Turing_thesis" target="_blank">Church-Turing hypothesis</a>
is true, then anything that can be said can be said with o.
</p>
<h1>!</h1>
<p>
In my quest to find a proof of the adequacy of the
<a href="https://en.wikipedia.org/wiki/Turing_machine" target="_blank">Turing machine</a>
as a model of human cognition, I came across the
<a href="https://www.complex-systems.com/abstracts/v15_i01_a01/" target="_blank">proof by Matthew Cook (2004)</a>
of the Turing completeness of
<a href="https://en.wikipedia.org/wiki/Constructed_language" target="_blank">rule 110</a>, a 1-dimensional cellular automaton similar to the
<a href="https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life" target="_blank">Game of Life by John Horton Conway (1970)</a>.
The conventional 2-dimensional representation of the evolution of a 1-dimensional cellular automaton that is as powerful as a
<a href="https://en.wikipedia.org/wiki/Universal_Turing_machine" target="_blank">universal Turing machine</a>
takes up an infinite amount of space.
</p>
<p>
I came up with the idea to curl up infinity onto a circle and reduce the state and color complexity of the cellular automaton to an absolute minimum viz a
<a href="http://mathworld.wolfram.com/CellularAutomaton.html" target="_blank">1-color, 2-state, 1-dimensional cellular automaton</a>.
The result of this minimalism is a language that consists only of a single symbol—one circle—and its
<a href="https://en.wikipedia.org/wiki/Projective_geometry" target="_blank">projections</a>.
Yet, there were two challenges.
The first challenge was to find an information-preserving, unambiguous mapping capable of representing an infinite number of cells in a finite space.
I found the concept of a supertask to be a suitable
<a href="https://en.wikipedia.org/wiki/Data_compression" target="_blank"> compression scheme</a>.
The second challenge was to find an appealing geometry for the cells.
I found the pappus chain to be a suitable geometry.
</p>
<p>
Now, the cells can propagate along the invisible circumference they inhabit.
Each generation leaves behind a trace that is gradually being built upon and written on by each new one.
In this way we can see at a glance the power of evolution and universality in the countenance of infinity.
</p>
<p>
<a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
<a href="mailto:[email protected]" target="_top">Martin Maga, Stuttgart, 2019-05-28</a>
<br />
This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International License</a>.
</p>
</div>
</div>
</body>
<script src="js/provideparameters.js"></script>
<script src="js/config.js"></script>
<script src="js/generaterandomnumbers.js"></script>
<script src="js/translatestringtobinary.js"></script>
<script src="js/rotate.js"></script>
<script src="js/calculatedistance.js"></script>
<script src="js/calculateangle.js"></script>
<script src="js/firstpappusgeometry.js"></script>
<script src="js/secondpappusgeometry.js"></script>
<script src="js/applygeometry.js"></script>
<script src="js/shrinkcells.js"></script>
<script src="js/bloom.js"></script>
<script src="js/compose.js"></script>
<script src="js/cell.js"></script>
<script src="js/createcells.js"></script>
<script src="js/clonecells.js"></script>
<script src="js/rule110.js"></script>
<script src="js/applyrule.js"></script>
<script src="js/mutatecells.js"></script>
<script src="js/populate.js"></script>
<script src="js/evolve.js"></script>
<script src="js/modules/d3js/d3.min.js"></script>
<script src="js/main.js"></script>
</html>