Consciousness in the framework of the Wolfram Model

by José Manuel Rodríguez Caballero
Update. November 25, 2020
Abstract. In the present computational essay, we introduce a formal definition of consciousness in the framework of the Wolfram Model. We do not claim that this proposal is the ultimate solution to all the problems around the subject of consciousness, involving several fields, from philosophy to neurology. Our definition is rather limited and some features of the intuition associated with the concept of consciousness may resist it.

Algorithmic definition of consciousness

Given a list of pseudorandomized algorithms A = { A[[1]], A[[2]], ..., A[[n]] }, all having a common type of input, denoted In (this input does not include the seed of randomness and the time when run) and a common type of output, denoted Out. An algorithm σ having input of type In×Out and Boolean output, is an ϵ-consciousness of the algorithm A[[i]] if for any object m of type In, and for any j in {1,2,3,...,n}, the probability that σ[ m, A[[j]] [m] ] and i == j are either both True or both False is at least 1 - ϵ/n (the pseudorandomized algorithms are implicitly evaluated in time). Sometimes we will abuse the language and say that σ is the consciousness of A[[i]] rather than an ϵ-consciousness for ϵ > 0 small . Therefore, according to our definition, consciousness is a measure of the ability to distinguish the behaviour of one algorithm (the self) among other algorthms (the rest of the world).
The first remark is that, in a deterministic case, it is always possible to define, in a rather ad hoc way, the consciousness of the algorithm A[[i]] as σ[m,k] = A[[i]] [m] == k. Nevertheless, this is not possible in the general case, since the algorithms are pseudorandomized, e.g., they can be defined using pseudorandom functions in the Wolfram Language
Notice that, according to our definition, it makes no sense for an algorithm to be self-conscious since the type of the input of σ does not the same as the type of the input of A[[i]].
The motivation behind our definition of consciousness is that, in humans, consciousness is associated with the ability to distinguish oneself from other people and objects. So, a human is modeled as algorithm A[[ i ]] called the self, a world A = { A[[1]], A[[2]], ..., A[[n]] }, and the consciousness σ of A[[ i ]]. In our framework, the consciousness of the self is not the self and there is no self-consciousness. So, if self-consciousness exists, it resists the formalism of our approach.
In the framework of the Wolfram Model, we can consider a list of pseudorandomized algorithms A = { A[[1]], A[[2]], ..., A[[n]] }, producing updating events in spacetime. The updating events are the results of substitutions performed on the spatial hypergraph. Let σ be the consciousness of the algorithm A[[ i ]]. Then, the personal experience of algorithm A[[ i ]] can be expressed as the sequence of updating events that σ classifies as produced by A[[ i ]].
Extrapolating the algorithmic definition of personal experience to humans, the personal experience of Bob is associated with a classification of events in the category of those where Bob was involved and those where he was not. So, the personal experience of Bob is a property of the consciousness of Bob, not just of its self. Maybe human consciousness affects future human behavior, but we have not expressed this property in the present model.
Finally, in the present framework we can predict that consciousness is absents in systems where all the components are statistically undistinguishable. Indeed, if A[[i]] == RandomInteger[k], with k ≥ 2,for all i = 1, 2, ..., n, then no consciousness σ can be defined in A = { A[[1]], A[[2]], ..., A[[n]] }.

Examples

For simplicity, instead of hypergraphs, we will consider natural numbers as input and output, but the underlying idea is the same. We will define a test for the consciousness of algorithms transforming natural numbers into natural numbers. The output of this algorithm is an empirical estimation of ϵ as defined above, i.e., σ is an ϵ-consciousness of A[[ i ]].
In[]:=
ConsciousnessTestNat[i_,A_,σ_,maxNumber_,rep_]:=(1.-Mean[Table[Function[{m,j},If[σ[m,A[[j]][m]]==(i==j),1,0]][RandomInteger[{1,maxNumber}],RandomInteger[{1,Length[A]}]],{rep}]])*Length[A]

Example 1

Consider a list of 10 algorithms. For simplicity, we will only consider deterministic algorithms in this example.
A={10*#+0&,10*#+1&,10*#+2&,10*#+3&,10*#+4&,10*#+5&,10*#+6&,10*#+7&,10*#+8&,10*#+9&}
Out[]=
{10#1+0&,10#1+1&,10#1+2&,10#1+3&,10#1+4&,10#1+5&,10#1+6&,10#1+7&,10#1+8&,10#1+9&}
We define the consciousness of A[[7]] as follows.
In[]:=
σ[m_,k_]:=Mod[k,10]==6
We check that σ is the consciousness of the algorithm A[[7]].
In[]:=
ConsciousnessTestNat[7,A,σ,1000,1000]
Out[]=
0.
Also, we check that σ is not the consciousness of the algorithm A[[6]], because ϵ > 0 is not near zero.
In[]:=
ConsciousnessTestNat[6,A,σ,1000,1000]
Out[]=
2.17

Example 2

Now, consider the three pseudorandomized algorithms.
In[]:=
A={DivisorSigma[RandomInteger[{1,10}],#]&,If[PrimeQ[#+RandomInteger[{1,1000}]],RandomInteger[{1,1000}],0]&,RandomInteger[{0,#}]&}
Out[]=
{DivisorSigma[RandomInteger[{1,10}],#1]&,If[PrimeQ[#1+RandomInteger[{1,1000}]],RandomInteger[{1,1000}],0]&,RandomInteger[{0,#1}]&}
We define the consciousness of A[[2]] as follows.
In[]:=
σ[m_,k_]:=(k==0)
We check that σ is the consciousness of the algorithm A[[2]], but not of the other algorithms.
In[]:=
ConsciousnessTestNat[2,A,σ,10000,1000]
Out[]=
0.123
In[]:=
ConsciousnessTestNat[1,A,σ,10000,1000]
Out[]=
1.881
In[]:=
ConsciousnessTestNat[3,A,σ,10000,1000]
Out[]=
1.86

References

S. Wolfram, “A New Kind of Science,. Champaign, IL: Wolfram media; 2002 Jan.
S. Wolfram, “A Class of Models with the Potential to Represent Fundamental Physics,” Complex Systems, 29(2), 2020 pp. 107–536.​
​https://doi.org/10.25088/ComplexSystems.29.2.107